nixpkgs/pkgs/development/perl-modules/generic/builder.sh

60 lines
1.7 KiB
Bash
Raw Normal View History

source $stdenv/setup
PERL5LIB="$PERL5LIB${PERL5LIB:+:}$out/lib/site_perl"
perlFlags=
for i in $(IFS=:; echo $PERL5LIB); do
perlFlags="$perlFlags -I$i"
done
oldPreConfigure="$preConfigure"
preConfigure() {
eval "$oldPreConfigure"
find . | while read fn; do
if test -f "$fn"; then
first=$(dd if="$fn" count=2 bs=1 2> /dev/null)
if test "$first" = "#!"; then
echo "patching $fn..."
sed < "$fn" > "$fn".tmp \
-e "s|^#\!\(.*/perl.*\)$|#\! \1$perlFlags|"
if test -x "$fn"; then chmod +x "$fn".tmp; fi
mv "$fn".tmp "$fn"
fi
fi
done
perl Makefile.PL PREFIX=$out $makeMakerFlags
}
postFixup=postFixup
postFixup() {
# If a user installs a Perl package, she probably also wants its
# dependencies in the user environment (since Perl modules don't
# have something like an RPATH, so the only way to find the
# dependencies is to have them in the PERL5LIB variable).
if test -e $out/nix-support/propagated-build-inputs; then
ln -s $out/nix-support/propagated-build-inputs $out/nix-support/propagated-user-env-packages
fi
# Some (broken?) packages install in $out/lib/${perlVersion}
# instead of $out/lib/site_perl/${perlVersion}. Try to fix that
# automatically.
if ! test -e $out/lib/site_perl; then
echo "fixing wrong Perl installation path..."
ensureDir $out/lib/site_perl
for i in $out/lib/5.*; do mv $i $out/lib/site_perl; done
fi
}
if test -n "$perlPreHook"; then
eval "$perlPreHook"
fi
genericBuild
if test -n "$perlPostHook"; then
eval "$perlPostHook"
fi