mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-18 02:46:28 +00:00
5c3a0cf2c4
svn path=/nixpkgs/trunk/; revision=8773
535 lines
16 KiB
XML
535 lines
16 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<article xmlns="http://docbook.org/ns/docbook"
|
||
xmlns:xlink="http://www.w3.org/1999/xlink">
|
||
|
||
<title>Nixpkgs Release Notes</title>
|
||
|
||
|
||
<section><title>Release 0.11 (TBA)</title>
|
||
|
||
<para>This release has the following improvements:
|
||
|
||
<itemizedlist>
|
||
|
||
|
||
<listitem><para>The standard build environment
|
||
(<literal>stdenv</literal>) is now pure on the
|
||
<literal>x86_64-linux</literal> and <literal>powerpc-linux</literal>
|
||
platforms, just like <literal>i686-linux</literal>. (Purity means
|
||
that building and using the standard environment has no dependencies
|
||
outside of the Nix store. For instance, it doesn’t require an
|
||
external C compiler such as <filename>/usr/bin/gcc</filename>.)
|
||
Also, the statically linked binaries used in the bootstrap process
|
||
are now automatically reproducible, making it easy to update the
|
||
bootstrap tools and to add support for other Linux platforms. See
|
||
<filename>pkgs/stdenv/linux/make-bootstrap-tools.nix</filename> for
|
||
details.</para></listitem>
|
||
|
||
|
||
<listitem><para>Hook variables in the generic builder are now
|
||
executed using the <function>eval</function> shell command. This
|
||
has a major advantage: you can write hooks directly in Nix
|
||
expressions. For instance, rather than write a builder like this:
|
||
|
||
<programlisting>
|
||
source $stdenv/setup
|
||
|
||
postInstall=postInstall
|
||
postInstall() {
|
||
ln -sf gzip $out/bin/gunzip
|
||
ln -sf gzip $out/bin/zcat
|
||
}
|
||
|
||
genericBuild</programlisting>
|
||
|
||
(the <literal>gzip</literal> builder), you can just add this
|
||
attribute to the derivation:
|
||
|
||
<programlisting>
|
||
postInstall = "ln -sf gzip $out/bin/gunzip; ln -sf gzip $out/bin/zcat";</programlisting>
|
||
|
||
and so a separate build script becomes unnecessary. This should
|
||
allow us to get rid of most builders in Nixpkgs.</para></listitem>
|
||
|
||
|
||
<listitem><para>It is now possible to have the generic builder pass
|
||
arguments to <command>configure</command> and
|
||
<command>make</command> that contain whitespace. Previously, for
|
||
example, you could say in a builder,
|
||
|
||
<programlisting>
|
||
configureFlags="CFLAGS=-O0"</programlisting>
|
||
|
||
but not
|
||
|
||
<programlisting>
|
||
configureFlags="CFLAGS=-O0 -g"</programlisting>
|
||
|
||
since the <literal>-g</literal> would be interpreted as a separate
|
||
argument to <command>configure</command>. Now you can say
|
||
|
||
<programlisting>
|
||
configureFlagsArray=("CFLAGS=-O0 -g")</programlisting>
|
||
|
||
or similarly
|
||
|
||
<programlisting>
|
||
configureFlagsArray=("CFLAGS=-O0 -g" "LDFLAGS=-L/foo -L/bar")</programlisting>
|
||
|
||
which does the right thing. Idem for <literal>makeFlags</literal>,
|
||
<literal>installFlags</literal>, <literal>checkFlags</literal> and
|
||
<literal>distFlags</literal>.</para>
|
||
|
||
<para>Unfortunately you can't pass arrays to Bash through the
|
||
environment, so you can't put the array above in a Nix expression,
|
||
e.g.,
|
||
|
||
<programlisting>
|
||
configureFlagsArray = ["CFLAGS=-O0 -g"];</programlisting>
|
||
|
||
since it would just be flattened to a since string. However, you
|
||
<emphasis>can</emphasis> use the inline hooks described above:
|
||
|
||
<programlisting>
|
||
preConfigure = "configureFlagsArray=(\"CFLAGS=-O0 -g\")";</programlisting>
|
||
|
||
</para></listitem>
|
||
|
||
|
||
<listitem><para>Important updates:
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem><para>Glibc 2.5.</para></listitem>
|
||
|
||
<listitem><para>GCC 4.1.2.</para></listitem>
|
||
|
||
<listitem><para>Gnome 2.16.3.</para></listitem>
|
||
|
||
<listitem><para>X11R7.2.</para></listitem>
|
||
|
||
<listitem><para>Linux 2.6.20.11.</para></listitem>
|
||
|
||
</itemizedlist>.
|
||
|
||
</para></listitem>
|
||
|
||
|
||
<listitem><para>Major new packages:
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem><para>KDE 3.5.6 Base.</para></listitem>
|
||
|
||
<listitem><para>Many Linux system packages to support
|
||
NixOS.</para></listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</para></listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</para>
|
||
|
||
</section>
|
||
|
||
|
||
<section><title>Release 0.10 (October 12, 2006)</title>
|
||
|
||
<note><para>This release of Nixpkgs requires <link
|
||
xlink:href='http://nix.cs.uu.nl/dist/nix/nix-0.10/'>Nix
|
||
0.10</link> or higher.</para></note>
|
||
|
||
<para>This release has the following improvements:</para>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem><para><filename>pkgs/system/all-packages-generic.nix</filename>
|
||
is gone, we now just have
|
||
<filename>pkgs/top-level/all-packages.nix</filename> that contains
|
||
all available packages. This should cause much less confusion with
|
||
users. <filename>all-packages.nix</filename> is a function that by
|
||
default returns packages for the current platform, but you can
|
||
override this by specifying a different <varname>system</varname>
|
||
argument.</para></listitem>
|
||
|
||
<listitem><para>Certain packages in Nixpkgs are now
|
||
user-configurable through a configuration file, i.e., without having
|
||
to edit the Nix expressions in Nixpkgs. For instance, the Firefox
|
||
provided in the Nixpkgs channel is built without the RealPlayer
|
||
plugin (for legal reasons). Previously, you could easily enable
|
||
RealPlayer support by editing the call to the Firefox function in
|
||
<filename>all-packages.nix</filename>, but such changes are not
|
||
respected when Firefox is subsequently updated through the Nixpkgs
|
||
channel.</para>
|
||
|
||
<para>The Nixpkgs configuration file (found in
|
||
<filename>~/.nixpkgs/config.nix</filename> or through the
|
||
<envar>NIXPKGS_CONFIG</envar> environment variable) is an attribute
|
||
set that contains configuration options that
|
||
<filename>all-packages.nix</filename> reads and uses for certain
|
||
packages. For instance, the following configuration file:
|
||
|
||
<programlisting>
|
||
{
|
||
firefox = {
|
||
enableRealPlayer = true;
|
||
};
|
||
}</programlisting>
|
||
|
||
persistently enables RealPlayer support in the Firefox
|
||
build.</para>
|
||
|
||
<para>(Actually, <literal>firefox.enableRealPlayer</literal> is the
|
||
<emphasis>only</emphasis> configuration option currently available,
|
||
but more are sure to be added.)</para></listitem>
|
||
|
||
<listitem><para>Support for new platforms:
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem><para><literal>i686-cygwin</literal>, i.e., Windows
|
||
(using <link xlink:href="http://www.cygwin.com/">Cygwin</link>).
|
||
The standard environment on <literal>i686-cygwin</literal> by
|
||
default builds binaries for the Cygwin environment (i.e., it
|
||
uses Cygwin tools and produces executables that use the Cygwin
|
||
library). However, there is also a standard environment that
|
||
produces binaries that use <link
|
||
xlink:href="http://www.mingw.org/">MinGW</link>. You can use it
|
||
by calling <filename>all-package.nix</filename> with the
|
||
<varname>stdenvType</varname> argument set to
|
||
<literal>"i686-mingw"</literal>.</para></listitem>
|
||
|
||
<listitem><para><literal>i686-darwin</literal>, i.e., Mac OS X
|
||
on Intel CPUs.</para></listitem>
|
||
|
||
<listitem><para><literal>powerpc-linux</literal>.</para></listitem>
|
||
|
||
<listitem><para><literal>x86_64-linux</literal>, i.e., Linux on
|
||
64-bit AMD/Intel CPUs. Unlike <literal>i686-linux</literal>,
|
||
this platform doesn’t have a pure <literal>stdenv</literal>
|
||
yet.</para></listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</para>
|
||
|
||
</listitem>
|
||
|
||
<listitem><para>The default compiler is now GCC 4.1.1.</para></listitem>
|
||
|
||
<listitem><para>X11 updated to X.org’s X11R7.1.</para></listitem>
|
||
|
||
<listitem><para>Notable new packages:
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem><para>Opera.</para></listitem>
|
||
|
||
<listitem><para>Microsoft Visual C++ 2005 Express Edition and
|
||
the Windows SDK.</para></listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
In total there are now around 809 packages in Nixpkgs.</para>
|
||
|
||
</listitem>
|
||
|
||
|
||
<listitem><para>It is now <emphasis>much</emphasis> easier to
|
||
override the default C compiler and other tools in
|
||
<literal>stdenv</literal> for specific packages.
|
||
<filename>all-packages.nix</filename> provides two utility
|
||
functions for this purpose: <function>overrideGCC</function> and
|
||
<function>overrideInStdenv</function>. Both take a
|
||
<literal>stdenv</literal> and return an augmented
|
||
<literal>stdenv</literal>; the formed changes the C compiler, and
|
||
the latter adds additional packages to the front of
|
||
<literal>stdenv</literal>’s initial <envar>PATH</envar>, allowing
|
||
tools to be overriden.</para>
|
||
|
||
<para>For instance, the package <varname>strategoxt</varname>
|
||
doesn’t build with the GNU Make in <literal>stdenv</literal>
|
||
(version 3.81), so we call it with an augmented
|
||
<literal>stdenv</literal> that uses GNU Make 3.80:
|
||
|
||
<programlisting>
|
||
strategoxt = (import ../development/compilers/strategoxt) {
|
||
inherit fetchurl pkgconfig sdf aterm;
|
||
stdenv = overrideInStdenv stdenv [gnumake380];
|
||
};
|
||
|
||
gnumake380 = <replaceable>...</replaceable>;</programlisting>
|
||
|
||
Likewise, there are many packages that don’t compile with the
|
||
default GCC (4.1.1), but that’s easily fixed:
|
||
|
||
<programlisting>
|
||
exult = import ../games/exult {
|
||
inherit fetchurl SDL SDL_mixer zlib libpng unzip;
|
||
stdenv = overrideGCC stdenv gcc34;
|
||
};</programlisting>
|
||
|
||
</para></listitem>
|
||
|
||
|
||
<listitem><para>It has also become much easier to experiment with
|
||
changes to the <literal>stdenv</literal> setup script (which notably
|
||
contains the generic builder). Since edits to
|
||
<filename>pkgs/stdenv/generic/setup.sh</filename> trigger a rebuild
|
||
of <emphasis>everything</emphasis>, this was formerly quite painful.
|
||
But now <literal>stdenv</literal> contains a function to
|
||
“regenerate” <literal>stdenv</literal> with a different setup
|
||
script, allowing the use of a different setup script for specific
|
||
packages:
|
||
|
||
<programlisting>
|
||
pkg = import <replaceable>...</replaceable> {
|
||
stdenv = stdenv.regenerate ./my-setup.sh;
|
||
<replaceable>...</replaceable>
|
||
}</programlisting>
|
||
|
||
</para></listitem>
|
||
|
||
|
||
<listitem><para>Packages can now have a human-readable
|
||
<emphasis>description</emphasis> field. Package descriptions are
|
||
shown by <literal>nix-env -qa --description</literal>. In addition,
|
||
they’re shown on the Nixpkgs release page. A description can be
|
||
added to a package as follows:
|
||
|
||
<programlisting>
|
||
stdenv.mkDerivation {
|
||
name = "exult-1.2";
|
||
<replaceable>...</replaceable>
|
||
meta = {
|
||
description = "A reimplementation of the Ultima VII game engine";
|
||
};
|
||
}</programlisting>
|
||
|
||
The <varname>meta</varname> attribute is not passed to the builder,
|
||
so changes to the description do not trigger a rebuild. Additional
|
||
<varname>meta</varname> attributes may be defined in the future
|
||
(such as the URL of the package’s homepage, the license,
|
||
etc.).</para></listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
|
||
<para>The following people contributed to this release:
|
||
|
||
Andres Löh,
|
||
Armijn Hemel,
|
||
Christof Douma,
|
||
Eelco Dolstra,
|
||
Eelco Visser,
|
||
Mart Kolthof,
|
||
Martin Bravenboer,
|
||
Merijn de Jonge,
|
||
Rob Vermaas and
|
||
Roy van den Broek.
|
||
|
||
</para>
|
||
|
||
</section>
|
||
|
||
|
||
<section><title>Release 0.9 (January 31, 2006)</title>
|
||
|
||
<para>There have been zillions of changes since the last release of
|
||
Nixpkgs. Many packages have been added or updated. The following are
|
||
some of the more notable changes:</para>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem><para>Distribution files have been moved to <link
|
||
xlink:href="http://nix.cs.uu.nl/" />.</para></listitem>
|
||
|
||
<listitem><para>The C library on Linux, Glibc, has been updated to
|
||
version 2.3.6.</para></listitem>
|
||
|
||
<listitem><para>The default compiler is now GCC 3.4.5. GCC 4.0.2 is
|
||
also available.</para></listitem>
|
||
|
||
<listitem><para>The old, unofficial Xlibs has been replaced by the
|
||
official modularised X11 distribution from X.org, i.e., X11R7.0.
|
||
X11R7.0 consists of 287 (!) packages, all of which are in Nixpkgs
|
||
though not all have been tested. It is now possible to build a
|
||
working X server (previously we only had X client libraries). We
|
||
use a fully Nixified X server on NixOS.</para></listitem>
|
||
|
||
<listitem><para>The Sun JDK 5 has been purified, i.e., it doesn’t
|
||
require any non-Nix components such as
|
||
<filename>/lib/ld-linux.so.2</filename>. This means that Java
|
||
applications such as Eclipse and Azureus can run on
|
||
NixOS.</para></listitem>
|
||
|
||
<listitem><para>Hardware-accelerated OpenGL support, used by games
|
||
like Quake 3 (which is now built from source).</para></listitem>
|
||
|
||
<listitem><para>Improved support for FreeBSD on
|
||
x86.</para></listitem>
|
||
|
||
<listitem><para>Improved Haskell support; e.g., the GHC build is now
|
||
pure.</para></listitem>
|
||
|
||
<listitem><para>Some support for cross-compilation: cross-compiling
|
||
builds of GCC and Binutils, and cross-compiled builds of the C
|
||
library uClibc.</para></listitem>
|
||
|
||
<listitem><para>Notable new packages:
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem><para>teTeX, including support for building LaTeX
|
||
documents using Nix (with automatic dependency
|
||
determination).</para></listitem>
|
||
|
||
<listitem><para>Ruby.</para></listitem>
|
||
|
||
<listitem><para>System-level packages to support NixOS,
|
||
e.g. Grub, GNU <literal>parted</literal> and so
|
||
on.</para></listitem>
|
||
|
||
<listitem><para><literal>ecj</literal>, the Eclipse Compiler for
|
||
Java, so we finally have a freely distributable compiler that
|
||
supports Java 5.0.</para></listitem>
|
||
|
||
<listitem><para><literal>php</literal>.</para></listitem>
|
||
|
||
<listitem><para>The GIMP.</para></listitem>
|
||
|
||
<listitem><para>Inkscape.</para></listitem>
|
||
|
||
<listitem><para>GAIM.</para></listitem>
|
||
|
||
<listitem><para><literal>kdelibs</literal>. This allows us to
|
||
add KDE-based packages (such as
|
||
<literal>kcachegrind</literal>).</para></listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</para></listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
<para>The following people contributed to this release:
|
||
|
||
Andres Löh,
|
||
Armijn Hemel,
|
||
Bogdan Dumitriu,
|
||
Christof Douma,
|
||
Eelco Dolstra,
|
||
Eelco Visser,
|
||
Mart Kolthof,
|
||
Martin Bravenboer,
|
||
Rob Vermaas and
|
||
Roy van den Broek.
|
||
|
||
</para>
|
||
|
||
</section>
|
||
|
||
|
||
<section><title>Release 0.8 (April 11, 2005)</title>
|
||
|
||
<para>This release is mostly to remain synchronised with the changed
|
||
hashing scheme in Nix 0.8.</para>
|
||
|
||
<para>Notable updates:
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem><para>Adobe Reader 7.0</para></listitem>
|
||
|
||
<listitem><para>Various security updates (zlib 1.2.2, etc.)</para></listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</para>
|
||
|
||
</section>
|
||
|
||
|
||
<section><title>Release 0.7 (March 14, 2005)</title>
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem>
|
||
|
||
<para>The bootstrap process for the standard build
|
||
environment on Linux (stdenv-linux) has been improved. It is no
|
||
longer dependent in its initial bootstrap stages on the system
|
||
Glibc, GCC, and other tools. Rather, Nixpkgs contains a statically
|
||
linked bash and curl, and uses that to download other statically
|
||
linked tools. These are then used to build a Glibc and dynamically
|
||
linked versions of all other tools.</para>
|
||
|
||
<para>This change also makes the bootstrap process faster. For
|
||
instance, GCC is built only once instead of three times.</para>
|
||
|
||
<para>(Contributed by Armijn Hemel.)</para>
|
||
|
||
</listitem>
|
||
|
||
<listitem>
|
||
|
||
<para>Tarballs used by Nixpkgs are now obtained from the same server
|
||
that hosts Nixpkgs (<link
|
||
xlink:href="http://catamaran.labs.cs.uu.nl/" />). This reduces the
|
||
risk of packages being unbuildable due to moved or deleted files on
|
||
various servers.</para>
|
||
|
||
</listitem>
|
||
|
||
<listitem>
|
||
|
||
<para>There now is a generic mechanism for building Perl modules.
|
||
See the various Perl modules defined in
|
||
pkgs/system/all-packages-generic.nix.</para>
|
||
|
||
</listitem>
|
||
|
||
<listitem>
|
||
|
||
<para>Notable new packages:
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem><para>Qt 3</para></listitem>
|
||
<listitem><para>MySQL</para></listitem>
|
||
<listitem><para>MythTV</para></listitem>
|
||
<listitem><para>Mono</para></listitem>
|
||
<listitem><para>MonoDevelop (alpha)</para></listitem>
|
||
<listitem><para>Xine</para></listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</para>
|
||
|
||
</listitem>
|
||
|
||
<listitem>
|
||
|
||
<para>Notable updates:
|
||
|
||
<itemizedlist>
|
||
|
||
<listitem><para>GCC 3.4.3</para></listitem>
|
||
<listitem><para>Glibc 2.3.4</para></listitem>
|
||
<listitem><para>GTK 2.6</para></listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</para>
|
||
|
||
</listitem>
|
||
|
||
</itemizedlist>
|
||
|
||
</section>
|
||
|
||
|
||
</article>
|