Fixing the license of google earth according to ludo advices:
[nixpkgs-libre.git] / doc / release-notes.xml
blobb68ac515b3067a8902325e569c4e1f3edf21f104
1 <?xml version="1.0" encoding="UTF-8"?>
2 <article xmlns="http://docbook.org/ns/docbook"
3          xmlns:xlink="http://www.w3.org/1999/xlink">
5 <title>Nixpkgs Release Notes</title>
8 <section><title>Release 0.12 (TBA)</title>
10 <para>This release has the following improvements:
12 <itemizedlist>
14   <listitem><para>TODO: simplified and expanded stdenv hook
15   handling.</para></listitem>
17   <listitem><para>Important updates:
19     <itemizedlist>
21       <listitem><para>Glibc 2.7.</para></listitem>
22       
23       <listitem><para>GCC 4.2.4.</para></listitem>
25       <listitem><para>Linux 2.6.25.</para></listitem>
27     </itemizedlist>
29   </para></listitem>
31 </itemizedlist>
33 </para>
35 </section>
36   
38 <section><title>Release 0.11 (September 11, 2007)</title>
40 <para>This release has the following improvements:
42 <itemizedlist>
44   
45   <listitem><para>The standard build environment
46   (<literal>stdenv</literal>) is now pure on the
47   <literal>x86_64-linux</literal> and <literal>powerpc-linux</literal>
48   platforms, just as on <literal>i686-linux</literal>.  (Purity means
49   that building and using the standard environment has no dependencies
50   outside of the Nix store.  For instance, it doesn’t require an
51   external C compiler such as <filename>/usr/bin/gcc</filename>.)
52   Also, the statically linked binaries used in the bootstrap process
53   are now automatically reproducible, making it easy to update the
54   bootstrap tools and to add support for other Linux platforms.  See
55   <filename>pkgs/stdenv/linux/make-bootstrap-tools.nix</filename> for
56   details.</para></listitem>
58   
59   <listitem><para>Hook variables in the generic builder are now
60   executed using the <function>eval</function> shell command.  This
61   has a major advantage: you can write hooks directly in Nix
62   expressions.  For instance, rather than writing a builder like this:
64 <programlisting>
65 source $stdenv/setup
67 postInstall=postInstall
68 postInstall() {
69     ln -sf gzip $out/bin/gunzip
70     ln -sf gzip $out/bin/zcat
73 genericBuild</programlisting>
75   (the <literal>gzip</literal> builder), you can just add this
76   attribute to the derivation:
78 <programlisting>
79 postInstall = "ln -sf gzip $out/bin/gunzip; ln -sf gzip $out/bin/zcat";</programlisting>
81   and so a separate build script becomes unnecessary.  This should
82   allow us to get rid of most builders in Nixpkgs.</para></listitem>
85   <listitem><para>It is now possible to have the generic builder pass
86   arguments to <command>configure</command> and
87   <command>make</command> that contain whitespace.  Previously, for
88   example, you could say in a builder,
90 <programlisting>
91 configureFlags="CFLAGS=-O0"</programlisting>
93   but not
95 <programlisting>
96 configureFlags="CFLAGS=-O0 -g"</programlisting>
98   since the <literal>-g</literal> would be interpreted as a separate
99   argument to <command>configure</command>.  Now you can say
101 <programlisting>
102 configureFlagsArray=("CFLAGS=-O0 -g")</programlisting>
104   or similarly
106 <programlisting>
107 configureFlagsArray=("CFLAGS=-O0 -g" "LDFLAGS=-L/foo -L/bar")</programlisting>
109   which does the right thing.  Idem for <literal>makeFlags</literal>,
110   <literal>installFlags</literal>, <literal>checkFlags</literal> and
111   <literal>distFlags</literal>.</para>
113   <para>Unfortunately you can't pass arrays to Bash through the
114   environment, so you can't put the array above in a Nix expression,
115   e.g.,
117 <programlisting>
118 configureFlagsArray = ["CFLAGS=-O0 -g"];</programlisting>
120   since it would just be flattened to a since string.  However, you
121   <emphasis>can</emphasis> use the inline hooks described above:
123 <programlisting>
124 preConfigure = "configureFlagsArray=(\"CFLAGS=-O0 -g\")";</programlisting>
126   </para></listitem>
129   <listitem><para>The function <function>fetchurl</function> now has
130   support for two different kinds of mirroring of files.  First, it
131   has support for <emphasis>content-addressable mirrors</emphasis>.
132   For example, given the <function>fetchurl</function> call
134 <programlisting>
135 fetchurl {
136   url = http://releases.mozilla.org/<replaceable>...</replaceable>/firefox-2.0.0.6-source.tar.bz2;
137   sha1 = "eb72f55e4a8bf08e8c6ef227c0ade3d068ba1082";
138 }</programlisting>
140   <function>fetchurl</function> will first try to download this file
141   from <link
142   xlink:href="http://nixos.org/tarballs/sha1/eb72f55e4a8bf08e8c6ef227c0ade3d068ba1082"/>.
143   If that file doesn’t exist, it will try the original URL.  In
144   general, the “content-addressed” location is
145   <replaceable>mirror</replaceable><literal>/</literal><replaceable>hash-type</replaceable><literal>/</literal><replaceable>hash</replaceable>.
146   There is currently only one content-addressable mirror (<link
147   xlink:href="http://nixos.org/tarballs"/>), but more can be
148   specified in the <varname>hashedMirrors</varname> attribute in
149   <filename>pkgs/build-support/fetchurl/mirrors.nix</filename>, or by
150   setting the <envar>NIX_HASHED_MIRRORS</envar> environment variable
151   to a whitespace-separated list of URLs.</para>
153   <para>Second, <function>fetchurl</function> has support for
154   widely-mirrored distribution sites such as SourceForge or the Linux
155   kernel archives.  Given a URL of the form
156   <literal>mirror://<replaceable>site</replaceable>/<replaceable>path</replaceable></literal>,
157   it will try to download <replaceable>path</replaceable> from a
158   configurable list of mirrors for <replaceable>site</replaceable>.
159   (This idea was borrowed from Gentoo Linux.)  Example:
160 <programlisting>
161 fetchurl {
162   url = mirror://gnu/gcc/gcc-4.2.0/gcc-core-4.2.0.tar.bz2;
163   sha256 = "0ykhzxhr8857dr97z0j9wyybfz1kjr71xk457cfapfw5fjas4ny1";
164 }</programlisting>
165   Currently <replaceable>site</replaceable> can be
166   <literal>sourceforge</literal>, <literal>gnu</literal> and
167   <literal>kernel</literal>.  The list of mirrors is defined in
168   <filename>pkgs/build-support/fetchurl/mirrors.nix</filename>.  You
169   can override the list of mirrors for a particular site by setting
170   the environment variable
171   <envar>NIX_MIRRORS_<replaceable>site</replaceable></envar>, e.g.
172 <programlisting>
173 export NIX_MIRRORS_sourceforge=http://osdn.dl.sourceforge.net/sourceforge/</programlisting>
174   </para>
176   </listitem>
179   <listitem><para>Important updates:
181     <itemizedlist>
183       <listitem><para>Glibc 2.5.</para></listitem>
184       
185       <listitem><para>GCC 4.1.2.</para></listitem>
186       
187       <listitem><para>Gnome 2.16.3.</para></listitem>
188       
189       <listitem><para>X11R7.2.</para></listitem>
190       
191       <listitem><para>Linux 2.6.21.7 and 2.6.22.6.</para></listitem>
192       
193       <listitem><para>Emacs 22.1.</para></listitem>
194       
195     </itemizedlist>
197   </para></listitem>
199   
200   <listitem><para>Major new packages:
202     <itemizedlist>
204       <listitem><para>KDE 3.5.6 Base.</para></listitem>
205       
206       <listitem><para>Wine 0.9.43.</para></listitem>
207       
208       <listitem><para>OpenOffice 2.2.1.</para></listitem>
209       
210       <listitem><para>Many Linux system packages to support
211       NixOS.</para></listitem>
212       
213     </itemizedlist>
215   </para></listitem>
217 </itemizedlist>
219 </para>
221 <para>The following people contributed to this release:
223   Andres Löh,
224   Arie Middelkoop,
225   Armijn Hemel,
226   Eelco Dolstra,
227   Marc Weber,
228   Mart Kolthof,
229   Martin Bravenboer,
230   Michael Raskin,
231   Wouter den Breejen and
232   Yury G. Kudryashov.
234 </para>
235   
236 </section>
239 <section><title>Release 0.10 (October 12, 2006)</title>
241 <note><para>This release of Nixpkgs requires <link
242 xlink:href='http://nixos.org/releases/nix/nix-0.10/'>Nix
243 0.10</link> or higher.</para></note>
245 <para>This release has the following improvements:</para>
247 <itemizedlist>
249   <listitem><para><filename>pkgs/system/all-packages-generic.nix</filename>
250   is gone, we now just have
251   <filename>pkgs/top-level/all-packages.nix</filename> that contains
252   all available packages.  This should cause much less confusion with
253   users.  <filename>all-packages.nix</filename> is a function that by
254   default returns packages for the current platform, but you can
255   override this by specifying a different <varname>system</varname>
256   argument.</para></listitem>
258   <listitem><para>Certain packages in Nixpkgs are now
259   user-configurable through a configuration file, i.e., without having
260   to edit the Nix expressions in Nixpkgs.  For instance, the Firefox
261   provided in the Nixpkgs channel is built without the RealPlayer
262   plugin (for legal reasons).  Previously, you could easily enable
263   RealPlayer support by editing the call to the Firefox function in
264   <filename>all-packages.nix</filename>, but such changes are not
265   respected when Firefox is subsequently updated through the Nixpkgs
266   channel.</para>
268   <para>The Nixpkgs configuration file (found in
269   <filename>~/.nixpkgs/config.nix</filename> or through the
270   <envar>NIXPKGS_CONFIG</envar> environment variable) is an attribute
271   set that contains configuration options that
272   <filename>all-packages.nix</filename> reads and uses for certain
273   packages.  For instance, the following configuration file:
275 <programlisting>
277   firefox = {
278     enableRealPlayer = true;
279   };
280 }</programlisting>
282   persistently enables RealPlayer support in the Firefox
283   build.</para>
285   <para>(Actually, <literal>firefox.enableRealPlayer</literal> is the
286   <emphasis>only</emphasis> configuration option currently available,
287   but more are sure to be added.)</para></listitem>
289   <listitem><para>Support for new platforms:
291     <itemizedlist>
293       <listitem><para><literal>i686-cygwin</literal>, i.e., Windows
294       (using <link xlink:href="http://www.cygwin.com/">Cygwin</link>).
295       The standard environment on <literal>i686-cygwin</literal> by
296       default builds binaries for the Cygwin environment (i.e., it
297       uses Cygwin tools and produces executables that use the Cygwin
298       library).  However, there is also a standard environment that
299       produces binaries that use <link
300       xlink:href="http://www.mingw.org/">MinGW</link>.  You can use it
301       by calling <filename>all-package.nix</filename> with the
302       <varname>stdenvType</varname> argument set to
303       <literal>"i686-mingw"</literal>.</para></listitem>
305       <listitem><para><literal>i686-darwin</literal>, i.e., Mac OS X
306       on Intel CPUs.</para></listitem>
308       <listitem><para><literal>powerpc-linux</literal>.</para></listitem>
310       <listitem><para><literal>x86_64-linux</literal>, i.e., Linux on
311       64-bit AMD/Intel CPUs.  Unlike <literal>i686-linux</literal>,
312       this platform doesn’t have a pure <literal>stdenv</literal>
313       yet.</para></listitem>
315     </itemizedlist>
317     </para>
319   </listitem>
320         
321   <listitem><para>The default compiler is now GCC 4.1.1.</para></listitem>
323   <listitem><para>X11 updated to X.org’s X11R7.1.</para></listitem>
325   <listitem><para>Notable new packages:
327     <itemizedlist>
329       <listitem><para>Opera.</para></listitem>
331       <listitem><para>Microsoft Visual C++ 2005 Express Edition and
332       the Windows SDK.</para></listitem>
334     </itemizedlist>
336     In total there are now around 809 packages in Nixpkgs.</para>
338   </listitem>
340   
341   <listitem><para>It is now <emphasis>much</emphasis> easier to
342   override the default C compiler and other tools in
343   <literal>stdenv</literal> for specific packages.
344   <filename>all-packages.nix</filename> provides two utility
345   functions for this purpose: <function>overrideGCC</function> and
346   <function>overrideInStdenv</function>.  Both take a
347   <literal>stdenv</literal> and return an augmented
348   <literal>stdenv</literal>; the formed changes the C compiler, and
349   the latter adds additional packages to the front of
350   <literal>stdenv</literal>’s initial <envar>PATH</envar>, allowing
351   tools to be overriden.</para>
353   <para>For instance, the package <varname>strategoxt</varname>
354   doesn’t build with the GNU Make in <literal>stdenv</literal>
355   (version 3.81), so we call it with an augmented
356   <literal>stdenv</literal> that uses GNU Make 3.80:
358 <programlisting>
359 strategoxt = (import ../development/compilers/strategoxt) {
360   inherit fetchurl pkgconfig sdf aterm;
361   stdenv = overrideInStdenv stdenv [gnumake380];
364 gnumake380 = <replaceable>...</replaceable>;</programlisting>
366   Likewise, there are many packages that don’t compile with the
367   default GCC (4.1.1), but that’s easily fixed:
369 <programlisting>
370 exult = import ../games/exult {
371   inherit fetchurl SDL SDL_mixer zlib libpng unzip;
372   stdenv = overrideGCC stdenv gcc34;
373 };</programlisting>
375   </para></listitem>
378   <listitem><para>It has also become much easier to experiment with
379   changes to the <literal>stdenv</literal> setup script (which notably
380   contains the generic builder).  Since edits to
381   <filename>pkgs/stdenv/generic/setup.sh</filename> trigger a rebuild
382   of <emphasis>everything</emphasis>, this was formerly quite painful.
383   But now <literal>stdenv</literal> contains a function to
384   “regenerate” <literal>stdenv</literal> with a different setup
385   script, allowing the use of a different setup script for specific
386   packages:
388 <programlisting>
389 pkg = import <replaceable>...</replaceable> {
390   stdenv = stdenv.regenerate ./my-setup.sh;
391   <replaceable>...</replaceable>
392 }</programlisting>
394   </para></listitem>
397   <listitem><para>Packages can now have a human-readable
398   <emphasis>description</emphasis> field.  Package descriptions are
399   shown by <literal>nix-env -qa --description</literal>.  In addition,
400   they’re shown on the Nixpkgs release page.  A description can be
401   added to a package as follows:
403 <programlisting>
404 stdenv.mkDerivation {
405   name = "exult-1.2";
406   <replaceable>...</replaceable>
407   meta = {
408     description = "A reimplementation of the Ultima VII game engine";
409   };
410 }</programlisting>
412   The <varname>meta</varname> attribute is not passed to the builder,
413   so changes to the description do not trigger a rebuild.  Additional
414   <varname>meta</varname> attributes may be defined in the future
415   (such as the URL of the package’s homepage, the license,
416   etc.).</para></listitem>
417   
418 </itemizedlist>
421 <para>The following people contributed to this release:
423   Andres Löh,
424   Armijn Hemel,
425   Christof Douma,
426   Eelco Dolstra,
427   Eelco Visser,
428   Mart Kolthof,
429   Martin Bravenboer,
430   Merijn de Jonge,
431   Rob Vermaas and
432   Roy van den Broek.
434 </para>
435   
436 </section>
439 <section><title>Release 0.9 (January 31, 2006)</title>
441 <para>There have been zillions of changes since the last release of
442 Nixpkgs.  Many packages have been added or updated.  The following are
443 some of the more notable changes:</para>
445 <itemizedlist>
447   <listitem><para>Distribution files have been moved to <link
448   xlink:href="http://nixos.org/" />.</para></listitem>
450   <listitem><para>The C library on Linux, Glibc, has been updated to
451   version 2.3.6.</para></listitem>
453   <listitem><para>The default compiler is now GCC 3.4.5.  GCC 4.0.2 is
454   also available.</para></listitem>
456   <listitem><para>The old, unofficial Xlibs has been replaced by the
457   official modularised X11 distribution from X.org, i.e., X11R7.0.
458   X11R7.0 consists of 287 (!) packages, all of which are in Nixpkgs
459   though not all have been tested.  It is now possible to build a
460   working X server (previously we only had X client libraries).  We
461   use a fully Nixified X server on NixOS.</para></listitem>
463   <listitem><para>The Sun JDK 5 has been purified, i.e., it doesn’t
464   require any non-Nix components such as
465   <filename>/lib/ld-linux.so.2</filename>.  This means that Java
466   applications such as Eclipse and Azureus can run on
467   NixOS.</para></listitem>
469   <listitem><para>Hardware-accelerated OpenGL support, used by games
470   like Quake 3 (which is now built from source).</para></listitem>
472   <listitem><para>Improved support for FreeBSD on
473   x86.</para></listitem>
475   <listitem><para>Improved Haskell support; e.g., the GHC build is now
476   pure.</para></listitem>
478   <listitem><para>Some support for cross-compilation: cross-compiling
479   builds of GCC and Binutils, and cross-compiled builds of the C
480   library uClibc.</para></listitem>
482   <listitem><para>Notable new packages:
484     <itemizedlist>
486       <listitem><para>teTeX, including support for building LaTeX
487       documents using Nix (with automatic dependency
488       determination).</para></listitem>
489       
490       <listitem><para>Ruby.</para></listitem>
492       <listitem><para>System-level packages to support NixOS,
493       e.g. Grub, GNU <literal>parted</literal> and so
494       on.</para></listitem>
496       <listitem><para><literal>ecj</literal>, the Eclipse Compiler for
497       Java, so we finally have a freely distributable compiler that
498       supports Java 5.0.</para></listitem>
500       <listitem><para><literal>php</literal>.</para></listitem>
502       <listitem><para>The GIMP.</para></listitem>
504       <listitem><para>Inkscape.</para></listitem>
506       <listitem><para>GAIM.</para></listitem>
508       <listitem><para><literal>kdelibs</literal>.  This allows us to
509       add KDE-based packages (such as
510       <literal>kcachegrind</literal>).</para></listitem>
512     </itemizedlist>
514   </para></listitem>
516 </itemizedlist>
518 <para>The following people contributed to this release:
520   Andres Löh,
521   Armijn Hemel,
522   Bogdan Dumitriu,
523   Christof Douma,
524   Eelco Dolstra,
525   Eelco Visser,
526   Mart Kolthof,
527   Martin Bravenboer,
528   Rob Vermaas and
529   Roy van den Broek.
531 </para>
533 </section>
536 <section><title>Release 0.8 (April 11, 2005)</title>
538 <para>This release is mostly to remain synchronised with the changed
539 hashing scheme in Nix 0.8.</para>
541 <para>Notable updates:
543 <itemizedlist>
545   <listitem><para>Adobe Reader 7.0</para></listitem>
547   <listitem><para>Various security updates (zlib 1.2.2, etc.)</para></listitem>
549 </itemizedlist>
551 </para>
553 </section>
556 <section><title>Release 0.7 (March 14, 2005)</title>
558 <itemizedlist>
560 <listitem>
562   <para>The bootstrap process for the standard build
563   environment on Linux (stdenv-linux) has been improved.  It is no
564   longer dependent in its initial bootstrap stages on the system
565   Glibc, GCC, and other tools.  Rather, Nixpkgs contains a statically
566   linked bash and curl, and uses that to download other statically
567   linked tools.  These are then used to build a Glibc and dynamically
568   linked versions of all other tools.</para>
570   <para>This change also makes the bootstrap process faster.  For
571   instance, GCC is built only once instead of three times.</para>
573   <para>(Contributed by Armijn Hemel.)</para>
575 </listitem>
577 <listitem>
579   <para>Tarballs used by Nixpkgs are now obtained from the same server
580   that hosts Nixpkgs (<link
581   xlink:href="http://catamaran.labs.cs.uu.nl/" />).  This reduces the
582   risk of packages being unbuildable due to moved or deleted files on
583   various servers.</para>
585 </listitem>
587 <listitem>
589   <para>There now is a generic mechanism for building Perl modules.
590   See the various Perl modules defined in
591   pkgs/system/all-packages-generic.nix.</para>
593 </listitem>
595 <listitem>
597   <para>Notable new packages:
599   <itemizedlist>
601     <listitem><para>Qt 3</para></listitem>
602     <listitem><para>MySQL</para></listitem>
603     <listitem><para>MythTV</para></listitem>
604     <listitem><para>Mono</para></listitem>
605     <listitem><para>MonoDevelop (alpha)</para></listitem>
606     <listitem><para>Xine</para></listitem>
608   </itemizedlist>
610   </para>
612 </listitem>
614 <listitem>
616   <para>Notable updates:
618   <itemizedlist>
620     <listitem><para>GCC 3.4.3</para></listitem>
621     <listitem><para>Glibc 2.3.4</para></listitem>
622     <listitem><para>GTK 2.6</para></listitem>
624   </itemizedlist>
626   </para>
628 </listitem>
630 </itemizedlist>
632 </section>
634   
635 </article>