nixpkgs/pkgs/tools/system/plan9port/builder.sh
Jason Felice 83c1e8c319 plan9port: use C compiler from Nix
The install script was escaping the Nix environment on Mac OS by using
`xcrun -sdk macos clang` as its C compiler.  Using the Nix compiler
required declaring the necessary frameworks as inputs and patching
build scripts to assume MacOS 10.12 (and not try to detect).

So cached derivations prior to this would probably not work on all
intended target machines.

This *might* also fix installCheck on Darwin on Hydra.

Other minor fixes:

* Disable parallel building due to a race with a missing y.tab.h
* Use NIX_CFLAGS_COMPILE/NIX_LDFLAGS instead of trying to synthesize
  something like them.
* X11 dependencies aren't used on Darwin when the windowing system
  is correctly detected
2019-08-09 16:29:51 -04:00

80 lines
1.6 KiB
Bash

source $stdenv/setup
export PLAN9=$out/plan9
export PLAN9_TARGET=$PLAN9
plan9portLinkFlags()
{
local -a linkFlags=()
eval set -- "$NIX_LDFLAGS"
while (( $# > 0 )); do
if [[ $1 = -rpath ]]; then
linkFlags+=( "-Wl,-rpath,$2" )
shift 2
else
linkFlags+=( "$1" )
shift
fi
done
echo "${linkFlags[*]}"
}
configurePhase()
{
(
echo CC9=\"$(which $CC)\"
echo CFLAGS=\"$NIX_CFLAGS_COMPILE\"
echo LDFLAGS=\"$(plan9portLinkFlags)\"
echo X11=\"${libXt_dev}/include\"
case "$system" in
x86_64-*) echo OBJTYPE=x86_64;;
i?86-*) echo OBJTYPE=386;;
*power*) echo OBJTYPE=power;;
*sparc*) echo OBJTYPE=sparc;;
*) exit 12
esac
if [[ $system =~ .*linux.* ]]; then
echo SYSVERSION=2.6.x
fi
) >config
for f in `grep -l -r /usr/local/plan9`; do
sed "s,/usr/local/plan9,${PLAN9},g" -i $f
done
}
buildPhase()
{
mkdir -p $PLAN9
# Copy sources, some necessary bin scripts
cp -R * $PLAN9
local originalPath="$PATH"
export PATH="$PLAN9/bin:$PATH"
export NPROC=$NIX_BUILD_CORES
pushd src
../dist/buildmk
mk clean
mk libs-nuke
mk all
mk -k install
if [[ -f $PLAN9/bin/quote1 ]]; then
cp $PLAN9/bin/quote1 $PLAN9/bin/'"'
cp $PLAN9/bin/quote2 $PLAN9/bin/'""'
fi
popd
export PATH="$originalPath"
}
installPhase()
{
# Copy the `9' utility. This way you can use
# $ 9 awk
# to use the plan 9 awk
mkdir $out/bin
ln -s $PLAN9/bin/9 $out/bin
}
genericBuild