[Nix-dev] Nixpkgs 0.11 released

Eelco Dolstra eelco at cs.uu.nl
Wed Sep 12 11:57:14 CEST 2007


Hi,

I'm pleased to announce the availability of a new stable release of the
Nix Packages collection.  Release 0.11 can be found at

  http://nix.cs.uu.nl/dist/nix/nixpkgs-0.11/

*** Release notes ***

The release notes can also be found (in a nicer format than ASCII) at
http://nix.cs.uu.nl/dist/nix/nixpkgs-0.11/release-notes/.

This release has the following improvements:

  * The standard build environment (stdenv) is now pure on the x86_64-linux and
    powerpc-linux platforms, just as on i686-linux. (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 /usr
    /bin/gcc.) 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 pkgs/
    stdenv/linux/make-bootstrap-tools.nix for details.

  * Hook variables in the generic builder are now executed using the eval shell
    command. This has a major advantage: you can write hooks directly in Nix
    expressions. For instance, rather than writing a builder like this:

    source $stdenv/setup

    postInstall=postInstall
    postInstall() {
        ln -sf gzip $out/bin/gunzip
        ln -sf gzip $out/bin/zcat
    }

    genericBuild

    (the gzip builder), you can just add this attribute to the derivation:

    postInstall = "ln -sf gzip $out/bin/gunzip; ln -sf gzip $out/bin/zcat";

    and so a separate build script becomes unnecessary. This should allow us to
    get rid of most builders in Nixpkgs.

  * It is now possible to have the generic builder pass arguments to configure
    and make that contain whitespace. Previously, for example, you could say in
    a builder,

    configureFlags="CFLAGS=-O0"

    but not

    configureFlags="CFLAGS=-O0 -g"

    since the -g would be interpreted as a separate argument to configure. Now
    you can say

    configureFlagsArray=("CFLAGS=-O0 -g")

    or similarly

    configureFlagsArray=("CFLAGS=-O0 -g" "LDFLAGS=-L/foo -L/bar")

    which does the right thing. Idem for makeFlags, installFlags, checkFlags
    and distFlags.

    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.,

    configureFlagsArray = ["CFLAGS=-O0 -g"];

    since it would just be flattened to a since string. However, you can use
    the inline hooks described above:

    preConfigure = "configureFlagsArray=(\"CFLAGS=-O0 -g\")";

  * The function fetchurl now has support for two different kinds of mirroring
    of files. First, it has support for content-addressable mirrors. For
    example, given the fetchurl call

    fetchurl {
      url = http://releases.mozilla.org/.../firefox-2.0.0.6-source.tar.bz2;
      sha1 = "eb72f55e4a8bf08e8c6ef227c0ade3d068ba1082";
    }

    fetchurl will first try to download this file from http://nix.cs.uu.nl/dist
    /tarballs/sha1/eb72f55e4a8bf08e8c6ef227c0ade3d068ba1082. If that file
    doesn't exist, it will try the original URL. In general, the
    "content-addressed" location is mirror/hash-type/hash. There is currently
    only one content-addressable mirror (http://nix.cs.uu.nl/dist/tarballs),
    but more can be specified in the hashedMirrors attribute in pkgs/
    build-support/fetchurl/mirrors.nix, or by setting the NIX_HASHED_MIRRORS
    environment variable to a whitespace-separated list of URLs.

    Second, fetchurl has support for widely-mirrored distribution sites such as
    SourceForge or the Linux kernel archives. Given a URL of the form mirror://
    site/path, it will try to download path from a configurable list of mirrors
    for site. (This idea was borrowed from Gentoo Linux.) Example:

    fetchurl {
      url = mirror://gnu/gcc/gcc-4.2.0/gcc-core-4.2.0.tar.bz2;
      sha256 = "0ykhzxhr8857dr97z0j9wyybfz1kjr71xk457cfapfw5fjas4ny1";
    }

    Currently site can be sourceforge, gnu and kernel. The list of mirrors is
    defined in pkgs/build-support/fetchurl/mirrors.nix. You can override the
    list of mirrors for a particular site by setting the environment variable
    NIX_MIRRORS_site, e.g.

    export NIX_MIRRORS_sourceforge=http://osdn.dl.sourceforge.net/sourceforge/

  * Important updates:

      o Glibc 2.5.

      o GCC 4.1.2.

      o Gnome 2.16.3.

      o X11R7.2.

      o Linux 2.6.21.7 and 2.6.22.6.

      o Emacs 22.1.

  * Major new packages:

      o KDE 3.5.6 Base.

      o Wine 0.9.43.

      o OpenOffice 2.2.1.

      o Many Linux system packages to support NixOS.

The following people contributed to this release: Andres Löh, Arie Middelkoop,
Armijn Hemel, Eelco Dolstra, Marc Weber, Mart Kolthof, Martin Bravenboer,
Michael Raskin, Wouter den Breejen and Yury G. Kudryashov.

-- 
Eelco Dolstra | http://www.cs.uu.nl/~eelco



More information about the nix-dev mailing list