Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add realpath support to pkg #7981

Merged
merged 5 commits into from
Jun 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 38 additions & 10 deletions build/functions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,16 +13,44 @@
#
# shellcheck shell=ash

if ! type -p realpath; then
# by default, macOS does not have realpath
realpath() {
ls "$(
cd "$(dirname "$0")"
pwd -P # -P resolves symlinks
)/$(basename "$0")"
}
export -f realpath
fi;
# macOS's version of realpath does not resolve symlinks, so we add a function
# for it.
get_realpath() {
zrhoffman marked this conversation as resolved.
Show resolved Hide resolved
local bin
local found=''
first_realpath="$(type -P realpath)"
for bin in $(type -aP grealpath realpath | uniq); do
if "$bin" -e . >/dev/null 2>&1; then
found=y
break
fi
done
if [[ -n "$found" ]]; then
if [[ "$first_realpath" == "$bin" ]]; then
# Default realpath works.
return
fi
realpath_path="$bin"
# by default, macOS does not have realpath
eval "$(<<FUNCTION cat
realpath() {
"$realpath_path" "\$@"
}
FUNCTION
)"
export -f realpath
else
cat <<'MESSAGE'
GNU realpath is required to build Apache Traffic Control if your
realpath binary does not support the -e flag, as is the case on BSD-like
operating systems like macOS. Install it by running the following
command:
brew install coreutils
MESSAGE
exit 1
fi
}
get_realpath

if { ! stat -c%u . >/dev/null && stat -f%u .; } >/dev/null 2>&1; then
#BSD stat uses -f as its formatting flag instead of -c
Expand Down
4 changes: 2 additions & 2 deletions docs/source/development/building.rst
Original file line number Diff line number Diff line change
Expand Up @@ -168,8 +168,8 @@ Install the Dependencies
+---------------------------------+---------------------+----------------------------+------------------------+---------------------------+---------------------------+--------------------------+----------+------------------------------+--------------------------+
| OS/Package Manager | Common dependencies | :ref:`dev-traffic-monitor` | :ref:`dev-traffic-ops` | :ref:`dev-traffic-portal` | :ref:`dev-traffic-router` | :ref:`dev-traffic-stats` | Grove | Grove TC Config (grovetccfg) | :ref:`Docs <docs-guide>` |
+=================================+=====================+============================+========================+===========================+===========================+==========================+==========+==============================+==========================+
| macOS\ [#mac-jdk]_ | - rpm | - go | - go | - npm | - maven | - go | - go | - go | - python3 |
| (homebrew_) | | | | - grunt-cli | | | | | |
| macOS\ [#mac-jdk]_ | - coreutils | - go | - go | - npm | - maven | - go | - go | - go | - python3 |
| (homebrew_) | - rpm | | | - grunt-cli | | | | | |
+---------------------------------+---------------------+----------------------------+------------------------+---------------------------+---------------------------+--------------------------+----------+------------------------------+--------------------------+
| Rocky\ Linux\ [#rocky-go]_, | - git | | | - epel-release | - java-11-openjdk | | | | - python3-devel |
| Red Hat, | - rpm-build | | | - npm | - maven | | | | - gcc |
Expand Down
39 changes: 39 additions & 0 deletions pkg
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,45 @@
# See the License for the specific language governing permissions and
# limitations under the License.

# macOS's version of realpath does not resolve symlinks, so we add a function
# for it.
get_realpath() {
local bin
local found=''
first_realpath="$(type -P realpath)"
for bin in $(type -aP grealpath realpath | uniq); do
if "$bin" -e . >/dev/null 2>&1; then
found=y
break
fi
done
if [[ -n "$found" ]]; then
if [[ "$first_realpath" == "$bin" ]]; then
# Default realpath works.
return
fi
realpath_path="$bin"
# by default, macOS does not have realpath
eval "$(<<FUNCTION cat
realpath() {
"$realpath_path" "\$@"
}
FUNCTION
)"
export -f realpath
else
cat <<'MESSAGE'
GNU realpath is required to build Apache Traffic Control if your
realpath binary does not support the -e flag, as is the case on BSD-like
operating systems like macOS. Install it by running the following
command:
brew install coreutils
MESSAGE
exit 1
fi
}
get_realpath

# Files are relative to this script directory.
SELF="${BASH_SOURCE[0]}"
cd "$( dirname "${BASH_SOURCE[0]}" )"
Expand Down
Loading