Skip to content
Snippets Groups Projects
Forked from Glasgow Haskell Compiler / GHC
This fork has diverged from the upstream repository.
  • Ben Gamari's avatar
    1c582f44
    hadrian: Fix bindist installation on Darwin · 1c582f44
    Ben Gamari authored and Marge Bot's avatar Marge Bot committed
    It turns out that `cp -P` on Darwin does not always copy a symlink as
    a symlink. In order to get these semantics one must pass `-RP`. It's not
    entirely clear whether this is valid under POSIX, but it is nevertheless
    what Apple does.
    1c582f44
    History
    hadrian: Fix bindist installation on Darwin
    Ben Gamari authored and Marge Bot's avatar Marge Bot committed
    It turns out that `cp -P` on Darwin does not always copy a symlink as
    a symlink. In order to get these semantics one must pass `-RP`. It's not
    entirely clear whether this is valid under POSIX, but it is nevertheless
    what Apple does.
install_script.sh 1016 B
#!/bin/sh

# $1 = executable name
# $2 = wrapper path
# $3 = bindir
# $4 = ghcbindir
# $5 = Executable binary path
# $6 = Library Directory
# $7 = Docs Directory
# $8 = Includes Directory
# We are installing wrappers to programs by searching corresponding
# wrappers. If wrapper is not found, we are attaching the common wrapper
# to it. This implementation is a bit hacky and depends on consistency
# of program names. For hadrian build this will work as programs have a
# consistent naming procedure.

echo "Installing $1 -> $2"
if [ -L "wrappers/$1" ]; then
    cp -RP "wrappers/$1" "$2"
else
    rm -f "$2" &&
    touch "$2" &&
    echo "#!$SHELL" >> "$2"  &&
    echo "exedir=\"$4\"" >> "$2"  &&
    echo "exeprog=\"$1\"" >> "$2"  &&
    echo "executablename=\"$5\"" >> "$2"  &&
    echo "bindir=\"$3\"" >> "$2"  &&
    echo "libdir=\"$6\"" >> "$2"  &&
    echo "docdir=\"$7\"" >> "$2"  &&
    echo "includedir=\"$8\"" >> "$2"  &&
    echo "" >> "$2"  &&
    cat "wrappers/$1" >> "$2"  &&
    chmod 755 "$2"
fi