at 17.09-beta 22 kB view raw
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"> 4 5<title>Nixpkgs Release Notes</title> 6 7 8<section><title>Release 0.14 (June 4, 2012)</title> 9 10<para>In preparation for the switch from Subversion to Git, this 11release is mainly the prevent the Nixpkgs version number from going 12backwards. (This would happen because prerelease version numbers 13produced for the Git repository are lower than those for the 14Subversion repository.)</para> 15 16<para>Since the last release, there have been thousands of changes and 17new packages by numerous contributors. For details, see the commit 18logs.</para> 19 20</section> 21 22 23<section><title>Release 0.13 (February 5, 2010)</title> 24 25<para>As always, there are many changes. Some of the most important 26updates are: 27 28<itemizedlist> 29 30 <listitem><para>Glibc 2.9.</para></listitem> 31 32 <listitem><para>GCC 4.3.3.</para></listitem> 33 34 <listitem><para>Linux 2.6.32.</para></listitem> 35 36 <listitem><para>X.org 7.5.</para></listitem> 37 38 <listitem><para>KDE 4.3.4.</para></listitem> 39 40</itemizedlist> 41 42</para> 43 44 45</section> 46 47 48<section><title>Release 0.12 (April 24, 2009)</title> 49 50<para>There are way too many additions to Nixpkgs since the last 51release to list here: for example, the number of packages on Linux has 52increased from 1002 to 2159. However, some specific improvements are 53worth listing: 54 55<itemizedlist> 56 57 <listitem><para>Nixpkgs now has a manual. In particular, it 58 describes the standard build environment in 59 detail.</para></listitem> 60 61 <listitem><para>Major new packages: 62 63 <itemizedlist> 64 65 <listitem><para>KDE 4.</para></listitem> 66 67 <listitem><para>TeXLive.</para></listitem> 68 69 <listitem><para>VirtualBox.</para></listitem> 70 71 </itemizedlist> 72 73 … and many others. 74 75 </para></listitem> 76 77 <listitem><para>Important updates: 78 79 <itemizedlist> 80 81 <listitem><para>Glibc 2.7.</para></listitem> 82 83 <listitem><para>GCC 4.2.4.</para></listitem> 84 85 <listitem><para>Linux 2.6.25 — 2.6.28.</para></listitem> 86 87 <listitem><para>Firefox 3.</para></listitem> 88 89 <listitem><para>X.org 7.3.</para></listitem> 90 91 </itemizedlist> 92 93 </para></listitem> 94 95 <listitem><para>Support for building derivations in a virtual 96 machine, including RPM and Debian builds in automatically generated 97 VM images. See 98 <filename>pkgs/build-support/vm/default.nix</filename> for 99 details.</para></listitem> 100 101 <listitem><para>Improved support for building Haskell 102 packages.</para></listitem> 103 104</itemizedlist> 105 106</para> 107 108<para>The following people contributed to this release: 109 110Andres Löh, 111Arie Middelkoop, 112Armijn Hemel, 113Eelco Dolstra, 114Lluís Batlle, 115Ludovic Courtès, 116Marc Weber, 117Mart Kolthof, 118Martin Bravenboer, 119Michael Raskin, 120Nicolas Pierron, 121Peter Simons, 122Pjotr Prins, 123Rob Vermaas, 124Sander van der Burg, 125Tobias Hammerschmidt, 126Valentin David, 127Wouter den Breejen and 128Yury G. Kudryashov. 129 130In addition, several people contributed patches on the 131<literal>nix-dev</literal> mailing list.</para> 132 133</section> 134 135 136<section><title>Release 0.11 (September 11, 2007)</title> 137 138<para>This release has the following improvements: 139 140<itemizedlist> 141 142 143 <listitem><para>The standard build environment 144 (<literal>stdenv</literal>) is now pure on the 145 <literal>x86_64-linux</literal> and <literal>powerpc-linux</literal> 146 platforms, just as on <literal>i686-linux</literal>. (Purity means 147 that building and using the standard environment has no dependencies 148 outside of the Nix store. For instance, it doesn’t require an 149 external C compiler such as <filename>/usr/bin/gcc</filename>.) 150 Also, the statically linked binaries used in the bootstrap process 151 are now automatically reproducible, making it easy to update the 152 bootstrap tools and to add support for other Linux platforms. See 153 <filename>pkgs/stdenv/linux/make-bootstrap-tools.nix</filename> for 154 details.</para></listitem> 155 156 157 <listitem><para>Hook variables in the generic builder are now 158 executed using the <function>eval</function> shell command. This 159 has a major advantage: you can write hooks directly in Nix 160 expressions. For instance, rather than writing a builder like this: 161 162<programlisting> 163source $stdenv/setup 164 165postInstall=postInstall 166postInstall() { 167 ln -sf gzip $out/bin/gunzip 168 ln -sf gzip $out/bin/zcat 169} 170 171genericBuild</programlisting> 172 173 (the <literal>gzip</literal> builder), you can just add this 174 attribute to the derivation: 175 176<programlisting> 177postInstall = "ln -sf gzip $out/bin/gunzip; ln -sf gzip $out/bin/zcat";</programlisting> 178 179 and so a separate build script becomes unnecessary. This should 180 allow us to get rid of most builders in Nixpkgs.</para></listitem> 181 182 183 <listitem><para>It is now possible to have the generic builder pass 184 arguments to <command>configure</command> and 185 <command>make</command> that contain whitespace. Previously, for 186 example, you could say in a builder, 187 188<programlisting> 189configureFlags="CFLAGS=-O0"</programlisting> 190 191 but not 192 193<programlisting> 194configureFlags="CFLAGS=-O0 -g"</programlisting> 195 196 since the <literal>-g</literal> would be interpreted as a separate 197 argument to <command>configure</command>. Now you can say 198 199<programlisting> 200configureFlagsArray=("CFLAGS=-O0 -g")</programlisting> 201 202 or similarly 203 204<programlisting> 205configureFlagsArray=("CFLAGS=-O0 -g" "LDFLAGS=-L/foo -L/bar")</programlisting> 206 207 which does the right thing. Idem for <literal>makeFlags</literal>, 208 <literal>installFlags</literal>, <literal>checkFlags</literal> and 209 <literal>distFlags</literal>.</para> 210 211 <para>Unfortunately you can't pass arrays to Bash through the 212 environment, so you can't put the array above in a Nix expression, 213 e.g., 214 215<programlisting> 216configureFlagsArray = ["CFLAGS=-O0 -g"];</programlisting> 217 218 since it would just be flattened to a since string. However, you 219 <emphasis>can</emphasis> use the inline hooks described above: 220 221<programlisting> 222preConfigure = "configureFlagsArray=(\"CFLAGS=-O0 -g\")";</programlisting> 223 224 </para></listitem> 225 226 227 <listitem><para>The function <function>fetchurl</function> now has 228 support for two different kinds of mirroring of files. First, it 229 has support for <emphasis>content-addressable mirrors</emphasis>. 230 For example, given the <function>fetchurl</function> call 231 232<programlisting> 233fetchurl { 234 url = http://releases.mozilla.org/<replaceable>...</replaceable>/firefox-2.0.0.6-source.tar.bz2; 235 sha1 = "eb72f55e4a8bf08e8c6ef227c0ade3d068ba1082"; 236}</programlisting> 237 238 <function>fetchurl</function> will first try to download this file 239 from <link 240 xlink:href="http://tarballs.nixos.org/sha1/eb72f55e4a8bf08e8c6ef227c0ade3d068ba1082"/>. 241 If that file doesn’t exist, it will try the original URL. In 242 general, the “content-addressed” location is 243 <replaceable>mirror</replaceable><literal>/</literal><replaceable>hash-type</replaceable><literal>/</literal><replaceable>hash</replaceable>. 244 There is currently only one content-addressable mirror (<link 245 xlink:href="http://tarballs.nixos.org"/>), but more can be 246 specified in the <varname>hashedMirrors</varname> attribute in 247 <filename>pkgs/build-support/fetchurl/mirrors.nix</filename>, or by 248 setting the <envar>NIX_HASHED_MIRRORS</envar> environment variable 249 to a whitespace-separated list of URLs.</para> 250 251 <para>Second, <function>fetchurl</function> has support for 252 widely-mirrored distribution sites such as SourceForge or the Linux 253 kernel archives. Given a URL of the form 254 <literal>mirror://<replaceable>site</replaceable>/<replaceable>path</replaceable></literal>, 255 it will try to download <replaceable>path</replaceable> from a 256 configurable list of mirrors for <replaceable>site</replaceable>. 257 (This idea was borrowed from Gentoo Linux.) Example: 258<programlisting> 259fetchurl { 260 url = mirror://gnu/gcc/gcc-4.2.0/gcc-core-4.2.0.tar.bz2; 261 sha256 = "0ykhzxhr8857dr97z0j9wyybfz1kjr71xk457cfapfw5fjas4ny1"; 262}</programlisting> 263 Currently <replaceable>site</replaceable> can be 264 <literal>sourceforge</literal>, <literal>gnu</literal> and 265 <literal>kernel</literal>. The list of mirrors is defined in 266 <filename>pkgs/build-support/fetchurl/mirrors.nix</filename>. You 267 can override the list of mirrors for a particular site by setting 268 the environment variable 269 <envar>NIX_MIRRORS_<replaceable>site</replaceable></envar>, e.g. 270<programlisting> 271export NIX_MIRRORS_sourceforge=http://osdn.dl.sourceforge.net/sourceforge/</programlisting> 272 </para> 273 274 </listitem> 275 276 277 <listitem><para>Important updates: 278 279 <itemizedlist> 280 281 <listitem><para>Glibc 2.5.</para></listitem> 282 283 <listitem><para>GCC 4.1.2.</para></listitem> 284 285 <listitem><para>Gnome 2.16.3.</para></listitem> 286 287 <listitem><para>X11R7.2.</para></listitem> 288 289 <listitem><para>Linux 2.6.21.7 and 2.6.22.6.</para></listitem> 290 291 <listitem><para>Emacs 22.1.</para></listitem> 292 293 </itemizedlist> 294 295 </para></listitem> 296 297 298 <listitem><para>Major new packages: 299 300 <itemizedlist> 301 302 <listitem><para>KDE 3.5.6 Base.</para></listitem> 303 304 <listitem><para>Wine 0.9.43.</para></listitem> 305 306 <listitem><para>OpenOffice 2.2.1.</para></listitem> 307 308 <listitem><para>Many Linux system packages to support 309 NixOS.</para></listitem> 310 311 </itemizedlist> 312 313 </para></listitem> 314 315</itemizedlist> 316 317</para> 318 319<para>The following people contributed to this release: 320 321 Andres Löh, 322 Arie Middelkoop, 323 Armijn Hemel, 324 Eelco Dolstra, 325 Marc Weber, 326 Mart Kolthof, 327 Martin Bravenboer, 328 Michael Raskin, 329 Wouter den Breejen and 330 Yury G. Kudryashov. 331 332</para> 333 334</section> 335 336 337<section><title>Release 0.10 (October 12, 2006)</title> 338 339<note><para>This release of Nixpkgs requires <link 340xlink:href='http://nixos.org/releases/nix/nix-0.10/'>Nix 3410.10</link> or higher.</para></note> 342 343<para>This release has the following improvements:</para> 344 345<itemizedlist> 346 347 <listitem><para><filename>pkgs/system/all-packages-generic.nix</filename> 348 is gone, we now just have 349 <filename>pkgs/top-level/all-packages.nix</filename> that contains 350 all available packages. This should cause much less confusion with 351 users. <filename>all-packages.nix</filename> is a function that by 352 default returns packages for the current platform, but you can 353 override this by specifying a different <varname>system</varname> 354 argument.</para></listitem> 355 356 <listitem><para>Certain packages in Nixpkgs are now 357 user-configurable through a configuration file, i.e., without having 358 to edit the Nix expressions in Nixpkgs. For instance, the Firefox 359 provided in the Nixpkgs channel is built without the RealPlayer 360 plugin (for legal reasons). Previously, you could easily enable 361 RealPlayer support by editing the call to the Firefox function in 362 <filename>all-packages.nix</filename>, but such changes are not 363 respected when Firefox is subsequently updated through the Nixpkgs 364 channel.</para> 365 366 <para>The Nixpkgs configuration file (found in 367 <filename>~/.nixpkgs/config.nix</filename> or through the 368 <envar>NIXPKGS_CONFIG</envar> environment variable) is an attribute 369 set that contains configuration options that 370 <filename>all-packages.nix</filename> reads and uses for certain 371 packages. For instance, the following configuration file: 372 373<programlisting> 374{ 375 firefox = { 376 enableRealPlayer = true; 377 }; 378}</programlisting> 379 380 persistently enables RealPlayer support in the Firefox 381 build.</para> 382 383 <para>(Actually, <literal>firefox.enableRealPlayer</literal> is the 384 <emphasis>only</emphasis> configuration option currently available, 385 but more are sure to be added.)</para></listitem> 386 387 <listitem><para>Support for new platforms: 388 389 <itemizedlist> 390 391 <listitem><para><literal>i686-cygwin</literal>, i.e., Windows 392 (using <link xlink:href="http://www.cygwin.com/">Cygwin</link>). 393 The standard environment on <literal>i686-cygwin</literal> by 394 default builds binaries for the Cygwin environment (i.e., it 395 uses Cygwin tools and produces executables that use the Cygwin 396 library). However, there is also a standard environment that 397 produces binaries that use <link 398 xlink:href="http://www.mingw.org/">MinGW</link>. You can use it 399 by calling <filename>all-package.nix</filename> with the 400 <varname>stdenvType</varname> argument set to 401 <literal>"i686-mingw"</literal>.</para></listitem> 402 403 <listitem><para><literal>i686-darwin</literal>, i.e., Mac OS X 404 on Intel CPUs.</para></listitem> 405 406 <listitem><para><literal>powerpc-linux</literal>.</para></listitem> 407 408 <listitem><para><literal>x86_64-linux</literal>, i.e., Linux on 409 64-bit AMD/Intel CPUs. Unlike <literal>i686-linux</literal>, 410 this platform doesn’t have a pure <literal>stdenv</literal> 411 yet.</para></listitem> 412 413 </itemizedlist> 414 415 </para> 416 417 </listitem> 418 419 <listitem><para>The default compiler is now GCC 4.1.1.</para></listitem> 420 421 <listitem><para>X11 updated to X.org’s X11R7.1.</para></listitem> 422 423 <listitem><para>Notable new packages: 424 425 <itemizedlist> 426 427 <listitem><para>Opera.</para></listitem> 428 429 <listitem><para>Microsoft Visual C++ 2005 Express Edition and 430 the Windows SDK.</para></listitem> 431 432 </itemizedlist> 433 434 In total there are now around 809 packages in Nixpkgs.</para> 435 436 </listitem> 437 438 439 <listitem><para>It is now <emphasis>much</emphasis> easier to 440 override the default C compiler and other tools in 441 <literal>stdenv</literal> for specific packages. 442 <filename>all-packages.nix</filename> provides two utility 443 functions for this purpose: <function>overrideGCC</function> and 444 <function>overrideInStdenv</function>. Both take a 445 <literal>stdenv</literal> and return an augmented 446 <literal>stdenv</literal>; the formed changes the C compiler, and 447 the latter adds additional packages to the front of 448 <literal>stdenv</literal>’s initial <envar>PATH</envar>, allowing 449 tools to be overridden.</para> 450 451 <para>For instance, the package <varname>strategoxt</varname> 452 doesn’t build with the GNU Make in <literal>stdenv</literal> 453 (version 3.81), so we call it with an augmented 454 <literal>stdenv</literal> that uses GNU Make 3.80: 455 456<programlisting> 457strategoxt = (import ../development/compilers/strategoxt) { 458 inherit fetchurl pkgconfig sdf aterm; 459 stdenv = overrideInStdenv stdenv [gnumake380]; 460}; 461 462gnumake380 = <replaceable>...</replaceable>;</programlisting> 463 464 Likewise, there are many packages that don’t compile with the 465 default GCC (4.1.1), but that’s easily fixed: 466 467<programlisting> 468exult = import ../games/exult { 469 inherit fetchurl SDL SDL_mixer zlib libpng unzip; 470 stdenv = overrideGCC stdenv gcc34; 471};</programlisting> 472 473 </para></listitem> 474 475 476 <listitem><para>It has also become much easier to experiment with 477 changes to the <literal>stdenv</literal> setup script (which notably 478 contains the generic builder). Since edits to 479 <filename>pkgs/stdenv/generic/setup.sh</filename> trigger a rebuild 480 of <emphasis>everything</emphasis>, this was formerly quite painful. 481 But now <literal>stdenv</literal> contains a function to 482 “regenerate” <literal>stdenv</literal> with a different setup 483 script, allowing the use of a different setup script for specific 484 packages: 485 486<programlisting> 487pkg = import <replaceable>...</replaceable> { 488 stdenv = stdenv.regenerate ./my-setup.sh; 489 <replaceable>...</replaceable> 490}</programlisting> 491 492 </para></listitem> 493 494 495 <listitem><para>Packages can now have a human-readable 496 <emphasis>description</emphasis> field. Package descriptions are 497 shown by <literal>nix-env -qa --description</literal>. In addition, 498 they’re shown on the Nixpkgs release page. A description can be 499 added to a package as follows: 500 501<programlisting> 502stdenv.mkDerivation { 503 name = "exult-1.2"; 504 <replaceable>...</replaceable> 505 meta = { 506 description = "A reimplementation of the Ultima VII game engine"; 507 }; 508}</programlisting> 509 510 The <varname>meta</varname> attribute is not passed to the builder, 511 so changes to the description do not trigger a rebuild. Additional 512 <varname>meta</varname> attributes may be defined in the future 513 (such as the URL of the package’s homepage, the license, 514 etc.).</para></listitem> 515 516</itemizedlist> 517 518 519<para>The following people contributed to this release: 520 521 Andres Löh, 522 Armijn Hemel, 523 Christof Douma, 524 Eelco Dolstra, 525 Eelco Visser, 526 Mart Kolthof, 527 Martin Bravenboer, 528 Merijn de Jonge, 529 Rob Vermaas and 530 Roy van den Broek. 531 532</para> 533 534</section> 535 536 537<section><title>Release 0.9 (January 31, 2006)</title> 538 539<para>There have been zillions of changes since the last release of 540Nixpkgs. Many packages have been added or updated. The following are 541some of the more notable changes:</para> 542 543<itemizedlist> 544 545 <listitem><para>Distribution files have been moved to <link 546 xlink:href="http://nixos.org/" />.</para></listitem> 547 548 <listitem><para>The C library on Linux, Glibc, has been updated to 549 version 2.3.6.</para></listitem> 550 551 <listitem><para>The default compiler is now GCC 3.4.5. GCC 4.0.2 is 552 also available.</para></listitem> 553 554 <listitem><para>The old, unofficial Xlibs has been replaced by the 555 official modularised X11 distribution from X.org, i.e., X11R7.0. 556 X11R7.0 consists of 287 (!) packages, all of which are in Nixpkgs 557 though not all have been tested. It is now possible to build a 558 working X server (previously we only had X client libraries). We 559 use a fully Nixified X server on NixOS.</para></listitem> 560 561 <listitem><para>The Sun JDK 5 has been purified, i.e., it doesn’t 562 require any non-Nix components such as 563 <filename>/lib/ld-linux.so.2</filename>. This means that Java 564 applications such as Eclipse and Azureus can run on 565 NixOS.</para></listitem> 566 567 <listitem><para>Hardware-accelerated OpenGL support, used by games 568 like Quake 3 (which is now built from source).</para></listitem> 569 570 <listitem><para>Improved support for FreeBSD on 571 x86.</para></listitem> 572 573 <listitem><para>Improved Haskell support; e.g., the GHC build is now 574 pure.</para></listitem> 575 576 <listitem><para>Some support for cross-compilation: cross-compiling 577 builds of GCC and Binutils, and cross-compiled builds of the C 578 library uClibc.</para></listitem> 579 580 <listitem><para>Notable new packages: 581 582 <itemizedlist> 583 584 <listitem><para>teTeX, including support for building LaTeX 585 documents using Nix (with automatic dependency 586 determination).</para></listitem> 587 588 <listitem><para>Ruby.</para></listitem> 589 590 <listitem><para>System-level packages to support NixOS, 591 e.g. Grub, GNU <literal>parted</literal> and so 592 on.</para></listitem> 593 594 <listitem><para><literal>ecj</literal>, the Eclipse Compiler for 595 Java, so we finally have a freely distributable compiler that 596 supports Java 5.0.</para></listitem> 597 598 <listitem><para><literal>php</literal>.</para></listitem> 599 600 <listitem><para>The GIMP.</para></listitem> 601 602 <listitem><para>Inkscape.</para></listitem> 603 604 <listitem><para>GAIM.</para></listitem> 605 606 <listitem><para><literal>kdelibs</literal>. This allows us to 607 add KDE-based packages (such as 608 <literal>kcachegrind</literal>).</para></listitem> 609 610 </itemizedlist> 611 612 </para></listitem> 613 614</itemizedlist> 615 616<para>The following people contributed to this release: 617 618 Andres Löh, 619 Armijn Hemel, 620 Bogdan Dumitriu, 621 Christof Douma, 622 Eelco Dolstra, 623 Eelco Visser, 624 Mart Kolthof, 625 Martin Bravenboer, 626 Rob Vermaas and 627 Roy van den Broek. 628 629</para> 630 631</section> 632 633 634<section><title>Release 0.8 (April 11, 2005)</title> 635 636<para>This release is mostly to remain synchronised with the changed 637hashing scheme in Nix 0.8.</para> 638 639<para>Notable updates: 640 641<itemizedlist> 642 643 <listitem><para>Adobe Reader 7.0</para></listitem> 644 645 <listitem><para>Various security updates (zlib 1.2.2, etc.)</para></listitem> 646 647</itemizedlist> 648 649</para> 650 651</section> 652 653 654<section><title>Release 0.7 (March 14, 2005)</title> 655 656<itemizedlist> 657 658<listitem> 659 660 <para>The bootstrap process for the standard build 661 environment on Linux (stdenv-linux) has been improved. It is no 662 longer dependent in its initial bootstrap stages on the system 663 Glibc, GCC, and other tools. Rather, Nixpkgs contains a statically 664 linked bash and curl, and uses that to download other statically 665 linked tools. These are then used to build a Glibc and dynamically 666 linked versions of all other tools.</para> 667 668 <para>This change also makes the bootstrap process faster. For 669 instance, GCC is built only once instead of three times.</para> 670 671 <para>(Contributed by Armijn Hemel.)</para> 672 673</listitem> 674 675<listitem> 676 677 <para>Tarballs used by Nixpkgs are now obtained from the same server 678 that hosts Nixpkgs (<link 679 xlink:href="http://catamaran.labs.cs.uu.nl/" />). This reduces the 680 risk of packages being unbuildable due to moved or deleted files on 681 various servers.</para> 682 683</listitem> 684 685<listitem> 686 687 <para>There now is a generic mechanism for building Perl modules. 688 See the various Perl modules defined in 689 pkgs/system/all-packages-generic.nix.</para> 690 691</listitem> 692 693<listitem> 694 695 <para>Notable new packages: 696 697 <itemizedlist> 698 699 <listitem><para>Qt 3</para></listitem> 700 <listitem><para>MySQL</para></listitem> 701 <listitem><para>MythTV</para></listitem> 702 <listitem><para>Mono</para></listitem> 703 <listitem><para>MonoDevelop (alpha)</para></listitem> 704 <listitem><para>Xine</para></listitem> 705 706 </itemizedlist> 707 708 </para> 709 710</listitem> 711 712<listitem> 713 714 <para>Notable updates: 715 716 <itemizedlist> 717 718 <listitem><para>GCC 3.4.3</para></listitem> 719 <listitem><para>Glibc 2.3.4</para></listitem> 720 <listitem><para>GTK 2.6</para></listitem> 721 722 </itemizedlist> 723 724 </para> 725 726</listitem> 727 728</itemizedlist> 729 730</section> 731 732 733</article>