mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2025-01-08 14:40:07 +03:00
28b6fb61e6
This is done for the sake of Yosemite, which does not have gcc, and yet this change is also compatible with Linux.
73 lines
2.0 KiB
Nix
73 lines
2.0 KiB
Nix
{ lib, stdenv, fetchurl, enableThreading ? true }:
|
|
|
|
let
|
|
|
|
libc = if stdenv.cc.libc or null != null then stdenv.cc.libc else "/usr";
|
|
|
|
in
|
|
|
|
stdenv.mkDerivation rec {
|
|
name = "perl-5.16.3";
|
|
|
|
src = fetchurl {
|
|
url = "mirror://cpan/src/${name}.tar.gz";
|
|
sha256 = "1dpd9lhc4723wmsn4dsn4m320qlqgyw28bvcbhnfqp2nl3f0ikv9";
|
|
};
|
|
|
|
patches =
|
|
[ # Do not look in /usr etc. for dependencies.
|
|
./no-sys-dirs.patch
|
|
./no-impure-config-time.patch
|
|
./fixed-man-page-date.patch
|
|
./no-date-in-perl-binary.patch
|
|
]
|
|
++ lib.optional stdenv.isSunOS ./ld-shared.patch
|
|
++ lib.optional stdenv.isDarwin [ ./cpp-precomp.patch ./no-libutil.patch ] ;
|
|
|
|
# Build a thread-safe Perl with a dynamic libperls.o. We need the
|
|
# "installstyle" option to ensure that modules are put under
|
|
# $out/lib/perl5 - this is the general default, but because $out
|
|
# contains the string "perl", Configure would select $out/lib.
|
|
# Miniperl needs -lm. perl needs -lrt.
|
|
configureFlags =
|
|
[ "-de"
|
|
"-Uinstallusrbinperl"
|
|
"-Dinstallstyle=lib/perl5"
|
|
"-Duseshrplib"
|
|
"-Dlocincpth=${libc}/include"
|
|
"-Dloclibpth=${libc}/lib"
|
|
]
|
|
++ lib.optional enableThreading "-Dusethreads";
|
|
|
|
configureScript = "${stdenv.shell} ./Configure";
|
|
|
|
dontAddPrefix = true;
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
preConfigure =
|
|
''
|
|
configureFlags="$configureFlags -Dprefix=$out -Dman1dir=$out/share/man/man1 -Dman3dir=$out/share/man/man3"
|
|
|
|
${lib.optionalString stdenv.isArm ''
|
|
configureFlagsArray=(-Dldflags="-lm -lrt")
|
|
''}
|
|
|
|
${lib.optionalString stdenv.isCygwin ''
|
|
cp cygwin/cygwin.c{,.bak}
|
|
echo "#define PERLIO_NOT_STDIO 0" > tmp
|
|
cat tmp cygwin/cygwin.c.bak > cygwin/cygwin.c
|
|
''}
|
|
'';
|
|
|
|
preBuild = lib.optionalString (!(stdenv ? cc && stdenv.cc.nativeTools))
|
|
''
|
|
# Make Cwd work on NixOS (where we don't have a /bin/pwd).
|
|
substituteInPlace dist/Cwd/Cwd.pm --replace "'/bin/pwd'" "'$(type -tP pwd)'"
|
|
'';
|
|
|
|
setupHook = ./setup-hook.sh;
|
|
|
|
passthru.libPrefix = "lib/perl5/site_perl";
|
|
}
|