diff options
-rw-r--r-- | doc/languages-frameworks/perl.xml | 3 | ||||
-rw-r--r-- | pkgs/top-level/perl-packages.nix | 41 |
2 files changed, 42 insertions, 2 deletions
diff --git a/doc/languages-frameworks/perl.xml b/doc/languages-frameworks/perl.xml index 7f219b8b09dd..149fcb275a09 100644 --- a/doc/languages-frameworks/perl.xml +++ b/doc/languages-frameworks/perl.xml @@ -186,7 +186,8 @@ for a module may (indirectly) import a native module. In that case, you will need to make a stub for that module that will satisfy the Makefile.PL and install it into <filename>lib/perl5/site_perl/cross_perl/${perl.version}</filename>. -</para> +See the <varname>postInstall</varname> for <varname>DBI</varname> for +an example.</para> </section> diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix index 815bf73210f6..c92a55721788 100644 --- a/pkgs/top-level/perl-packages.nix +++ b/pkgs/top-level/perl-packages.nix @@ -3835,11 +3835,50 @@ let self = _self // overrides; _self = with self; { }; DBI = buildPerlPackage rec { - name = "DBI-1.636"; + name = "DBI-${version}"; + version = "1.6.36"; src = fetchurl { url = "mirror://cpan/authors/id/T/TI/TIMB/${name}.tar.gz"; sha256 = "8f7ddce97c04b4b7a000e65e5d05f679c964d62c8b02c94c1a7d815bb2dd676c"; }; + postInstall = stdenv.lib.optionalString (perl ? crossVersion) '' + mkdir -p $out/lib/perl5/site_perl/cross_perl/${perl.version}/DBI + cat > $out/lib/perl5/site_perl/cross_perl/${perl.version}/DBI.pm <<EOF + package DBI; + BEGIN { + our \$VERSION = "$version"; + } + 1; + EOF + + autodir=$(echo $out/lib/perl5/site_perl/${perl.version}/*/auto/DBI) + cat > $out/lib/perl5/site_perl/cross_perl/${perl.version}/DBI/DBD.pm <<EOF + package DBI::DBD; + use Exporter (); + use vars qw (@ISA @EXPORT); + @ISA = qw(Exporter); + @EXPORT = qw(dbd_postamble); + sub dbd_postamble { + return ' + # --- This section was generated by DBI::DBD::dbd_postamble() + DBI_INSTARCH_DIR=$autodir + DBI_DRIVER_XST=$autodir/Driver.xst + + # The main dependency (technically correct but probably not used) + \$(BASEEXT).c: \$(BASEEXT).xsi + + # This dependency is needed since MakeMaker uses the .xs.o rule + \$(BASEEXT)\$(OBJ_EXT): \$(BASEEXT).xsi + + \$(BASEEXT).xsi: \$(DBI_DRIVER_XST) $autodir/Driver_xst.h + \$(PERL) -p -e "s/~DRIVER~/\$(BASEEXT)/g" \$(DBI_DRIVER_XST) > \$(BASEEXT).xsi + + # --- + '; + } + 1; + EOF + ''; meta = { homepage = http://dbi.perl.org/; description = "Database independent interface for Perl"; |