linux-initrd: Actually create /dev/console.
[jackhill/guix/guix.git] / NEWS
1 -*- org -*-
2 #+TITLE: Guix NEWS – history of user-visible changes
3 #+STARTUP: content hidestars
4
5 Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
6
7 Copying and distribution of this file, with or without modification,
8 are permitted in any medium without royalty provided the copyright
9 notice and this notice are preserved.
10
11 Please send Guix bug reports to bug-guix@gnu.org.
12
13 * Changes in 0.6 (since 0.5)
14 ** Package management
15 *** Default store directory changed to /gnu/store
16
17 Although it is still possible to configure Guix to use the old store
18 directory, we recommend that you start with a fresh install to /gnu/store.
19
20 *** Substitutes from hydra.gnu.org must now be signed and authorized
21 *** Support for offloading builds to other Guix machines over SSH
22 *** New ‘guix archive’ command
23 *** New ‘guix system’ command; it can currently build VM images
24 *** ‘guix package’ accepts several arguments after -i, -r, and -u
25 *** Updating a profile with ‘guix package’ is now noticeably faster
26 *** ‘guix build’ can override a package’s source with the new ‘--with-source’
27 *** ‘guix build’ has a new ‘--no-build-hook’ option
28 *** ‘guix’ commands that build packages have a common set of options
29 *** ‘guix hash’ has a new ‘--recursive’ option
30 *** Daemon no longer bind-mounts the host’s /dev (improves reproducibility)
31 ** Programming interfaces
32 *** New (guix pk-crypto) and (guix pki) modules for public key cryptography
33 *** New #:local-build? parameter for derivations that shouldn’t be offloaded
34 *** (gnu system vm) has procedures to build VMs that share the host’s store
35 *** New ‘text-file*’ procedure in (guix monads)
36 *** System service definitions are now provided by the (guix services) modules
37 *** New X and SLiM services in (gnu services xorg)
38 *** New (guix git-download) and (guix svn-download) for git/svn checkouts
39 ** GNU distribution
40 *** 91 new packages
41
42 a2ps, asciidoc, aspell-dict-en, aspell-dict-eo, aspell-dict-es,
43 aspell-dict-fr, aumix, bitlbee, bogofilter, boost, calcurse, clusterssh,
44 corkscrew, cursynth, docbook-xml, docbook-xsl, elfutils, enscript, fftwf,
45 fltk, fuse, gcc-toolchain, giflib, glade, gmime, gnome-desktop, gnubg, gnubik,
46 gnumach-headers, gnunet, gnuplot, gnurl, gphoto2, gtkglext, guile-json,
47 guile-reader-for-guile_2.0.11, gxmessage, hdf5, hurd-headers, inkscape, iotop,
48 isc-dhcp, iso-codes, jnettop, libatomic-ops, libexif, libgphoto2, libmpcdec,
49 libmpdclient, libotr, libpcap, libpeas, libpipeline, libtirpc, libwebsockets,
50 ltrace, luajit, lynx, man-db, mc, mig, miniupnpc, moe, mpc123, mpd, ncdc,
51 ncdu, ncmpc, neon, neon, octave, opus, paperkey, patchutils, perl-tk,
52 perl-x11-protocol, pinentry, python2-element-tree, python2-pybugz, quilt,
53 source-highlight, stalonetray, trueprint, ttf-dejavu, unionfs-fuse,
54 unionfs-fuse-static, uucp, vera, windowmaker, xapian, xterm
55
56 *** 90 package updates
57
58 apl-1.3, autoconf-2.68, automake-1.14.1, bash-4.3, bash-light-4.3,
59 bigloo-4.1a, binutils-2.24, binutils-static-stripped-tarball-2.24,
60 coreutils-8.22, curl-7.35.0, ed-1.10, ffmpeg-2.1.4, file-5.18, freeipmi-1.4.1,
61 gcc-4.8.2, gcc-4.8.2, gdb-7.7, gdbm-1.11, gettext-0.18.3.2, glib-2.39.1,
62 glibc-2.19, glibc-stripped-tarball-2.19, global-6.2.12, glpk-4.54,
63 gnu-pw-mgr-1.2, gnupg-1.4.16, gnutls-3.2.12, gp2c-0.0.8pl1, grep-2.18,
64 gst-plugins-base-0.10.36, gstreamer-1.0.10, gtk+-3.10.1, gtkmm-2.24.2,
65 guile-2.0.11, guile-ssh-0.6.0, guile-static-stripped-tarball-2.0.11,
66 guile-wm-1.0, guile-xcb-1.3, guix-0.5, help2man-1.45.1, icu4c-52.1,
67 imagemagick-6.8.8-10, inetutils-1.9.2, lapack-3.5.0, libcdio-0.92,
68 libdrm-2.4.46, libextractor-1.3, libgc-7.2e, libgc-7.4.0, libgcrypt-1.6.1,
69 libjpeg-9, libmicrohttpd-0.9.34, libssh-0.6.3, libtasn1-3.4, lightning-2.0.3,
70 linux-libre-3.13.7, mpc-1.0.2, mutt-1.5.23, net-base-5.2, ocrad-0.23,
71 openssh-6.6p1, openssl-1.0.1g, parallel-20140322, pari-gp-2.7.0, pspp-0.8.2,
72 pulseaudio-5.0, python-2.7.6, python-3.3.5, python-wrapper-3.3.5,
73 python2-pysqlite-2.6.3a, qemu-1.7.1, qemu-headless-1.7.1,
74 qemu-with-multiple-smb-shares-1.7.1, qt-4.8.5, qt-5.2.0, readline-6.3,
75 recutils-1.7, slim-1.3.6, sqlite-3.8.4.3, subversion-1.7.14, texinfo-4.13a,
76 tor-0.2.4.21, tzdata-2014a, units-2.11, valgrind-3.9.0, vim-7.4, wget-1.15,
77 xnee-3.18, xorriso-1.3.6.pl01, zile-2.4.11
78
79 *** New ‘gcc-toolchain’ meta-package, makes it easy to install a GCC tool chain
80 *** libc’s Info manual is now installed
81 *** Binutils is built with --enable-deterministic-archives
82 *** Packages that populated man/man* now populate share/man/man*
83 *** Many other packaging improvements
84 ** Bugs fixed
85 *** ‘guix pull’ consumes less memory, compiles in parallel
86 *** ‘guix package --list-*’ gracefully handles EPIPE when used in a pipeline
87 *** ‘guix package’ handles collisions between a symlink and a directory
88 (http://bugs.gnu.org/17083)
89 *** HTTP downloads provide a ‘User-Agent’ field (http://bugs.gnu.org/16703)
90 *** ‘guix package’ no longer shows misleading installed package number
91 (http://bugs.gnu.org/16484)
92 *** Manual suggests ‘useradd --system’ (http://bugs.gnu.org/16289)
93 *** Python is built with ctypes support (http://bugs.gnu.org/16569)
94 *** HTTP/TLS connection not terminated properly (http://bugs.gnu.org/14884)
95 *** Gracefully handle poorly behaved HTTP servers (http://bugs.gnu.org/15733)
96
97 * Changes in 0.5 (since 0.4)
98 ** Package management
99 *** GNU package descriptions synchronized with the ‘gnumaint’ repository
100
101 In addition to synopses, descriptions of GNU packages are now kept in sync
102 with the ‘gnumaint’ repository, which is the canonical place for GNU package
103 meta-data.
104
105 ** Programming interfaces
106 *** Patches are now listed as part of ‘origin’
107
108 The ‘origin’ form supports two new fields: ‘patches’ (list of patches), and
109 ‘snippet’ (code snippet to modify the source.) These are applied when running
110 ‘guix build --source’. See “Defining Packages” in the manual.
111
112 *** New (guix monads) monadic interface to operate on the store
113
114 See “The Store Monad” in the manual. The (gnu system …) modules have been
115 rewritten to use this monadic interface.
116
117 *** New (guix profiles) module
118
119 It provides an API for dealing with profiles, as with the ‘guix package’
120 command.
121
122 *** New (gnu system) module
123
124 This module provides a generic way to describe the system’s configuration,
125 and to instantiate it, regardless of the final medium (QEMU image, etc.)
126 See “System Configuration” in the manual.
127
128 This is work in progress. Send feedback to guix-devel@gnu.org!
129
130 *** ‘build-expression->derivation’ uses more parameters
131
132 Some positional parameters have been changed to keyword parameters.
133 See “Derivations” in the manual.
134
135 ** GNU distribution
136 *** New port to the Loongson MIPS64 processors, n32 ABI (‘mips64el-linux’)
137
138 Bootstrap binaries have been built for that architecture, and several
139 Loongson-specific patches not yet available upstream have been applied to core
140 packages. See “GNU Distribution” and “Porting” in the manual.
141
142 Pre-built binaries are not yet available via hydra.gnu.org, so Guix will
143 build from source on this platform.
144
145 *** 110 new packages
146
147 acct, alive, alsa-utils, apl, at-spi2-atk, at-spi2-core, atkmm, autogen,
148 automoc4, brasero, bridge-utils, cairomm, catkin, complexity, evince, ffmpeg,
149 fftw, ftgl, gcc-objc, gcc-objc++, gccgo, gcl, gfortran, glibmm, glpk,
150 gnome-icon-theme, gnu-pw-mgr, gp2c, gpgme, gsettings-desktop-schemas, gtkmm,
151 gtksourceview, guile-ssh, guile-wm, gvpe, hicolor-icon-theme, httpd, icecat,
152 icon-naming-utils, json-c, lapack, libcanberra, libcap, libgnome-keyring,
153 libmikmod, libnl, libnotify, libsamplerate, libsigc++, libsndfile, libssh,
154 libtheora, libxkbcommon, mercurial, mtools, netcat, pangomm, parallel,
155 pavucontrol, pciutils, pem, perl-encode-locale, perl-file-list,
156 perl-file-listing, perl-html-parser, perl-html-tagset, perl-http-cookies,
157 perl-http-daemon, perl-http-date, perl-http-message, perl-http-negotiate,
158 perl-io-html, perl-libwww, perl-libxml, perl-lwp-mediatypes, perl-net-http,
159 perl-uri, perl-www-robotrules, perl-xml-dom, perl-xml-regexp, perl-xml-simple,
160 phonon, powertop, pulseaudio, python2-dogtail, python2-empy, qemu-headless,
161 qt, qt, raptor2, scons, sdl, sdl-gfx, sdl-image, sdl-mixer, sdl-net, sdl-ttf,
162 sdl2, serveez, shared-mime-info, sharutils, skribilo, slim, soprano, swig,
163 xcb-util, xcb-util-image, xcb-util-keysyms, xcb-util-renderutil, xcb-util-wm
164
165 *** 47 package updates
166
167 atk 2.10.0, bison 3.0.2, cmake 2.8.12, dmd 0.1, freeipmi 1.3.3, gcc 4.8.2,
168 gcc 4.8.2, gcc-cross-mips64el-linux-gnuabi64 4.8.2, gcc-stripped-tarball 4.8.2,
169 gdb 7.6.2, gettext 0.18.3.1, glib 2.38.0, global 6.2.9, gmp 5.1.3,
170 gnupg 2.0.22, gobject-introspection 1.38.0, grep 2.15, gsl 1.16,
171 gtk+ 2.24.21, gtk+ 3.10.1, guile 2.0.9, guile 2.0.9, guile-xcb 1.2,
172 harfbuzz 0.9.22, hello 2.9, iproute2 3.12.0, libdrm 2.4.46,
173 libextractor 1.2, libjpeg 9, libmicrohttpd 0.9.32, lightning 2.0.2,
174 linux-libre 3.12, lzip 1.15, make 4.0, mit-krb5 1.11.3, pari-gp 2.5.5,
175 pixman 0.32.4, python 3.3.2, qemu 1.6.1,
176 qemu-with-multiple-smb-shares 1.6.1, rcs 5.9.2, recutils 1.6, rsync 3.1.0,
177 tar 1.27.1, texinfo 5.2, units 2.02, xorriso 1.3.2
178
179 *** Packages are now built with GCC 4.8.2 by default (was 4.7.3)
180
181 ** Native language support
182 *** New ‘sr’ (Serbian) translation
183 *** New ‘vi’ (Vietnamese) translation
184 *** Updated ‘pt_BR’ (Brazilian Portuguese) translation
185 ** Bugs fixed
186 *** ‘guix pull’ compiles Guix deterministically and correctly
187
188 Previously, the build environment was not cleared in between ‘compile-file’
189 calls, leading to build errors due to Guile bug http://bugs.gnu.org/15602 .
190
191 *** ‘guix package’ allows removal of a specific package output
192 (http://bugs.gnu.org/15756)
193 *** ‘guix-daemon’ always sets umask to 022
194 (http://lists.gnu.org/archive/html/bug-guix/2013-07/msg00033.html)
195 *** Files referenced by environment variables are protected from GC
196 *** Yet unbuilt packages get correctly installed (http://bugs.gnu.org/15283)
197 *** ‘bootstrap-graph.{png,eps,pdf}’ built in srcdir (http://bugs.gnu.org/15640)
198
199 * Changes in 0.4 (since 0.3)
200
201 ** Package management
202
203 *** New ‘--list-generations’ and ‘--delete-generations’ options
204
205 The ‘guix package’ command has these two new options, which make it easier to
206 deal with a profile’s generation. See “Invoking guix package” in the manual.
207
208 *** New ‘guix-register’ program
209
210 This program allows the meta-data of a new store to be initialized, by
211 copying info from an existing store. It is mostly an internal tool.
212
213 ** Programming interfaces
214
215 *** New API to bootstrap Autotools-based packages
216
217 The (guix build-system gnu) has a new ‘dist-package’ procedure that takes a
218 package object and source directory, and returns a new package object that
219 runs ‘./bootstrap && make dist’ or anything similar.
220
221 *** ‘derivation’ and related procedures have a #:references-graphs parameter
222
223 This parameter instructs the build daemon to populate the derivation’s build
224 tree with files containing the list of references of the given store files.
225 This is useful to write code that copies a packages and all its dependencies
226 to another storage device, such as a QEMU disk image.
227
228 *** Extended API to build a GNU system virtual machine image
229
230 The (gnu system vm) module has been augmented in many ways: the ‘qemu-image’
231 procedure can now populate and initialize the image’s store; the new
232 ‘system-qemu-image’ procedure returns a QEMU image that runs dmd as its init
233 system, has ‘login’ running on several consoles, has a set of installed
234 packages, and where Guix can be used.
235
236 New (gnu system …) modules have been added to handle the configuration of the
237 various parts of a GNU/Linux system. For instance, (gnu system dmd) provides
238 support for instantiating dmd services; (gnu system linux) helps with Linux
239 PAM configuration; and so on.
240
241 *** <derivation> objects supersede .drv file names in the API
242
243 ‘derivation’ and similar procedures no longer return two values (a
244 <derivation> and a .drv file name); they now return a single value, which is
245 a <derivation> object. The <derivation> object embeds the corresponding .drv
246 file name. See “Derivations” in the manual for details.
247
248 ** GNU distribution
249
250 *** 60 new packages
251
252 apr, apr-util, cdparanoia, dbus-glib, dfc, dmd, dvdisaster, exiv2, fetchmail,
253 freefont-ttf, freeglut, geeqie, git, gkrellm, glu, gnome-doc-utils,
254 gst-plugins-base, gstreamer, guile-cairo, guile-lib, guile-xcb, guix, htop,
255 itstool, lame, libextractor, libmicrohttpd, lightning, lzip, mingetty, mutt,
256 net-base, net-tools, ocrad, pspp, python-babel, python-dateutil, python-pytz,
257 python-setuptools, python-simplejson, python-wrapper, python2-babel,
258 python2-dateutil, python2-mechanize, python2-pyicu, python2-pysqlite,
259 python2-pytz, python2-setuptools, python2-simplejson, qemu-system-initrd,
260 qemu-with-multiple-smb-shares, ripperx, shadow, ttf-bitstream-vera, units,
261 valgrind, xmlto, xnee, yasm
262
263 *** 27 package updates
264
265 bigloo 4.0b, cairo 1.12.16, ddrescue 1.17, fontconfig 2.10.93, fplll 4.0.4,
266 gcc 4.7.3, gcc 4.7.3, glibc 2.18, glibc 2.18, glibc-stripped-tarball 2.18,
267 gnupg 2.0.21, gnutls 3.2.4, guile 2.0.9, guile 2.0.9, harfbuzz 0.9.21,
268 imagemagick 6.8.6-9, libdrm 2.4.46, libgcrypt 1.5.3, libjpeg 9, libksba 1.3.0,
269 linux-libre 3.11, m4 1.4.17, mpfrcx 0.4.2, pari-gp 2.5.4, python 2.7.5, python
270 3.3.2, texlive 2013
271
272 *** Fontconfig font search path made more convenient
273
274 Fontconfig, the library used by many graphical applications, such as those
275 based on GTK+, now knows where to find the default set of fonts. Additional
276 fonts installed in the user profile are automatically picked up.
277
278 *** More GUI applications
279
280 The ‘emacs’ and ‘racket’ packages are now linked against GTK+. New GTK+
281 applications have been added (see above.)
282
283 *** Packaging guidelines
284
285 The documentation of packaging guidelines has been augmented. See the manual
286 under “GNU Distribution”.
287
288 *** Support for Python 3 along with Python 2
289
290 Python 3 has been added to the distribution, and Python packages that support
291 it are now built for both Python 2 and Python 3. See the “Python Modules”
292 section of the manual for details.
293
294 ** Internationalization
295
296 Updated translations: eo.
297
298 ** Bugs fixed
299
300 *** Workarounds for Guile 2.0.5 now work on Debian derivatives
301 *** The dependency graph image has correct size in PDF output
302 *** 'ldd' now works correctly on x86_64
303 *** Xorg server test suite no longer fails (http://bugs.gnu.org/15392)
304 *** module-init-tools now builds (http://bugs.gnu.org/15182, http://bugs.gnu.org/15187)
305 *** Hop 2.4 builds with newer Bigloo (http://bugs.gnu.org/15194)
306
307 * Changes in 0.3 (since 0.2)
308
309 ** Package management
310
311 *** Cross-compilation support
312
313 Guix can now cross-build packages. On the command-line, this is achieved with
314 the new ‘--target’ command-line option of ‘guix build’. At the Scheme level,
315 the guts of this is the ‘package-cross-derivation’ procedure. Core packages
316 of the distribution can already be cross-compiled. See the manual for
317 details.
318
319 *** New ‘--max-silent-time’ option for “guix build” and “guix package”
320
321 See the manual for details.
322
323 *** New ‘--fallback’ option for “guix build” and “guix package”
324
325 This option instructs to fall back to local builds when the substituter fails
326 to download a substitute.
327
328 *** New ‘--requisites’ option for “guix gc”
329
330 See the manual for details.
331
332 *** New ‘--key-download’ option for “guix refresh”
333
334 See the manual for details.
335
336 ** Programming interfaces
337
338 *** New ‘package-cross-derivation’ procedure in (guix derivations)
339
340 See the manual for details.
341
342 *** New ‘%current-target-system’ SRFI-39 parameter
343
344 This parameter is like ‘%current-system’, but for cross-compilation. It
345 allows code in package definitions (such as in the ‘arguments’ field) to know
346 whether it is being cross-compiled, and what the target system is.
347
348 *** New (guix hash) module; new ‘open-sha256-port’ and ‘sha256-port’ procedures
349
350 This improves performance of SHA256 computations.
351
352
353 ** GNU distribution
354
355 *** 33 new packages
356
357 alsa-lib, babel, cairo, cvs, gcal, gcc-cross-mips64el-linux-gnuabi64, gd,
358 gdk-pixbuf, graphviz, grue-hunter, gtk+, gts, harfbuzz, imagemagick, iproute2,
359 iptables, libspectre, mpg321, noweb, pango, plotutils, privoxy, pytz, racket,
360 rubber, rush, strace, tk, torsocks, unrtf, vc-dwim, wordnet, xlockmore
361
362 *** 25 package updates
363
364 automake 1.14, ed 1.9, freeipmi 1.2.8, gawk 4.1.0, gcc 4.8.1, gettext 0.18.3,
365 glib 2.37.1, gmp 5.1.2, gnutls 3.2.1, gzip 1.6, help2man 1.43.3, libapr 1.4.8,
366 libaprutil 1.5.2, libassuan 2.1.1, libffi 3.0.13, libgc 7.2d, libgpg-error
367 1.12, libidn 1.28, libpng 1.5.17, lout 3.40, lsh 2.1, nettle 2.7.1, qemu
368 1.5.1, tzdata 2013d, xorriso 1.3.0
369
370 *** Binary packages now available for i686-linux
371
372 The build farm at http://hydra.gnu.org now provides 32-bit GNU/Linux binaries
373 (i686-linux), in addition to the x86_64-linux binaries. Both can be
374 transparently used as substitutes for local builds on these platforms.
375
376 *** Debug info packages
377
378 Some packages now have a “debug” output containing debugging information. The
379 “debug” output can be used by GDB, and can be installed separately from the
380 other outputs of the package. See “Installing Debugging Files” in the manual.
381
382 *** Bootstrap binaries can be cross-compiled
383
384 The distribution can now be ported to new architectures (currently
385 GNU/Linux-only) by cross-compiling the “bootstrap binaries”. See “Porting”
386 in the manual.
387
388 *** Bootstrapping documented
389
390 See “Bootstrapping” in the manual, for information on how the GNU
391 distribution builds “from scratch”.
392
393 ** Internationalization
394
395 New translations: eo, pt_BR.
396
397 ** Bugs fixed
398 *** “guix --help” now works when using Guile 2.0.5
399 *** Binary substituter multi-threading and pipe issues fixed
400
401 These could lead to random substituter crashes while substituting a binary.
402 See commits 0332386 and 101d9f3 for details.
403
404 *** Binary substituter gracefully handles lack of network connectivity
405
406 *** Daemon properly handles rebuilds of multiple-output derivations
407
408 Previously it would fail when rebuilding a multiple-output derivation when
409 some (but not all) of its outputs were already present. See
410 http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00038.html and
411 https://github.com/NixOS/nix/issues/122 .
412
413 *** ‘guix package -i foo:out’ no longer removes other outputs of ‘foo’
414
415 Previously only the ‘out’ output of package ‘foo’ would be kept in the
416 profile.
417
418 *** Replacement (srfi srfi-37) provided if the user’s one is broken
419
420 When the user’s (srfi srfi-37) is affected by http://bugs.gnu.org/13176 (Guile
421 < 2.0.9), a replacement with the bug fix is provided. This bug would affect
422 command-line argument processing in some cases.
423
424 * Changes in 0.2 (since 0.1)
425
426 ** Package management
427
428 *** Guix commands are now sub-commands of the “guix” program
429
430 Instead of typing “guix-package”, one now has to type “guix package”, and so
431 on. This has allowed us to homogenize the user interface and initial program
432 setup, and to allow commands to be upgradable through “guix pull”.
433
434 *** New “guix package --upgrade” option
435
436 As the name implies, this option atomically upgrades all the packages
437 installed in a profile or the set of packages matching a given regexp.
438 See “Invoking guix package” in the manual.
439
440 *** New “guix package --search” option
441
442 Performs a full text search in package synopses and descriptions, and returns
443 the matching packages in recutils format. See “Invoking guix package” in the
444 manual, for details.
445
446 *** New “guix pull” command
447
448 The command pulls the latest version of Guix–both the package management
449 modules and the distribution. See the manual for details.
450
451 *** New binary substituter
452
453 The “substituter” mechanism allows pre-built binaries to be transparently
454 downloaded instead of performing a build locally. Currently binaries are
455 available for x86_64 Linux-based GNU systems from http://hydra.gnu.org. The
456 distribution is continuously built and binaries are made available from there.
457
458 See http://hydra.gnu.org/jobset/gnu/master under “Job status” for the list of
459 available binary packages.
460
461 *** New “guix refresh” command
462
463 The command is used by Guix maintainers. It automatically updates the
464 distribution to the latest upstream releases of GNU software.
465
466 *** New “guix hash” command
467
468 Convenience command to compute the hash of a file. See the manual for
469 details.
470
471 *** Nix daemon code updated
472
473 The daemon code from Nix, used by the ‘guix-daemon’ command, has been updated
474 to current Nix ‘master’.
475
476 ** Programming interfaces
477
478 *** (guix download) now supports HTTPS, using GnuTLS
479
480 It allows package source tarballs to be retrieved over HTTPS.
481
482 *** New ‘native-search-path’ and ‘search-path’ package fields
483
484 Packages can define in their ‘native-search-path’ field environment variables
485 that define search paths and need to be set for proper functioning of the
486 package. For instance, GCC has ‘CPATH’ and ‘LIBRARY_PATH’ in its
487 ‘native-search-path’, Perl has ‘PERL5LIB’, Python has ‘PYTHONPATH’, etc.
488 These environment variables are automatically set when building a package that
489 uses one of these.
490
491 *** Package inputs can be a function of the target system type
492
493 The ‘inputs’ field of a package can now be conditional on the value of
494 (%current-system). This is useful for packages that take system-dependent
495 tarballs as inputs, such as GNU/MIT Scheme.
496
497 *** New build systems
498
499 The ‘perl-build-system’, ‘python-build-system’, and ‘cmake-build-system’ have
500 been added. They implement the standard build systems for Perl, Python, and
501 CMake packages.
502
503 *** Tools to build Linux initrds, QEMU images, and more
504
505 The (gnu packages linux-initrd) module provides a procedure to build a Linux
506 initrd (“initial RAM disk”). The initrd embeds Guile, which is used to
507 evaluate the given expression. The example below returns an initrd that
508 mounts the /proc file system and starts a REPL:
509
510 (expression->initrd
511 '(begin
512 (mkdir "/proc")
513 (mount "none" "/proc" "proc")
514 ((@ (system repl repl) start-repl))))
515
516 More examples in the linux-initrd.scm file.
517
518 Experimental interfaces to produce and use QEMU images are provided by the
519 (gnu system vm) module. For instance, the
520 ‘expression->derivation-in-linux-vm’ evaluates the given Scheme expression in
521 a QEMU virtual machine running the Linux kernel and Guile.
522
523 ** GNU distribution
524
525 Many updates and additions have been made to the distribution. Here are the
526 highlights.
527
528 *** Major updates
529
530 GCC 4.7.3 (the default) and GCC 4.8.0, Binutils 2.23.2, Guile 2.0.9,
531 Coreutils 8.20, GDB 7.6, Texinfo 5.1.
532
533 *** Noteworthy new packages
534
535 TeXLive, Xorg, GNU GRUB, GNU Parted, QEMU and QEMU-KVM, Avahi, Bigloo,
536 CHICKEN, Scheme48, Hugs, Python, Lua, Samba.