summary refs log tree commit diff
path: root/doc
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2013-06-13 15:39:08 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2013-06-13 15:56:23 +0200
commit629daa2102abbcb368cd46ac1f0a85c0bbe104f5 (patch)
treeb980a61e4634af94703059511a5ec2c7f30c5d6c /doc
parenta79076b7aa0d52873be79f8185f0b0b396a0e57d (diff)
downloadnixpkgs-629daa2102abbcb368cd46ac1f0a85c0bbe104f5.tar
nixpkgs-629daa2102abbcb368cd46ac1f0a85c0bbe104f5.tar.gz
nixpkgs-629daa2102abbcb368cd46ac1f0a85c0bbe104f5.tar.bz2
nixpkgs-629daa2102abbcb368cd46ac1f0a85c0bbe104f5.tar.lz
nixpkgs-629daa2102abbcb368cd46ac1f0a85c0bbe104f5.tar.xz
nixpkgs-629daa2102abbcb368cd46ac1f0a85c0bbe104f5.tar.zst
nixpkgs-629daa2102abbcb368cd46ac1f0a85c0bbe104f5.zip
Rewrite the CPAN generator to Perl
Also:

- It's now installable by doing "nix-env -i nix-generate-from-cpan".

- It maps dependencies to the correct attribute (e.g. HTML::HeadParser
  is mapped to HTMLParser).

- It automatically selects buildPerlPackage or buildPerlModule.

- It's documented in the manual.
Diffstat (limited to 'doc')
-rw-r--r--doc/language-support.xml39
1 files changed, 38 insertions, 1 deletions
diff --git a/doc/language-support.xml b/doc/language-support.xml
index 6cc028c0b0a..cb40be4bf57 100644
--- a/doc/language-support.xml
+++ b/doc/language-support.xml
@@ -21,7 +21,7 @@ standard <varname>Makefile.PL</varname>.  It’s implemented in <link
 xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/perl-modules/generic"><filename>pkgs/development/perl-modules/generic</filename></link>.</para>
 
 <para>Perl packages from CPAN are defined in <link
-xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/top-level/perl-packages.nix"><filename>pkgs/perl-packages.nix</filename></link>,
+xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/top-level/perl-packages.nix"><filename>pkgs/top-level/perl-packages.nix</filename></link>,
 rather than <filename>pkgs/all-packages.nix</filename>.  Most Perl
 packages are so straight-forward to build that they are defined here
 directly, rather than having a separate function for each package
@@ -151,6 +151,43 @@ ClassC3Componentised = buildPerlPackage rec {
 
 </para>
 
+<section><title>Generation from CPAN</title>
+
+<para>Nix expressions for Perl packages can be generated (almost)
+automatically from CPAN.  This is done by the program
+<command>nix-generate-from-cpan</command>, which can be installed
+as follows:</para>
+
+<screen>
+$ nix-env -i nix-generate-from-cpan
+</screen>
+
+<para>This program takes a Perl module name, looks it up on CPAN,
+fetches and unpacks the corresponding package, and prints a Nix
+expression on standard output.  For example:
+
+<screen>
+$ nix-generate-from-cpan XML::Simple
+  XMLSimple = buildPerlPackage {
+    name = "XML-Simple-2.20";
+    src = fetchurl {
+      url = mirror://cpan/authors/id/G/GR/GRANTM/XML-Simple-2.20.tar.gz;
+      sha256 = "5cff13d0802792da1eb45895ce1be461903d98ec97c9c953bc8406af7294434a";
+    };
+    propagatedBuildInputs = [ XMLNamespaceSupport XMLSAX XMLSAXExpat ];
+    meta = {
+      description = "Easily read/write XML (esp config files)";
+      license = "perl";
+    };
+  };
+</screen>
+
+The output can be pasted into
+<filename>pkgs/top-level/perl-packages.nix</filename> or wherever else
+you need it.</para>
+
+</section>
+
 </section>