summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra2009-04-20 16:00:40 +0000
committerEelco Dolstra2009-04-20 16:00:40 +0000
commit01f309e2d4901f74eee8f0f8a13d68be67801484 (patch)
treeeb42ad0e46af4be03d88ae8224fdb0ca1938f4b4
parenta00ef2d24747060d36b74a1dc23677d9ad3adf47 (diff)
* Document the X.org generator.
svn path=/nixpkgs/trunk/; revision=15189
-rw-r--r--doc/package-notes.xml54
1 files changed, 51 insertions, 3 deletions
diff --git a/doc/package-notes.xml b/doc/package-notes.xml
index 6291abbe9bd8..9ace151e512b 100644
--- a/doc/package-notes.xml
+++ b/doc/package-notes.xml
@@ -165,12 +165,60 @@ splashutils_15 = ...;</programlisting>
 <!--============================================================-->
 
 <section>
-  <title>X.org</title>
-  <para>* Expression is auto-generated</para>
-  <para>* How to update</para>
+
+<title>X.org</title>
+
+<para>The Nix expressions for the X.org packages reside in
+<filename>pkgs/servers/x11/xorg/default.nix</filename>.  This file is
+automatically generated from lists of tarballs in an X.org
+release.  As such it should not be modified directly; rather, you
+should modify the lists or the generator script.</para>
+
+<para>The generator is invoked as follows:
+
+<screen>
+$ cd pkgs/servers/x11/xorg
+$ cat tarballs-7.4.list extra.list old.list \
+  | perl ./generate-expr-from-tarballs.pl
+</screen>
+
+For each of the tarballs in the <filename>.list</filename> files, the
+script downloads it, unpacks it, and searches its
+<filename>configure.ac</filename> and <filename>*.pc.in</filename>
+files for dependencies.  This information is used to generate
+<filename>default.nix</filename>.  The generator caches downloaded
+tarballs between runs.  Pay close attention to the <literal>NOT FOUND:
+<replaceable>name</replaceable></literal> messages at the end of the
+run, since they may indicate missing dependencies.  (Some might be
+optional dependencies, however.)</para>
+
+<para>A file like <filename>tarballs-7.4.list</filename> contains all
+tarballs in a X.org release.  It can be generated like this:
+
+<screen>
+$ export i="mirror://xorg/X11R7.4/src/everything/"
+$ cat $(PRINT_PATH=1 nix-prefetch-url $i | tail -n 1) \
+  | perl -e 'while (&lt;>) { if (/(href|HREF)="([^"]*.bz2)"/) { print "$ENV{'i'}$2\n"; }; }' \
+  | sort > tarballs-7.4.list
+</screen>
+
+<filename>extra.list</filename> contains libraries that aren’t part of
+X.org proper, but are closely related to it, such as
+<literal>libxcb</literal>.  <filename>old.list</filename> contains
+some packages that were removed from X.org, but are still needed by
+some people or by other packages (such as
+<varname>imake</varname>).</para>
+
+<para>If the expression for a package requires derivation attributes
+that the generator cannot figure out automatically (say,
+<varname>patches</varname> or a <varname>postInstall</varname> hook),
+you should modify the generator script
+(<varname>generate-expr-from-tarballs.pl</varname>).</para>
+
 </section>
 
 
+
 <!--============================================================-->
 
 <section>