Perl: Difference between revisions
imported>Raboof document caveats running a perl script |
imported>NieDzejkob describe wrapping PERL5LIB |
||
Line 12: | Line 12: | ||
* After reviewing the result from the previous step and making appropriate modifications, add it to <code>pkgs/top-level/perl-packages.nix</code>. Note that some things use <code>buildPerlPackage</code> while some use <code>buildPerlModule</code>. Also note the mostly-followed naming convention as well as the mostly-followed alphabetical ordering. There are plenty of examples in <tt>perl-packages.nix</tt> — use the source, Luke! | * After reviewing the result from the previous step and making appropriate modifications, add it to <code>pkgs/top-level/perl-packages.nix</code>. Note that some things use <code>buildPerlPackage</code> while some use <code>buildPerlModule</code>. Also note the mostly-followed naming convention as well as the mostly-followed alphabetical ordering. There are plenty of examples in <tt>perl-packages.nix</tt> — use the source, Luke! | ||
* Build and test. | * Build and test. | ||
==Wrappers for installed programs== | |||
To make perl modules available to a program in your derivation: | |||
* add <code>makeWrapper</code> to <code>buildInputs</code> | |||
* run <code>wrapProgram $pathToScript --set PERL5LIB ${perlPackages.makeFullPerlPath [ perlPackages.Whatever ]}</code> in <code>postInstall</code> | |||
[[Category:Languages]] | [[Category:Languages]] |
Revision as of 15:23, 27 January 2021
Running a Perl script
Common problems and solutions:
Can't locate DB_File.pm in @INC (you may need to install the DB_File module)
: run it with nix-shell -p perl -p perlPackages.DBFile --run ./myscript.pl
./myscript.pl: bad interpreter: /usr/bin/perl: no such file or directory
: change the first line of the script to #!/usr/bin/env -S perl
or start it with perl ./myscript.pl
Adding something from CPAN to nixpkgs
- Use the nix-generate-from-cpan.pl script (see nixpkgs/maintainers/scripts/) to generate something appropriate.
Example usage: nix-generate-from-cpan.pl Devel::REPL - After reviewing the result from the previous step and making appropriate modifications, add it to
pkgs/top-level/perl-packages.nix
. Note that some things usebuildPerlPackage
while some usebuildPerlModule
. Also note the mostly-followed naming convention as well as the mostly-followed alphabetical ordering. There are plenty of examples in perl-packages.nix — use the source, Luke! - Build and test.
Wrappers for installed programs
To make perl modules available to a program in your derivation:
- add
makeWrapper
tobuildInputs
- run
wrapProgram $pathToScript --set PERL5LIB ${perlPackages.makeFullPerlPath [ perlPackages.Whatever ]}
inpostInstall