diff options
author | joshua stein <jcs@jcs.org> | 2020-12-28 17:36:15 -0600 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-02-14 09:29:22 +0100 |
commit | 0d215b55487ca3ea66a77463c85d98956fa07f0b (patch) | |
tree | c156e8fcb62e5714cdff5884697429fc5e5a2d29 | |
parent | 4021264201d99372fb1e84899be9ae84a5510415 (diff) | |
download | serenity-0d215b55487ca3ea66a77463c85d98956fa07f0b.zip |
Build: Sprinkle some portability, fix on OpenBSD
realpath(1) is specific to coreutils and its behavior can be had
with readlink -f
Create the Toolchain Build directory if it doesn't exist before
calling readlink, since realpath(3) on at least OpenBSD will error
on a non-existent path
-rwxr-xr-x | Meta/build-image-qemu.sh | 5 | ||||
-rwxr-xr-x | Meta/build-root-filesystem.sh | 2 | ||||
-rwxr-xr-x | Meta/write-only-on-difference.sh | 2 | ||||
-rwxr-xr-x | Toolchain/BuildIt.sh | 12 |
4 files changed, 15 insertions, 6 deletions
diff --git a/Meta/build-image-qemu.sh b/Meta/build-image-qemu.sh index a6acf8d9cb..e826c556af 100755 --- a/Meta/build-image-qemu.sh +++ b/Meta/build-image-qemu.sh @@ -19,7 +19,8 @@ if [ "$(uname -s)" = "Darwin" ]; then fi disk_usage() { - du -sm "$1" | cut -f1 + # shellcheck disable=SC2003 + expr "$(du -sk "$1" | cut -f1)" / 1024 } DISK_SIZE=$(($(disk_usage "$SERENITY_ROOT/Base") + $(disk_usage Root) + 100)) @@ -33,7 +34,7 @@ printf "creating new filesystem... " if [ "$(uname -s)" = "OpenBSD" ]; then VND=$(vnconfig _disk_image) (echo "e 0"; echo 83; echo n; echo 0; echo "*"; echo "quit") | fdisk -e "$VND" - mkfs.ext2 -I 128 -F "/dev/${VND}i" || die "could not create filesystem" + newfs_ext2fs -D 128 "/dev/r${VND}i" || die "could not create filesystem" elif [ "$(uname -s)" = "FreeBSD" ]; then MD=$(mdconfig _disk_image) mke2fs -q -I 128 _disk_image || die "could not create filesystem" diff --git a/Meta/build-root-filesystem.sh b/Meta/build-root-filesystem.sh index fc3280cce4..08252e0136 100755 --- a/Meta/build-root-filesystem.sh +++ b/Meta/build-root-filesystem.sh @@ -85,7 +85,7 @@ mkdir -p mnt/dev echo "done" printf "writing version file... " -GIT_HASH=$( (git log --pretty=format:'%h' -n 1 | head -c 7) || true ) +GIT_HASH=$( (git log --pretty=format:'%h' -n 1 | cut -c1-7) || true ) printf "[Version]\nMajor=1\nMinor=0\nGit=%s\n" "$GIT_HASH" > mnt/res/version.ini echo "done" diff --git a/Meta/write-only-on-difference.sh b/Meta/write-only-on-difference.sh index a6485e79a9..ecddbc7c59 100755 --- a/Meta/write-only-on-difference.sh +++ b/Meta/write-only-on-difference.sh @@ -22,7 +22,7 @@ trap cleanup 0 1 2 3 6 "$@" > "${DST_FILE}.tmp" # If we get here, the command was successful, and we can overwrite the destination. -if ! cmp --quiet -- "${DST_FILE}.tmp" "${DST_FILE}"; then +if ! cmp -s -- "${DST_FILE}.tmp" "${DST_FILE}"; then # File changed, need to overwrite: mv -f -- "${DST_FILE}.tmp" "${DST_FILE}" fi diff --git a/Toolchain/BuildIt.sh b/Toolchain/BuildIt.sh index 694c674e36..9974c03c29 100755 --- a/Toolchain/BuildIt.sh +++ b/Toolchain/BuildIt.sh @@ -12,12 +12,13 @@ echo "$DIR" ARCH=${ARCH:-"i686"} TARGET="$ARCH-pc-serenity" PREFIX="$DIR/Local/$ARCH" -BUILD=$(realpath "$DIR/../Build") +BUILD="$DIR/../Build" SYSROOT="$BUILD/Root" MAKE="make" MD5SUM="md5sum" NPROC="nproc" +REALPATH="realpath" if command -v ginstall &>/dev/null; then INSTALL=ginstall @@ -29,6 +30,7 @@ if [ "$(uname -s)" = "OpenBSD" ]; then MAKE=gmake MD5SUM="md5 -q" NPROC="sysctl -n hw.ncpuonline" + REALPATH="readlink -f" export CC=egcc export CXX=eg++ export with_gmp=/usr/local @@ -41,6 +43,12 @@ elif [ "$(uname -s)" = "FreeBSD" ]; then export with_mpfr=/usr/local fi +# On at least OpenBSD, the path must exist to call realpath(3) on it +if [ ! -d "$BUILD" ]; then + mkdir -p "$BUILD" +fi +BUILD=$($REALPATH "$BUILD") + git_patch= while [ "$1" != "" ]; do case $1 in @@ -236,7 +244,7 @@ pushd "$DIR/Build/$ARCH" mkdir -p "$BUILD" pushd "$BUILD" mkdir -p Root/usr/include/ - SRC_ROOT=$(realpath "$DIR"/..) + SRC_ROOT=$($REALPATH "$DIR"/..) FILES=$(find "$SRC_ROOT"/Userland/Libraries/LibC "$SRC_ROOT"/Userland/Libraries/LibM -name '*.h' -print) for header in $FILES; do target=$(echo "$header" | sed -e "s@$SRC_ROOT/Userland/Libraries/LibC@@" -e "s@$SRC_ROOT/Userland/Libraries/LibM@@") |