[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