Hadrian: Drop remaining symlink traversal code from build scripts
authorAndrey Mokhov <andrey.mokhov@gmail.com>
Wed, 6 Mar 2019 13:42:27 +0000 (13:42 +0000)
committerMarge Bot <ben+marge-bot@smart-cactus.org>
Fri, 8 Mar 2019 10:56:32 +0000 (05:56 -0500)
This partly resolves #16325 (https://ghc.haskell.org/trac/ghc/ticket/16325).

As previously discussed in https://github.com/snowleopard/hadrian/issues/667,
we do not need the symlink traversal code in build scripts. However, it
appears we forgot to delete this code from our Stack-based build scripts,
which led to placing all build artefacts in an unexpected location when
using Hadrian in combination with symlink trees. This commit fixes this.

hadrian/build.stack.nix.sh
hadrian/build.stack.sh

index 59ac061..b30c114 100755 (executable)
@@ -1,33 +1,3 @@
 #!/usr/bin/env bash
 
-set -euo pipefail
-
-# readlink on os x, doesn't support -f, to prevent the
-# need of installing coreutils (e.g. through brew, just
-# for readlink, we use the follownig substitute.
-#
-# source: http://stackoverflow.com/a/1116890
-function rl {
-    TARGET_FILE="$1"
-
-    cd "$(dirname "$TARGET_FILE")"
-    TARGET_FILE="$(basename "$TARGET_FILE")"
-
-    # Iterate down a (possible) chain of symlinks
-    while [ -L "$TARGET_FILE" ]
-    do
-        TARGET_FILE="$(readlink "$TARGET_FILE")"
-        cd "$(dirname "$TARGET_FILE")"
-        TARGET_FILE="$(basename "$TARGET_FILE")"
-    done
-
-    # Compute the canonicalized name by finding the physical path
-    # for the directory we're in and appending the target file.
-    PHYS_DIR="$(pwd -P)"
-    RESULT="$PHYS_DIR/$TARGET_FILE"
-    echo "$RESULT"
-}
-
-absoluteRoot="$(dirname "$(rl "$0")")"
-
-HADRIAN_NIX=YES ${absoluteRoot}/build.stack.sh
+HADRIAN_NIX=YES hadrian/build.stack.sh
index 2e6c444..1f59843 100755 (executable)
@@ -1,38 +1,10 @@
 #!/usr/bin/env bash
 
-set -euo pipefail
-
-# readlink on os x, doesn't support -f, to prevent the
-# need of installing coreutils (e.g. through brew, just
-# for readlink, we use the follownig substitute.
-#
-# source: http://stackoverflow.com/a/1116890
-function rl {
-    TARGET_FILE="$1"
-
-    cd "$(dirname "$TARGET_FILE")"
-    TARGET_FILE="$(basename "$TARGET_FILE")"
-
-    # Iterate down a (possible) chain of symlinks
-    while [ -L "$TARGET_FILE" ]
-    do
-        TARGET_FILE="$(readlink "$TARGET_FILE")"
-        cd "$(dirname "$TARGET_FILE")"
-        TARGET_FILE="$(basename "$TARGET_FILE")"
-    done
-
-    # Compute the canonicalized name by finding the physical path
-    # for the directory we're in and appending the target file.
-    PHYS_DIR="$(pwd -P)"
-    RESULT="$PHYS_DIR/$TARGET_FILE"
-    echo "$RESULT"
-}
-
-absoluteRoot="$(dirname "$(rl "$0")")"
-cd "$absoluteRoot"
-
+# Make sure Hadrian is up-to-date
+cd hadrian
 stack build --no-library-profiling ${HADRIAN_NIX:+--nix}
 
-stack exec hadrian --              \
-    --directory "$absoluteRoot/.." \
+# Run Hadrian in the top-level GHC directory
+stack exec hadrian -- \
+    --directory ".."  \
     "$@"