1
0
mirror of https://git.savannah.gnu.org/git/guix.git synced 2026-07-07 05:04:07 +02:00

Compare commits

...

2763 Commits

Author SHA1 Message Date
Ludovic Courtès 44941798d2 Update NEWS. 2014-11-17 22:09:38 +01:00
Ludovic Courtès 5131064204 Thank Bruno. 2014-11-17 20:54:50 +01:00
Ludovic Courtès 081145cf6e doc: Fix misuses of @ref.
* doc/guix.texi (Invoking guix-daemon, Features, Invoking guix download,
  Invoking guix refresh, GNU Distribution, Package Modules, Packaging
  Guidelines, Package Naming): Replace misuses of @ref with @xref or
  @pxref.
2014-11-17 18:58:39 +01:00
Ludovic Courtès bf2479c710 doc: Suggest using 'guix pull' before 'guix system reconfigure'.
* doc/guix.texi (Invoking guix system): Suggest running 'guix pull'
  before the first use of 'guix system reconfigure'.
2014-11-17 18:58:38 +01:00
Ludovic Courtès c6fabc5e57 build: Add doc/emacs.texi to the distribution.
* doc.am (EXTRA_DIST): Add doc/emacs.texi.
2014-11-17 18:58:38 +01:00
Ludovic Courtès 02754a5e52 build: Add guix/tests.scm to the distribution.
* Makefile.am (noinst_DATA): Rename to...
  (dist_noinst_DATA): ... this.
2014-11-17 18:58:38 +01:00
David Thompson 6e206ac788 gnu: Add minetest.
* gnu/packages/patches/minetest-subgame-env-var.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/games.scm (minetest): New variable.
2014-11-16 19:02:24 -05:00
David Thompson 7e51e5bcf4 gnu: Add minetest-data.
* gnu/packages/games.scm (minetest-data): New variable.
2014-11-16 19:02:24 -05:00
David Thompson 024e2c1771 gnu: Add irrlicht.
* gnu/packages/games.scm (irrlicht): New variable.
2014-11-16 19:02:24 -05:00
David Thompson 19b396bf31 gnu: Add openal.
* gnu/packages/games.scm (openal): New variable.
2014-11-16 19:02:24 -05:00
David Thompson 7b3f6a277c Fix typo in NEWS. 2014-11-16 18:42:44 -05:00
Ludovic Courtès 2bc53ba922 doc: Document --key-download option of 'guix refresh'.
* doc/guix.texi (Invoking guix refresh): Document --key-download.
2014-11-16 23:28:55 +01:00
Ludovic Courtès 29934e0244 Adjust NEWS for 'guix import'. 2014-11-16 23:22:36 +01:00
Ludovic Courtès 2f7d2d9185 doc: Document "guix import".
* doc/guix.texi (Requirements): Add xref to "Invoking guix import".
  (Defining Packages): Likewise.  Remove footnote about Nixpkgs
  imports.
  (Invoking guix import): New section.
2014-11-16 23:21:23 +01:00
Ludovic Courtès 7bcf372e84 gnu: hello: Update to 2.10.
* gnu/packages/base.scm (hello): Update to 2.10.
2014-11-16 22:10:55 +01:00
David Thompson ecde61914e gnu: ruby: Update to 2.1.5.
* gnu/packages/ruby.scm (ruby): Update to version 2.1.5.
2014-11-15 13:53:05 -05:00
Ludovic Courtès 38b19699b2 gnu: guix: Fix hash of snapshot source.
* gnu/packages/package-management.scm (guix-devel): Fix hash, which was
  wrongfully input in commit a0e59dd.
2014-11-15 19:27:48 +01:00
John Darrington a886404f68 gnu: Add opus-tools
* gnu/packages/xiph.scm (opus-tools): New variable.
2014-11-15 19:13:46 +01:00
Ludovic Courtès 2b1cee21ae doc: Fix Hydra URL.
Reported by John Darrington <john@darrington.wattle.id.au>.

* doc/guix.texi (Packaging Guidelines): Fix hydra.gnu.org URL.
2014-11-15 19:05:52 +01:00
Jason Self 3a3278e956 gnu: linux-libre: Update to 3.17.3
* gnu/packages/linux.scm (linux-libre): Update to version 3.17.3.
2014-11-14 20:31:09 -08:00
Ludovic Courtès f21ca31d15 Add the name of Sou Bunnbu in its original script to 'AUTHORS'. 2014-11-14 22:58:18 +01:00
宋文武 13d1862632 gnu: Add Tiled.
* gnu/packages/games.scm (tiled): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-11-14 22:56:47 +01:00
Ludovic Courtès eb59595ccd doc: Clarify use of the 'password' field for user accounts.
Suggested by Alex Sassmannshausen <alex.sassmannshausen@gmail.com>.

* doc/guix.texi (Using the Configuration System): Remove 'password'
  field in the example.
  (User Accounts): Clarify use of the 'password' field, with links to
  the libc and Guile manuals.
2014-11-14 14:17:56 +01:00
Ludovic Courtès a0e59dd806 gnu: guix: Update snapshot.
* gnu/packages/package-management.scm (guix-devel): Update snapshot.
2014-11-14 09:51:53 +01:00
Ludovic Courtès 48bd76e009 services: user-unmount: Change directory to "/" before unmounting.
* gnu/services/base.scm (user-unmount-service): Add 'chdir' call.
2014-11-14 00:48:43 +01:00
Ludovic Courtès cd4a3cb359 syscalls: Update /etc/mtab, not /etc/fstab.
* guix/build/syscalls.scm (remove-from-mtab): Replace "fstab" with
  "mtab".
2014-11-14 00:41:01 +01:00
Ludovic Courtès 4c7ac9aa7f doc: Improve acknowledgments.
* doc/guix.texi (Acknowledgments): Expound a bit.
* THANKS: Mention artwork; thank Felipe & Nikita.
2014-11-13 23:30:03 +01:00
Ludovic Courtès c29b69be2d artwork: Update snapshot.
* gnu/artwork.scm (%artwork-repository): Update.
2014-11-13 23:12:46 +01:00
Ludovic Courtès d09e8c7b15 substitute-binary: Be slightly less verbose when downloading.
* guix/scripts/substitute-binary.scm (guix-substitute-binary)<"--substitute">:
  Be slightly less verbose.
2014-11-13 22:17:44 +01:00
Ludovic Courtès cd2512bfa3 gnu: file: Add itself as a native input for cross-compilation.
Fixes a regression introduced in c198872b.
Reported by John Darrington.

* gnu/packages/file.scm (file)[self-native-input?]: New field.
2014-11-13 22:11:56 +01:00
Ludovic Courtès 351d690f37 gnu: aegis, quilt: Use file-5.20.
Suggested by Mark H Weaver.

* gnu/packages/version-control.scm (aegis): Use FILE-5.20 instead of FILE.
* gnu/packages/patchutils.scm (quilt): Likewise.
2014-11-13 21:41:38 +01:00
Ludovic Courtès 310081e27e gnu: file: Remove replacement; add separate file-5.20 package.
* gnu/packages/file.scm (file)[replacement]: Remove.
  (file/fixed): Remove.
  (file-5.20): New variable.
2014-11-13 17:51:27 +01:00
Ludovic Courtès a480307449 Revert "hydra: Build only non-grafted variants of the packages."
This reverts commit 9de1defe79.

Passing #:graft? was not possible because of the use of 'cut' on call
sites.
2014-11-13 17:46:57 +01:00
Ludovic Courtès 9de1defe79 hydra: Build only non-grafted variants of the packages.
* build-aux/hydra/gnu-system.scm (package->alist): Pass #:graft? #f to
  PACKAGE-DERIVATION.
2014-11-13 14:21:09 +01:00
Ludovic Courtès db719df769 gnu: net-base: Update to 5.3.
Reported by nebuli on #guix.

* gnu/packages/admin.scm (net-base): Update to 5.3.
2014-11-13 14:02:14 +01:00
Ludovic Courtès 9a0569aafe gnu: lsof: Update to 4.88.
Reported by nebuli on #guix.

* gnu/packages/lsof.scm (%ftp-base): New variable.
  (lsof): Update to 4.88.  Add /OLD as alternate URL.
2014-11-13 13:58:20 +01:00
Ludovic Courtès bff39668b9 vm: Set the boot flag on the root partition.
Reported by nebuli on #guix.

* gnu/build/vm.scm (initialize-partition-table): Add #:bootable?
  parameter and honor it.
  (initialize-hard-disk): Likewise.
2014-11-13 13:42:44 +01:00
Ludovic Courtès ced0106a44 linux-boot: Make more disk partition block devices.
Reported by nebuli on #guix.

* gnu/build/linux-boot.scm (make-disk-device-nodes): Make 16 block
  devices for disk partitions.
2014-11-13 13:34:31 +01:00
Ludovic Courtès 5c88ac539b Update NEWS. 2014-11-13 11:35:14 +01:00
Ludovic Courtès 3940c5cab3 gnu: file: Add 5.20 as a replacement--fixes CVE-2014-3710.
* gnu/packages/file.scm (file)[replacement]: New field.
  (file/fixed): New variable.
2014-11-13 11:35:14 +01:00
Ludovic Courtès 7f614a747c derivations: Clarify message produced by 'graft-derivation'.
* guix/derivations.scm (graft-derivation): Use the term "grafting" in
  the build message.
2014-11-13 11:35:13 +01:00
Ludovic Courtès 3fd242e097 gnu: file: Fix typo in description.
* gnu/packages/file.scm (file)[description]: Fix typo.
2014-11-13 11:09:54 +01:00
Ludovic Courtès ceb6b4c2aa linux-initrd: Add modules for ATA controllers by default.
Reported by th3kent on #guix.

* gnu/system/linux-initrd.scm (base-initrd)[linux-modules]: Add
  pata_acpi.ko and pata_atiixp.ko.
2014-11-13 10:42:32 +01:00
Ludovic Courtès c43065a8ee gnu: chicken: Update to 4.9.0.1.
* gnu/packages/scheme.scm (chicken): Update to 4.9.0.1.
2014-11-12 23:56:28 +01:00
Ludovic Courtès 5dee9acf53 gnu: gnutls: Update to 3.2.20--this fixes CVE-2014-8564.
* gnu/packages/patches/gnutls-server-name-fix.patch: Remove.
* gnu-system.am (dist_patch_DATA): Adjust accordingly.
* gnu/packages/gnutls.scm (gnutls): Update to 3.2.20.
  Remove 'patches' field.
2014-11-12 23:56:28 +01:00
Ludovic Courtès b173d0e443 gnu: guix: Add Emacs as an input.
* gnu/packages/package-management.scm (guix-0.7)[native-inputs]: Add
  Emacs.
2014-11-12 23:56:28 +01:00
Ludovic Courtès be05e643ae gnu: windowmaker: Leave 'wmaker' unwrapped.
Fixes <http://bugs.gnu.org/18698>.
Reported by Mark H Weaver <mhw@netris.org>.

* gnu/packages/gnustep.scm (windowmaker)[arguments]: Add 'pre-configure'
  phase.  Change 'wrap' phase to wrap 'wmaker.inst', not 'wmaker'.
2014-11-12 23:56:28 +01:00
Ludovic Courtès 08dbc3b550 services: xorg: Set argv[0] for the window manager.
* gnu/services/xorg.scm (xinitrc): Set argv[0] when invoking ratpoison
  or wmaker.
2014-11-12 23:56:28 +01:00
Alex Kost 0b0fbf0c16 emacs: Add "Source" field to 'guix-info' buffers.
Suggested by Ludovic Courtès.

* emacs/guix-info.el (guix-info-insert-methods, guix-info-displayed-params):
  Add 'source' parameter.
  (guix-package-info-source): New face.
  (guix-package-source): New button type.
  (guix-package-info-auto-find-source, guix-package-info-auto-download-source,
  guix-package-info-download-buffer): New variables.
  (guix-package-info-show-source, guix-package-info-insert-source-url,
  guix-package-info-insert-source, guix-package-info-download-source,
  guix-package-info-redisplay-after-download): New procedures.
* emacs/guix-base.el (guix-param-titles): Add 'source' parameter.
  (guix-operation-prompt): Add 'prompt' argument.
  (guix-after-source-download-hook): New variable.
  (guix-package-source-path, guix-package-source-build-derivation): New
  procedures.
* emacs/guix-main.scm (%package-param-alist): Add 'source' parameter.
  (package-source-names, package-source-derivation->store-path,
  package-source-path, package-source-build-derivation): New procedures.
2014-11-12 22:10:32 +03:00
Ludovic Courtès dc05f01cba Add Sun Bunnbu to 'AUTHORS'. 2014-11-12 14:39:30 +01:00
宋文武 a21b42e225 gnu: Add GNU Typist.
* gnu/packages/games.scm (gtypist): New variable.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2014-11-12 14:38:55 +01:00
Ludovic Courtès 84dfb45821 gnu: Introduce (gnu artwork) module.
* gnu/artwork.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
* gnu/services/xorg.scm: Use it.
  (%artwork-repository): Remove.
* gnu/system/grub.scm: Use it.
  (%artwork-repository): Remove.
2014-11-12 14:28:36 +01:00
Ludovic Courtès 0ecc3bf309 gnu: xorg: Add SLiM theme based on work by Felipe López.
* gnu/services/xorg.scm (%artwork-repository, %default-slim-theme,
  %default-slim-theme-name): New variables.
  (slim-service): Add #:theme and #:theme-name parameters.
  [slim.cfg]: Honor #:theme-name.
  Honor #:theme by setting the "SLIM_THEMESDIR" environment variable.
* doc/guix.texi (X Window): Adjust 'slim-service' documentation
  accordingly.  Document '%default-slim-theme' and
  '%default-slim-theme-name'.
2014-11-12 14:22:54 +01:00
Ludovic Courtès 91781e0268 hydra: Make USB installation image bigger.
* build-aux/hydra/gnu-system.scm (qemu-jobs): Require 800 MiB for the
  USB disk image.
2014-11-12 13:52:09 +01:00
Ludovic Courtès 85c4848fcc gnu: guix: Update Git snapshot.
* gnu/packages/package-management.scm (guix-devel): Update to commit
  8ee0e71.
2014-11-12 13:50:46 +01:00
Ludovic Courtès 8ee0e719bb Update NEWS. 2014-11-11 22:42:42 +01:00
Ludovic Courtès 42de960878 system: Shorten the default label for GRUB entries.
* gnu/system.scm (kernel->grub-label): Shorten entry labels.
2014-11-11 22:42:42 +01:00
Ludovic Courtès 906b1b0986 guix system: Decorate GRUB entries of old generations with date and number.
* guix/scripts/system.scm (seconds->string): New procedure.
  (previous-grub-entries)[system->grub-entry]: Add 'number' and 'time'
  parameters.  Adjust call accordingly.
2014-11-11 22:42:42 +01:00
Ludovic Courtès f34c56be3a activation: Set the firmware search path.
* gnu/build/activation.scm (activate-firmware): New procedure.
* gnu/system.scm (<operating-system>)[firmware]: New field.
  (directory-union): New procedure.
  (%base-firmware): New variable.
  (operating-system-activation-script): Use 'directory-union', and call
  'activate-firmware'.
* doc/guix.texi (operating-system Reference): Document 'firmware'.
2014-11-11 22:42:39 +01:00
Ludovic Courtès 1306b0b003 gnu: cross-base: Apply Qualcomm's patches for Binutils and GCC.
This fixes compilation of the ath9k-htc firmware.  Before that, loading
it would result in "Target is unresponsive".  The patches come from
the ath9k-htc firmware source.

* gnu/packages/patches/ath9k-htc-firmware-binutils.patch,
  gnu/packages/patches/ath9k-htc-firmware-gcc.patch: New files.
* gnu-system.am (dist_patch_DATA): Add them.
* gnu/packages/cross-base.scm (package-with-patch): New procedure.
  (cross-binutils): Check whether TARGET starts with "xtensa-", and call
  'package-with-patch' when it does.
  (cross-gcc-patches): New procedure.
  (cross-gcc): Use it to add patches.
2014-11-11 22:36:49 +01:00
Ludovic Courtès 594340bc79 services: xorg: Don't pass "-ac" to X.
This had pretty much no effects given "-nolisten tcp".

* gnu/services/xorg.scm (xorg-start-command): Remove "-ac" option.
2014-11-11 22:36:49 +01:00
Alex Kost 380f2ab6a4 gnu: fonts: Fix license of 'terminus-font'.
* gnu/packages/fonts.scm (terminus-font): Use 'silofl1.1' license.
2014-11-11 22:20:50 +03:00
Mark H Weaver efe0be6de7 gnu: libuninameslist: Include package name in file-name of source tarball.
* gnu/packages/fontutils.scm (libuninameslist)[source]: Add file-name field.
2014-11-11 12:15:12 -05:00
Ludovic Courtès 7047133f07 import: Add GNU importer.
Suggested by Karl Berry <karl@gnu.org>
and Andreas Enge <andreas@enge.fr>.

* guix/import/gnu.scm, guix/scripts/import/gnu.scm: New files.
* Makefile.am (MODULES): Add them.
* guix/scripts/import.scm (importers): Add "gnu".
* guix/gnu-maintenance.scm (gnu-release-archive-types): New procedure.
  (download-tarball): Export.
2014-11-11 15:31:35 +01:00
Ludovic Courtès 501d764751 gnu-maintenance: Introduce <gnu-release> data type.
* guix/gnu-maintenance.scm (<gnu-release>): New record type.
  (release-file): Rename to...
  (release-file?): ... this.  Return a Boolean.
  (tarball->version, coalesce-releases): New procedures.
  (releases): Call 'coalesce-releases' on RESULT.  Return <gnu-release>
  objects instead of pairs.
  (latest-release): Likewise.
  (package-update-path): Adjust accordingly.
* gnu/packages.scm (check-package-freshness): Adjust accordingly.
2014-11-11 15:31:35 +01:00
Ludovic Courtès 342b5204aa nls: Update 'vi' translation. 2014-11-11 15:31:35 +01:00
Andreas Enge b118401f71 gnu: polkit: Propagate input glib.
* gnu/packages/polkit.scm (polkit): Propagate input glib.
* gnu/packages/polkit.scm (polkit-qt): Drop input glib, now available
    through propagation.
2014-11-11 10:51:52 +01:00
Mark H Weaver 5220e6200b gnu: libpsl: Include package-name in file-name of source tarball.
* gnu/packages/web.scm (libpsl)[source]: Add file-name field.
2014-11-10 23:50:24 -05:00
Ludovic Courtès 842f7883f9 Thank Sylvain. 2014-11-11 00:07:22 +01:00
Ludovic Courtès a6b55314b1 gnu: Add wrapper for Freedink.
* gnu/packages/games.scm (freedink-engine, freedink-data): Make
  private.
  (freedink): New variable.
2014-11-11 00:06:01 +01:00
Sylvain Beucler bb3b71ce87 gnu: Add GNU Freedink.
* gnu/packages/games.scm (freedink-engine, freedink-data): New
  variables.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>.
2014-11-11 00:03:24 +01:00
Ludovic Courtès 9a4d9333e2 nls: Update 'de' translation. 2014-11-10 23:29:38 +01:00
Ludovic Courtès fdaacbad85 services: Add 'auto-start?' field to <service>.
* gnu/services.scm (<service>)[auto-start?]: New field.
* gnu/services/dmd.scm (dmd-configuration-file): Honor it.
* gnu/system/install.scm (cow-store-service): Add 'auto-start?' field.
2014-11-10 23:23:32 +01:00
Ludovic Courtès 03920078d5 gnu: libmikmod: Avoid dlopening libasound & co.
* gnu/packages/sdl.scm (libmikmod)[arguments]: New field.
2014-11-10 23:12:01 +01:00
Ludovic Courtès b756d3da4c doc: Mention "audio" and "video" groups in configuration template.
* gnu/system/os-config.tmpl (users): Add "audio" and "video" groups and
  explain.
2014-11-10 22:42:14 +01:00
Ludovic Courtès d6e2a622c4 services: Add 'user-unmount-service' as an essential service.
* gnu/services/base.scm (user-unmount-service): New procedure.
* gnu/system.scm (essential-services): Use it.
* gnu/system/install.scm (cow-store-service): Mention it in comment.
2014-11-10 22:42:14 +01:00
Ludovic Courtès ccea821bef syscalls: Add 'mount-points'.
* guix/build/syscalls.scm (mount-points): New procedure.
* tests/syscalls.scm ("mount-points"): New test.
2014-11-10 22:42:14 +01:00
Ludovic Courtès 7eda0c567b install: Add GRUB to the set of global packages.
* gnu/system/install.scm (installation-os)[packages]: Add GRUB.
2014-11-10 22:42:14 +01:00
Ludovic Courtès e1a94b978e nls: Add a few more package modules for translation.
* po/packages/POTFILES.in: List a few more files.
2014-11-10 22:42:14 +01:00
Alex Kost d9e56454e2 licenses: Add 'silofl1.1'.
* guix/licenses.scm (silofl1.1): New variable.
2014-11-10 18:21:25 +03:00
Ludovic Courtès f5fd4fd237 doc: Mention 'guix environment' in "Features"; add index entries.
* doc/guix.texi (Features): Add paragraph about 'guix environment'.
  (Build Systems): Add @cindex.
  (Invoking guix environment): Ditto.
2014-11-10 15:11:35 +01:00
Ludovic Courtès 0c4b00d851 Update NEWS. 2014-11-10 15:06:11 +01:00
Ludovic Courtès e43d5fa0d7 Thank Philip Woods. 2014-11-10 15:00:35 +01:00
Ludovic Courtès 88faf93315 doc: Add "GRUB Configuration".
* doc/guix.texi (operating-system Reference): Add xref to "GRUB
  Configuration".
  (GRUB Configuration): New node.
2014-11-10 15:00:35 +01:00
Ludovic Courtès 843858b8a7 doc: Avoid @indentedblock, which is not supported by Texinfo 4.
Reported by Mark H Weaver.

* doc/guix.texi (Security Updates): Use @quotation instead of
  @indentedblock; the latter is not supported by Texinfo 4.
2014-11-10 15:00:35 +01:00
Alex Kost 37c4ffc2c4 emacs: Improve 'guix-redisplay-buffer'.
* emacs/guix-base.el (guix-redisplay-buffer): Allow to display new entries.
  Restore point position.
2014-11-10 16:13:41 +03:00
Alex Kost e718f6cc8f emacs: Add 'guix-find-file'.
* emacs/guix-utils.el (guix-find-file): New procedure.
* emacs/guix-info.el (guix-file): Use it.
2014-11-10 16:13:41 +03:00
Alex Kost 7be25d4af0 emacs: Restore mode-line after operation prompt.
* emacs/guix-base.el (guix-operation-prompt): Restore 'mode-line-format' after
  prompting.
2014-11-10 16:13:40 +03:00
Alex Kost 5614921754 emacs: Add "c" key binding to copy a button link.
* emacs/guix-info.el (guix-info-button-map): New variable.
  (guix-info-button-copy-label): New procedure.
* doc/emacs.texi (Emacs Info buffer): Mention a "c" key binding.
  (Emacs Keymaps): Add 'guix-info-button-map'.
2014-11-10 16:13:40 +03:00
Andreas Enge 054a3921f0 gnu: Add polkit-qt.
* gnu/packages/polkit.scm (polkit-qt): New variable.
2014-11-10 13:15:25 +01:00
David Thompson bcc046fc87 gnu: Add guile-sdl.
* gnu/packages/sdl.scm (guile-sdl): New variable.
2014-11-09 19:15:25 -05:00
David Thompson d6f74baf5d gnu: Add sdl-union.
* gnu/packages/sdl.scm (sdl-union): New variable.
2014-11-09 19:15:25 -05:00
Ludovic Courtès f81ac34dd9 pull: Use the build procedure provided by the newly-downloaded Guix.
Fixes <http://bugs.gnu.org/18534>.

* guix/scripts/pull.scm (with-environment-variable, with-PATH): New
  macros.
  (temporary-directory, first-directory, interned-then-deleted): New
  procedures.
  (unpack): Rewrite to do the unpacking in the current process rather
  than as a separate derivation.
  (%self-build-file): New variable.
  (build-from-source): New procedure.
  (build-and-install): Use it.
* guix/build/pull.scm (build-guix): Rename 'tarball' argument to
  'source'.  Remove #:tar and #:gzip parameters, as well as 'tar'
  invocation.  Remove 'scandir' invocation.  Wrap body in
  'with-directory-excursion'.
* build-aux/build-self.scm: New file.
* Makefile.am (EXTRA_DIST): Add it.
2014-11-09 22:33:45 +01:00
Ludovic Courtès 4684f301d5 gexp: Add #:module-path parameter to 'gexp->derivation'.
* guix/gexp.scm (gexp->derivation): Add #:module-path parameter, and
  pass it to 'imported-modules' and 'compiled-modules'.
* doc/guix.texi (G-Expressions): Adjust accordingly.
2014-11-09 22:33:45 +01:00
Ludovic Courtès a2b63d58d4 gnu: Re-synchronize a couple of synopses with the Womb.
* gnu/packages/lisp.scm (gcl): Synchronize synopsis.
* gnu/packages/scheme.scm (mit-scheme): Ditto.
2014-11-09 22:33:45 +01:00
Andreas Enge c4bd2aca00 gnu: Add polkit.
* gnu/packages/polkit.scm (polkit): New variable.
* gnu/packages/patches/polkit-drop-test.patch: New file.
* gnu-system.am (dist_patch_DATA): Register patch file.
2014-11-09 18:55:31 +01:00
Andreas Enge 922ea80683 gnu: Add nspr.
* gnu/packages/polkit.scm (nspr): New variable.
2014-11-09 11:09:12 +01:00
Ludovic Courtès b138ec947a gnu: Add Image::ExitTool.
* gnu/packages/photo.scm (perl-image-exiftool): New variable.
2014-11-08 22:34:24 +01:00
Ludovic Courtès 28567712f3 system: grub: Adjust default theme color.
* gnu/system/grub.scm (%default-theme)[color-highlight]: Change
  foreground to cyan, as suggested by Felipe López.
2014-11-08 22:34:24 +01:00
Jason Self bfdbaf779f gnu: ffmpeg-2.2: Update to 2.2.10.
* gnu/packages/video.scm (ffmpeg-2.2): Update to version 2.2.10.
2014-11-08 07:50:55 -08:00
Jason Self 75058ecaea gnu: ffmpeg: Update to 2.4.3.
* gnu/packages/video.scm (ffmpeg): Update to version 2.4.3.
2014-11-08 07:46:44 -08:00
Ludovic Courtès 421c3bcc1b services: udev: Make /dev/kvm 666 as a workaround.
* gnu/services/base.scm (kvm-udev-rule): Change /dev/kvm mode to 666 to
  work around <http://bugs.gnu.org/18994>.
2014-11-08 15:10:42 +01:00
Ludovic Courtès 99ae9ceb18 system: grub: Add preliminary support for themes.
* gnu/system/grub.scm (<grub-image>, <grub-theme>): New record types.
  (%artwork-repository, %background-image): New variables.
  (<grub-configuration>)[theme]: New field.
  (svg->png, resize-image, grub-background-image, eye-candy): New
  procedures.
  (grub-configuration-file): Use 'eye-candy' and add it in BUILDER.
2014-11-08 15:10:42 +01:00
Ludovic Courtès 810568b35f vm: The 'run-vm' scripts now passes its arguments to QEMU.
* gnu/system/vm.scm (system-qemu-image/shared-store-script): Add "$@" at
  the end of the script.
  (common-qemu-options): Remove trailing newline.
* doc/guix.texi (Invoking guix system): Document it.
2014-11-08 15:10:42 +01:00
Ludovic Courtès ccdca0a09e Thank Felipe. 2014-11-08 15:10:42 +01:00
Ludovic Courtès d8c1944196 gnu: slim: Update URL.
Reported by Felipe López <felipe.lopez@openmailbox.org>.

* gnu/packages/slim.scm (slim)[origin, home-page]: Update URL.
2014-11-08 15:10:42 +01:00
Ludovic Courtès 6aa260af12 vm: Fix 'vm --full-boot' to produce a sufficient disk image.
* gnu/system/vm.scm (system-qemu-image/shared-store): Add
  #:disk-image-size and #:full-boot? parameters and honor them.  Pass
  '#:copy-inputs? full-boot?', and change #:inputs argument.
* guix/scripts/system.scm (system-derivation-for-action): Pass
  #:disk-image-size to 'system-qemu-image/shared-store'.
* doc/guix.texi (Invoking guix system): Mention use of '--image-size' in
  conjunction with '--full-boot'.
2014-11-08 15:10:42 +01:00
Andreas Enge a9967103de gnu: acct: Update to 6.6.2.
* gnu/packages/acct.scm (acct): Update to 6.6.2.
2014-11-08 13:25:53 +01:00
Andreas Enge cff1c5c1c6 gnu: Add mozjs (Mozilla Spidermonkey).
* gnu/packages/polkit.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Register new file.
2014-11-08 13:24:21 +01:00
Andreas Enge a50fbf0d65 gnu: libassuan: Update to 2.1.3.
* gnu/packages/gnupg.scm (libassuan): Update to 2.1.3.
2014-11-08 12:12:05 +01:00
Ludovic Courtès 9b24c76802 gnu: grub: Add dependency on GNU Unifont.
* gnu/packages/grub.scm (unifont): New variable.
  (grub)[arguments]: Copy and unzip Unifont in 'patch-stuff' phase.
  [native-inputs]: Add UNIFONT.
2014-11-08 01:05:35 +01:00
Ludovic Courtès ab11f0bed4 vm: Support 'guix system vm --full-boot'.
* gnu/system/vm.scm (system-qemu-image/shared-store-script): Add
  #:full-boot? parameter and honor it.
* guix/scripts/system.scm (system-derivation-for-action): Likewise.
  (perform-action): Likewise.
  (show-help): Document '--full-boot'.
  (%options): Add '--full-boot'.
  (guix-system): Add #:full-boot? argument in call to 'perform-action'.
* doc/guix.texi (Invoking guix system): Document it.
2014-11-08 01:05:35 +01:00
Ludovic Courtès c1941588dd doc: Emphasize the availability of two user interfaces.
* doc/guix.texi (Package Management): Add a word about the two user
  interfaces.
2014-11-08 01:05:35 +01:00
Ludovic Courtès 91cc5aff5a services: xorg: Add argv[0] in X invocation.
* gnu/services/xorg.scm (xorg-start-command): Add missing argv[0] in
  'execl' call.
2014-11-08 01:05:35 +01:00
Andreas Enge 0fa22d5a7c gnu: xf86-video-intel: Swap input libdrm with mesa.
* gnu/packages/xorg.scm (xf86-video-intel): Drop input libdrm, add input
    mesa.
2014-11-07 22:41:13 +01:00
Ludovic Courtès 15a6d433ff lint: Allow synopses that start with an abbreviation.
* guix/scripts/lint.scm (starts-with-abbreviation?): New procedure.
  (check-synopsis-style)[check-start-with-package-name]: Use it.
* tests/lint.scm ("synopsis: start with abbreviation"): New test.
2014-11-07 17:52:11 +01:00
Ludovic Courtès 105c260f00 lint: Skip starting-article test for the synopses of GNU packages.
* guix/scripts/lint.scm (check-synopsis-style)[check-start-article]:
  Change to (const #t) when PACKAGE matches 'gnu-package?'.
2014-11-07 17:52:11 +01:00
Ludovic Courtès 431e5f5a3e lint: Tolerate sentences that start with a parenthesis or a quote.
* guix/scripts/lint.scm (properly-starts-sentence?): Add (, ", and ' as
  valid beginnings.
2014-11-07 17:52:11 +01:00
Ludovic Courtès 17854ef91d lint: Improve check for synopses starting with package name.
* guix/scripts/lint.scm (package-name-regexp): New procedure.
  (check-synopsis-style)[check-start-with-package-name]: Use it instead
  of 'string-prefix-ci?'.
* tests/lint.scm ("synopsis: start with package name prefix"): New test.
2014-11-07 17:52:11 +01:00
Ludovic Courtès 72b030c049 gnu: cppunit: Add missing space in description.
* gnu/packages/check.scm (cppunit)[description]: Add missing space.
2014-11-07 17:52:11 +01:00
Ludovic Courtès b1e666835e lint: Simplify no-warnings tests.
* tests/lint.scm ("description: may start with a digit"): Replace
  (not (string-contains exp str)) with (string-null? exp).
  ("description: may start with lower-case package name"): Likewise.
  ("description: end-of-sentence detection with abbreviations"):
  Likewise.
  ("synopsis: may start with a digit"): Likewise.
  ("synopsis: ends with 'etc.'"): Likewise.
2014-11-07 17:52:11 +01:00
Ludovic Courtès 41eb11988e gnu: Move pkg-config to 'native-inputs' in various places.
* gnu/packages/glib.scm (libsigc++): Move pkg-config to
  'native-inputs'.
  (glibmm): Likewise.
* gnu/packages/mpd.scm (mpd): Likewise.
* gnu/packages/package-management.scm (guix-0.7): Likewise.
* gnu/packages/sdl.scm (sdl-net): Likewise.
  (sdl-ttf): Likewise.
* gnu/packages/xiph.scm (vorbis-tools): Likewise.
2014-11-07 17:52:11 +01:00
Alex Kost 9a130e19fc emacs: Add 'guix-prettify'.
* emacs/guix-prettify.el: New file.
* emacs.am (ELFILES): Add it.
* doc/emacs.texi (Emacs Prettify): New node.
* doc/guix.texi (Features): Mention it.
2014-11-07 14:58:15 +03:00
Ludovic Courtès d2e59637e3 services: xorg: Allow users to specify a list of resolutions.
* gnu/services/xorg.scm (xorg-start-command): Add #:resolutions
  parameter and 'screen-section' procedure.  Use it.
* doc/guix.texi (X Window): Adjust accordingly.
2014-11-07 00:00:08 +01:00
Ludovic Courtès f703413e41 services: xorg: Allow users to specify the drivers to use.
* gnu/services/xorg.scm (xorg-start-command): Add #:drivers parameter.
  Add 'device-section' procedure, and use it in 'xserver.conf'.
* doc/guix.texi (X Window): Document it.
2014-11-07 00:00:08 +01:00
Ludovic Courtès e30442b53b services: xorg: Fix typo in xserver.conf.
* gnu/services/xorg.scm (xorg-start-command)[xserver.conf]: Add missing
  double-quote in AllowMouseOpenFail.
2014-11-07 00:00:02 +01:00
Ludovic Courtès 41d07f5e98 gnu: Add xf86-video-modesetting.
* gnu/packages/xorg.scm (xf86-video-modesetting): New variable.
* gnu/services/xorg.scm (xorg-start-command)[xserver.conf]: Add
  ModulePath line for XF86-VIDEO-MODESETTING, commented out.
2014-11-06 23:58:54 +01:00
Ludovic Courtès 3c1f0e3b99 vm: Factorize common QEMU options.
* gnu/system/vm.scm (common-qemu-options): New procedure.
  (system-qemu-image/shared-store-script): Use it.
2014-11-06 22:58:31 +01:00
Ludovic Courtès 263d05be8d vm: Remove unused procedure.
* gnu/system/vm.scm (input->name+output): Remove.  Its last user
  disappeared in commit b53833b.
2014-11-06 19:26:27 +01:00
Ludovic Courtès c8af8572bf tests: Avoid Bash extension in 'tests/guix-lint.sh'.
* tests/guix-lint.sh: Remove redundant and non-portable 'export'.
2014-11-06 18:00:51 +01:00
Ludovic Courtès 50fe945c01 gnu: ots: Make sure the shared library has the '.so' extension.
Fixes <http://bugs.gnu.org/18521>.

* gnu/packages/ots.scm (ots)[arguments]: Add #:phases.
2014-11-06 14:54:40 +01:00
Ludovic Courtès 12bcf94a9a gnu: Synchronize descriptions with the Womb.
Note: some of these changes undo bits of 35b9e4232.

* gnu/packages/base.scm, gnu/packages/gperf.scm, gnu/packages/guile.scm,
  gnu/packages/libidn.scm, gnu/packages/miscfiles.scm,
  gnu/packages/telephony.scm: Adjust synopses and descriptions as
  suggested by 'make sync-descriptions'.
2014-11-05 23:23:38 +01:00
Ludovic Courtès 95f92d4e2c system: Define 'INFOPATH' in /etc/profile.
* gnu/system.scm (etc-directory)[bashrc]: Set 'INFOPATH'.
2014-11-05 22:59:50 +01:00
Ludovic Courtès b1821e8272 gnu: guix: Update development snapshot.
* gnu/packages/package-management.scm (guix-devel): Update to commit
  84934f4.
2014-11-05 22:59:50 +01:00
Ludovic Courtès e4bed284ae monads: Remove unused 'nargs' parameter from 'lift'.
* guix/monads.scm (lift): Remove 'nargs' parameter.
2014-11-05 22:59:50 +01:00
Alex Kost fae3d34720 build: Add missing "emacs/guix-messages.el".
* emacs.am (ELFILES): Add "emacs/guix-messages.el".
2014-11-06 00:30:57 +03:00
Ludovic Courtès 84934f40d1 import: pypi: Gracefully handle wrong argument counts.
* guix/scripts/import/pypi.scm (guix-import-pypi): Use 'leave' to handle
  cases where ARGS has zero or two or more elements.
2014-11-05 18:04:16 +01:00
Ludovic Courtès 467a3c93db import: pypi: Gracefully handle non-existent packages.
Fixes <http://bugs.gnu.org/18831>.
Reported by Ian Denhardt <ian@zenhack.net>.

* guix/import/pypi.scm (url-fetch, json-fetch, pypi-fetch): Augment
  docstring to mention #f on failure.
  (pypi->guix-package): Likewise, and actually return #f on failure.
* guix/scripts/import/pypi.scm (guix-import-pypi): Call 'leave' when
  'pypi->guix-package' returns #f.
2014-11-05 17:56:39 +01:00
Ludovic Courtès 63854bcbb1 services: Add NTP service.
* gnu/services/networking.scm (ntp-service): New procedure.
* doc/guix.texi (Networking Services): Document it.
2014-11-05 11:25:39 +01:00
Ludovic Courtès 98c16943d5 services: Increase delay before SIGKILL is sent when halting.
* gnu/services/base.scm (user-processes-service): Increase the default
  value of 'grace-delay'.  This leaves more time for processes to clean
  up their PID files, /tmp/.X0-lock, etc.
2014-11-05 11:25:39 +01:00
Ludovic Courtès 52b321e908 gnu: ntp: Build with POSIX capabilities support on GNU/Linux.
* gnu/packages/ntp.scm (ntp)[inputs]: New field.
2014-11-05 11:25:39 +01:00
Ludovic Courtès 65fb4515f0 vm: Disable swap devices in virtualized OSes.
* gnu/system/vm.scm (virtualized-operating-system): Add 'swap-devices'
  field.
2014-11-05 11:25:39 +01:00
Ludovic Courtès 6b464e6e5a gnu: sdl: Fix home page URLs.
* gnu/packages/sdl.scm (sdl-image, sdl-mixer, sdl-net, sdl-ttf): Prepend
  "http://" to 'home-page'.
2014-11-05 11:25:39 +01:00
Eric Bavier e0622a9c4a gnu: calcurse: Update to 3.2.1.
* gnu/packages/calcurse.scm (calcurse): Update to 3.2.1.
2014-11-04 21:37:47 -06:00
David Thompson f9664de768 gnu: freeimage: Remove MIPS from supported-systems.
* gnu/packages/image.scm (freeimage): Drop support for "mips64el-linux".
2014-11-04 22:10:50 -05:00
Andreas Enge dad287bdba gnu: phonon: Update to 4.8.2.
* gnu/packages/kde.scm (phonon): Update to 4.8.2.
2014-11-04 23:47:32 +01:00
Andreas Enge 0d011aad10 gnu: xf86-video-ati: Update to 6.14.6.
* gnu/packages/xorg.scm (xf86-video-ati): Update to 6.14.6 to circumvent
    build failures.
2014-11-04 22:55:46 +01:00
Ludovic Courtès 834ea02ad8 tests: When a store item is to be deleted, make it statistically unique.
Fixes <http://bugs.gnu.org/18935>.
Reported by Mark H Weaver <mhw@netris.org>.

Previously, if tests/nar.scm ran concurrently with tests/gexp.scm, the
store item "foo" containing the string "Hello, world!" could be
deleted (via 'delete-paths') from the tests/nar.scm daemon while the
tests/gexp.scm daemon would still consider it live.

* tests/nar.scm ("restore-file-set (missing signature)"):
  Use (random-text) rather than "Hello, world!", to avoid concurrent
  deletion of store item "foo" used in tests/gexp.scm.
2014-11-04 21:13:28 +01:00
Ludovic Courtès 000c59b671 store: Invalidate caches once GC has run.
* guix/store.scm (run-gc): Add calls to 'hash-clear!'.
* tests/store.scm ("add-text-to-store vs. delete-paths",
  "add-to-store vs. delete-paths"): New tests.
2014-11-04 21:13:28 +01:00
Andreas Enge 8de1691475 gnu: qt: Update to 5.3.2.
* gnu/packages/qt.scm (qt): Update to 5.3.2. Drop configure flag
    -no-neon, which is not supported any more.
2014-11-04 19:14:29 +01:00
Ludovic Courtès 3b1bba4cab gnu: gcc-4.9: Update to 4.9.2.
* gnu/packages/gcc.scm (gcc-4.9): Update to 4.9.2.
2014-11-04 18:59:25 +01:00
Ludovic Courtès 342005e7e3 gnu: Add GNU adns.
* gnu/packages/adns.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-11-04 18:59:25 +01:00
Ludovic Courtès 121de2e107 gnu: evince: Use 'glib-or-gtk-build-system'.
* gnu/packages/gnome.scm (evince)[build-system]: Switch to
  GLIB-OR-GTK-BUILD-SYSTEM.
2014-11-04 18:59:25 +01:00
Ludovic Courtès d611d0833f gnu: gdb: Do not install libopcodes and libbfd.
* gnu/packages/gdb.scm (gdb)[arguments]: Add 'post-install' phase.
2014-11-04 18:59:25 +01:00
Ludovic Courtès b77b84717d gnu: gdb: Update to 7.8.1.
* gnu/packages/gdb.scm (gdb): Update to 7.8.1.
2014-11-04 18:59:25 +01:00
Federico Beffa aec149e32a gnu: Add docbook-xml-4.2
* gnu/packages/docbook.scm (docbook-xml-4.2): New variable.
2014-11-04 18:43:08 +01:00
Federico Beffa 6f885c059c gnu: Add gnome-themes-standard.
* gnu/packages/gnome.scm (gnome-themes-standard): New variable.
2014-11-04 18:33:32 +01:00
Federico Beffa cd14b5e3f3 gnu: librsvg: Generate complete loaders.cache including support for SVG.
* gnu/packages/gnome.scm (librsvg): Add 'generate-full-cache phase.
2014-11-04 18:16:12 +01:00
Andreas Enge ff0a8c590d gnu: qt: Explicitly link with the dbus library.
* gnu/packages/qt.scm (qt, qt-4): Add a configure flag to link explicitly
    with dbus.
2014-11-04 15:41:20 +01:00
Alex Kost 773bab64e8 doc: emacs: Fix titles of the printed manuals.
* doc/emacs.texi: Use the proper names of the printed manuals in the
  cross references.
2014-11-04 15:51:22 +03:00
Alex Kost d38bd08c74 emacs: Add interface for comparing generations.
Suggested by Ludovic Courtès.

* doc/emacs.texi (Emacs List buffer): Document new key bindings.
* emacs/guix-base.el (guix-generation-packages-buffer-name-function,
  guix-generation-packages-update-buffer, guix-output-name-width): New
  variables.
  (guix-generation-file, guix-manifest-file, guix-generation-packages,
  guix-generation-packages-buffer-name-default,
  guix-generation-packages-buffer-name-long,
  guix-generation-packages-buffer-name, guix-generation-packages-buffer,
  guix-generation-insert-package, guix-generation-insert-packages,
  guix-profile-generation-manifest-file,
  guix-profile-generation-packages-buffer): New procedures.
* emacs/guix-list.el: Add key bindings for comparing generations.
  (guix-generation-list-generations-to-compare,
  guix-generation-list-show-added-packages,
  guix-generation-list-show-removed-packages, guix-generation-list-compare,
  guix-generation-list-ediff-manifests, guix-generation-list-diff-manifests,
  guix-generation-list-ediff-packages, guix-generation-list-diff-packages,
  guix-generation-list-ediff, guix-generation-list-diff): New procedures.
* emacs/guix-messages.el (guix-messages): Add 'generation-diff' search type.
  (guix-message-outputs-by-diff): New procedure.
* emacs/guix-utils.el (guix-diff-switches): New variable.
  (guix-diff): New procedure.
* emacs/guix-main.scm (package/output-sexps): Handle 'generation-diff' search
  type.
  (manifest-entry->package-specification,
  manifest-entries->package-specifications, generation-package-specifications,
  generation-package-specifications+paths, generation-difference): New
  procedures.
2014-11-04 15:51:22 +03:00
Alex Kost 62f261d88c emacs: Improve minibuffer messages.
* emacs/guix-base.el (guix-messages, guix-result-message): Move to
  'guix-messages.el'.
  (guix-set-buffer, guix-history-call, guix-redisplay-buffer): Adjust for
  the modified 'guix-result-message'.
* emacs/guix-messages.el: New file.
  (guix-redisplay-buffer): Add 'profile' argument.
  (guix-message-string-name, guix-message-string-entry-type,
  guix-message-string-entries, guix-message-packages-by-name,
  guix-message-generations-by-time): New procedures.
2014-11-04 15:51:21 +03:00
Andreas Enge 6f7f24092f gnu: swig: Disable input python.
* gnu/packages/swig.scm (swig): Disable input python. Before, it was not
    taken into account during configure; now that it is found, it fails
    its tests. None of the dependent packages need it.
2014-11-04 13:43:20 +01:00
Andreas Enge 4f38d922fe gnu: swig: Update to 3.0.2.
* gnu/packages/swig.scm (swig): Update to 3.0.2.
2014-11-04 13:42:01 +01:00
Andreas Enge 17e1ddf697 gnu: swig: Update to 2.0.12.
* gnu/packages/swig.scm (swig): Update to 2.0.12.
2014-11-04 13:41:02 +01:00
Andreas Enge 3c0f23290d gnu: python-wrapper: Propagate input python.
* gnu/packages/python.scm (python-wrapper): Propagate input python, so that
    the python libraries are made available as well as the python3 binaries
    without the symbolic links.
2014-11-04 13:40:32 +01:00
Eric Bavier b38e45d813 gnu: Use version-major+minor in gnome and gtk.
* gnu/packages/gnome.scm (gnome-desktop, gnome-doc-utils,
  libgnome-keyring, evince, gsettings-desktop-schemas,
  gnome-icon-theme, libnotify, lipeas, glade, libcroco, libgsf,
  librsvg, libidl, orbit2, gconf, gnome-mime-data, gnome-vfs,
  libgnome, libart-lgpl, libgnomecanvas, libgnomeui, libglade,
  libgnomeprint, libgnomeprintui, libbonoboui, goffice, gnumeric): Use
  version-major+minor.
  (shared-mime-info, hicolor-icon-theme): Wrap long uri lines.
* gnu/packages/gtk.scm (atk, pangox-compat, gtksourceview, gdk-pixbuf,
  at-spi2-core, at-spi2-atk, gtk+-2, gtk+, pangomm, atkmm, gtkmm,
  gtkmm-2): Use version-major+minor.
2014-11-04 05:03:26 -06:00
Ludovic Courtès c37a74bd3e packages: 'package-transitive-supported-systems' accounts for indirect deps.
Reported by Andreas Enge <andreas@enge.fr>.

* guix/packages.scm (first-value): New macro.
  (package-transitive-supported-systems): Rewrite to traverse all the
  DAG rooted at PACKAGE.
* tests/packages.scm ("package-transitive-supported-systems"): Add 'd'
  and 'e', and test them.
2014-11-03 21:26:48 +01:00
Federico Beffa 6888830b35 gnu: Add Cython.
* gnu/packages/python.scm (cython, cython2): New variables.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-11-03 10:36:50 +01:00
Ludovic Courtès 3b509259bf gnu: man-pages: Build sequentially.
Fixes <http://bugs.gnu.org/18701>.
Reported by Mark H Weaver <mhw@netris.org>.

* gnu/packages/man.scm (man-pages)[arguments]: Add #:parallel-build? #f.
2014-11-02 23:23:43 +01:00
Ludovic Courtès d460204f2e system: Allow Linux-libre to find our 'modprobe' command.
Fixes <http://bugs.gnu.org/18525>.
Reported by Mark H Weaver <mhw@netris.org>.

* gnu/build/activation.scm (activate-modprobe): New procedure.
* gnu/system.scm (modprobe-wrapper): New procedure.
  (operating-system-activation-script): Use both.
2014-11-02 23:06:17 +01:00
Ludovic Courtès ac67e20582 gnu: kmod: 'kmod static-nodes' command honors $LINUX_MODULE_DIRECTORY.
* gnu/packages/patches/kmod-module-directory.patch: Add hunk for
  tools/static-nodes.c.  Taken from Nixpkgs, where it was added by
  Eelco Dolstra <eelco.dolstra@logicblox.com>.
2014-11-02 22:06:27 +01:00
Ludovic Courtès 47e643db10 guix-register: Do not attempt to create NIX_STORE_DIR.
Fixes <http://bugs.gnu.org/18689>.
Reported by Philip Woods <elzairthesorcerer@gmail.com>.

* nix/guix-register/guix-register.cc (main): Move 'store' instantiation
  above 'settings.nixStore' assignment.
2014-11-02 21:38:23 +01:00
Ludovic Courtès 05962f2958 packages: Implement grafts.
Thanks to Mark H. Weaver <mhw@netris.org> for insightful discussions
and suggestions.

* guix/packages.scm (<package>)[graft]: New field.
  (patch-and-repack): Invoke 'package-derivation' with #:graft? #f.
  (package-source-derivation): Likewise.  Do not use (%guile-for-build)
  in call to 'patch-and-repack', and we could end up using a grafted
  Guile.
  (expand-input): Likewise, also for 'package-cross-derivation' call.
  (package->bag): Add #:graft? parameter.  Honor it.  Use 'strip-append'
  instead of 'package-full-name'.
  (input-graft, input-cross-graft, bag-grafts, package-grafts): New
  procedures.
  (package-derivation, package-cross-derivation): Add #:graft? parameter
  and honor it.
* gnu/packages/bootstrap.scm (package-with-bootstrap-guile): Add
  recursive call on 'graft'.
* guix/build-system/gnu.scm (package-with-explicit-inputs,
  package-with-extra-configure-variable, static-package): Likewise.
  (gnu-build): Use the ungrafted Guile to avoid full rebuilds.
  (gnu-cross-build): Likewise.
* guix/build-system/cmake.scm (cmake-build): Likewise.
* guix/build-system/glib-or-gtk.scm (glib-or-gtk-build): Likewise.
* guix/build-system/perl.scm (perl-build): Likewise.
* guix/build-system/python.scm (python-build): Likewise.
* guix/build-system/ruby.scm (ruby-build): Likewise.
* guix/build-system/trivial.scm (guile-for-build): Likewise.
* tests/packages.scm ("package-derivation, direct graft",
  "package-cross-derivation, direct graft", "package-grafts,
  indirect grafts", "package-grafts, indirect grafts, cross",
  "package-grafts, indirect grafts, propagated inputs",
  "package-derivation, indirect grafts"): New tests.
  ("bag->derivation", "bag->derivation, cross-compilation"): Wrap in
  'parameterize'.
* doc/guix.texi (Security Updates): New node.
  (Invoking guix build): Document --no-graft.
2014-11-02 21:22:12 +01:00
Ludovic Courtès 50373bab7a packages: Add 'package->bag' test for propagated inputs.
* tests/packages.scm ("package->bag, propagated inputs"): New test.
2014-11-02 21:22:12 +01:00
Ludovic Courtès e786293e76 derivations: Add 'derivation-name'.
* guix/derivations.scm (derivation-name): New procedure.
* tests/derivations.scm ("derivation-name"): New test.
2014-11-02 21:22:12 +01:00
Andreas Enge 5c2033f864 gnu: Add oxygen-icons.
* gnu/packages/kde.scm (oxygen-icons): New variable.
2014-11-02 19:13:44 +01:00
Alex Kost 833fdac028 emacs: Add package info heading.
Co-authored-by: Ludovic Courtès <ludo@gnu.org>

* emacs/guix-info.el: (guix-package-info-heading): New face.
  (guix-package-info-synopsis): Modify face.
  (guix-info-insert-entry-default, guix-package-info-insert-heading,
  guix-package-info-insert-with-heading): New procedures.
  (guix-package-info-heading-params, guix-info-insert-package-function,
  guix-info-insert-installed-function, guix-info-insert-output-function,
  guix-info-insert-generation-function): New variables.
2014-11-02 20:43:10 +03:00
David Thompson 43402c5cd2 gnu: Add freeimage.
* gnu/packages/image.scm (freeimage): New variable.
2014-11-02 12:33:25 -05:00
Andreas Enge 76c9b6aaef gnu: libart-lgpl: Update to 2.3.21.
* gnu/packages/gnome.scm (libart-lgpl): Update to 2.3.21.
2014-11-02 13:15:39 +01:00
Eric Bavier edda6db236 gnu: wget: Add input libpsl.
* gnu/packages/wget.scm (wget)[inputs]: Add libpsl.
2014-10-31 20:25:02 -05:00
Eric Bavier 488e886384 gnu: Add libpsl.
* gnu/packages/web.scm (libpsl): New variable.
2014-10-31 20:25:02 -05:00
Eric Bavier fb7bdb43ef gnu: wget: Upgrade to 1.16.
* gnu/packages/wget.scm (wget)[source]: Upgrade to 1.16.
  [inputs]: Add libidn.
  [native-inputs]: Add python, perl-http-daemon, and
  perl-io-socket-ssl.
2014-10-31 20:25:02 -05:00
Eric Bavier 3484d052fa gnu: Add perl-io-socket-ssl.
* gnu/packages/web.scm (perl-io-socket-ssl): New variable.
2014-10-31 20:25:02 -05:00
Eric Bavier a16e9204ad gnu: Add perl-net-ssleay.
* gnu/packages/openssl.scm (perl-net-ssleay): New variable.
2014-10-31 20:25:02 -05:00
David Thompson 12d39eb514 gnu: ruby: Update to 2.1.4.
* gnu/packages/ruby.scm: Update.  Remove the now redundant readline patch.
2014-10-31 18:57:30 -04:00
Ludovic Courtès d8805b95f5 build: Unset 'CDPATH' in 'test-env'.
Reported by Mathieu Lirzin.

* test-env.in: Unset 'CDPATH'.
2014-10-31 16:54:45 +01:00
Jason Self c268a0d4a6 gnu: linux-libre: Update to 3.17.2.
* gnu/packages/linux.scm (linux-libre): Update to version 3.17.2.
2014-10-30 21:13:20 -07:00
Ludovic Courtès 49aeaedfa7 gnu: gpsbabel: Correctly unquote the value for #:tests?.
* gnu/packages/gps.scm (gpsbabel)[arguments]: Add missing unquote.
  Fixes typo introduced in 8235039.
2014-10-31 00:10:44 +01:00
Ludovic Courtès e0ea3f8a0d download: Append (effective-version) to '%load-path' for GnuTLS.
* guix/download.scm (url-fetch)[builder]: Append (effective-version) to
  %load-path, as discussed at
  <http://lists.gnu.org/archive/html/guix-devel/2014-10/msg00398.html>.
  This fixes a regression introduced in b94ae0b.
2014-10-30 15:46:36 +01:00
Ludovic Courtès b9113adf45 environment: Improve '--help' output.
* guix/scripts/environment.scm (show-help): Align --pure and
  --search-paths with other long options; add 'newline' call before
  'show-bug-report-information' call.
2014-10-30 14:08:03 +01:00
Ludovic Courtès 82350397ed gnu: gpsbabel: Disable tests on i686.
* gnu/packages/gps.scm (gpsbabel)[arguments]: Add #:tests?.
2014-10-30 14:08:03 +01:00
Andreas Enge e9a6d2252c gnu: texlive: Move script packages from native-inputs to inputs.
* gnu/packages/texlive.scm (texlive): Move perl, python and tcsh from
    native inputs to inputs.
2014-10-30 00:01:02 +01:00
Andreas Enge b32c8549e4 gnu: texlive: Add inputs fontforge and ruby.
* gnu/packages/texlive.scm (texlive): Add interpreters fontforge and ruby
    to the inputs.
2014-10-29 21:21:50 +01:00
Andreas Enge 7591698210 gnu: texlive: Use system potrace instead of bundled copy.
* gnu/packages/texlive.scm (texlive): Add potrace as an input and modify
    the configure flags accordingly.
2014-10-29 21:21:49 +01:00
Andreas Enge 4797d84ddb gnu: potrace: Install libraries and header files.
* gnu/packages/fontutils.scm (potrace): Add configure flag to install
    libraries and header files.
2014-10-29 21:21:49 +01:00
Andreas Enge 283fd55b41 gnu: texlive: Drop obsolete input t1lib.
* gnu/packages/texlive.scm (texlive): Drop input t1lib and the corresponding
    configure flag.
    Since texlive-2013, xdvi uses freetype instead of t1lib for rendering.
2014-10-29 21:21:49 +01:00
Andreas Enge 609578a7d0 gnu: texlive: Use system libpaper instead of bundled copy.
* gnu/packages/texlive.scm (texlive): Add libpaper as an input and modify
    the configure flags accordingly.
2014-10-29 21:21:49 +01:00
Andreas Enge c70cf7eb07 gnu: texlive: Use system harfbuzz instead of bundled copy.
* gnu/packages/texlive.scm (texlive): Add harfbuzz as an input and modify
    the configure flags accordingly.
2014-10-29 21:21:48 +01:00
Andreas Enge 27383915ce gnu: harfbuzz: Add and enable input graphite2.
* gnu/packages/gtk.scm (harfbuzz): Add input graphite2 and enable it with
    the corresponding configure flag.
2014-10-29 21:21:48 +01:00
Andreas Enge be2c88caa0 gnu: texlive: Use system graphite2 instead of bundled copy.
* gnu/packages/texlive.scm (texlive): Add graphite2 as an input and modify
    the configure flags accordingly.
2014-10-29 21:21:48 +01:00
Ludovic Courtès 3b23972059 gnu: Add GPS Correlate.
* gnu/packages/gps.scm (gpscorrelate): New variable.
2014-10-29 17:58:42 +01:00
Ludovic Courtès 83aabfbcc6 gnu: Add GPSBabel.
* gnu/packages/gps.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-10-29 14:58:31 +01:00
Ludovic Courtès 7dbe096c63 import: snix: Handle license attributes.
* guix/import/snix.scm (snix-derivation->guix-package)[license-variable]:
  Move to...
  (license-variable): ... here.  Handle license attributes.
2014-10-29 14:03:46 +01:00
Ludovic Courtès 940a8c57be offload: Remove mutual exclusion on transfers.
Suggested by Mark H. Weaver <mhw@netris.org>
at <http://lists.gnu.org/archive/html/guix-devel/2014-10/msg00352.html>.

* guix/scripts/offload.scm (transfer-and-offload): Remove uses of
  'with-machine-lock'.
2014-10-29 00:31:23 +01:00
Ludovic Courtès d2d0514b58 derivations: Fix 'derivation-prerequisites-to-build' when #:local-build?.
* guix/derivations.scm (derivation-prerequisites-to-build)[derivation-substitutable?]:
  Call 'substitutable-derivation?'.
  <body>: When 'substitutable-derivation?' returns #f, add DRV to BUILD.
2014-10-29 00:31:23 +01:00
Ludovic Courtès e6740741d1 tests: Move some of the narinfo test tools to (guix tests).
* guix/tests.scm (derivation-narinfo, call-with-derivation-narinfo): New
  procedures.
  (with-derivation-narinfo): New macro.
* tests/derivations.scm ("derivation-prerequisites-to-build and
  substitutes"): Use them.
2014-10-29 00:31:23 +01:00
Ludovic Courtès a96a82d79e system: Add pciutils and pciutils to '%base-packages'.
* gnu/system.scm (%base-packages): Add PCIUTILS and USBUTILS.
2014-10-29 00:31:23 +01:00
Ludovic Courtès 4902c3ecc6 gnu: Add ath9k-htc-firmware.
* gnu/packages/firmware.scm: New file.
* gnu/packages/patches/ath9k-htc-firmware-objcopy.patch: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add 'firmware.scm'.
  (dist_patch_DATA): Add the patch.
2014-10-29 00:31:23 +01:00
Ludovic Courtès 9d3074609a gnu: Add Xtensa bare-bones cross-compiler.
* gnu/packages/cross-base.scm (xgcc-xtensa): New variable.
* gnu/packages/bootstrap.scm (glibc-dynamic-linker): Add case for
  "xtensa-elf".
2014-10-29 00:31:23 +01:00
Ludovic Courtès fc93e30919 derivations: Add 'offloadable-derivation?' and 'substitutable-derivation?'.
* guix/derivations.scm (offloadable-derivation?,
  substitutable-derivation?): New procedures.
* tests/derivations.scm ("offloadable-derivation?"): New test.
2014-10-29 00:31:23 +01:00
Ludovic Courtès 31a123fe00 gnu: guile-ncurses: Update to 1.6.
* gnu/packages/guile.scm (guile-ncurses): Update to 1.6.
2014-10-29 00:31:23 +01:00
Eric Bavier 791e0126ae build: Adjust lint tests for latest rules.
* tests/guix-lint.sh (dummy)[description]: Add failing case.
  [doc]: Adjust.
2014-10-28 09:28:40 -05:00
Ludovic Courtès bc36105651 list-packages: Add Hydra links only for the supported systems.
* build-aux/list-packages.scm (package->sxml)[status]: Use
  'package-transitive-supported-systems' instead of a hard-coded list of
  systems.
2014-10-28 10:30:38 +01:00
Ludovic Courtès 7491edafdb gnu: mit-scheme: Fix typo in 'supported-systems'.
* gnu/packages/scheme.scm (mit-scheme)[supported-systems]: Correct
  spelling of "mips64el-linux".
2014-10-28 10:29:36 +01:00
Ludovic Courtès f15615b119 gnu: atlas: Make it non-substitutable.
Suggested by Federico Beffa <beffa@ieee.org>.

* gnu/packages/maths.scm (atlas)[arguments]: Pass #:substitutable? #f.
  [description]: Adjust accordingly.
2014-10-28 10:17:55 +01:00
Ludovic Courtès 77b0ac905d build-system/gnu: Add #:substitutable? parameter.
* guix/build-system/gnu.scm (gnu-build): Add #:substitutable?
  parameter.  Pass #:local-build? to 'build-expression->derivation'.
  (gnu-cross-build): Likewise.
2014-10-28 10:17:13 +01:00
Ludovic Courtès f47638a353 gnu: Mark a few packages as unsupported on MIPS.
* gnu/packages/gprolog.scm (gprolog): Add 'supported-systems' field.
* gnu/packages/qemu.scm (qemu-headless): Likewise.
* gnu/packages/qt.scm (qt): Likewise.
* gnu/packages/scheme.scm (racket): Likewise.
2014-10-28 01:18:50 +01:00
Alex Kost 2d7bf94927 emacs: Add 'guix-pull' command.
* emacs/guix-base.el (guix-pull): New command.
  (guix-update-after-pull, guix-after-pull-hook): New variables.
  (guix-restart-repl-after-pull, guix-update-buffers-maybe-after-pull): New
  procedures.
* emacs/guix-main.scm: Use (guix scripts pull) module.
* doc/emacs.texi (Emacs Commands): Document 'guix-pull' command.
2014-10-27 21:52:56 +03:00
Alex Kost 17b50485a6 emacs: Improve REPL procedures.
* emacs/guix-backend.el (guix-start-process-maybe): Add 'start-msg' and
  'end-msg' optional arguments.
  (guix-start-repl-maybe): Likewise.  Do not kill buffer with a dead process.
  (guix-repl-exit): New procedure.
  (guix-eval-in-repl): Use 'geiser-repl--send'.
2014-10-27 21:52:56 +03:00
Alex Kost f209da9f94 emacs: Improve buffer procedures.
* emacs/guix-base.el (guix-list-or-info-buffer-p): Delete.  Replace with...
  (guix-buffer-p): ... this.  New procedure.
  (guix-buffers): Use it.  Add 'modes' argument.
  (guix-update-buffer): New procedure.
  (guix-update-buffers-maybe): Rename to ...
  (guix-update-buffers-maybe-after-operation): this.  Use
  'guix-update-buffer'.
2014-10-27 21:52:56 +03:00
Alex Kost ce2e4e3938 emacs: Introduce REPL operation type.
* emacs/guix-backend.el (guix-repl-operation-type): New variable.
  (guix-repl-output-filter): Run type hooks after performing an operation.
  (guix-eval-read): Add 'operation-type' argument.
2014-10-27 21:52:55 +03:00
Alex Kost d2b299a91f emacs: Handle updating by ID after REPL restart.
* emacs/guix-base.el (guix-entry-to-specification,
  guix-entries-to-specifications): New procedures.
  (guix-revert-buffer): Search by name if searching by ID gives no results.
2014-10-27 21:52:55 +03:00
Ian Denhardt 8a96bd4bb0 doc: Add a note about optional GnuTLS dependency.
* README (Requirements): add a note about 'guix download''s GnuTLS dependency.
* doc/guix.texi (Requirements): Likewise.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2014-10-27 13:53:46 +01:00
Ludovic Courtès 537c8bb3fc doc: Add cross-reference to the gnutls-guile manual.
* doc/guix.texi (Invoking guix download): Add cross-reference to the
  gnutls-guile manual.
2014-10-27 13:53:46 +01:00
John Darrington eeb3703db5 gnu: Add miscfiles
* gnu/packages/miscfiles.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-10-27 11:17:21 +01:00
Mark H Weaver 4e2f98c539 gnu: Add prefix to license imports in (gnu packages feh).
* gnu/packages/feh.scm: Import (guix licenses) with #:prefix license: to avoid
  importing 'imlib2' from both (gnu packages image) and (guix licenses).
2014-10-27 03:35:02 -04:00
Mark H Weaver 6becfdff76 gnu: ruby: Miscellaneous improvements to package definition.
* gnu/packages/ruby.scm (ruby): Compute major+minor version string for the
  source URI.  Switch to the .bz2 tarball and update the hash accordingly.
  Remove 'autoconf' from the inputs.  Change 'native-search-paths' to the
  directory that is actually created by the build.  Remove the package name
  from the synopsis.
  (ruby-1.8): Compute major+minor version string for the source URI, and avoid
  the use of 'name' in the URI computation.  Remove 'name' field, since it is
  inherited and no longer needed.
2014-10-27 03:20:36 -04:00
Pjotr Prins 218ee89b0c gnu: Add ruby 1.8.7.
* gnu/packages/ruby.scm (ruby-1.8): New variable.
2014-10-27 03:20:32 -04:00
Alex Kost b94ae0b89e gnu: gnutls: Fix path to a guile site directory.
Suggested by Ludovic Courtès.

* gnu/packages/gnutls.scm (gnutls): Add '--with-guile-site-dir' configure
  flag.
2014-10-27 09:56:58 +03:00
Mark H Weaver fa35dafe9a gnu: parallel: Update to 20141022.
* gnu/packages/parallel.scm (parallel): Update to 20141022.
2014-10-26 23:05:29 -04:00
Mark H Weaver bed9307062 gnu: tor: Update to 0.2.5.10.
* gnu/packages/tor.scm (tor): Update to 0.2.5.10.
2014-10-26 16:49:55 -04:00
Alex Kost 8835aed4ad licenses: Add 'imlib2'.
* guix/licenses.scm (imlib2): New variable.
* gnu/packages/image.scm (imlib2): Use it.
2014-10-26 22:22:43 +03:00
Eric Bavier 35b9e4232c gnu: Some cleanup based on lint checkers.
* gnu/packages/admin.scm, gnu/packages/aidc.scm, gnu/packages/algebra.scm,
  gnu/packages/apr.scm, gnu/packages/avahi.scm, gnu/packages/backup.scm,
  gnu/packages/base.scm, gnu/packages/calcurse.scm, gnu/packages/cdrom.scm,
  gnu/packages/check.scm, gnu/packages/compression.scm, gnu/packages/cook.scm,
  gnu/packages/crypto.scm, gnu/packages/cryptsetup.scm, gnu/packages/curl.scm,
  gnu/packages/cyrus-sasl.scm, gnu/packages/databases.scm,
  gnu/packages/doxygen.scm, gnu/packages/dwm.scm, gnu/packages/elf.scm,
  gnu/packages/emacs.scm, gnu/packages/feh.scm, gnu/packages/file.scm,
  gnu/packages/fish.scm, gnu/packages/flex.scm, gnu/packages/fltk.scm,
  gnu/packages/fontutils.scm, gnu/packages/games.scm, gnu/packages/gcal.scm,
  gnu/packages/gcc.scm, gnu/packages/geeqie.scm, gnu/packages/ghostscript.scm,
  gnu/packages/gimp.scm, gnu/packages/gl.scm, gnu/packages/glib.scm,
  gnu/packages/gnome.scm, gnu/packages/gnunet.scm, gnu/packages/gnupg.scm,
  gnu/packages/gperf.scm, gnu/packages/grub.scm, gnu/packages/gsasl.scm,
  gnu/packages/gtk.scm, gnu/packages/guile-wm.scm, gnu/packages/guile.scm,
  gnu/packages/hurd.scm, gnu/packages/icu4c.scm, gnu/packages/image.scm,
  gnu/packages/imagemagick.scm, gnu/packages/irssi.scm, gnu/packages/kde.scm,
  gnu/packages/libdaemon.scm, gnu/packages/libevent.scm,
  gnu/packages/libidn.scm, gnu/packages/libusb.scm, gnu/packages/linux.scm,
  gnu/packages/lout.scm, gnu/packages/lsh.scm, gnu/packages/lsof.scm,
  gnu/packages/lua.scm, gnu/packages/maths.scm, gnu/packages/mcrypt.scm,
  gnu/packages/mp3.scm, gnu/packages/netpbm.scm, gnu/packages/noweb.scm,
  gnu/packages/ocaml.scm, gnu/packages/openssl.scm, gnu/packages/pcre.scm,
  gnu/packages/pdf.scm, gnu/packages/pkg-config.scm,
  gnu/packages/pretty-print.scm, gnu/packages/python.scm, gnu/packages/qt.scm,
  gnu/packages/rsync.scm, gnu/packages/scheme.scm, gnu/packages/scrot.scm,
  gnu/packages/sdl.scm, gnu/packages/skribilo.scm, gnu/packages/ssh.scm,
  gnu/packages/stalonetray.scm, gnu/packages/tcl.scm, gnu/packages/tcsh.scm,
  gnu/packages/telephony.scm, gnu/packages/texlive.scm, gnu/packages/tor.scm,
  gnu/packages/valgrind.scm, gnu/packages/version-control.scm,
  gnu/packages/vim.scm, gnu/packages/vpn.scm, gnu/packages/w3m.scm,
  gnu/packages/web.scm, gnu/packages/wordnet.scm, gnu/packages/xiph.scm,
  gnu/packages/xml.scm, gnu/packages/xorg.scm, gnu/packages/zile.scm,
  gnu/packages/zip.scm, gnu/packages/zsh.scm [synopsis, description]: Adjust
  according to lint checkers.
* gnu/packages/fltk.scm (fltk)[source]: Wrap long line in uri.
* /gnu/packages/xiph.scm (libogg, libtheora, vorbis-tools)[source]: Same.
2014-10-26 13:03:53 -05:00
Eric Bavier 3c42965b1e guix: lint: Make exception for package name starting description.
* guix/scripts/lint.scm (check-description-style): Exception for
  upper-case rule if the description starts with the package name.
* tests/lint.scm: Test it.
2014-10-26 13:03:53 -05:00
Eric Bavier 903581f971 guix: lint: Allow digits at start of synopsis or description.
* guix/scripts/lint.scm (start-with-capital-letter?): Rename too...
  (properly-starts-sentence?): Rewrite with regex and add digits.
  (check-description-style, check-synopsis-style): Use it.
* tests/lint.scm: Add tests.
2014-10-26 13:03:53 -05:00
Eric Bavier 334c43e354 guix: lint: Check for empty synopses and descriptions.
* guix/scripts/lint.scm (check-description-style,
  check-synopsis-style): New emptiness checks.
* tests/lint.scm: Test them.
2014-10-26 13:03:53 -05:00
Eric Bavier 574e847b8e guix: lint: Check for proper end-of-sentence space.
* guix/scripts/lint.scm (start-with-capital-letter?): Handle empty
  strings.
  (check-description-style): New check for end-of-sentence space.
* tests/lint.scm: Test it.
2014-10-26 13:03:53 -05:00
Eric Bavier c04b82ffce guix: lint: Use if/when consistently.
* guix/scripts/lint.scm (check-synopsis-style): Replace single-branch
  uses of if with when.
  (check-patches): Same
2014-10-26 13:03:53 -05:00
Eric Bavier 86a4126348 guix: lint: Use string-suffix? and string-prefix? where appropriate.
* guix/scripts/lint.scm (check-synopsis): Use string-suffix? and
  string-prefix? in place of string-take and string=?.
2014-10-26 13:03:53 -05:00
Federico Beffa ec322be248 gnu: Add ATLAS.
* gnu/packages/maths.scm (atlas): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-10-26 15:16:06 +01:00
Joshua Grant 822efdff8a Update name and email address for Joshua Grant. 2014-10-26 14:48:57 +01:00
John Darrington 3435266298 gnu: Add cppunit
* gnu/packages/check.scm (cppunit): New variable.
2014-10-26 08:50:58 +01:00
Mark H Weaver 1d1efa6c6a gnu: pulseaudio: Fix CVE-2014-3970 and intermittent test failures.
* gnu/packages/patches/pulseaudio-CVE-2014-397.patch: New file.
* gnu/packages/patches/pulseaudio-fix-mult-test.patch: New file.
* gnu-system.am (dist_patch_DATA): Add them.
* gnu/packages/pulseaudio.scm (pulseaudio): Add patches.
2014-10-26 02:55:38 -04:00
Mark H Weaver 16755848fc gnu: acl: Install library and disable failing test suite.
Previously, this package was completely broken.  It installed only
binaries that failed to run for lack of the shared library.

* gnu/packages/acl.scm (acl): Disable tests.  Remove customized
  'check' phase that ran tests and ignored errors.  Remove 'perl' as
  input, needed only for tests.  Replace 'install' phase with one that
  includes 'install-lib' target.
2014-10-26 02:55:38 -04:00
Mark H Weaver e102df2812 gnu: openssl: Update to 1.0.1j.
* gnu/packages/openssl.scm (openssl): Update to 1.0.1j.
2014-10-26 02:55:38 -04:00
Mark H Weaver c57a6e4cd5 gnu: gettext: Update to 0.19.3.
* gnu/packages/gettext.scm (gettext): Update to 0.19.3.
2014-10-26 02:55:37 -04:00
Mark H Weaver 459cad2311 gnu: bash: Update to 4.3.30.
* gnu/packages/bash.scm (%patch-series-4.3): Add patches 28-30.
  (bash)[source]: Remove parser-oob patch.  It is superceded by
  upstream patch bash43-028.
2014-10-26 02:55:37 -04:00
Mark H Weaver 6178ae9cb7 gnu: make: Update to 4.1.
* gnu/packages/base.scm (make): Update to 4.1.  Adapt 'default_shell'
  substitution to new code.
* gnu/packages/commencement.scm (gnu-make-boot0): Remove code that
  manually removed guile.c from list of things to build.
2014-10-26 02:55:37 -04:00
Mark H Weaver f9e687b51a gnu: ffmpeg: Add version 2.2.9 and use it for vlc.
* gnu/packages/video.scm (ffmpeg-2.2): New variable.
  (vlc): Use ffmpeg-2.2.
2014-10-25 20:06:43 -04:00
Andreas Enge 569ac04681 gnu: python2-pyicu: Update to 1.8.
* gnu/packages/python.scm (python2-pyicu): Update to 1.8.
2014-10-24 21:36:41 +02:00
Mark H Weaver 23466647a8 gnu: vlc: Update to 2.1.5.
* gnu/packages/video.scm (vlc): Update to 2.1.5.
2014-10-23 20:16:46 -04:00
Mark H Weaver 47bc885c2c gnu: icecat: Update to 31.2.0.
* gnu/packages/gnuzilla.scm (icecat): Update to 31.2.0.  Download
  source from GNU mirrors.
2014-10-23 18:47:39 -04:00
Cyril Roelandt 68b18aae6a guix import pypi: Fix a typo in a docstring.
* guix/import/pypi.scm (snake-case): Fix documentation.
2014-10-22 02:47:29 +02:00
Cyril Roelandt a5ffa812b8 guix import pypi: do not add "python-" to a package name if it's already there.
* guix/import/pypi.scm (make-pypi-sexp): test whether the package name starts
  with "python-" before modifying it.
2014-10-22 02:47:29 +02:00
Cyril Roelandt cf690129b4 guix import pypi: add the Apache License 2.0
* guix/import/pypi.scm (string->license): add ASL2.0.
2014-10-22 02:47:29 +02:00
Mark H Weaver 388fd01b02 gnu: emacs: Update to 24.4.
* gnu/packages/patches/emacs-configure-sh.patch: Remove.
* gnu-system.am (dist_patch_DATA): Remove it.
* gnu/packages/emacs.scm (emacs): Update to 24.4.  Add 'acl' as input.
  Remove --with-crt-dir configure option.
  (emacs-no-x-toolkit): Add 'inotify-tools' as input.  Adjust to cope
  with the lack of configure-flags in the main 'emacs' package.
2014-10-21 00:07:31 -04:00
Eric Bavier 05b4226ad9 refresh: Add end-of-line to error message.
* guix/scripts/refresh.scm (%options)[select]: Add end-of-line to
  error message.
2014-10-20 17:03:02 -05:00
Eric Bavier 1454a2ba88 gnu: ccache: Upgrade to 3.1.10.
* gnu/packages/ccache.scm (ccache): Upgrade to 3.1.10.
  [source]: Remove patches.
* gnu/packages/patches/ccache-stdc-predef-test.patch: Delete patch.
* gnu-system.am (dist_patch_DATA): Remove it.
2014-10-20 16:49:32 -05:00
Jason Self 7947a05439 gnu: ffmpeg: Update to 2.4.2.
* gnu/packages/video.scm (ffmpeg): Update to version 2.4.2.
2014-10-20 12:32:42 -07:00
John Darrington 45c151d9b4 gnu: Add sane-backends
* gnu/packages/scanner.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-10-20 18:13:36 +02:00
Andreas Enge 9a9f1003ae gnu: sqlite: Add readline as input.
* gnu/packages/databases.scm (sqlite): Add input readline.
2014-10-20 16:10:09 +02:00
Ian Denhardt 29a7c98a42 gnu: Add 'version-prefix' and 'version-major+minor'; use them.
The procedure version-prefix truncates a version string to a certain
number of components. version-major+minor is a special case of this,
which extracts the "major.minor" part of the string. Previously this
was handled by an expression common to several packages.

* guix/utils.scm (version-prefix, version-major+minor): New procedures
* gnu/packages/backup.scm (duplicity): Use version-major+minor.
* gnu/packages/cmake.scm (cmake): Likewise.
* gnu/packages/gnome.scm (libbonobo, libbonoboui): Likewise.
* gnu/packages/gnutls.scm (gnutls): Likewise.
* gnu/packages/mail.scm (gmime): Likewise.
* gnu/packages/mpd.scm (mpd): Likewise.
* gnu/packages/mpi.scm (openmpi): Likewise.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-10-20 15:32:54 +02:00
Ludovic Courtès 38bf090e7c download: Add "Accept: */*" to the headers.
Fixes downloads from https://alioth.debian.org.
Reported by John Darrington <jmd@gnu.org>.

* guix/build/download.scm (http-fetch)[headers]: Add 'Accept'.
2014-10-19 12:07:53 +02:00
John Darrington d99e12d247 gnu: Add ntp
* gnu/packages/ntp.scm: New file.
* gnu-system.am (gnu/packages/ntp.scm): Add it.
2014-10-19 10:03:34 +02:00
Alex Kost 23459fa59b emacs: Improve interface for working with multiple profiles.
Suggested by David Thompson, Ludovic Courtès and Mathieu Lirzin.

* emacs/guix-base.el (guix-profile-prompt): New procedure.
  (guix-set-current-profile): Use it.
  (guix-buffer-name-simple, guix-buffer-name-default, guix-buffer-name): New
  procedures.
  (guix-buffer-name-function, guix-profile): New variables.
  (guix-set-vars, guix-get-entries, guix-get-show-entries, guix-set-buffer,
  guix-history-call, guix-process-package-actions,
  guix-continue-package-operation-p, guix-delete-generations,
  guix-switch-to-generation): Add 'profile' argument.
* emacs/guix.el (guix-get-show-packages, guix-get-show-generations,
  guix-search-by-name, guix-search-by-regexp, guix-installed-packages,
  guix-obsolete-packages, guix-all-available-packages,
  guix-newest-available-packages, guix-generations, guix-generations-by-time):
  Likewise.
  (guix-last-generations): New command.
* emacs/guix-info.el: Adjust for using 'profile' argument where needed.
* emacs/guix-list.el: Likewise.
* doc/emacs.texi (Emacs Commands): Document 'guix-last-generations' and using
  "C-u" for commands.
  (Emacs Buffer Names): Document 'guix-buffer-name-function'.
2014-10-18 10:24:13 +04:00
Ludovic Courtès 7c3c0374de packages: Add 'package-transitive-supported-systems'.
* guix/packages.scm (package-transitive-supported-systems): New procedure.
* tests/packages.scm ("package-transitive-supported-systems"): New test.
* build-aux/hydra/gnu-system.scm (package->job): Use it.
2014-10-17 23:23:21 +02:00
Ludovic Courtès 67a86d3b8d gnu: valgrind: Don't build on mipsel64-linux.
* gnu/packages/valgrind.scm (valgrind): Add 'supported-systems'.
2014-10-17 23:23:20 +02:00
Ludovic Courtès 1d830bc0c2 gnu: sdl-gfx: Build only on Intel machines.
* gnu/packages/sdl.scm (sdl-gfx): Add 'supported-systems' field.
2014-10-17 23:23:20 +02:00
Ludovic Courtès e5997888fa derivations: 'graft-derivation' correctly handles multiple-output sources.
* guix/derivations.scm (graft-derivation): Add DRV as input for each one
  of OUTPUT-NAMES.
2014-10-17 23:23:20 +02:00
Ludovic Courtès 8dcec91426 packages: Improve the package-to-derivation cache.
* guix/packages.scm (cache): Preserve the former values associated with
  PACKAGE.
  (cached): Bind SYSTEM in 'let', to prevent double evaluation.
2014-10-17 23:23:20 +02:00
Ludovic Courtès 3d7d17b318 derivations: Add #:system parameter to 'graft-derivation'.
* guix/derivations.scm (graft-derivation): Add #:system parameter.
2014-10-17 23:23:20 +02:00
Ludovic Courtès 969df97487 derivations: Introduce 'graft' record type.
* guix/derivations.scm (<graft>): New record type.
  (graft-derivation): Rename 'replacements' to 'grafts', and expect it
  to be a list of <graft> records.  Adjust accordingly.
* tests/derivations.scm ("graft-derivation"): Use 'graft' instead of
  pairs in argument to 'graft-derivation'.
2014-10-17 23:23:20 +02:00
Ludovic Courtès e25408849a records: Improve the docstring of 'define-record-type*'.
* guix/records.scm (define-record-type*): Agument the docstring, give
  examples.
2014-10-17 23:23:20 +02:00
Alex Kost bd53d327e1 doc: Replace "emacs" with "Emacs" in node names.
Suggested by Ludovic Courtès.

* doc/emacs.texi: Use "Emacs" in node names.
2014-10-17 21:29:09 +04:00
Alex Kost 189cea2782 emacs: Add 'guix-generations-by-time' command.
* emacs/guix-main.scm (find-generations): Add finding generations by time.
* emacs/guix-utils.el (guix-read-date): New procedure.
* emacs/guix-base.el (guix-messages): Add new messages.
* emacs/guix.el (guix-generations-by-time): New command.
* doc/emacs.texi (emacs Commands): Document it.
2014-10-17 10:56:27 +04:00
Ludovic Courtès 347e17b474 download: Allow use of substitutes.
See <https://bugs.gnu.org/18747> for the original report.

* guix/download.scm (url-fetch): Comment out #:local-build? argument.
* guix/git-download.scm (git-fetch): Likewise.
* guix/svn-download.scm (svn-fetch): Likewise.
2014-10-16 23:40:10 +02:00
Jason Self fd2b6df2a8 gnu: linux-libre: Update to 3.17.1.
* gnu/packages/linux.scm (linux-libre): Update to version 3.17.1.
2014-10-16 05:45:44 -07:00
Alex Kost 49d758d212 emacs: Support auto-updating after performing REPL operation.
* emacs/guix-backend.el (guix-operation-buffer): New variable.
  (guix-eval-in-repl): Use it.  Add optional 'operation-buffer' argument.
* emacs/guix-base.el (guix-update-after-operation): New variable.
  (guix-switch-to-buffer, guix-list-or-info-buffer-p, guix-buffers,
  guix-update-buffers-maybe): New procedures.
  (guix-set-buffer): Use 'guix-switch-to-buffer'.  Add optional 'no-display'
  argument.
  (guix-process-package-actions, guix-delete-generations,
  guix-switch-to-generation): Add optional 'operation-buffer' argument.
* emacs/guix-info.el (guix-package-info-insert-action-button,
  guix-generation-info-insert-number, guix-generation-info-insert-current):
  Adjust for using operation buffer.
* emacs/guix-list.el (guix-list-execute-package-actions,
  guix-generation-list-switch, guix-generation-list-execute): Likewise.
2014-10-16 10:09:53 +04:00
Alex Kost 063b60be7b emacs: Add hooks for REPL operations.
* emacs/guix-backend.el (guix-before-repl-operation-hook,
  guix-after-repl-operation-hook, guix-repl-operation-p): New variables.
  (guix-repl-operation-success-message, guix-repl-output-filter): New
  procedures.
  (guix-start-repl): Adjust for using 'guix-repl-output-filter'.
  (guix-eval-in-repl): Honor 'guix-before-repl-operation-hook'.
2014-10-16 10:09:53 +04:00
Cyril Roelandt dd7c013d4b guix lint: add the --checkers option.
* guix/scripts/lint.scm: add the "--checkers" option.
* doc/guix.texi (Invoking guix lint): Document it.
* tests/guix-lint.sh: New file
* Makefile.am (SCM_TESTS): Add it.
2014-10-16 00:50:27 +02:00
Ludovic Courtès 51861587c6 gnu: gnutls: Patch bug in 'set-session-server-name!'.
* gnu/packages/patches/gnutls-server-name-fix.patch: New file.
* gnu/packages/gnutls.scm (gnutls)[source]: Use it.
* gnu-system.am (dist_patch_DATA): Add it.
2014-10-14 23:09:07 +02:00
John Darrington 11c38cbe0d gnu: Add xboing
* gnu/packages/games.scm (xboing): New variable.
2014-10-13 23:39:23 +02:00
Ludovic Courtès 998fb8fa1d utils: Micro-optimize 'bytevector->base16-string'.
This reduces run time of (package-derivation s emacs) by ~1.5%.

* guix/utils.scm (bytevector->base16-string): Traverse BV from the end
  so as to use 'string-concatenate' instead of
  'string-concatenate-reverse'.
2014-10-13 23:34:09 +02:00
Ludovic Courtès 8601d0ddcf derivations: Micro-optimize 'imported-modules'.
This reduces run time of (package-derivation s emacs) by ~5%.

* guix/derivations.scm (search-path*): New procedure.
  (imported-modules): Use it instead of 'search-path'.
2014-10-13 23:34:09 +02:00
Ludovic Courtès 1391dcb054 derivations: Memoize 'derivation-path->base16-hash'.
This reduces run time of (package-derivation s emacs) by ~10%.

* guix/derivations.scm (derivation-path->base16-hash): New procedure.
  (derivation-hash): Use it.
2014-10-13 23:34:09 +02:00
Ludovic Courtès 3de9a5936c gnu: gnutls: Update to 3.2.19.
* gnu/packages/gnutls.scm (gnutls): Update to 3.2.19.
2014-10-13 23:34:09 +02:00
Eric Bavier 6aad2d625f gnu: xfig, transfig: Patch compiler flags for mips and i686.
* gnu/packages/xfig.scm (xfig, transfig)[arguments]: Have Makefile
  substitution match for more targets.
2014-10-13 10:11:43 -05:00
Alex Kost af874238d4 emacs: Add support for switching generations.
* emacs/guix-base.el (guix-switch-to-generation): New procedure.
* emacs/guix-info.el (guix-generation-info-insert-current): Insert button for
  switching to generation.
* emacs/guix-list.el (guix-generation-list-switch): New procedure.
* doc/emacs.texi (emacs List buffer, emacs Info buffer): Document switching
  generations.
2014-10-13 14:59:35 +04:00
Alex Kost c2379b3c1f emacs: Add 'current' generation parameter.
* emacs/guix-main.scm (generation-param-alist): Add 'current' parameter.
* emacs/guix-base.el (guix-param-titles): Add title for 'current' parameter.
* emacs/guix-info.el: Display 'current' parameter.
  (guix-generation-info-current, guix-generation-info-not-current): New faces.
  (guix-generation-info-insert-current): New procedure.
* emacs/guix-list.el: Display 'current' column.
  (guix-generation-list-get-current): New procedure.
2014-10-13 14:59:35 +04:00
Mark H Weaver 0546393164 gnu: nss-mdns: Add alternate source URLs.
Based on 8c43746 by Ludovic Courtès <ludo@gnu.org>.
Fixes <http://bugs.gnu.org/18704>.

* gnu/packages/avahi.scm (nss-mdns)[source]: Add Debian and Fedora mirrors.
2014-10-13 03:03:42 -04:00
Ludovic Courtès 7d09fb3464 gnu: icu4c: Reinstate RUNPATH on shared libraries.
Fixes <http://bugs.gnu.org/18695>.
Reported by Mark H Weaver <mhw@netris.org>.

* gnu/packages/icu4c.scm (icu4c)[arguments]: In 'add-lib-to-runpath',
  reinstate RUNPATH on files under lib/.  Fixes a regression introduced
  in commit 7239828.
2014-10-13 00:34:44 +02:00
Ludovic Courtès 817efe8bb1 gnu: guile-ssh: Update to 0.7.1.
* gnu/packages/ssh.scm (guile-ssh)[source]: Update to 0.7.1.
  [arguments]: Remove ssh/Makefile.am fiddling from 'autoreconf' phase.
  Remove #:parallel-build? argument.
  [inputs]: Add LIBGCRYPT-1.5.
2014-10-13 00:32:14 +02:00
Ludovic Courtès e3703818db gnu: libssh: Add libgcrypt bug-fix patch.
Suggested by Artyom Poptsov <poptsov.artyom@gmail.com>.

* gnu/packages/ssh.scm (libssh)[source]: Add 'patches'.
2014-10-13 00:30:49 +02:00
Ludovic Courtès 3ad9a0b1e7 gnu: guix: Update development snapshot.
* gnu/packages/package-management.scm (guix-0.7): Make public.
  (guix-devel)[source]: Update to commit 14e84b2.
  [propagated-inputs]: New field.
  (guix): Alias for GUIX-DEVEL.
2014-10-13 00:29:09 +02:00
Ludovic Courtès 78a90c7f47 derivations: Add #:guile parameter to 'graft-derivation'.
* guix/derivations.scm (graft-derivation): Add #:guile parameter; pass
  it to 'build-expression->derivation'.
2014-10-12 22:32:38 +02:00
Ludovic Courtès 572bcdf0bc list-packages: Handle 'origin' patches.
* build-aux/list-packages.scm (package->sxml)[patches]: Handle the case
  where PATCH is an 'origin'.
2014-10-12 15:33:07 +02:00
John Darrington 14e84b2d97 gnu: Add unixodbc
* gnu/packages/databases.scm (unixodbc): New variable.
2014-10-12 14:19:26 +02:00
Mark H Weaver fac8b30bf8 gnu: magit: Update to 1.2.1.
* gnu/packages/emacs.scm (magit): Update to 1.2.1.
2014-10-12 03:32:36 -04:00
Alex Kost abc5b82971 emacs: Allow list functions to deal with nil values.
* emacs/guix-list.el (guix-list-get-tabulated-entry): Call functions returning
  column value even for nil values.
  (guix-list-get-one-line): Adjust for accepting nil argument.
2014-10-12 08:47:19 +04:00
Alex Kost b3bb82f154 guix package: Add '--switch-generation' option.
* guix/scripts/package.scm (switch-to-generation): New procedure.
  (switch-to-previous-generation): Use it.
  (guix-package): Adjust for '--switch-generation' option.
* tests/guix-package.sh: Test it.
* doc/guix.texi (Invoking guix package): Document it.
2014-10-12 08:45:38 +04:00
Alex Kost 3ccde08752 profiles: Add 'relative-generation'.
* guix/profiles.scm: (relative-generation): New procedure.
  (previous-generation-number): Use it.
2014-10-12 08:45:38 +04:00
Alex Kost c0c018f180 profiles: Add condition types for profiles and generations.
Suggested by Ludovic Courtès.

* guix/profiles.scm (&profile-error, &profile-not-found-error,
  &missing-generation-error): New condition types.
* guix/ui.scm (call-with-error-handling): Handle new types.
* guix/scripts/package.scm (roll-back, guix-package): Raise
  '&profile-not-found-error' where needed.
2014-10-12 08:45:37 +04:00
Mark H Weaver 1b7d5242c3 gnu: libarchive: Apply fixes including for CVE-2013-0211.
* gnu/packages/patches/libarchive-CVE-2013-0211.patch,
  gnu/packages/patches/libarchive-fix-lzo-test-case.patch,
  gnu/packages/patches/libarchive-mtree-filename-length-fix.patch: New files.
* gnu-system.am (dist_patch_DATA): Add them.
* gnu/packages/backup.scm (libarchive)[source]: Add patches.
2014-10-11 23:21:37 -04:00
Eric Bavier 36ae58488b gnu: Add transfig.
* gnu/packages/xfig.scm (transfig): New variable.
2014-10-11 21:11:23 -05:00
Eric Bavier b3f3fb825e gnu: Add xfig.
* gnu/packages/xfig.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-10-11 21:11:23 -05:00
Eric Bavier a0e9b72e44 gnu: libjpeg: Upgrade to version 9a.
* gnu/packages/image.scm (libjpeg): Upgrade to version 9a.
2014-10-11 21:11:23 -05:00
Eric Bavier 50d74f3964 gnu: Add imake.
* gnu/packages/xorg.scm (imake): New variable.
2014-10-11 21:11:23 -05:00
Ludovic Courtès 2793c0fb26 syscalls: Accept ENOENT in the 'swapoff' test.
Fixes <http://bugs.gnu.org/18690>.
Reported by Philip Woods <elzairthesorcerer@gmail.com>.

* tests/syscalls.scm ("swapoff, EINVAL/EPERM"): Rename to...
  ("swapoff, ENOENT/EINVAL/EPERM"): ... this.  Add ENOENT to the list of
  possible return values.
2014-10-12 00:14:09 +02:00
Ludovic Courtès d53e8ba6b5 Augment '.dir-locals.el' with bug-reference-mode settings. 2014-10-12 00:14:09 +02:00
John Darrington fddbf35bf5 gnu: Add perl-zip.
* gnu/packages/zip.scm (perl-zip): New variable.
2014-10-11 17:00:15 +02:00
Mark H Weaver d8b85b7d42 gnu: openssh: Update to 6.7p1.
* gnu/packages/ssh.scm (openssh): Update to 6.7p1.
2014-10-11 02:57:39 -04:00
Mark H Weaver 58d08c369b Add copyright line to gnuzilla.scm.
* gnu/packages/gnuzilla.scm: Add copyright line for Mark H Weaver, which
  should have been added in 74c7af9 (gnu: icecat: Update to 31.1.1).
2014-10-11 02:57:35 -04:00
David Thompson 372c4bbcbb scripts: Add 'environment' command.
* guix/scripts/environment.scm: New file.
* Makefile.am (MODULES): Add it.
* doc/guix.texi ("Invoking guix environment"): New node.
2014-10-10 18:14:40 -04:00
Ludovic Courtès e25234e34b build: Make sure tests/guix-package.sh doesn't leave anything behind it.
Fixes a regression introduced in commit 300868ba.

* tests/guix-package.sh: Move 'module_dir' definition to the top, and
  "rm -rf" it from the top-most 'trap'.  Remove second use of 'trap'.
2014-10-10 14:08:59 +02:00
Ludovic Courtès 7313a52e7a doc: Add 'operating-system' reference.
* doc/guix.texi (Using the Configuration System): Add xref to
  "operating-system Reference".
  (operating-system Reference): New section.
  (Networking Services): Add xref to it.
2014-10-10 14:08:59 +02:00
Ludovic Courtès c678a4eef6 doc: Use @deftp for 'build-machine'.
* doc/guix.texi (Daemon Offload Setup): Use @deftp for 'build-machine'.
2014-10-10 14:08:59 +02:00
John Darrington 7239828d29 gnu: icu4c: Correct error in the binaries' runpath
* gnu/packages/icu4c.scm (icu4c): Apply the RUNPATH to the binaries,
  instead of the libs
2014-10-10 05:35:07 +02:00
Alex Kost 5d7a8584f5 ui: Move 'show-manifest-transaction' from (guix profiles).
* guix/profiles.scm: Do not use (guix ui) module.
  (right-arrow, manifest-show-transaction): Move and rename to...
* guix/ui.scm (right-arrow, show-manifest-transaction): ... here.
* tests/profiles.scm ("manifest-show-transaction"): Move to...
* tests/ui.scm ("show-manifest-transaction"): ... here.
  (guile-1.8.8, guile-2.0.9): New variables.
* emacs/guix-main.scm (process-package-actions): Rename
  'manifest-show-transaction' to 'show-manifest-transaction'.
* guix/scripts/package.scm (guix-package): Likewise.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-10-10 00:06:35 +02:00
Ludovic Courtès 12703d0854 ui: Make sure we use the right domain for &message translation.
* guix/ui.scm (call-with-error-handling): Add %GETTEXT-DOMAIN as a
  second argument to 'gettext'.
2014-10-09 23:51:19 +02:00
Ludovic Courtès 0363991a25 Break module cycle involving (guix store) and (guix ui).
Before, there was a cycle along the lines of:

  (guix store) -> (guix nar) -> (guix ui) -> (guix store)

This caused problems, as discussed at:

  http://lists.gnu.org/archive/html/guix-devel/2014-10/msg00109.html

This patch removes cycles in the (guix ...) modules.

* guix/nar.scm (&nar-error, &nar-read-error, dump, write-contents,
  read-contents, %archive-version-1, write-file, restore-file): Move to...
* guix/serialization.scm: ... here.
* guix/store.scm: Remove dependency on (guix nar).
* guix/scripts/hash.scm, guix/scripts/offload.scm,
  guix/scripts/substitute-binary.scm, tests/nar.scm, tests/store.scm,
  tests/substitute-binary.scm: Adjust accordingly.
2014-10-09 23:51:19 +02:00
Ludovic Courtès 4938b0eead substitute-binary: Ignore $GUIX_BINARY_SUBSTITUTE_URL.
* guix/scripts/substitute-binary.scm (%cache-url): Ignore the
  'GUIX_BINARY_SUBSTITUTE_URL' environment variable.
* test-env.in: Invoke 'guix-daemon' with '--substitute-urls'.
* tests/substitute-binary.scm: Set '%cache-url' to the value of
  'GUIX_BINARY_SUBSTITUTE_URL'.
2014-10-09 23:51:19 +02:00
Ludovic Courtès 9176607ec4 daemon: Add '--substitute-urls' option.
* nix/nix-daemon/guix-daemon.cc (GUIX_OPT_SUBSTITUTE_URLS): New macro.
  (GUIX_OPT_NO_BUILD_HOOK, GUIX_OPT_GC_KEEP_OUTPUTS,
  GUIX_OPT_GC_KEEP_DERIVATIONS): Renumber.
  (options): Add '--substitute-urls'.
  (parse_opt): Honor it.
  (main): Add 'settings.set' call for the default "substitute-urls"
  value.
* guix/scripts/substitute-binary.scm (daemon-options,
  find-daemon-option): New procedures.
  (%cache-url): Define based on the "substitute-urls" daemon option.
* doc/guix.texi (Invoking guix-daemon): Document '--substitute-urls'.
  (Substitutes): Mention it.
2014-10-09 23:51:19 +02:00
Mark H Weaver 74c7af9fb8 gnu: icecat: Update to 31.1.1.
* gnu/packages/gnuzilla.scm (icecat): Update to 31.1.1.  Add 'pango',
  'freetype', 'libxft' and 'pulseaudio' as inputs.  Set
  'out-of-source?' to #t.  Remove 'sanitise' phase.  Adapt customized
  'configure' phase to handle 'out-of-source?' build.  Add
  '--with-l10n-base' argument to configure.
2014-10-09 00:04:43 -04:00
Ludovic Courtès 405a9d4ec9 monads: Add 'mbegin'.
* guix/monads.scm (mbegin): New macro.
* tests/monads.scm ("mbegin"): New test.
* doc/guix.texi (The Store Monad): Document it.
2014-10-08 23:35:20 +02:00
Ludovic Courtès 2e1bafb034 packages: Gracefully print packages whose 'location' is #f.
* guix/packages.scm (<package> printer): Check whether LOC is #f.
* tests/packages.scm ("printer with location", "printer without
  location"): New tests.
2014-10-08 23:06:19 +02:00
Ludovic Courtès 9c814b828a Add Federico to 'AUTHORS'. 2014-10-08 22:12:06 +02:00
Federico Beffa 3afcf52be8 doc: Document 'glib-or-gtk-build-system'.
* doc/guix.texi (Build System): Document 'glib-or-gtk-build-system'.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2014-10-08 22:11:38 +02:00
Eric Bavier c824d34fae gnu: cmake: Use our curl, zlib, expat, bzip2, and libarchive.
* gnu/packages/cmake.scm (cmake)[arguments]: Move sh-patching to new
  'patch-bin-sh phase.  New 'set-paths phase.
  [inputs]: Add curl, zlib, expat, bzip2, and libarchive.
  [description]: Fix space after end-of-sentence.
2014-10-08 11:56:58 -05:00
Eric Bavier ae133b89cc gnu: slim: Fix typo in synopsis and wrap description.
* gnu/packages/slim.scm (slim)[synopsis]: Fix typo.
  [description]: Fix two-space-after-end-of-sentence.  Wrap to 80
  characters.
2014-10-08 09:39:17 -05:00
Eric Bavier 36160ebbfb gnu: conkeror: install conkeror-spawn-helper.
* gnu/packages/conkeror.scm (conkeror)[build-system]: Change to
  gnu-build-system.  Adjust arguments accordingly.
  [inputs]: Remove now-implicit bash.
  [native-inputs]: Remove now-implicit tar and gzip.
  [description]: Fix two-space-after-end-of-sentence.  Remove comment
  about separate conkeror-spawn-process-helper package.
2014-10-08 08:57:08 -05:00
Federico Beffa be3425e5a9 gnu: Add the 'glib-or-gtk' build system.
* guix/build-system/glib-or-gtk.scm, guix/build/glib-or-gtk-build-system.scm:
  New files.
* Makefile.am (MODULES): Add them.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-10-08 12:01:50 +02:00
Ludovic Courtès fb59e275dd derivations: Add 'graft-derivation'.
* guix/derivations.scm (graft-derivation): New procedure.
* guix/build/graft.scm: New file.
* Makefile.am (MODULES): Add it.
* tests/derivations.scm ("graft-derivation"): New test.
2014-10-08 12:01:49 +02:00
Cyril Roelandt 3c762a13bf guix lint: make sure synopses do not start with the package name.
* guix/scripts/lint.scm (check-start-with-package-name): New method.
* tests/lint.scm ("synopsis: start with package name"): New test.
2014-10-08 03:08:20 +02:00
Cyril Roelandt a00ffdaa17 guix lint: Make sure a synopsis cannot start with a lower-case article.
* guix/scripts/lint.scm (check-start-article): use "string-ci=?" instead of
  "string=?".
* tests/lint.scm ("synopsis: starts with 'a'",
  "synopsis: starts with 'an'"): New tests.
2014-10-08 03:08:19 +02:00
Cyril Roelandt 8202a51313 guix lint: check whether descriptions and synopses start with an upper-case letter.
* guix/scripts/lint.scm (check-description-style,
  check-synopsis-start-upper-case): New methods.
* tests/lint.scm ("description: does not start with an upper-case letter",
  "synopsis: does not start with an upper-case letter"): New tests.
2014-10-08 03:08:19 +02:00
Cyril Roelandt 5622953de1 guix lint: Make sure synopses are not too long.
* guix/scripts/lint.scm (check-synopsis-length): New procedure.
* tests/lint.scm ("synopsis: too long"): New test.
2014-10-08 03:08:19 +02:00
Cyril Roelandt 90d104ba82 guix lint: make sure check-patches retrieves patch names.
* guix/lint (check-patches): Test the output of origin-patches.
2014-10-08 03:08:19 +02:00
Eric Bavier 0c115d8c64 gnu: Add fontforge.
* gnu/packages/fontutils.scm (fontforge): New variable.
2014-10-07 16:37:13 -05:00
Eric Bavier f945bf06af gnu: Add libuninameslist.
* gnu/packages/fontutils.scm (libuninameslist): New variable.
2014-10-07 16:37:13 -05:00
Eric Bavier 5277dbb062 gnu: Add libspiro.
* gnu/packages/fontutils.scm (libspiro): New variable.
2014-10-07 16:37:12 -05:00
Eric Bavier ee69f85c7d gnu: Add potrace.
* gnu/packages/fontutils.scm (potrace): New variable.
2014-10-07 16:37:12 -05:00
Ludovic Courtès fa0c1d6104 services: Add '%facebook-host-aliases'.
* gnu/services/networking.scm (%facebook-host-aliases): New variable.
* doc/guix.texi (Networking Services): Document it.
2014-10-07 23:18:41 +02:00
Ludovic Courtès 568841d491 system: Export 'local-host-aliases'.
* gnu/system.scm (local-host-aliases): New procedure.
  (default-/etc/hosts): Use it.
2014-10-07 23:18:41 +02:00
John Darrington c28ba7aa60 gnu: boost: Add zlib to the inputs.
* gnu/packages/boost.scm (boost): Add zlib to inputs.
2014-10-07 11:51:00 +02:00
Ludovic Courtès eb564fc389 gnu: eudev: Really update to 1.10.
* gnu/packages/linux.scm (eudev)[version]: Fix typo.
  [source]: Add 'snippet'.
2014-10-07 10:31:45 +02:00
Mark H Weaver cb90e7e0eb gnu: mupdf: Update to 1.6.
* gnu/packages/pdf.scm (mupdf): Update to 1.6.
2014-10-06 23:41:28 -04:00
Mark H Weaver 235c4ec30a gnu: mupdf: Use a source URL where older versions remain available.
* gnu/packages/pdf.scm (mupdf)[source]: Download from the archive
  subdirectory, where both old and new versions are kept.
2014-10-06 23:41:24 -04:00
Jason Self 2de52589dd gnu: eudev: Update to 1.10.
* gnu/packages/linux.scm (eudev): Update to version 1.10.
2014-10-06 16:10:58 -07:00
John Darrington 80059f54d9 gnu: clucene: Enable the contrib-libs.
* gnu/packages/rdf.scm (clucene): Enable the contribs-lib directory.
2014-10-06 23:26:15 +02:00
John Darrington 475992f20d gnu: libxdamage: Move inputs to propagated-inputs
* gnu/packages/xorg.scm (libxdamage): Move all existing inputs
  to propagated-inputs.
2014-10-06 23:26:11 +02:00
Ludovic Courtès 177088a3f3 gnu: net-tools: Allow compilation with current libc and GCC.
* gnu/packages/patches/net-tools-bitrot.patch: New file.
* gnu/packages/linux.scm (net-tools): Use it.
* gnu-system.am (dist_patch_DATA): Add it.
2014-10-06 23:11:41 +02:00
Alex Kost 1f06b28899 emacs: Use 'with-store' in 'process-package-actions'.
* emacs/guix-main.scm (process-package-actions): Use 'with-store'.
2014-10-06 22:14:38 +04:00
Ludovic Courtès 75af27f764 gnu: mit-scheme: Restrict to non-MIPS systems.
* gnu/packages/scheme.scm (mit-scheme)[supported-systems]: New field.
2014-10-06 19:34:27 +02:00
Ludovic Courtès 4e097f8606 hydra: Honor 'package-supported-systems'.
* guix/packages.scm (%supported-systems): New variable.
  (<package>)[platforms]: Rename to...
  [supported-systems]: ... this.  Change default to %SUPPORTED-SYSTEMS.
* build-aux/hydra/gnu-system.scm (job-name, package->job): New
  procedures, formerly in 'hydra-jobs'.  Honor 'package-supported-systems'.
  (hydra-jobs): Use them.
2014-10-06 19:34:27 +02:00
Ludovic Courtès 288dca55a8 doc: Mention optional dependency on Guile-JSON.
* README (Requirements): Add Guile-JSON.
* doc/guix.texi (Requirements): Likewise.
2014-10-06 19:34:27 +02:00
Jason Self 108e0c6101 gnu: linux-libre: Update to 3.17.
* gnu/packages/linux.scm (linux-libre): Update to version 3.17.
2014-10-06 05:04:24 -07:00
Ian Denhardt b0d1f10b5e gnu: Add feh.
* gnu/packages/feh.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-10-06 09:57:13 +02:00
Ludovic Courtès 8c43746f35 gnu: libdaemon: Add alternate source URLs.
Fixes <http://bugs.gnu.org/18639>.
Reported by Mark H Weaver <mhw@netris.org>.

* gnu/packages/libdaemon.scm (libdaemon)[source]: Add Debian and Fedora
  mirrors.
2014-10-06 09:57:12 +02:00
Jason Self 04a6e43755 gnu: linux-libre: Update to 3.16.4.
* gnu/packages/linux.scm (libogg): Update to version 3.16.4.
2014-10-05 19:56:16 -07:00
Mark H Weaver f410c11076 gnu: xpdf: Update to 3.04.
* gnu/packages/patches/xpdf-constchar.patch: Remove.
* gnu-system.am (dist_patch_DATA): Remove it.
* gnu/packages/pdf.scm (xpdf): Update to 3.04.  Remove patch.
  Add libpng as an input.
2014-10-05 22:39:37 -04:00
Ludovic Courtès 553521d27c build-system/trivial: Preserve the cross-compilation target in bags.
* guix/build-system/trivial.scm (lower): Initialize the 'target' field.
2014-10-05 22:54:09 +02:00
Ludovic Courtès 708be46bfd gnu: dbus: Move 'pkg-config' to 'native-inputs'.
* gnu/packages/glib.scm (dbus): Move PKG-CONFIG to 'native-inputs'.
2014-10-05 22:24:33 +02:00
Ludovic Courtès 8fa9ff20a8 gnu: dbus: Create $out/etc/dbus-1/{system,session}.d to placate 'dbus-launch'.
* gnu/packages/glib.scm (dbus)[arguments]: Add 'post-install' phase.
2014-10-05 22:24:33 +02:00
Ludovic Courtès 22e47b640e gnu: dbus: Update to 1.8.8.
* gnu/packages/glib.scm (dbus): Update to 1.8.8.
2014-10-05 22:24:33 +02:00
Alex Kost cb6a5c71d8 emacs: Add support for deleting generations.
* doc/emacs.texi (emacs List buffer): Mention new key bindings.
* emacs/guix-base.el (guix-delete-generations): New procedure.
* emacs/guix-info.el (guix-generation-info-insert-number): Use it.
* emacs/guix-list.el (guix-generation-list-mark-delete,
  guix-generation-list-execute): New procedures.
* emacs/guix-main.scm (delete-generations*): New procedure.
2014-10-06 00:02:46 +04:00
Ludovic Courtès d3d337d2d8 build-system: Bags record their system and target.
* guix/build-system.scm (<bag>)[system, target]: New fields.
  (make-bag): Add #:system parameter and pass it to LOWER.
* gnu/packages/bootstrap.scm (make-raw-bag): Initialize 'system' field.
* guix/build-system/cmake.scm (lower): Likewise.
* guix/build-system/perl.scm (lower): Likewise.
* guix/build-system/python.scm (lower): Likewise.
* guix/build-system/ruby.scm (lower): Likewise.
* guix/build-system/trivial.scm (lower): Likewise.
* guix/build-system/gnu.scm (lower): Initialize 'system' and 'target'
  fields.
* guix/packages.scm (bag->derivation, bag->cross-derivation): New
  procedures.
  (package-derivation, package-cross-derivation): Use 'bag->derivation'.
* tests/packages.scm ("search paths"): Initialize 'system' and 'target'
  fields.
  ("package->bag", "package->bag, cross-compilation", "bag->derivation",
  "bag->derivation, cross-compilation"): New tests.
2014-10-05 21:58:42 +02:00
Ludovic Courtès b4469d8c12 gnu: cross-base: Use the right dynamic linker name.
* gnu/packages/cross-base.scm (cross-gcc-arguments): Parametrize
  %CURRENT-TARGET-SYSTEM.
* tests/monads.scm ("package-file + package->cross-derivation"): Replace
  "foo64-gnu" with "mips64el-linux-gnu".
2014-10-05 21:58:42 +02:00
Ludovic Courtès cdb4b4b3ed gnu: cross-base: Externalize cross-gcc arguments.
* gnu/packages/cross-base.scm (cross-gcc-arguments): New procedure.
  (cross-gcc): Use it.  [No functional change.]
2014-10-05 21:58:42 +02:00
Ludovic Courtès 0d5a559f0f build-system: Introduce "bags" as an intermediate representation.
* guix/build-system.scm (<build-system>)[build, cross-build]: Remove.
  [lower]: New field.
  (<bag>): New record type.
  (make-bag): New procedure.
* guix/packages.scm (bag-transitive-inputs, bag-transitive-build-inputs,
  bag-transitive-host-inputs, bag-transitive-target-inputs,
  package->bag): New procedures.
  (package-derivation): Use it; use the bag, apply its build procedure,
  etc.
  (package-cross-derivation): Likewise.
* gnu/packages/bootstrap.scm (raw-build, make-raw-bag): New procedure.
  (%bootstrap-guile): Use them.
* guix/build-system/trivial.scm (lower): New procedure.
  (trivial-build, trivial-cross-build): Remove 'source' parameter.  Pass
  INPUTS as is.
  (trivial-build-system): Adjust accordingly.
* guix/build-system/gnu.scm (%store, inputs-search-paths,
  standard-search-paths, expand-inputs, standard-inputs): Remove.
  (gnu-lower): New procedure.
  (gnu-build): Remove 'source' and #:implicit-inputs? parameters.
  Remove 'implicit-inputs' and 'implicit-search-paths' variables.  Get
  the source from INPUT-DRVS.
  (gnu-cross-build): Likewise.
  (standard-cross-packages): Remove call to 'standard-packages'.
  (standard-cross-inputs, standard-cross-search-paths): Remove.
  (gnu-build-system): Remove 'build' and 'cross-build'; add 'lower'.
* guix/build-system/cmake.scm (lower): New procedure.
  (cmake-build): Remove 'source' and #:cmake parameters.  Use INPUTS and
  SEARCH-PATHS as is.  Get the source from INPUTS.
* guix/build-system/perl.scm: Likewise.
* guix/build-system/python.scm: Likewise.
* guix/build-system/ruby.scm: Likewise.
* gnu/packages/cross-base.scm (cross-gcc): Change "cross-linux-headers"
  to "linux-headers".
  (cross-libc)[xlinux-headers]: Pass #:implicit-cross-inputs? #f.
  Likewise.  In 'propagated-inputs', change "cross-linux-headers" to
  "linux-headers".
* guix/git-download.scm (git-fetch): Use 'standard-packages' instead of
  'standard-inputs'.
* tests/builders.scm ("gnu-build-system"): Remove use of
  'build-system-builder'.
  ("gnu-build"): Remove 'source' and #:implicit-inputs? arguments to
  'gnu-build'.
* tests/packages.scm ("search paths"): Adjust to new build system API.
  ("package-cross-derivation, no cross builder"): Likewise.
* doc/guix.texi (Build Systems): Add paragraph on bags.
2014-10-05 21:58:42 +02:00
Ludovic Courtès 2348fd0f51 build-system: Remove irrelevant special case.
* guix/build-system/gnu.scm (gnu-build, gnu-cross-build): Remove comment
  about case where GUILE is a derivation path.
* guix/build-system/cmake.scm (cmake-build): Remove case where GUILE is
  a derivation path.
* guix/build-system/perl.scm (perl-build): Likewise.
* guix/build-system/python.scm (python-build): Likewise.
* guix/build-system/ruby.scm (ruby-build): Likewise.
* guix/build-system/trivial.scm (guile-for-build): Likewise.
2014-10-05 21:57:19 +02:00
Ludovic Courtès 5e1103821a utils: Add 'strip-keyword-arguments'.
* guix/utils.scm (strip-keyword-arguments): New procedure.
* tests/utils.scm ("strip-keyword-arguments"): New test.
2014-10-05 21:57:19 +02:00
Alex Kost b72a312c30 guix package: Export generation procedures.
* guix/scripts/package.scm: Export 'roll-back', 'delete-generation',
  'delete-generations'.
  (link-to-empty-profile, roll-back): Add 'store' argument.
  (delete-generations): New procedure.
  (guix-package): Adjust accordingly.
  [delete-generation]: Move to the top level.  Add 'store' and 'profile'
  arguments.
  [display-and-delete]: Move to 'delete-generation'.
2014-10-05 22:17:48 +04:00
Jason Self 881c3f0163 gnu: bazaar: Update to 2.6.0.
* gnu/packages/version-control.scm (bazaar): Update to version 2.6.0.
2014-10-04 16:21:51 -07:00
Andreas Enge 4d96439d08 gnu: git: Fix download location.
* gnu/packages/version-control.scm (git): Fix source uri by switching
    to kernel.org.
2014-10-05 00:12:02 +02:00
Ludovic Courtès ff212a5cdf gnu: git: Update to 2.1.2.
* gnu/packages/version-control.scm (git): Update to 2.1.2.
2014-10-04 23:28:41 +02:00
Ludovic Courtès 9849cfc12c build-system/cmake: Add #:build-type parameter, default to "RelWithDebInfo".
* guix/build-system/cmake.scm (cmake-build): Add #:build-type.  Pass it
  in BUILDER.
* guix/build/cmake-build-system.scm (configure): Add #:build-type
  parameter and honor it.
* doc/guix.texi (Build Systems): Document #:configure-flags and
  #:build-type for CMake.
2014-10-04 22:59:38 +02:00
John Darrington 3dcd78109c gnu: pspp: Upgrade to 0.8.4.
* gnu/packages/maths.scm (pspp): Upgrade to 0.8.4.
2014-10-03 19:52:50 +02:00
Ludovic Courtès 7998200258 gnu: windowmaker: Update to 0.95.6.
* gnu/packages/gnustep.scm (windowmaker): Update to 0.95.6.
2014-10-03 18:03:09 +02:00
Ludovic Courtès 4a44d7bbc6 ui: Recognize the same size units as Coreutils.
* guix/ui.scm (size->number): Add a bunch of large units.  Recognize
  one-letter unit names.  Change "KB" to "kB".
* tests/ui.scm ("size->number, 1T"): New test.
* doc/guix.texi (Invoking guix gc): Add cross-reference to "Block size"
  in the Coreutils manual.
  (Invoking guix system): Likewise.
2014-10-03 18:03:09 +02:00
Ludovic Courtès 882383a9aa download: Allow raw file names or file:// URLs.
* guix/download.scm (url-fetch): When URL is a string, if it's not a URI
  or if it's a URI with 'file' or #f scheme, use 'add-to-store'.
* tests/builders.scm ("url-fetch, file", "url-fetch, file URI"): New
  tests.
2014-10-03 18:03:09 +02:00
Alex Kost b497a85be8 emacs: Add support for modifying options during operation confirmation.
* emacs/guix-base.el (guix-operation-option-key): New face.
  (guix-operation-option-true-string, guix-operation-option-false-string,
  guix-operation-option-separator, guix-operation-options): New variables.
  (guix-operation-option-by-key, guix-operation-option-key,
  guix-operation-option-name, guix-operation-option-variable,
  guix-operation-option-value, guix-operation-option-string-value,
  guix-operation-prompt, guix-operation-set-mode-line): New procedures.
  (guix-continue-package-operation-p): Use 'guix-operation-prompt'.
2014-10-02 22:31:18 +04:00
Manolis Ragkousis 2a9a4fb8b7 gnu: Add dfu-programmer
* gnu/packages/flashing-tools.scm (dfu-programmer): New variable.
* gnu/packages/patches/dfu-programmer-fix-libusb.patch: New patch.
* gnu-system.am (dist_patch_DATA): Add it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-10-02 10:46:29 +02:00
Mark H Weaver 4b91ce2974 gnu: tor: Update to 0.2.4.24.
* gnu/packages/tor.scm (tor): Update to 0.2.4.24.
2014-10-02 02:27:32 -04:00
Eric Bavier 98caed035f gnu: autogen: Upgrade to 5.18.4.
* gnu/packages/autogen.scm (autogen): Upgrade to 5.18.4.
  [native-inputs]: New field.
2014-09-30 17:29:24 -05:00
Ludovic Courtès b62fe07f3d gnu: Add perf.
* gnu/packages/linux.scm (perf): New variable.
2014-09-30 15:56:47 +02:00
Manolis Ragkousis eff5f452b0 gnu: Move flashrom and avrdude to (gnu packages flashing-tools).
* gnu/packages/admin.scm (flashrom): Move this and...
* gnu/packages/avrdude.scm (avrdude): ... this to...
* gnu/packages/flashing-tools.scm: ... this. New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Adjust accordingly.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-09-30 13:38:01 +02:00
Ludovic Courtès 6d7328b2f1 pull: Add dependency on Guile-JSON.
Reported by Alex Sassmannshausen <alex.sassmannshausen@gmail.com>.

* guix/scripts/pull.scm (unpack): Add Guile-JSON to %load-path and
  %load-compiled-path.
2014-09-30 10:11:45 +02:00
Alex Kost 8505493266 build: Build pypi modules only if 'guile-json' is available.
* Makefile.am (MODULES): Wrap 'guix/import/pypi.scm' and
  'guix/scripts/import/pypi.scm' in 'if HAVE_GUILE_JSON'.
2014-09-30 09:41:59 +04:00
Alex Kost e596ab0f24 gnu: Move giflib to (gnu packages image).
* gnu/packages/giflib.scm: Remove.  Move the contents to (gnu packages image).
* gnu-system.am (GNU_SYSTEM_MODULES): Remove giflib file name.
* gnu/packages/emacs.scm: Remove giflib module name.
* gnu/packages/image.scm (giflib): New variable.
2014-09-30 08:50:35 +04:00
David Thompson 1b3e968512 import: Add PyPI importer.
* guix/snix.scm: Delete.
* guix/import/snix.scm: New file.
* guix/import/pypi.scm: New file.
* guix/import/utils.scm: New file.
* guix/scripts/import/nix.scm: New file.
* guix/scripts/import/pypi.scm: New file.
* tests/pypi.scm: New file.
* tests/snix.scm: Import (guix import snix) module.
* guix/scripts/import.scm (%default-options, %options): Delete.
  (%standard-import-options, importers): New variables.
  (show-help): List importers.
  (guix-import): Factor out Nix-specific logic.  Delegate to correct importer
  based upon first argument.
* configure.ac (HAVE_GUILE_JSON): New conditional.
* Makefile.am (MODULES): Add new files and remove 'guix/snix.scm'.
  (SCM_TESTS): Add 'tests/pypi.scm' if guile-json is installed.
2014-09-29 19:30:28 -04:00
Eric Bavier 2efb3ddaa4 gnu: Add dblatex.
* gnu/packages/docbook.scm (dblatex): New variable.
2014-09-29 17:09:26 -05:00
Ludovic Courtès 6602576e84 gnu: guile-ncurses: Update to 1.5.
* gnu/packages/guile.scm (guile-ncurses): Update to 1.5.  Remove patch.
* gnu/packages/patches/guile-ncurses-tests.patch: Remove.
* gnu-system.am (dist_patch_DATA): Remove it.
2014-09-29 23:17:53 +02:00
Ludovic Courtès 9ffc1c00e5 packages: Optimize 'find-packages-by-name' to avoid disk accesses.
On a profile with 182 entries, "guix package --search-paths" goes from
4.5 seconds down to 0.4 second.

* gnu/packages.scm (find-packages-by-name): Make a name -> package vhash
  in a promise; access it with 'vhash-fold*'.
2014-09-29 22:03:46 +02:00
Ludovic Courtès 34942e9597 nls: Recognize 'N_' as equivalent to 'ngettext'.
This fixes i18n of plural messages.

* po/guix/Makevars (XGETTEXT_OPTIONS): Change 'N_' to 'N_:1,2'.
2014-09-29 22:03:46 +02:00
Mark H Weaver 2d5d63d718 gnu: bash: Update to 4.3.27 and fix out-of-bounds memory accesses.
Based on a patch by Ludovic Courtès <ludo@gnu.org>.

* gnu/packages/bash.scm (%patch-series-4.3): Add two patches.
  (bash)[source]: Add parser-oob patch.  Add 'snippet'.
  [native-inputs]: New field.
* gnu/packages/commencement.scm (bison-boot1): New variable.
  (static-bash-for-glibc): Add 'native-inputs'.

Co-Authored-By: Ludovic Courtès <ludo@gnu.org>
2014-09-29 14:14:54 -04:00
Eric Bavier b5f4bb855d gnu: Add synergy.
* gnu/packages/synergy.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-09-29 09:40:31 -05:00
Eric Bavier 335bc6833f gnu: duplicity: Fix and disable some tests.
* gnu/packages/patches/duplicity-piped-password.patch: New patch.
* gnu/packages/patches/duplicity-test_selection-tmp.patch: New patch.
* gnu-system.am (dist_patch_DATA): Add them.
* gnu/packages/backup.scm (duplicity)[source]: Add patches field.
  [inputs]: Add util-linux and tzdata.
  [arguments]: rename patch-tests phase to check-setup.  Set HOME and TZDIR
  for tests.
2014-09-28 18:24:25 -05:00
Mathieu Lirzin 182d6311c2 gnu: Add dionysus.
* gnu/packages/maths.scm (dionysus): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-09-29 00:16:28 +02:00
David Thompson acf735f2be gnu: Add ruby-i18n.
* gnu/packages/ruby.scm (ruby-i18n): New variable.
2014-09-28 15:09:24 -04:00
David Thompson c08f9818f9 build: Add ruby build system.
* guix/build-system/ruby.scm: New file.
* guix/build/ruby-build-system: New file.
* Makefile.am (MODULES): Add new files.
* doc/guix.texi (Build Systems): Document ruby-build-system.
2014-09-28 15:09:24 -04:00
Pjotr Prins 6ef8c59a7a gnu: Add ruby.
Co-authored-by: David Thompson <davet@gnu.org>

* gnu/packages/ruby.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
* guix/licenses.scm (ruby): New variable.
2014-09-28 15:09:24 -04:00
Alex Kost 3472bb20c5 emacs: Use package/output type variables where needed.
* emacs/guix-list.el (guix-package-list-type, guix-output-list-describe-type):
  Move to...
* emacs/guix-base.el: ... here.  Rename 'guix-output-list-describe-type' to
  'guix-package-info-type'.
* emacs/guix-info.el (guix-generation-info-insert-number): Use
  'guix-package-list-type'.
* emacs/guix.el (guix-get-show-packages): Use 'guix-package-info-type'.
2014-09-28 22:46:15 +04:00
Alex Kost 2e269860c4 emacs: Support font-locking.
Avoid breaking highlighting after adding new font-lock keywords.

* emacs/guix-base.el (guix-insert-package-strings): Use 'propertize' instead
  of 'guix-get-string'.
* emacs/guix-info.el (guix, guix-action, guix-file, guix-url,
  guix-package-location, guix-package-name): New button types.
  (guix-info-insert-action-button, guix-info-insert-file-path,
  guix-info-insert-url, guix-package-info-insert-location,
  guix-package-info-insert-full-names,
  guix-package-info-insert-non-unique-text): Adjust for 'guix-insert-button'
  and button types.
  (guix-package-info-name-button): New face.
  (guix-package-info-define-insert-inputs): Use it.  Add new button types.
  (guix-package-info-insert-full-name): Remove.
* emacs/guix-utils.el (guix-get-string): Replace 'face' with 'font-lock-face'.
  (guix-insert-button): Adjust for using button types.
2014-09-28 22:46:15 +04:00
Alex Kost ce8b295352 emacs: Fix errors in receiving information.
* emacs/guix-main.scm (package-pattern-transformer,
  output-pattern-transformer): Add fallback 'match' clauses.
  (find-generations): Fix getting generations by IDs.
2014-09-28 22:46:14 +04:00
Ian Denhardt 79f5dd5915 doc: Use 'define-public' in example package recipe.
* doc/guix.texi (Defining Packages): Use 'define-public' instead of
  'define'.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-09-28 12:01:45 +02:00
Manolis Ragkousis 29a61bd0a5 gnu: hurd-headers: Use --build instead of --host.
* gnu/packages/hurd.scm (hurd-headers): Replace '--host' with
  '--build'.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-09-28 11:53:20 +02:00
Andreas Enge 47e225cde8 gnu: qt-4: Explicitly link with icu.
* gnu/packages/qt.scm (qt-4): Explicitly link with libicui18n, which is
    dlopened by QtCore.so.
2014-09-28 09:35:32 +02:00
Ludovic Courtès fcb0109d09 gnu: Add Nix.
This commit is dedicated to the Nix project, without which we wouldn't
be hacking all this today.  :-)

* gnu/packages/package-management.scm (nix): New variable.
2014-09-28 01:04:18 +02:00
Ludovic Courtès d22d72fc50 gnu: Add perl-www-curl.
* gnu/packages/web.scm (perl-www-curl): New variable.
2014-09-28 00:52:05 +02:00
Ludovic Courtès 274da61d51 gnu: Add perl-dbi and perl-dbd-sqlite.
* gnu/packages/databases.scm (perl-dbi, perl-dbd-sqlite): New variable.
2014-09-28 00:41:39 +02:00
Ludovic Courtès a0efb39ad4 gnu: mit-scheme: Rename top-level helper.
Suggested by Mark H. Weaver.

* gnu/packages/scheme.scm (source-directory): Rename to...
  (mit-scheme-source-directory): ... this.
2014-09-27 23:59:30 +02:00
Andreas Enge 319e2d1736 gnu: Add graphite2.
* gnu/packages/fontutils.scm (graphite2): New variable.
2014-09-27 23:48:30 +02:00
Andreas Enge 68dddcad62 gnu: mit-scheme: Delete more dangling symlinks for non-x86 systems.
* gnu/packages/scheme.scm (mit-scheme): Delete more dangling symlinks for
    non-x86 systems.
2014-09-27 20:04:43 +02:00
Andreas Enge ecb26c101e gnu: mit-scheme: Fix source file name for mips64el.
* gnu/packages/scheme.scm (mit-scheme): Fix source file name for
     architectures other than x86_64 and i686.
2014-09-27 19:36:57 +02:00
Andreas Enge dc47939172 gnu: phonon: Update to 4.8.0.
* gnu/packages/kde.scm (phonon): Update to 4.8.0.
2014-09-27 17:50:14 +02:00
Ludovic Courtès a9638ac413 build: Don't install elisp files when Emacs is unavailable.
* emacs.am (dist_lisp_DATA, nodist_lisp_DATA): Wrap in 'if HAVE_EMACS'.
2014-09-27 17:30:10 +02:00
Ludovic Courtès 596fcbf768 build: Don't generate Emacs autoloads when Emacs is unavailable.
Reported by Andreas Enge.

* configure.ac: Define 'HAVE_EMACS' Automake conditional.
* emacs.am ($(AUTOLOADS)): Wrap in 'if HAVE_EMACS'.
2014-09-27 17:27:21 +02:00
Andreas Enge 6c4a2884b6 gnu: mit-scheme: Update to 9.2.
* gnu/packages/scheme.scm (mit-scheme): Update to 9.2.
2014-09-27 16:51:44 +02:00
Andreas Enge 17b9d16fa2 gnu: libxscrnsaver: Propagate input scrnsaverproto.
* gnu/packages/xorg.scm (libxscrnsaver): Propagate input scrnsaverproto,
    since scrnsaver.h from libxscrnsaver includes saver.h from scrnsaverproto.
2014-09-27 15:49:06 +02:00
Andreas Enge 38877bf346 gnu: help2man: Update to 1.46.3.
* gnu/packages/man.scm (help2man): Update to 1.46.3.
2014-09-27 12:31:37 +02:00
Andreas Enge 237c048609 gnu: gcl: Update to 2.6.11.
* gnu/packages/lisp.scm (gcl): Update to 2.6.11.
2014-09-27 12:13:53 +02:00
Andreas Enge 483ca9d88d gnu: parallel: Update to 20140922.
* gnu/packages/parallel.scm (parallel): Update to 20140922.
2014-09-27 12:08:21 +02:00
Andreas Enge 5520c94c94 gnu: libidn: Update to 1.29.
* gnu/packages/libidn.scm (libidn): Update to 1.29.
2014-09-27 11:30:33 +02:00
Andreas Enge 53f896f23f gnu: rcs: Update to 5.9.3.
* gnu/packages/version-control.scm (rcs): Update to 5.9.3.
2014-09-27 11:27:47 +02:00
Federico Beffa f36afe4d05 gnu: maxima: Install .el files in the right place, and help find Gnuplot.
* gnu/packages/maths.scm (maxima): Remove Tcl from 'inputs'.  Add
  'post-install' phase.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-09-27 11:22:58 +02:00
Andreas Enge dd0b0e681b gnu: ucommon: Update to 6.1.11.
* gnu/packages/telephony.scm (ucommon): Update to 6.1.11.
2014-09-27 10:25:22 +02:00
Andreas Enge 05681d7388 gnu: libassuan: Update to 2.1.2.
* gnu/packages/gnupg.scm (libassuan): Update to 2.1.2.
2014-09-27 09:17:56 +02:00
Ludovic Courtès b5c5d763ca Merge branch 'bash-cve-2014-6271' 2014-09-26 09:49:09 +02:00
Alex Kost 223ecaba7f gnu: Add scrot.
* gnu/packages/scrot.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-09-26 09:23:11 +04:00
Alex Kost f7d28082bb gnu: Add giblib.
* gnu/packages/image.scm (giblib): New variable.
2014-09-26 09:23:10 +04:00
Alex Kost 76d88cfa57 gnu: Add imlib2.
* gnu/packages/image.scm (imlib2): New variable.
2014-09-26 09:23:10 +04:00
David Thompson fddb640971 gnu: libtoxcore: Update to 1.0.0.
* gnu/packages/crypto.scm (libsodium): Update version and change home-page.
2014-09-24 17:17:24 -04:00
Ludovic Courtès c1fe82d586 gnu: bash: Apply patch series up to 25 [CVE-2014-6271].
* gnu/packages/bash.scm (patch-url, bash-patch): New procedures.
  (patch-series): New macro.
  (%patch-series-4.3): New variable.
  (download-patches): New procedure.
  (bash): Change version to include the patch level; pass
  %PATCH-SERIES-4.3 in the origin.
2014-09-24 19:19:03 +02:00
Ludovic Courtès ce517b20d4 gnu: bootstrap: Correctly handle patches that are origins.
* gnu/packages/bootstrap.scm (bootstrap-origin): Rewrite the patches of
  SOURCES that are also origins.
2014-09-24 19:08:54 +02:00
Ludovic Courtès 27afb11a22 gnupg: Correctly parse current 'SIG_ID' lines.
* guix/gnupg.scm (gnupg-verify)[sigid-rx]: Adjust to handle current
  signature ID encoding.
2014-09-24 19:08:03 +02:00
Ludovic Courtès 3f6f7b36d3 packages: Allow use of origins as patches.
* guix/packages.scm (patch-and-repack)[patch-inputs]: Use 'add-to-store'
  only if the PATCH is a file name, and 'package-source-derivation' if
  PATCH is an origin.
2014-09-24 19:07:22 +02:00
Alex Kost a54a237b5f emacs: Add support for displaying outputs.
Suggested by Taylan Ulrich Bayirli/Kammer and Ludovic Courtès.

* emacs/guix-base.el (guix-param-titles): Add output titles.
  (guix-messages): Add output messages.
  (guix-get-package-id-and-output-by-output-id): New procedure.
  (guix-define-buffer-type): Add ':buffer-name' key.
* emacs/guix-info.el: Add "output-info" buffer type.
  (guix-info-insert-methods): Add output methods.
  (guix-info-displayed-params): Add output params.
  (guix-output-info-insert-version, guix-output-info-insert-output): New
  procedures.
* emacs/guix-list.el: Add "output-list" buffer type.
  (guix-list-column-format): Add output formats.
  (guix-list-column-value-methods): Add output methods.
  (guix-package-list-type): New variable.
  (guix-generation-list-show-packages): Use it.
  (guix-package-list-marking-check): Use 'guix-output-list-mode'.
  (guix-list-mark-package-upgrades): New procedure.
  (guix-package-list-mark-upgrades): Use it.
  (guix-list-execute-package-actions): New procedure.
  (guix-package-list-execute): Use it.
  (guix-list-describe-maybe): New procedure.
  (guix-list-describe): Use it.
  (guix-output-list-mark-install, guix-output-list-mark-delete,
  guix-output-list-mark-upgrade, guix-output-list-mark-upgrades,
  guix-output-list-execute, guix-output-list-make-action,
  guix-output-list-describe): New procedures.
  (guix-output-list-describe-type): New variable.
* emacs/guix.el (guix-get-show-packages): Use 'guix-package-list-type'.
* doc/emacs.texi (emacs Commands): Mention 'guix-package-list-type'.
  (emacs List buffer): Adjust accordingly.
  (emacs Info buffer): Likewise.
  (emacs Buffer Names): New node.
  (emacs Keymaps): Add keymaps for output buffers.
2014-09-24 16:09:20 +04:00
Alex Kost 81b339fe31 emacs: Rewrite scheme side in a functional manner.
* emacs/guix-main.scm: Rewrite in a functional way.  Add support for output
  entries.
  (%current-manifest, %current-manifest-entries-table,
  set-current-manifest-maybe!): Replace with...
  (manifest-entries->hash-table, manifest->hash-table): ... this.
  (manifest-entries-by-name+version): Replace with...
  (manifest-entries-by-name): ... this.
  (fold-manifest-entries): Rename to...
  (fold-manifest-by-name): ... this.
  (package-installed-param-alist): Rename to...
  (%manifest-entry-param-alist): ... this.
  (package-param-alist): Rename to...
  (%package-param-alist): this.
  (manifest-entry->installed-entry): Rename to...
  (manifest-entry->sexp): ... this.
  (manifest-entries->installed-entries): Rename to...
  (manifest-entries->sexps): ... this.
  (matching-generation-entries): Replace with...
  (matching-generations): ... this.
  (last-generation-entries): Replace with...
  (last-generations): ... this.
  (get-entries): Rename to...
  (entries): ... this.
  (installed-entries-by-name+version, installed-entries-by-package,
  matching-package-entries, fold-object, package-entries-by-name+version,
  package-entries-by-spec, package-entries-by-regexp, package-entries-by-ids,
  newest-available-package-entries, all-available-package-entries,
  manifest-package-entries, installed-package-entries,
  generation-package-entries, obsolete-package-entries,
  all-generation-entries, generation-entries-by-ids, profile-generations,
  %package-entries-functions, %generation-entries-functions): Remove.
  (manifest=?, manifest-entry->name+version+output, manifest-entry-by-output,
  list-maybe, matching-packages, filter-packages-by-output, packages-by-name,
  manifest-entry->packages, all-available-packages, newest-available-packages,
  specification->package-pattern, specification->output-pattern,
  id->package-pattern, id->output-pattern, specifications->package-patterns,
  specifications->output-patterns, ids->package-patterns,
  ids->output-patterns, manifest-patterns-result, obsolete-package-patterns,
  obsolete-output-patterns, manifest-package-patterns,
  manifest-output-patterns, obsolete-package-sexp,
  package-pattern-transformer, output-pattern-transformer, entry-type-error,
  search-type-error, pattern-transformer, patterns-maker,
  package/output-sexps, find-generations, generation-sexps): New procedures.
  (%pattern-transformers, %patterns-makers): New variables.
* emacs/guix-base.el (guix-continue-package-operation-p): Adjust accordingly.
* emacs/guix-info.el (guix-package-info-insert-action-button): Likewise.
2014-09-24 16:09:20 +04:00
Alex Kost dfeb023927 emacs: Use general functions instead of generated ones.
* emacs/guix-base.el: Add and use general functions instead of
  specialized functions generated by 'guix-define-buffer-type' macro.
  (guix-buffer-type, guix-entry-type): New variables.
  (guix-set-vars): Add new variables.
  (guix-get-show-entries, guix-show-entries, guix-set-buffer)
  (guix-history-call, guix-make-history-item)
  (guix-get-params-for-receiving, guix-revert-buffer)
  (guix-redisplay-buffer): New functions.
  (guix-define-buffer-type): Do not generate specialized functions.
* emacs/guix-info.el (guix-package-info-insert-full-names): Use
  'guix-get-show-entries'.
  (guix-generation-info-insert-number): Likewise.
* emacs/guix-list.el (guix-list-describe): New function.
  (guix-list-define-entry-type): Do not generate specialized one.
  (guix-generation-list-show-packages): Use 'guix-get-show-entries'.
* emacs/guix.el (guix-show-generations-function): Remove.
  (guix-get-show-packages): Use new functions.
  (guix-get-show-generations): Likewise.
2014-09-24 16:09:20 +04:00
Ludovic Courtès 8689901f95 Introduce the 'GUIX_PACKAGE_PATH' environment variable.
* gnu/packages.scm (%package-module-path): Honor $GUIX_PACKAGE_PATH.
* test-env.in: Unset 'GUIX_PACKAGE_PATH'.
* tests/guix-package.sh: Test it.
* doc/guix.texi (Package Modules): Document it.
2014-09-24 14:06:09 +02:00
Ludovic Courtès 300868ba57 guix build: Add -L/--load-path as a common option.
* guix/scripts/build.scm (show-build-options-help): Document -L.
  (%standard-build-options): Add -L/--load-path.
* tests/guix-package.sh: Test it.
2014-09-24 14:06:09 +02:00
Ludovic Courtès c107b54108 packages: Add '%package-module-search-path'.
* gnu/packages.scm (%package-module-path): New variable.
  (all-package-modules): New procedure.
  (fold-packages): Use it instead of 'package-modules'.
2014-09-24 14:06:08 +02:00
Ludovic Courtès 84836a5733 packages: Generalize package module search.
* gnu/packages.scm (%distro-root-directory): New variable.
  (%distro-module-directory): Remove.
  (package-files): Rename to...
  (scheme-files): ... this.  Return absolute file names, not stripped.
  (file-name->module-name): New procedure.
  (package-modules): Add 'directory' and 'sub-directory' parameters.
  Rewrite accordingly.
  (fold-packages): Adjust 'package-modules' call accordingly.
2014-09-24 10:23:27 +02:00
Federico Beffa df354a771d gnu: maxima: Update to 5.34.1 and add dependencies.
* gnu/packages/maths.scm (maxima): Update to 5.34.1 which fixes a bug in
  the plotting capabilities present in the previous version.  Add Gnuplot
  and Tcl/Tk to 'inputs'.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-09-24 09:35:44 +02:00
Mark H Weaver b5b73a8269 Use #:prefix instead of #:renamer with 'symbol-prefix-proc'.
* gnu/packages/abiword.scm, gnu/packages/admin.scm, gnu/packages/aidc.scm,
  gnu/packages/backup.scm, gnu/packages/bittorrent.scm,
  gnu/packages/boost.scm, gnu/packages/compression.scm,
  gnu/packages/cryptsetup.scm, gnu/packages/curl.scm,
  gnu/packages/cyrus-sasl.scm, gnu/packages/dc.scm, gnu/packages/emacs.scm,
  gnu/packages/fonts.scm, gnu/packages/fontutils.scm, gnu/packages/geeqie.scm,
  gnu/packages/ghostscript.scm, gnu/packages/gimp.scm,
  gnu/packages/gkrellm.scm, gnu/packages/gl.scm, gnu/packages/glib.scm,
  gnu/packages/gnome.scm, gnu/packages/gnunet.scm, gnu/packages/gnupg.scm,
  gnu/packages/gnutls.scm, gnu/packages/gnuzilla.scm, gnu/packages/gsasl.scm,
  gnu/packages/gtk.scm, gnu/packages/gv.scm, gnu/packages/image.scm,
  gnu/packages/indent.scm, gnu/packages/inkscape.scm,
  gnu/packages/lesstif.scm, gnu/packages/links.scm, gnu/packages/lisp.scm,
  gnu/packages/lsh.scm, gnu/packages/lsof.scm, gnu/packages/maths.scm,
  gnu/packages/mp3.scm, gnu/packages/openssl.scm, gnu/packages/ots.scm,
  gnu/packages/pciutils.scm, gnu/packages/pcre.scm, gnu/packages/pdf.scm,
  gnu/packages/pulseaudio.scm, gnu/packages/python.scm, gnu/packages/slim.scm,
  gnu/packages/ssh.scm, gnu/packages/texlive.scm, gnu/packages/vim.scm,
  gnu/packages/vpn.scm, gnu/packages/web.scm, gnu/packages/wv.scm,
  gnu/packages/xiph.scm, gnu/packages/xml.scm, gnu/packages/xorg.scm,
  gnu/packages/yasm.scm, gnu/packages/zip.scm,
  guix/build/cmake-build-system.scm, guix/build/perl-build-system.scm,
  guix/build/python-build-system.scm, guix/download.scm: Replaces uses of
  #:renamer and 'symbol-prefix-proc' with #:prefix.
2014-09-23 18:52:29 -04:00
Mark H Weaver c3f16c554e gnu: gtk+: Disable tests on mips64el-linux.
* gnu/packages/gtk.scm (gtk+): Disable tests on mips64el-linux.
2014-09-23 18:52:27 -04:00
Ludovic Courtès 99462faca0 gnu: gtk+: Remove dependency on Xorg server on mips64el-linux.
Reported by Mark H. Weaver.

* gnu/packages/gtk.scm (gtk+)[native-inputs]: Remove XORG-SERVER on
  mips64el-linux.
2014-09-23 18:52:26 -04:00
Ludovic Courtès 4627a46470 services: Add 'bitlbee-service'.
* gnu/services/networking.scm (bitlbee-service): New procedure.
* doc/guix.texi (Networking Services): Document it.
2014-09-23 23:46:01 +02:00
Ludovic Courtès b5d9beaa1a gnu: xf86-input-synaptics: Allow building with libc 2.20.
* gnu/packages/patches/xf86-input-synaptics-glibc-2.20.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/xorg.scm (xf86-input-synaptics): Use it.  Improve
  synopsis and description.
2014-09-23 22:49:42 +02:00
Ludovic Courtès c9d39df937 gnu: node: Add 'which' as an input.
* gnu/packages/node.scm (node)[native-inputs]: Add WHICH.
2014-09-23 15:30:13 +02:00
Ludovic Courtès 969b662128 gnu: xorg: Remove xf86-input-vmmouse.
* gnu/packages/xorg.scm (xf86-input-vmmouse): Remove.  This driver
  implement the mouse protocol of a proprietary emulator.
* gnu/services/xorg.scm (xorg-start-command): Remove reference.
2014-09-23 15:13:46 +02:00
Ludovic Courtès 3b0273885b gnu: linux-libre: Work around GCC 4.8.3 ICE.
* gnu/packages/linux.scm (linux-libre)[inputs]: New field.
2014-09-23 10:12:17 +02:00
Ludovic Courtès 4b164c4532 system: Add Patch to '%base-packages'.
* gnu/system.scm (%base-packages): Add PATCH.
2014-09-22 23:11:33 +02:00
Ludovic Courtès f07aa672fd Merge branch 'core-updates' 2014-09-22 23:06:33 +02:00
Ludovic Courtès 52ac153e2a linux-initrd: Adjust VM code and doc to new 'base-initrd' signature.
This fixes regressions introduced in de1c158 ("system: Add support for
boot-time mapped devices.").

* doc/guix.texi (Initial RAM Disk): Adjust example with custom use of
  'base-initrd'.  Document #:mapped-devices parameter of 'base-initrd'.
* gnu/system/vm.scm (system-disk-image, system-qemu-image,
  virtualized-operating-system): Adjust call to 'base-initrd' to new
  signature.
2014-09-22 21:29:41 +02:00
Ludovic Courtès 8591fae4cf syscalls: Adjust /proc/net/dev parser for old kernels.
* guix/build/syscalls.scm (%interface-line): Remove whitespace in rest
  pattern.  (There's no extra whitespace after the colon with Linux
  2.6.32.)
2014-09-22 21:12:26 +02:00
Ludovic Courtès 077bd18d22 download: Use the 'SERVER NAME' TLS extension when possible.
Fixes <http://bugs.gnu.org/18526>.
Reported by Mark H. Weaver.

* guix/build/download.scm (tls-wrap): Add 'server' parameter.  Call
  'set-session-server-name!' when (gnutls) defines it.
  (open-connection-for-uri): Adjust 'tls-wrap' call accordingly.
2014-09-22 21:06:39 +02:00
Ludovic Courtès cb150ca34f gnu: perl-tk: Build sequentially.
Fixes <http://bugs.gnu.org/18262>.

* gnu/packages/tcl.scm (perl-tk)[arguments]: Add #:parallel-build? #f.
2014-09-22 14:27:46 +02:00
Alex Kost 886cf584db guix package: Use 'profile-generations'.
* guix/scripts/package.scm (guix-package)[process-actions]: Use
  'profile-generations' instead of the equivalent code.
2014-09-22 13:24:52 +04:00
Alex Kost f452e8ff10 profiles: Add 'profile-generations'.
* guix/profiles.scm (profile-generations): New procedure.
2014-09-22 13:24:52 +04:00
Ludovic Courtès de1c158f32 system: Add support for boot-time mapped devices.
* gnu/build/linux-boot.scm (boot-system): Add #:pre-mount parameter and
  honor it.
* gnu/system/linux-initrd.scm (base-initrd): Add #:mapped-devices
  parameter.  Add 'device-mapping-commands' variable, and use it to
  build the #:pre-mount argument of 'boot-system'.
* gnu/system.scm (mapped-device-user,
  operating-system-user-mapped-devices,
  operating-system-boot-mapped-devices): New procedures.
  (device-mapping-services): Use 'operating-system-user-mapped-devices'
  instead of 'operating-system-mapped-devices'.
  (operating-system-initrd-file): Call the initrd with #:mapped-devices.
2014-09-22 11:20:41 +02:00
Ludovic Courtès e2b464b7f4 activation: Ensure existing user accounts have the right settings.
* gnu/build/activation.scm (modify-user, ensure-user): New procedures.
  (activate-users+groups): Systematically call 'ensure-user'.
2014-09-22 10:10:08 +02:00
Ludovic Courtès 5f36ea03ad gnu: valgrind: Update to 3.10.0.
* gnu/packages/valgrind.scm (valgrind): Update to 3.10.0.
* gnu/packages/patches/valgrind-glibc.patch: Remove.
* gnu-system.am (dist_patch_DATA): Adjust accordingly.
2014-09-22 10:07:52 +02:00
Ludovic Courtès cc7f4e0589 gnu: duplicity: Add dependency on util-linux.
* gnu/packages/backup.scm (duplicity)[native-inputs]: Add util-linux.
2014-09-20 23:38:16 +02:00
Ludovic Courtès a69bc0103d gnu: ots: Build sequentially.
* gnu/packages/ots.scm (ots)[arguments]: New field.
2014-09-20 23:14:48 +02:00
Ludovic Courtès 573a35541f gnu: Add sound-theme-freedesktop.
Suggested by Federico Beffa <beffa@ieee.org>.

* gnu/packages/libcanberra.scm (sound-theme-freedesktop): New variable.
2014-09-20 15:10:11 +02:00
Ludovic Courtès 571a0310ff gnu: libcanberra: Add dependency on PulseAudio and eudev.
* gnu/packages/libcanberra.scm (libcanberra): Add PulseAudio and eudev
  as inputs.
2014-09-20 15:02:45 +02:00
Ludovic Courtès 0a9e9a6311 gnu: emacs: Switch to GTK+ 3.
Suggested by Federico Beffa <beffa@ieee.org>.

* gnu/packages/emacs.scm (emacs): Switch to GTK+ 3.
2014-09-20 14:49:20 +02:00
Ludovic Courtès dd68dd137a gnu: cyrus-sasl: Build sequentially.
* gnu/packages/cyrus-sasl.scm (cyrus-sasl)[arguments]: Pass
  #:parallel-build?.
2014-09-20 14:15:17 +02:00
Ludovic Courtès 46025e94cd offload: Use a total order when sorting available machines.
* guix/scripts/offload.scm (machine-less-loaded?, machine-faster?):
  Remove.
  (machine-power-factor): New procedure.
  (machine-less-loaded-or-faster?): Use it.
2014-09-20 12:23:39 +02:00
Ludovic Courtès b1fea30339 offload: Try another machine when the "best" machine is overloaded.
* guix/scripts/offload.scm (choose-build-machine): When BEST is
  overloaded, try the other machines.
2014-09-20 12:10:28 +02:00
Ludovic Courtès 4359378a2c linux-boot: Ask fsck for a progress bar.
* gnu/build/file-systems.scm (check-file-system): Pass '-C 0' to FSCK.
  Suggested by Mark H. Weaver.
2014-09-19 21:51:36 +02:00
Ludovic Courtès f75426d5b4 gnu: guile-charting: Update to 0.2.0.
* gnu/packages/guile.scm (guile-charting): Update to 0.2.0.  Remove
  now-unnecessary cruft from 'snippet'.  Modify 'godir' in Makefile.in.
2014-09-19 17:23:17 +02:00
Ludovic Courtès a9eef4d2e5 system: Fix value of 'EUDEV_RULES_DIRECTORY'.
* gnu/services/base.scm (udev-service): Append "/lib/udev/rules.d" to
  EUDEV_RULES_DIRECTORY.
2014-09-19 17:23:17 +02:00
Alex Kost 516e93f8a6 gnu: Fix typos.
* gnu/packages/cdrom.scm (cdparanoia): Double space in description.
* gnu/packages/maths.scm (hdf5): Double space in synopsis.
2014-09-19 15:31:19 +04:00
Jason Self 49e4bca583 gnu: linux-libre: Update to 3.16.3.
* gnu/packages/linux.scm (linux-libre): Update to version 3.16.3.
2014-09-18 16:18:14 -07:00
Ludovic Courtès 7f28bf9a43 system: Add udev rule for /dev/kvm.
* gnu/services/base.scm (kvm-udev-rule): New procedure.
  (udev-service): Use it, and add it to RULES.
  (guix-build-accounts): Add "kvm" to the 'supplementary-groups' field.
* gnu/system/shadow.scm (%base-groups): Add "kvm".
2014-09-18 23:23:46 +02:00
Ludovic Courtès 6c1df0819c linux-initrd: Remove now obsolete #:guile-modules-in-chroot? parameter.
* gnu/build/linux-boot.scm (boot-system): Remove
  #:guile-modules-in-chroot? and related code.
* gnu/system/linux-initrd.scm (base-initrd): Likewise.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Remove
  #:guile-modules-in-chroot? argument in 'base-initrd' call.
2014-09-18 23:05:22 +02:00
Ludovic Courtès dbcb0ab1a9 doc: Remove a couple of limitations.
* doc/guix.texi (System Installation): Remove encrypted disks and swap
  from the limitations.
2014-09-18 22:52:03 +02:00
Ludovic Courtès 2a13d05e45 system: Add support for swap devices.
* gnu/services/base.scm (swap-service): New procedure.
* gnu/system.scm (<operating-system>)[swap-devices]: New field.
  (swap-services): New procedure.
  (essential-services): Use it.
2014-09-18 22:52:01 +02:00
Ludovic Courtès 715fc9d44d syscalls: Add 'swapon' and 'swapoff'.
* guix/build/syscalls.scm (swapon, swapoff): New procedures.
* tests/syscalls.scm ("swapon, ENOENT/EPERM", "swapoff, EINVAL/EPERM"):
  New tests.
2014-09-18 20:19:56 +02:00
Ludovic Courtès 510f9d8624 doc: Document mapped devices.
* doc/guix.texi (Mapped Devices): New subsection.
2014-09-18 19:50:00 +02:00
Ludovic Courtès 722554a306 system: Define 'device-mapping-kind', and add a 'close' procedure.
* gnu/system/file-systems.scm (<mapped-device-type>): New record type.
  (<mapped-device>)[command]: Remove field.
  [type]: New field.
* gnu/services/base.scm (device-mapping-service): Rename 'command'
  parameter to 'open'.  Add 'close' parameter and honor it.
* gnu/system.scm (luks-device-mapping): Rename to...
  (open-luks-device): ... this.
  (close-luks-device): New procedure.
  (luks-device-mapping): New variable.
  (device-mapping-services): Get the type of MD, and pass its 'open' and
  'close' fields to 'device-mapping-service'.
2014-09-18 19:18:39 +02:00
Ludovic Courtès cb823dd279 pull: Rewrite using gexps.
* guix/scripts/pull.scm (unpack): Remove 'store' parameter.  Rewrite
  using 'gexp->derivation'.
  (what-to-build, indirect-root-added, build-and-install): New
  procedures.
  (guix-pull): Use it.
2014-09-18 18:45:00 +02:00
Ludovic Courtès 2f7a10db6d gnu: skribilo: Make sure Guile-Reader is in the search path.
Reported by Luis Souto Graña <luissoutobueu@gmail.com>.

* gnu/packages/skribilo.scm (skribilo)[arguments]: Add #:phases.
2014-09-18 11:22:01 +02:00
Ludovic Courtès 6904ecce5f gnu: gcc-4.8.3: Add patch for PR61801.
* gnu/packages/patches/gcc-fix-pr61801.patch: New file.
* gnu/packages/gcc.scm (gcc-4.8): Use it.
* gnu-system.am (dist_patch_DATA): Add it.
2014-09-17 17:17:43 +02:00
Ludovic Courtès c8bf8b2f88 gnu: libcanberra: Update URL.
Reported by Federico Beffa <beffa@ieee.org>.

* gnu/packages/libcanberra.scm (libcanberra)[source]: Update URI.
2014-09-17 11:09:22 +02:00
Ludovic Courtès f02f65efb4 services: dhcp-client: Start 'dhclient' in "no wait" mode.
* gnu/services/networking.scm (dhcp-client-service): Pass '-nw' to
  'dhclient'.
2014-09-17 09:27:07 +02:00
Ludovic Courtès 6a3f4c74fd services: file-system: Change directory to root before unmounting.
* gnu/services/base.scm (file-system-service)[stop]: Add 'chdir' call.
2014-09-17 09:20:38 +02:00
Ludovic Courtès d656c14ec9 services: user-processes: Wait for complete process termination.
* gnu/services/base.scm (user-processes-service): Add 'wait' loop.
2014-09-17 09:19:48 +02:00
Ludovic Courtès 66d5d8c072 services: udev: Make non-respawnable.
* gnu/services/base.scm (udev-service): Add 'respawn?' field.
2014-09-17 08:59:13 +02:00
Ludovic Courtès bebc8681c2 services: Change default 'stop' value to #~(const #f).
* gnu/services.scm (<service>)[stop]: Change default value.
2014-09-17 07:50:11 +02:00
Ludovic Courtès 736755e21e build: Ignore the user's language settings when running tests.
* test-env.in: Unset 'LANGUAGE', set 'LC_MESSAGE'.
2014-09-17 07:44:00 +02:00
Ludovic Courtès 57db49cc3e utils: Create temporary files in $TMPDIR or /tmp.
Reported by Federico Beffa <beffa@ieee.org>.

* guix/utils.scm (call-with-temporary-output-file): Prepend $TMPDIR or
  /tmp to TEMPLATE.
2014-09-17 07:18:46 +02:00
Ludovic Courtès e617a86137 system: Add "input" to '%base-groups'.
* gnu/system/shadow.scm (%base-groups): Add "input" group.
2014-09-16 22:43:55 +02:00
Ludovic Courtès d6af251868 Remove outdated items from 'TODO'. 2014-09-16 21:11:03 +02:00
Ludovic Courtès 64a4a21e86 gnu: guile-charting: Modules correctly installed, guile-cairo propagated.
* gnu/packages/guile.scm (guile-charting): Patch Makefile.in files to
  install to guile/site/2.0.  Move GUILE-CAIRO to 'propagated-inputs'.
2014-09-16 17:49:57 +02:00
Ludovic Courtès 3f9d63df13 gnu: pulseaudio: Disable Console-Kit support by default.
This prevented PulseAudio from starting on systems without Console-Kit.

* gnu/packages/pulseaudio.scm (pulseaudio)[source]: Add snippet.
2014-09-15 23:58:39 +02:00
Ludovic Courtès a34cedc45e gnu: Add OPAM.
* gnu/packages/ocaml.scm (opam): New variable.
2014-09-15 23:58:39 +02:00
Andreas Enge 6b8e828577 gnu: Add arb.
* gnu/packages/algebra.scm (arb): New variable.
2014-09-15 16:26:30 +02:00
Ludovic Courtès 2274b8163a gnu: mupdf: Adjust synopsis.
* gnu/packages/pdf.scm (mupdf): Remove article from synopsis.
2014-09-15 09:06:42 +02:00
Marek Benc c0b390ed72 gnu: Add mupdf.
* gnu/packages/pdf.scm (mupdf): New variable.
* gnu/packages/patches/mupdf-buildsystem-fix.patch: New file.
* gnu-system.am (dist_patch_DATA): Added the above patch.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-09-15 09:04:19 +02:00
Marek Benc 38c55e5c8e gnu: Add openjpeg.
* gnu/packages/image.scm (openjpeg): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-09-15 09:00:12 +02:00
Marek Benc 8d9872b539 gnu: Add jbig2dec
* gnu/packages/image.scm (jbig2dec): New variable.
* gnu/packages/patches/jbig2dec-ignore-testtest.patch: New file.
* gnu-system.am (dist_patch_DATA): Added the above patch.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-09-15 08:54:02 +02:00
Ludovic Courtès a023cca8d9 services: Add 'dhcp-client-service'.
* gnu/services/networking.scm (dhcp-client-service): New procedure.
* doc/guix.texi (Networking Services): Document it.
2014-09-14 23:49:02 +02:00
Ludovic Courtès 4d54785c69 syscalls: Add 'all-network-interfaces'.
* guix/build/syscalls.scm (network-interfaces): Update docstring.
  (%interface-line): New variable.
  (all-network-interfaces): New procedure.
* tests/syscalls.scm ("all-network-interfaces"): New test.
  ("network-interfaces"): Change to make sure the result is a subset
  of (all-network-interfaces).
2014-09-14 23:49:02 +02:00
Ludovic Courtès 973eea3478 syscalls: Add 'network-interface-flags'.
* guix/build/syscalls.scm (SIOCGIFFLAGS, IFF_UP, IFF_BROADCAST,
  IFF_LOOPBACK, IF_NAMESIZE): New variables.
  (network-interface-flags, loopback-network-interface?): New
  procedures.
* tests/syscalls.scm ("network-interface-flags",
  "loopback-network-interface?"): New tests.
2014-09-14 23:49:02 +02:00
Ludovic Courtès 7585016f53 syscalls: Add 'network-interfaces'.
* guix/build/syscalls.scm (SIOCGIFCONF, ifconf-struct,
  ifreq-struct-size): New variables.
  (%ioctl, bytevector->string-list, network-interfaces): New
  procedures.
* tests/syscalls.scm ("network-interfaces"): New test.
2014-09-14 23:49:02 +02:00
Ludovic Courtès 150d8e6414 services: static-networking-service: Wait for udev, except for loopback.
Reported by DusXMT on #guix.

* gnu/services/networking.scm (static-networking-service): Add
  'requirement' field.  Change 'documentation' to be a string literal.
2014-09-14 23:49:02 +02:00
Ludovic Courtès 5975881687 pull: Create ~/.config/guix if needed instead of bailing out gracelessly.
Previously 'guix pull' would just fail with "No such file or directory"
if ~/.config didn't already exist.

* guix/ui.scm (config-directory): Use 'mkdir-p' instead of 'mkdir'.
  Change the 'catch' handler to expect errors different from EEXIST.
2014-09-14 23:49:02 +02:00
Ludovic Courtès 24e752c097 doc: Mention audio, video, and cdrom groups more prominently.
* doc/guix.texi (User Accounts): Add the "audio", "video", and "cdrom"
  groups in the example.
2014-09-14 23:49:02 +02:00
Mark H Weaver c041886d92 utils: Import (ice-9 format).
* guix/build/utils.scm: Import (ice-9 format).
2014-09-14 11:54:25 -04:00
Eric Bavier de61113857 utils: Allow wrap-program to be called multiple times.
* guix/build/utils.scm (wrap-program): Multiple invocations of
  wrap-program for the same file create successive wrappers.  Adjust
  docstring.
* tests/build-utils.scm: Test new wrap-program behavior.
  (%store): New variable.
2014-09-13 21:53:21 -05:00
Mark H Weaver 9fac9e3be3 Merge branch 'master' into core-updates
Conflicts:
	gnu-system.am
2014-09-13 19:48:47 -04:00
Andreas Enge d7ab698a62 gnu: Add flint.
* gnu/packages/algebra.scm (flint): New variable.
2014-09-13 18:55:21 +02:00
Ludovic Courtès 9e771e3bb6 gnu: Adjust synopses as recommended by 'guix lint'.
Remove leading articles and trailing periods in package synopses.
2014-09-13 15:50:30 +02:00
Ludovic Courtès c5779c931b gnu: Synchronize GNU package descriptions with upstream.
These are mostly two-space-after-end-of-sentence-period changes
resulting from commit 3a09e1d2.
2014-09-13 15:36:07 +02:00
Ludovic Courtès bed035c560 sync-descriptions: Improve output of proposed descriptions.
* build-aux/sync-descriptions.scm (escape-quotes): New procedure.
  Use it.  Add quotes around the proposed description.
2014-09-13 15:26:37 +02:00
Ludovic Courtès 6bddfbc98d nls: Update 'sr' translation. 2014-09-13 14:22:37 +02:00
Ludovic Courtès 8a7330fd76 system: Use eudev instead of udev by default.
* gnu/system.scm (%base-packages): Change 'udev' to 'eudev'.
* gnu/services/base.scm (udev-service): Change #:udev to default to
  'eudev'.
2014-09-13 10:54:47 +02:00
Ludovic Courtès 66a99a0676 services: udev: Allow the use of eudev.
* gnu/services/base.scm (udev-service): Adjust 'start' method to support
  eudev in addition to udev.
2014-09-13 10:53:47 +02:00
Ludovic Courtès ba544e78dc system: Add Diffutils to '%base-packages'.
* gnu/system.scm (%base-packages): Add DIFFUTILS.
2014-09-13 10:52:21 +02:00
Ludovic Courtès 52bd573421 system: Add FUSE and ALSA udev rules by default.
* gnu/services/base.scm (%base-services): Pass FUSE and ALSA-UTILS to
  'udev-service'.
2014-09-13 10:50:26 +02:00
Ludovic Courtès c19ce3a711 gnu: eudev: Honor $EUDEV_RULES_DIRECTORY.
* gnu/packages/patches/eudev-rules-directory.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/linux.scm (eudev): Use it.
2014-09-13 10:47:58 +02:00
Ludovic Courtès dc2d59afa9 gnu: eudev: Build with libkmod support.
* gnu/packages/linux.scm (eudev)[arguments]: New field.
2014-09-13 10:46:10 +02:00
Ludovic Courtès 9a4efac9ef gnu: fuse: Install udev rules in lib/udev/rules.d.
* gnu/packages/linux.scm (fuse): Change UDEV_RULES_PATH suffix to
  /lib/udev/rules.d.
2014-09-13 10:34:50 +02:00
Ludovic Courtès b0e652d836 Revert "gnu: util-linux: Don't install 'logger'."
This reverts commit c9a8ad8477.
2014-09-12 22:19:33 +02:00
Ludovic Courtès 9d77da2a47 gnu: util-linux: Don't install 'logger'.
* gnu/packages/linux.scm (util-linux)[source]: Add 'snippet'.
2014-09-12 22:18:44 +02:00
Ludovic Courtès 7fa715e783 gnu: Add eudev.
* gnu/packages/linux.scm (eudev): New variable.
2014-09-12 22:13:52 +02:00
Ludovic Courtès c9a8ad8477 gnu: util-linux: Don't install 'logger'.
* gnu/packages/linux.scm (util-linux)[source]: Add 'snippet'.
2014-09-12 22:13:52 +02:00
Ludovic Courtès 6d49355d8b activation: Honor $GUIX_NEW_SYSTEM for use by 'guix system reconfigure'.
* gnu/build/activation.scm (activate-current-system): Honor
  $GUIX_NEW_SYSTEM by default.
* guix/scripts/system.scm (switch-to-system): Set $GUIX_NEW_SYSTEM
  before loading SCRIPT.
2014-09-12 22:13:52 +02:00
Ludovic Courtès ddfc2fd8e0 gnu: e2fsprogs: Build with --disable-blkid.
* gnu/packages/linux.scm (e2fsprogs)[arguments]: Pass --disable-blkid.
2014-09-12 22:13:52 +02:00
Ludovic Courtès a68c69675f system: Add more common tools to '%base-packages'.
* gnu/system.scm (%base-packages): Add gawk, tar, gzip, bzip2, xz, lzip,
  and wireless-tools.
2014-09-12 22:13:49 +02:00
Ludovic Courtès 07b08343d7 system: Produce a basic /etc/nsswitch.conf to honor /etc/hosts.
* gnu/system.scm (etc-directory): Produce nsswitch.conf.
2014-09-12 09:55:25 +02:00
Ludovic Courtès 7d6a52c0dc system: Fix the default /etc/hosts.
* gnu/system.scm (default-/etc/hosts): Fix the alias/address order.
  Add ::1.
2014-09-12 09:52:05 +02:00
Mark H Weaver 66ea98e321 Merge branch 'master' into core-updates
Conflicts:
	gnu/packages/image.scm
2014-09-11 18:26:28 -04:00
Ludovic Courtès 5dae0186de system: Add support for Linux-style mapped devices.
* gnu/system/file-systems.scm (<mapped-device>): New record type.
* gnu/system.scm (<operating-system>)[mapped-devices]: New field.
  (luks-device-mapping): New procedure.
  (other-file-system-services)[device-mappings, requirements]: New
  procedures.  Pass #:requirements to 'file-system-service'.
  (device-mapping-services): New procedure.
  (essential-services): Use it.  Append its result to the return value.
  (operating-system-initrd-file): Add comment.
* gnu/services/base.scm (file-system-service): Add #:requirements
  parameter and honor it.
  (device-mapping-service): New procedure.
* gnu/system/linux-initrd.scm (base-initrd): Add comment.
2014-09-12 00:14:52 +02:00
Ludovic Courtès ee7bae3bbd activation: Set the permissions of /etc/sudoers to 440.
* gnu/build/activation.scm (activate-etc): Move 'rm-f' to a local
  'define'.  When TARGET is "sudoers", make it 440.
2014-09-12 00:14:52 +02:00
Ludovic Courtès c851400bee system: Add '\w' to the default PS1.
* gnu/system.scm (etc-directory)[bashrc]: Add '\w' to PS1.
2014-09-12 00:14:52 +02:00
Ludovic Courtès ee248b6a70 activation: Make the /bin/sh symlink at activation time.
* gnu/build/install.scm (directives): Remove "/bin/sh".
* gnu/build/activation.scm (activate-/bin/sh): New procedure.
* gnu/system.scm (operating-system-activation-script): Use it.
2014-09-12 00:14:52 +02:00
Ludovic Courtès ecd06ca9fa services: udev: Allow for additional udev rules.
* gnu/services/base.scm (udev-rules-union): New procedure.
  (udev-service): Add #:rules parameter.  Call 'udev-rules-union' and
  create udev.conf.  Set $UDEV_CONFIG_FILE before spawning udevd.
2014-09-12 00:14:52 +02:00
Ludovic Courtès c65e183403 system: Add 'hosts-file' field.
* gnu/system.scm (<operating-system>)[hosts-file]: New field.
  (default-/etc/hosts): New procedure.
  (etc-directory): Add #:hosts-file parameter and honor it.
  (operating-system-etc-directory): Build /etc/hosts, and pass
  it as #:hosts-file to 'etc-directory'.
2014-09-12 00:14:52 +02:00
Ludovic Courtès f9d53de105 system: Add default PAM entries for xlock and xscreensaver.
* gnu/system/linux.scm (base-pam-services): Add "xlock" and
  "xscreensaver".
2014-09-12 00:14:52 +02:00
Ludovic Courtès c6a0536d08 activation: Make sure /etc/sudoers & co. are regular files.
Before that, 'sudo' would exit with:

  sudo: /etc/sudoers is not a regular file
  sudo: no valid sudoers sources found, quitting

* gnu/build/activation.scm (activate-etc): Check if SOURCE matches
  'file-is-directory?'.  If not, use 'copy-file' instead of 'symlink'.
2014-09-12 00:14:52 +02:00
Ludovic Courtès 286cacaded activation: Remove outdated comment.
* gnu/build/activation.scm (activate-etc): Remove outdated comment.
2014-09-12 00:14:52 +02:00
Ludovic Courtès 095f4deb4b activation: Factorize the link-or-copy trick.
* gnu/build/activation.scm (link-or-copy): New procedure.
  (activate-setuid-programs): Use it.
2014-09-12 00:14:52 +02:00
Kevin Lemonnier f489668723 gnu: Add weechat
* gnu/packages/weechat.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.

Signed-off-by: Eric Bavier <bavier@member.fsf.org>
2014-09-11 17:14:24 -05:00
Andreas Enge 66fdf54587 gnu: glpk: Update to 4.55.
* gnu/packages/maths.scm (glpk): Update to 4.55.
2014-09-11 16:43:08 +02:00
Andreas Enge 9493176ad7 gnu: global: Update to 6.3.2.
* gnu/packages/global.scm (global): Update to 6.3.2.
2014-09-11 15:32:09 +02:00
Andreas Enge d5b888fa2d gnu: freeipmi: Update to 1.4.5.
* gnu/packages/freeipmi.scm (freeipmi): Update to 1.4.5.
2014-09-11 15:25:46 +02:00
Kevin Lemonnier c361d075d3 gnu: Have lua-5.1 compile a .so
* gnu/packages/patches/lua51-liblua-so.patch: New file
* gnu/packages/lua.scm: Use of lua51-liblua-so.patch in lua-5.1

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-09-11 11:59:15 +02:00
Ludovic Courtès 00d908db1e nls: Adjust reference to stale file.
* po/packages/POTFILES.in: Replace recutils.scm with databases.scm.
2014-09-11 09:52:14 +02:00
Ludovic Courtès 275a77113c gnu: lzip: Update to 1.16.
* gnu/packages/compression.scm (lzip): Update to 1.16.
2014-09-11 09:51:39 +02:00
Ludovic Courtès c4634dfa26 profiles: Adjust for compatibility with Guile 2.0.5.
Reported by Andreas Enge <andreas@enge.fr>.

* guix/profiles.scm (right-arrow): Use 'set-port-conversion-strategy!'
  instead of '%default-port-conversion-strategy'.  The latter is only
  available in Guile 2.0.5.
2014-09-10 23:33:30 +02:00
Ludovic Courtès f2817d4303 gnu: lvm2: Programs such as 'dmsetup' now have a correct RUNPATH.
* gnu/packages/linux.scm (alsa-utils): Add comment.
  (lvm2): Add LDFLAGS as a configure flag.
2014-09-10 22:59:27 +02:00
Ludovic Courtès a4888e2e0f install: Gracefully handle corner cases with 'guix system init foo /'.
* gnu/build/install.scm (evaluate-populate-directive): Wrap body in
  "catch 'system-error", and report clear errors.  In the symlink case,
  retry up EEXIST.
  (populate-root-file-system): Remove /var/guix/profiles/system-1-link
  before attempting to create it.
2014-09-10 21:39:47 +02:00
Ludovic Courtès 6e4532e8fe Add Marek to 'AUTHORS'. 2014-09-10 15:44:51 +02:00
Ludovic Courtès 6bb08d056e gnu: wv: Fix URL.
Reported by Marek Benc.

* gnu/packages/wv.scm (wv): Change URL to mirror://.  Also replace one
  NAME occurrence in the URL with 'wvware'.
2014-09-09 17:18:04 +02:00
Ludovic Courtès bde7eb8f0a Have (gnu) re-export (guix gexp).
* gnu.scm (%public-modules): Add '(guix gexp)'.
2014-09-09 17:13:52 +02:00
Ludovic Courtès df5ce088f2 system: Export '%setuid-programs'.
* gnu/system.scm: Export '%setuid-programs', as documented in the
  manual.
2014-09-09 17:12:33 +02:00
Ludovic Courtès 757d5ff306 gnu: libwmf: Use a mirror:// URL.
* gnu/packages/image.scm (libwmf): Use a mirror://sourceforge URL.
2014-09-09 15:35:00 +02:00
Ludovic Courtès a3c4aa1b70 gnu: abiword: Use 'wv', not 'wvware'.
* gnu/packages/abiword.scm: Change 'wvware' to 'wv'.
2014-09-09 15:33:57 +02:00
Marek Benc 698d228001 gnu: Add AbiWord.
* gnu/packages/patches/abiword-explictly-cast-bools.patch New file.
* gnu/packages/patches/abiword-link-plugins-against-backend.patch: New file.
* gnu/packages/patches/abiword-no-include-glib-internal-headers.patch: New file.
* gnu/packages/patches/abiword-pass-no-undefined-to-linker.patch
* gnu/packages/patches/abiword-use-proper-png-api.patch: New file.
* gnu/packages/patches/abiword-wmf-version-lookup-fix.patch: New file.
* gnu/packages/abiword.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add abiword.scm.
  (dist_patch_DATA): Add the 6 patches for abiword.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-09-09 13:55:20 +02:00
Marek Benc 52910ded6c gnu: Add ots.
* gnu/packages/patches/ots-no-include-missing-file.patch: New file.
* gnu/packages/ots.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add ots.scm.
  (dist_patch_DATA): Add ots-no-include-missing-file.patch.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-09-09 13:40:04 +02:00
Marek Benc 1deac3440c gnu: Add Enchant.
* gnu/packages/enchant.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-09-09 13:34:22 +02:00
Marek Benc 9ffbe2b7d5 gnu: Add wv.
* gnu/packages/wv.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-09-09 11:58:35 +02:00
Marek Benc efa77baf26 gnu: Add libwmf.
* gnu/packages/image.scm (libwmf): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-09-09 11:48:44 +02:00
Marek Benc b005157c9b gnu: Add GNU FriBidi.
* gnu/packages/fribidi.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-09-09 11:41:55 +02:00
Kevin Lemonnier cf31157fb2 gnu: Add zsh.
* gnu/packages/zsh.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-09-09 09:50:19 +02:00
Ludovic Courtès 42d10464be linux-initrd: Store Linux modules in a normal store directory.
* gnu/system/linux-initrd.scm (expression->initrd): Remove #:linux and
  #:linux-modules parameters.  Remove call to
  'float-linux-module-directory'.
  (base-initrd): Add call to 'float-linux-module-directory'.  Use it in
  #:linux-modules argument in the gexp.  Remove #:linux and
  #:linux-modules arguments to 'expression->initrd'.
* gnu/build/linux-initrd.scm (build-initrd): Remove
  #:linux-module-directory parameter.  Don't create 'modules'
  sub-directory.
* gnu/build/linux-boot.scm (boot-system): Mentin that LINUX-MODULES is a
  list of absolute file names.  Don't prepend "/modules/" to
  LINUX-MODULES.
* doc/guix.texi (Initial RAM Disk): Adjust accordingly.
2014-09-08 23:47:29 +02:00
Ludovic Courtès df650fa84e linux-initrd: Remove #:to-copy argument of 'expression->initrd'.
* gnu/system/linux-initrd.scm (expression->initrd): Remove #:to-copy
  parameter.  Remove 'graph-files', and adjust #:references-graphs
  arguments to just list INIT.
  (base-initrd): Remove #:to-copy argument.
* doc/guix.texi (Initial RAM Disk): Adjust accordingly.
2014-09-08 23:47:28 +02:00
Ludovic Courtès 1621cf97aa linux-initrd: Move initrd creation code to (guix build linux-initrd).
* gnu/build/linux-initrd.scm (cache-compiled-file-name,
  compile-to-cache, build-initrd): New procedures.
* gnu/system/linux-initrd.scm (expression->initrd)[builder]: Remove code
  now moved above.  Use 'build-initrd'.
2014-09-08 23:47:28 +02:00
Ludovic Courtès 70608adb4a linux-initrd: Copy all the script's closure to the initrd.
* gnu/system/linux-initrd.scm (expression->initrd): Remove calls to
  'imported-modules' and 'compiled-modules'.  Use 'gexp->script' with
  EXP.  Add the result to TO-COPY.  Make /init a symlink to that script,
  and copy its closure into the "contents" directory.  Add fake
  /proc/self/exe symlink.
* gnu/build/linux-boot.scm (load-linux-module*): Add comment about mmap.
* gnu/system/vm.scm (system-qemu-image/shared-store-script): Add "-m
  256".  This turns out to be needed for initrds containing things like
  e2fsck and several modules; with the default of 128 MiB, loading
  libahci.ko may fail with -1.
2014-09-08 23:47:28 +02:00
Ludovic Courtès c2619e10ea gnu: Add GNU direvent.
* gnu/packages/admin.scm (direvent): New variable.
2014-09-08 23:47:28 +02:00
Ludovic Courtès c4492a16ea gnu: Add testdisk.
* gnu/packages/admin.scm (testdisk): New variable.
2014-09-08 23:47:28 +02:00
Ludovic Courtès 813caa0a66 gnu: youtube-dl: Update to 2014.09.06.
* gnu/packages/video.scm (youtube-dl): Update to 2014.09.06.
2014-09-08 23:47:28 +02:00
Alex Kost 91cc37a1e3 emacs: Improve key bindings for marking the packages.
Use "U" to upgrade the current package, "^" to upgrade all.

* emacs/guix-list.el: (guix-list-unmark): With prefix, mark all.
  (guix-package-list-mark-outputs): New procedure.
  (guix-package-list-mark-install, guix-package-list-mark-delete)
  (guix-package-list-mark-upgrade): Use it.
  (guix-package-list-mark-upgrades): New command.
* doc/emacs.texi (emacs List buffer): Update the manual accordingly.
2014-09-08 22:01:58 +04:00
Mark H Weaver da5538ef44 gnu: libunistring: Update to 0.9.4.
* gnu/packages/libunistring.scm (libunistring): Update to 0.9.4.
2014-09-08 12:40:28 -04:00
Ludovic Courtès db60b1d9ff gnu: Add tdb.
* gnu/packages/databases.scm (tdb): New variable.
2014-09-08 18:00:03 +02:00
Ludovic Courtès 5f96f303eb gnu: Consolidate databases in (gnu packages databases).
* gnu/packages/databases.scm: New file, with the contents of the
  following deleted files.
* gnu/packages/mysql.scm, gnu/packages/postgresql.scm,
  gnu/packages/recutils.scm, gnu/packages/sqlite.scm,
  gnu/packages/bdb.scm: Remove.
* gnu-system.am (GNU_SYSTEM_MODULES): Adjust accordingly.
* gnu/packages/apl.scm, gnu/packages/dc.scm, gnu/packages/games.scm,
  gnu/packages/gnunet.scm, gnu/packages/linux.scm, gnu/packages/mail.scm,
  gnu/packages/mpd.scm, gnu/packages/nvi.scm, gnu/packages/openldap.scm,
  gnu/packages/package-management.scm, gnu/packages/python.scm,
  gnu/packages/qt.scm, gnu/packages/rdf.scm,
  gnu/packages/version-control.scm: Adjust to new module name.
2014-09-08 17:48:57 +02:00
Ludovic Courtès 971863fb45 gnu: Remove extra import in (gnu packages admin).
* gnu/packages/admin.scm: Remove duplicate use of (gnu packages base).
2014-09-08 17:48:55 +02:00
Mark H Weaver 39ccbfad1c gnu: glibc: Update to 2.20.
* gnu/packages/patches/glibc-CVE-2014-5119.patch: Remove.
* gnu-system.am (dist_patch_DATA): Remove it.
* gnu/packages/base.scm (glibc): Update to 2.20.  Remove patch.
  Raise minimum linux version to 2.6.32.
2014-09-08 11:27:05 -04:00
Mark H Weaver e759c0a38c Merge branch 'master' into core-updates 2014-09-08 11:00:06 -04:00
Ludovic Courtès 4a4cbd0bdd gexp: 'gexp->script' returns a script that can easily be compiled.
* guix/gexp.scm (gexp->script): Produce an 'eval-when' form around
  assignments of %load-path and %load-compiled-path.
2014-09-08 00:03:38 +02:00
Ludovic Courtès 84da4ad4b0 linux-initrd: Build cpio archives without '--no-absolute-filenames'.
* gnu/build/linux-initrd.scm (write-cpio-archive): Remove
  '--no-absolute-filenames'.
2014-09-08 00:03:38 +02:00
Jason Self e46db7728d gnu: linux-libre: Update to 3.16.2.
* gnu/packages/linux.scm (linux-libre): Update to version 3.16.2.
2014-09-06 19:52:38 -07:00
Ludovic Courtès 49fa9381b8 linux-initrd: Populate the initrd's store with complete closures.
* gnu/system/linux-initrd.scm (expression->initrd): Add 'graph-files'.
  Use (guix build store-copy) and 'populate-store' instead of local
  hack.  Pass #:references-graphs to 'gexp->derivation'.
2014-09-06 23:42:56 +02:00
Ludovic Courtès 1456cff18f gnu: unionfs-fuse/static: Remove store references from the executable.
* gnu/packages/linux.scm (unionfs-fuse/static)[arguments]: Add #:phases.
2014-09-06 23:42:56 +02:00
Ludovic Courtès b53833b2ef gexp: Allow use of high-level objects in #:references-graphs.
* guix/gexp.scm (lower-reference-graphs): New procedure.
  (gexp->derivation)[graphs-file-names]: New procedure.
  Use 'lower-reference-graphs', and augment #:inputs argument as a
  function of #:references-graphs.
* doc/guix.texi (G-Expressions): Adjust 'gexp->derivation' documentation
  accordingly.
* tests/gexp.scm ("gexp->derivation, store copy"): Remove reference to
  TWO in BUILD-DRV.  Use TWO directly in #:references-graphs argument.
  ("gexp->derivation #:references-graphs"): New test.
* gnu/system/vm.scm (qemu-image): Remove variable 'graph'; use INPUTS as
  the #:references-graphs argument to
  'expression->derivation-in-linux-vm'.
2014-09-06 23:42:56 +02:00
Jason Self 108293c5ea gnu: linux-libre: Revert to 3.16.1.
* gnu/packages/linux.scm (linux-libre): Revert to version 3.16.1.
2014-09-06 09:33:41 -07:00
Alex Kost 8ed08c7602 emacs: Add a face for installed packages.
* emacs/guix-list.el (guix-package-list-installed): New face.
  (guix-package-list-get-name): Use it.
2014-09-06 20:21:21 +04:00
Jason Self 8dd09fad52 gnu: linux-libre: Update to 3.16.2.
* gnu/packages/linux.scm (linux-libre): Update to version 3.16.2.
2014-09-06 09:19:08 -07:00
David Thompson 9dd6078d3b gnu: Add python-sphinx.
* gnu/packages/python.scm (python-sphinx, python2-sphinx): New variables.
2014-09-05 23:31:20 -04:00
David Thompson fb35b7c088 gnu: Add python-pygments.
* gnu/packages/python.scm (python-pygments, python2-pygments): New variables.
2014-09-05 23:31:20 -04:00
David Thompson 3580ab8be2 gnu: Add python-docutils.
* gnu/packages/python.scm (python-docutils, python2-docutils): New variables.
2014-09-05 23:31:20 -04:00
David Thompson fe34f0d152 gnu: Add python-jinja2.
* gnu/packages/python.scm (python-jinja2, python2-jinja2): New variables.
2014-09-05 23:31:20 -04:00
David Thompson 8176d4d55b gnu: Add python-markupsafe.
* gnu/packages/python.scm (python-markupsafe, python2-markupsafe): New
  variables.
2014-09-05 23:31:20 -04:00
David Thompson 5731cae394 gnu: Add python-virtualenv.
* gnu/packages/python.scm (python-virtualenv, python2-virtualenv): New
  variables.
2014-09-05 23:31:20 -04:00
David Thompson ec5dbb5c30 gnu: Add python-itsdangerous.
* gnu/packages/python.scm (python-itsdangerous, python2-itsdangerous): New
  variables.
2014-09-05 23:31:20 -04:00
David Thompson 2cec1f6f56 gnu: Add python-oauthlib.
* gnu/packages/python.scm (python-oauthlib, python2-oauthlib): New variables.
2014-09-05 23:31:20 -04:00
David Thompson 6d45fef43e gnu: Add python-pyjwt.
* gnu/packages/python.scm (python-pyjwt, python2-pyjwt): New variables.
2014-09-05 23:31:20 -04:00
David Thompson 041358fb01 gnu: Add python-discover.
* gnu/packages/python.scm (python-discover, python2-discover): New variables.
2014-09-05 23:31:20 -04:00
David Thompson 243a009ada gnu: Add python-coverage.
* gnu/packages/python.scm (python-coverage, python2-coverage): New variables.
2014-09-05 23:31:20 -04:00
David Thompson b24a0c00e4 gnu: Add python-testrepository.
* gnu/packages/python.scm (python-testrepository, python2-testrepository): New
  variables.
2014-09-05 23:31:20 -04:00
David Thompson cd49454b7b gnu: Add python-fixtures.
* gnu/packages/python.scm (python-fixtures, python2-fixtures): New variables.
2014-09-05 23:31:20 -04:00
David Thompson 070ab0588c gnu: Add python-subunit.
* gnu/packages/python.scm (python-subunit, python2-subunit): New variables.
2014-09-05 23:31:20 -04:00
David Thompson dac79ecc51 gnu: Add python-testresources.
* gnu/packages/python.scm (python-testresources, python2-testresources): New
  variables.
2014-09-05 23:31:20 -04:00
David Thompson 5bf3afea68 gnu: Add python-testscenarios.
* gnu/packages/python.scm (python-testscenarios, python2-testscenarios): New
  variables.
2014-09-05 23:31:20 -04:00
David Thompson d8fa80e13f gnu: Add python-testtools.
* gnu/packages/python.scm (python-testtools, python2-testtools): New
  variables.
2014-09-05 23:31:20 -04:00
David Thompson 84d2401728 gnu: Add python-scripttest.
* gnu/packages/python.scm (python-scriptest, python2-scripttest): New
  variables.
2014-09-05 23:31:20 -04:00
David Thompson 855d4761a5 gnu: Add python-pytest.
* gnu/packages/python.scm (python-pytest, python2-pytest): New variables.
2014-09-05 23:31:20 -04:00
David Thompson 542ad60fbc gnu: Add python-py.
* gnu/packages/python.scm (python-py, python2-py): New variables.
2014-09-05 23:31:20 -04:00
David Thompson 6cd9c35637 gnu: Add python-unittest2.
* gnu/packages/python.scm (python-unittest2, python2-unittest2): New
  variables.
2014-09-05 23:31:20 -04:00
David Thompson 4435427e6d gnu: Add python-nose.
* gnu/packages/python.scm (python-nose, python2-nose): New variables.
2014-09-05 23:31:20 -04:00
David Thompson c15a5c0eac gnu: Add python-extras.
* gnu/packages/python.scm (python-extras, python2-extras): New variables.
2014-09-05 23:31:20 -04:00
David Thompson 56ea0efd72 gnu: Add python-mimeparse.
* gnu/packages/python.scm (python-mimeparse, python2-mimeparse): New
  variables.
2014-09-05 23:31:20 -04:00
David Thompson 850189b839 gnu: Add python-unidecode.
* gnu/packages/python.scm (python-unidecode, python2-unidecode): New
  variables.
2014-09-05 23:31:20 -04:00
David Thompson 864b5211cd gnu: Add python-jsonschema.
* gnu/packages/python.scm (python-jsonschema, python2-jsonschema): New
  variables.
2014-09-05 23:31:20 -04:00
David Thompson e6cfbd364a gnu: Add python2-requests.
* gnu/packages/python.scm (python2-requests): New variable.
2014-09-05 23:31:20 -04:00
David Thompson 3a1f9a68e5 gnu: Add python-certifi.
* gnu/packages/python.scm (python-certifi, python2-certifi): New variables.
2014-09-05 23:31:20 -04:00
David Thompson d5f89b22d8 gnu: Add python-pyld.
* gnu/packages/python.scm (python-pyld, python2-pyld): New variables.
2014-09-05 23:31:20 -04:00
David Thompson c7303d3cef gnu: Add python-exif-read.
* gnu/packages/python.scm (python-exif-read, python2-exif-read): New
  variables.
2014-09-05 23:31:20 -04:00
Ludovic Courtès b50c5b7418 pull: Add a compilation progress report.
* guix/build/pull.scm (report-build-progress): New procedure.
  (p-for-each): Add #:progress parameter.
  [loop]: Keep track of the number of completed processes.  Tail-call
  PROGRESS at each loop iteration.
  (build-guix): Add #:debug-port parameter.  Use it for verbose
  messages.  Change 'tar' flags to 'xf'.  Around 'compile-file' call,
  bind CURRENT-WARNING-PORT to DEBUG-PORT.
* guix/scripts/pull.scm (unpack): Add #:verbose? parameter.
  [builder]: Pass #:debug-port to 'build-guix'.
  (guix-pull): Leave CURRENT-BUILD-OUTPUT-PORT unchanged.  Pass
  #:verbose? to 'unpack'.
2014-09-05 23:11:04 +02:00
Eric Bavier 1145938496 utils: Clean trailing whitespace at end of SHELL
* guix/build/utils.scm (patch-makefile-SHELL): Remove trailing whitespace.
2014-09-05 00:02:19 -05:00
Ludovic Courtès 6fd1a79674 vm: Move store copy handling to (guix build store-copy).
* gnu/build/vm.scm (read-reference-graph, populate-store): Move to...
* guix/build/store-copy.scm: ... here.  New file.
* Makefile.am (MODULES): Add it.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Adjust default
  #:modules values accordingly.
* tests/gexp.scm ("gexp->derivation, store copy"): New test.
2014-09-04 23:24:54 +02:00
Ludovic Courtès b21a1c5a18 linux-initrd: Move Linux module tree flattening to another derivation.
* gnu/system/linux-initrd.scm (expression->initrd)[string->regexp]:
  Remove.
  Use 'flat-linux-module-directory'.  Remove the equivalent logic from
  'builder'.
  (flat-linux-module-directory): New procedure.
2014-09-04 22:51:04 +02:00
Ludovic Courtès 39c4563aea profiles: Use a real arrow to denote upgrades in ASCII.
Suggested by Alex Kost.

* guix/profiles.scm (right-arrow): Fall back to "->".
* tests/profiles.scm ("manifest-show-transaction"): Adjust accordingly.
2014-09-04 21:35:57 +02:00
Alex Kost 457f60fa06 Add Emacs user interface.
* configure.ac (emacsuidir): New variable.
  (AC_CONFIG_FILES): Add 'emacs/guix-init.el', 'emacs/guix-helper.scm'.
* Makefile.am: Include 'emacs.am'.
* emacs.am: New file.
* doc/emacs.texi: New file.
* doc/guix.texi: Include 'emacs.texi'.
* emacs/guix-backend.el: New file.
* emacs/guix-base.el: New file.
* emacs/guix-helper.scm.in: New file.
* emacs/guix-history.el: New file.
* emacs/guix-info.el: New file.
* emacs/guix-init.el.in: New file.
* emacs/guix-list.el: New file.
* emacs/guix-main.scm: New file.
* emacs/guix-utils.el: New file.
* emacs/guix.el: New file.
2014-09-03 23:50:35 +04:00
Ludovic Courtès a423555d3c gnu: datamash: Fix license.
* gnu/packages/datamash.scm (datamash)[license]: Change to GPL3+.
2014-09-03 15:43:07 +02:00
Ludovic Courtès fbb3555809 linux-initrd: Factorize cpio archive creation.
* gnu/build/linux-initrd.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
* gnu/system/linux-initrd.scm (expression->initrd): Use (gnu build
  linux-initrd) and 'write-cpio-archive' instead of the inlined code.
2014-09-03 15:43:07 +02:00
Ludovic Courtès e2f4b305d0 Move part of (gnu build linux-boot) to (gnu build file-systems).
* gnu/build/linux-boot.scm (%ext2-endianness, %ext2-sblock-magic,
  %ext2-sblock-creator-os, %ext2-sblock-uuid, %ext2-sblock-volume-name,
  read-ext2-superblock, ext2-superblock-uuid,
  ext2-superblock-volume-name, disk-partitions,
  partition-label-predicate, find-partition-by-label,
  canonicalize-device-spec, MS_RDONLY, MS_NOSUID, MS_NODEV, MS_NOEXEC,
  MS_BIND, MS_MOVE, bind-mount, check-file-system,
  mount-flags->bit-mask, mount-file-system): Move to...
* gnu/build/file-systems.scm: ... here.  New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
* gnu/services/base.scm: Use (gnu build file-systems).
* gnu/services/dmd.scm (dmd-configuration-file): Likewise.
* gnu/system.scm (operating-system-activation-script): Likewise.
* gnu/system/linux-initrd.scm (base-initrd): Likewise.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Likewise.
2014-09-03 15:43:07 +02:00
Ludovic Courtès 8a9e21d1f7 Rename (gnu build linux-initrd) to (gnu build linux-boot).
* gnu/build/linux-initrd.scm: Rename to...
* gnu/build/linux-boot.scm: ... this.
* gnu-system.am (GNU_SYSTEM_MODULES): Adjust accordingly.
* gnu/build/activation.scm, gnu/build/vm.scm, gnu/services/base.scm,
  gnu/services/dmd.scm, gnu/system.scm, gnu/system/linux-initrd.scm,
  gnu/system/vm.scm: Adjust accordingly.
2014-09-03 15:43:07 +02:00
Ludovic Courtès 548f7a8fa2 Move operating system helpers from (guix build …) to (gnu build …).
* guix/build/activation.scm, guix/build/install.scm,
  guix/build/linux-initrd.scm, guix/build/vm.scm: Move to...
* gnu/build: ... here.
* Makefile.am (MODULES): Remove the above guix/build/ files.
* gnu-system.am (GNU_SYSTEM_MODULES): Add the above gnu/build/ files
  here.
* gnu/services/base.scm, gnu/services/dmd.scm, gnu/system.scm,
  gnu/system/linux-initrd.scm, gnu/system/vm.scm,
  guix/scripts/system.scm: Adjust to the new module names.
2014-09-03 15:43:07 +02:00
Ludovic Courtès 141360b5b2 doc: Mention 'guix lint' and '--list-dependent' in 'HACKING'.
* HACKING (Submitting Patches): Mention 'guix lint' and 'guix refresh
  --list-dependent'.
2014-09-03 15:43:07 +02:00
Ludovic Courtès b002e9d08e guix lint: Remove "guix lint: " prefix from warnings.
This allows editors to parse warnings correctly.

* guix/scripts/lint.scm (emit-warning): Use 'format' instead of
  'warning', to avoid the "guix lint: " prefix in messages.
* tests/lint.scm (call-with-warnings): Indent.
2014-09-03 15:43:07 +02:00
David Thompson 52bd0810a8 gnu: Add postgresql.
* gnu/packages/postgresql.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-09-03 07:47:47 -04:00
Cyril Roelandt b4f5e0e87c scripts: add guix lint
* guix/scripts/lint.scm: New file. Defines a 'lint' tool for Guix packages.
* tests/lint.scm: New file.
* Makefile.am (MODULES, SCM_TESTS): Add them.
* po/guix/Makevars: Update appropriately.
* po/guix/POTFILES.in: Update appropriately.
* doc/guix.texi: Document "guix lint".
2014-09-03 02:07:07 +02:00
Cyril Roelandt 5e3b388b51 Move specification->package to gnu/packages.scm.
* guix/scripts/build.scm (specification->package): Move from here...
* gnu/packages.scm: ... to here.
2014-09-03 02:07:07 +02:00
Ludovic Courtès 3af2d27eb3 daemon: Do not use 'vfork'.
This fixes random EBADF errors in the daemon on ancient Linux kernels
such as version 2.6.32.

* config-daemon.ac: Remove detection of 'vfork'.
2014-09-02 22:52:45 +02:00
Marek Benc bf2a56f8ec gnu: Add nvi.
* gnu/packages/nvi.scm: New file.
* gnu/packages/patches/nvi-assume-preserve-path.patch: New file.
* gnu-system.am: Add them.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-09-02 21:32:30 +02:00
Ludovic Courtès 9a91476431 profiles: Report version numbers in a separate column.
* guix/profiles.scm (manifest-show-transaction)[package-strings,
  upgrade-strings]: Show version number in separate column.  Show OUTPUT
  in first column, and only when it's different from "out".
2014-09-02 21:25:57 +02:00
Ludovic Courtès ef8993e2dc profiles: Report the old and new version number in upgrades.
* guix/profiles.scm (manifest-lookup): New procedure.
  (manifest-installed?): Use it.
  (manifest-transaction-effects): Return a pair of entries for upgrades.
  (right-arrow): New procedure.
  (manifest-show-transaction)[upgrade-string, →]: New variables.
  Report upgrades using 'upgrade-string'.
* tests/profiles.scm ("manifest-show-transaction"): New test.
  ("manifest-transaction-effects"): Match UPGRADE against a pair.
2014-09-02 21:12:59 +02:00
Ludovic Courtès fa747b27fc doc: Update "Installing Guix from Guix".
* README: Make 'guix package' command line more readable.  Mention
  --localstatedir.
2014-09-02 17:44:56 +02:00
Ludovic Courtès 8b8ea80781 gnu: ucommon: Update to 6.1.10.
* gnu/packages/telephony.scm (ucommon): Update to 6.1.10.
2014-09-02 00:01:38 +02:00
Ludovic Courtès 86da684c3d gnu: libtasn1: Update to 4.1.
* gnu/packages/gnutls.scm (libtasn1): Update to 4.1.
2014-09-02 00:01:11 +02:00
Ludovic Courtès f0214ece31 gnu: datamash: Update to 1.0.6.
* gnu/packages/datamash.scm (datamash): Update to 1.0.6.
2014-09-01 23:57:05 +02:00
Ludovic Courtès 7239e41196 gnu: parallel: Update to 20140822.
* gnu/packages/parallel.scm (parallel): Update to 20140822.
2014-09-01 23:56:01 +02:00
Ludovic Courtès 5c97df3ae6 gnu: help2man: Update to 1.46.1.
* gnu/packages/man.scm (help2man): Update to 1.46.1.
2014-09-01 23:55:23 +02:00
Ludovic Courtès ad14d9e79d doc: Clarify system installation and configuration details.
Reported by leth on #guix.

* doc/guix.texi (System Installation): Suggest running 'reboot' instead
  of 'umount /mnt'.
  (Initial RAM Disk): Add xref to SRFI-26.
2014-09-01 23:25:44 +02:00
Ludovic Courtès e23f14fe0c sync-with-upstream: Generate 'nix/AUTHORS'.
* nix/sync-with-upstream: Use 'git shortlog' to generate nix/AUTHORS.
2014-09-01 23:00:42 +02:00
Ludovic Courtès deae6e9e6f Thank Frederico. 2014-08-31 22:20:20 +02:00
Ludovic Courtès d474d5d0c6 gnu: gcc-toolchain: Inherit GCC's search path specifications.
Reported by Federico Beffa <beffa@ieee.org>.

* gnu/packages/commencement.scm (gcc-toolchain): Add
  'native-search-paths' and 'search-paths' fields.
2014-08-31 22:18:47 +02:00
Ludovic Courtès 4720f524fc guix package: Fix search path lookup when an obsolete version is installed.
Before that, 'guix package --search-paths' would not work if, say,
'foo-0.2' is installed but the distro provides 'foo-0.3'.

* guix/scripts/package.scm (search-path-environment-variables)[manifest-entry->package]:
  Handle the case where 'find-best-packages-by-name' returns '().
2014-08-31 22:17:56 +02:00
Ludovic Courtès ab3893d713 daemon: Rename '--disable-store-optimization' to '--disable-deduplication'.
* nix/nix-daemon/guix-daemon.cc (GUIX_OPT_DISABLE_STORE_OPTIMIZATION):
  Rename to...
  (GUIX_OPT_DISABLE_DEDUPLICATION): ... this.  Adjust user accordingly.
  (options): Add "disable-deduplication".  Make
  "disable-store-optimization" a hidden alias.
* doc/guix.texi (Invoking guix-daemon): Adjust to new option name.  Add
  index entry.  Improve description.
2014-08-31 14:44:40 +02:00
Ludovic Courtès 44d43c7a85 daemon: Really enable automatic deduplication by default.
* nix/nix-daemon/guix-daemon.cc (main): Set 'autoStoreOptimise' to
  true.  Add 'printMsg' call.
* tests/derivations.scm ("identical files are deduplicated"): New test.
2014-08-31 14:44:34 +02:00
Ludovic Courtès 79601521fc profiles: Compute transaction effects in a functional way.
* guix/profiles.scm (manifest-transaction-effects): New procedure.
  (manifest-show-transaction): Use it instead of locally computing it.
* tests/profiles.scm (glibc): New variable.
  ("manifest-transaction-effects"): New test.
2014-08-30 21:52:32 +02:00
Mark H Weaver 6646747c02 gnu: gawk: Patch /usr/bin/file in extension/configure on MIPS.
* gnu/packages/gawk.scm (gawk): When building for MIPS, patch /usr/bin/file in
  extension/configure.
2014-08-29 18:31:57 -04:00
Ludovic Courtès b9a31d90e9 offload: Ignore EEXIST when registering a .drv as a GC root.
Fixes <http://bugs.gnu.org/18115>.
Reported by Mark H Weaver <mhw@netris.org>.

* guix/scripts/offload.scm (register-gc-root)[script]: Wrap 'symlink'
  call in "catch 'system-error", and ignore EEXIST errors.
2014-08-29 14:53:15 +02:00
Ludovic Courtès b1e48f222b offload: Ignore unreachable machines.
Fixes <http://bugs.gnu.org/18070>.
Reported by Andreas Enge <andreas@enge.fr>.

* guix/scripts/offload.scm (remote-pipe): Augment docstring.
  (machine-load): Return +inf.0 instead of 1 if MACHINE does not respond
  or responds badly.
2014-08-29 14:37:58 +02:00
Ludovic Courtès 00b7776c0d gnu: Add nss-mdns.
* gnu/packages/avahi.scm (nss-mdns): New variable.
2014-08-29 14:13:26 +02:00
Mark H Weaver b5ef82e064 gnu: Add missing import to (gnu packages base).
* gnu/packages/base.scm: Import (gnu packages base).
2014-08-28 15:34:17 -04:00
Mark H Weaver c00a9fbfef Merge branch 'master' into core-updates
Conflicts:
	gnu/packages/base.scm
2014-08-28 14:22:15 -04:00
Mark H Weaver dd16424466 doc: %final-inputs is now in (gnu packages commencement).
* doc/guix.texi (Bootstrapping): Adjust the text to reflect that
  '%final-inputs' is now in (gnu packages commencement).
2014-08-28 13:59:49 -04:00
Mark H Weaver 9e9cb0c7ba hydra: Adjust to (gnu packages commencement) split from (gnu packages base).
* build-aux/hydra/gnu-system.scm: Import (gnu packages commencement).
2014-08-28 13:57:08 -04:00
John Darrington ba5324c30e gnu: Add perl-archive-zip.
* gnu/packages/perl.scm (perl-archive-zip): New variable.
2014-08-28 18:56:16 +02:00
John Darrington b1da9f82a8 gnu: Add bison-2.7
* gnu/packages/bison.scm (bison-2.7): New variable.
  Bison 3.x and 2.x are incompatible.  Some programs require 2.x
2014-08-28 18:56:13 +02:00
Eric Bavier 83291101c3 utils: Preserve makefile shell arguments during patch.
* guix/build/utils.scm (patch-makefile-SHELL): Preserve shell arguments.
2014-08-28 11:16:19 -05:00
Ludovic Courtès c23372131d gnu: libwebsockets: Update to 1.3.
* gnu/packages/web.scm (libwebsockets): Update to 1.3.  Switch to
  CMAKE-BUILD-SYSTEM.  Remove #:phases parameter and add #:tests?.
  Remove AUTOCONF, AUTOMAKE, and LIBTOOL from 'native-inputs'.
2014-08-28 11:38:12 +02:00
Ludovic Courtès 12507a3ee6 gnu: Add Guile-Charting.
* gnu/packages/guile.scm (guile-charting): New variable.
2014-08-28 10:09:28 +02:00
Ludovic Courtès 49710cea4c gnu: guile-cairo: Propagate Cairo.
* gnu/packages/gtk.scm (guile-cairo): Move CAIRO to 'propagated-inputs'.
2014-08-28 10:06:48 +02:00
Ludovic Courtès bdb36958fb gnu: Split (gnu packages base), adding (gnu packages commencement).
* gnu/packages/base.scm (gnu-make-boot0, diffutils-boot0,
  findutils-boot0, %boot0-inputs, nix-system->gnu-triplet, boot-triplet,
  binutils-boot0, gcc-boot0, perl-boot0, linux-libre-headers-boot0,
  texinfo-boot0, %boot1-inputs, glibc-final-with-bootstrap-bash,
  cross-gcc-wrapper, static-bash-for-glibc, glibc-final,
  gcc-boot0-wrapped, %boot2-inputs, binutils-final, libstdc++,
  gcc-final, ld-wrapper-boot3, %boot3-inputs, bash-final, %boot4-inputs,
  guile-final, gnu-make-final, ld-wrapper, coreutils-final, grep-final,
  %boot5-inputs, %final-inputs, canonical-package, gcc-toolchain,
  gcc-toolchain-4.8, gcc-toolchain-4.9): Move to...
* gnu/packages/commencement.scm: ... here.  New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
* build-aux/check-final-inputs-self-contained.scm: Adjust accordingly.
* gnu/packages/cross-base.scm: Likewise.
* gnu/packages/make-bootstrap.scm: Likewise.
* guix/build-system/cmake.scm (cmake-build): Likewise.
* guix/build-system/gnu.scm (standard-packages, gnu-build,
  gnu-cross-build): Likewise.
* guix/build-system/perl.scm (perl-build): Likewise.
* guix/build-system/python.scm (python-build): Likewise.
* guix/build-system/trivial.scm (guile-for-build): Likewise.
* guix/download.scm (url-fetch): Likewise.
* guix/gexp.scm (default-guile): Likewise.
* guix/git-download.scm (git-fetch): Likewise.
* guix/monads.scm (run-with-store): Likewise.
* guix/packages.scm (default-guile): Likewise.
* guix/scripts/package.scm (guix-package): Likewise.
* guix/scripts/refresh.scm: Likewise.
* guix/svn-download.scm (svn-fetch): Likewise.
* tests/builders.scm (%bootstrap-inputs, %bootstrap-search-paths):
  Likewise.
* tests/packages.scm ("GNU Make, bootstrap"): Likewise.
* tests/guix-package.sh: Likewise.
* gnu/services/base.scm: Use 'canonical-package' instead of xxx-final.
* gnu/services/xorg.scm: Likewise.
* gnu/system/vm.scm: Likewise.
* guix/scripts/pull.scm (guix-pull): Likewise.
2014-08-28 09:21:54 +02:00
Ludovic Courtès 5c3eb14e07 linux-initrd: Wait a bit longer for partitions to appear.
Reported by Sveltana on #guix.

* guix/build/linux-initrd.scm (canonicalize-device-spec): Increase
  MAX-TRIALS.  Add "waiting for partition" 'format' call.
2014-08-28 09:21:21 +02:00
Ludovic Courtès 2f0556ae5e profiles: Add gzip to $PATH before invoking 'install-info'.
* guix/profiles.scm (info-dir-file)[gzip]: New variable.
  [build]: Add 'setenv' call.
2014-08-28 09:21:06 +02:00
Andreas Enge 384de55233 build-system/perl: Add handling of flags for parallel build and testing.
* guix/build-system/perl.scm (perl-build): Add support for variables
    parallel-build? and parallel-tests?.
* guix/build-system/gnu.scm (gnu-build): Add a line break for clarity.
2014-08-27 14:29:18 +02:00
Alex Kost 18311966d1 gnu: Add unclutter.
* gnu/packages/unclutter.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-08-27 15:52:25 +04:00
Ludovic Courtès af9142dce0 tests: Fix typo in guix-build.sh.
* tests/guix-build.sh: Refer to the '%bootstrap' variables from (gnu
  packages bootstrap), not (gnu packages base).
2014-08-27 00:27:12 +02:00
Mark H Weaver f5beb0caf3 gnu: glibc: Fix CVE-2014-5119.
* gnu/packages/patches/glibc-CVE-2014-5119.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/base.scm (glibc): Add the patch.
2014-08-26 16:04:16 -04:00
John Darrington d17ef35620 doc: Replace /nix/store with /gnu/store in README.
* README update anachronistic reference to /nix/store
2014-08-26 20:00:40 +02:00
Mark H Weaver 48abd13021 gnu: file: Update to 5.19; add fix for CVE-2014-3587.
* gnu/packages/patches/file-CVE-2014-3587.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/file.scm (file): Update to 5.19.  Add patch.
2014-08-26 12:05:37 -04:00
Mark H Weaver 5cc4517590 Merge branch 'master' into core-updates 2014-08-26 12:03:13 -04:00
Ludovic Courtès c2815c0f46 profiles: Handle packages without a 'share/info' directory.
Reported by Mark H. Weaver.

* guix/profiles.scm (info-dir-file): Handle the case where 'scandir'
  returns #f.
2014-08-25 10:27:37 +02:00
Alex Kost 6b3342af59 build: Fix typo.
* pre-inst-env.in: Fix typo in commentary.
2014-08-25 10:46:54 +04:00
Ludovic Courtès c6df09941b guix-register: By default, attempt to deduplicate registered items.
* nix/guix-register/guix-register.cc (GUIX_OPT_DEDUPLICATE): New macro.
  (options): Add --no-deduplication.
  (deduplication): New variable.
  (parse_opt): Handle GUIX_OPT_DEDUPLICATE.
  (register_validity): Add 'optimize' parameter and honor it.
  (main): Move 'store' instanatiation after 'settings.nixStore'
  assignment.
* tests/guix-register.sh: Add test for deduplication.
* guix/nar.scm (finalize-store-file): Update comment above
  'register-path' call.
2014-08-25 00:16:49 +02:00
Ludovic Courtès bcac69f674 gnu: libgcrypt: Update to 1.6.2.
* gnu/packages/gnupg.scm (libgcrypt): Update to 1.6.2.
2014-08-24 14:38:07 +02:00
Mark H Weaver bc0506f5b7 gnu: libgcrypt: Update to 1.6.2.
* gnu/packages/gnupg.scm (libgcrypt): Update to 1.6.2.
2014-08-23 20:48:28 -04:00
Mark H Weaver c198872b99 gnu: Rely on 'file' implicit input and 'patch-usr-bin-file'.
* gnu/packages/admin.scm (sudo):
* gnu/packages/gawk.scm (gawk): Remove workaround on MIPS.

* gnu/packages/mcrypt.scm (mcrypt, libmhash):
* gnu/packages/file.scm (file): Remove 'file' from native-inputs.

* gnu/packages/mc.scm (mc):
* gnu/packages/pretty-print.scm (a2ps, trueprint, source-highlight):
* gnu/packages/image.scm (libtiff): Remove 'file' from native-inputs.
  Remove 'patch-configure' phase.
2014-08-23 20:48:21 -04:00
Mark H Weaver 8a0576f175 gnu-build-system: Add 'patch-usr-bin-file' to %standard-phases.
* guix/build/gnu-build-system.scm (patch-usr-bin-file): New procedure.
  (%standard-phases): Add it.
2014-08-23 20:48:18 -04:00
Mark H Weaver 8f5708c1d8 gnu: bootstrap: Add 'file' to %boot0-inputs and %final-inputs.
* gnu/packages/base.scm (file-boot0): New variable.
  (%boot0-inputs): Add 'file-boot0'.
  (%final-inputs): Add 'file' to list of packages to 'finalize'.
2014-08-23 20:48:12 -04:00
Mark H Weaver ce3e35ed6a Merge branch 'master' into core-updates 2014-08-23 20:43:51 -04:00
Mark H Weaver f0dafadcfc gnu: libgc-7.2: Update to 7.2f.
* gnu/packages/bdw-gc.scm (libgc-7.2): Update to 7.2f.
2014-08-23 20:34:23 -04:00
Mark H Weaver 460f97f8fd gnu: libgcrypt-1.5: Update to 1.5.4.
* gnu/packages/gnupg.scm (libgcrypt-1.5): Update to 1.5.4.
2014-08-23 20:34:17 -04:00
Ludovic Courtès bc67269487 svn-download: Rewrite using gexps.
* guix/svn-download.scm (subversion-package): New procedure.
  (svn-fetch): Use it.  Remove 'svn-for-build'.  Use a gexp and
  'gexp->derivation'.
2014-08-23 22:58:15 +02:00
Ludovic Courtès 6119ebf194 git-download: Rewrite using gexps.
* guix/git-download.scm (git-package): New procedure.
  (git-fetch): Use it.  Remove 'git-for-build'.
  Use a gexp and 'gexp->derivation'.
* guix/download.scm (gnutls-package): Fix docstring.
2014-08-23 22:58:09 +02:00
Ludovic Courtès c1bc358f29 Factorize test suite support in (guix tests).
* guix/tests.scm: New file.
* Makefile.am (noinst_DATA): New variable.
  (GOBJECTS): Add guix/tests.go.
* tests/builders.scm (%store): Use 'open-connection-for-tests'
  from (guix tests).
* tests/derivations.scm: Likewise.
* tests/monads.scm: Likewise.
* tests/packages.scm: Likewise.
* tests/profiles.scm: Likewise.
* tests/union.scm: Likewise.
* tests/gexp.scm: Likewise.
  (guile-for-build): Remove.  Use (%guile-for-build) instead.
* tests/nar.scm (make-random-bytevector, %seed, random-text): Remove.
  (populate-file): Change 'make-random-bytevector' to 'random-bytevector'.
  Use (guix tests).
* tests/store.scm (%seed, random-text): Remove.
  Use (guix tests).
2014-08-23 22:33:04 +02:00
Ludovic Courtès 90a063f4ca Thank Brandon. 2014-08-23 22:33:03 +02:00
Ludovic Courtès 79ee406d51 profiles: Produce a top-level Info 'dir' file.
Fixes <http://bugs.gnu.org/18305>.
Reported by Brandon Invergo <brandon@gnu.org>.

* guix/profiles.scm (manifest-inputs, info-dir-file): New procedures.
  (profile-derivation): Use them.  Add #:info-dir? parameter and honor
  it.
* guix/scripts/package.scm (guix-package): Call 'profile-derivation'
  with #:info-dir? #f when the 'bootstrap? option is set.
* tests/profiles.scm ("profile-derivation"): Pass #:info-dir? #f.
2014-08-23 22:33:03 +02:00
Alex Kost 6b74bb0ae3 profiles: Report about upgrades.
* guix/profiles.scm (manifest-show-transaction): Report about upgrades.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-08-23 22:33:03 +02:00
Mark H Weaver fa5731baab Revert "gnu: Add 'file' as a native-input on MIPS for some packages."
This reverts commit c3114b7567.
2014-08-21 21:49:36 -04:00
Mark H Weaver c3114b7567 gnu: Add 'file' as a native-input on MIPS for some packages.
* gnu/packages/admin.scm (sudo):
  gnu/packages/gawk.scm (gawk): Add 'file' as a native input on MIPS.
  Remove earlier workaround on MIPS.

* gnu/packages/libffi.scm (libffi):
  gnu/packages/bdw-gc.scm (libatomic-ops, libgc): Add 'file' as a
  native input on MIPS.
2014-08-20 12:16:13 -04:00
Jason Self cc69516cdd gnu: ffmpeg: Update to 2.3.3.
* gnu/packages/video.scm (ffmpeg): Update to version 2.3.3.
2014-08-20 09:06:25 -07:00
Alex Kost 4ea444198d Move 'check-package-freshness' from 'guix package' to 'packages'.
* guix/scripts/package.scm (%sigint-prompt, call-with-sigint-handler)
  (waiting, ftp-open*, check-package-freshness): Move to...
* gnu/packages.scm: ... here.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-08-20 10:55:29 +02:00
Mark H Weaver 06a70dbec1 gnu: gnutls: Update to 3.2.16.
* gnu/packages/gnutls.scm (gnutls): Update to 3.2.16.  Remove
  -DENABLE_RSA_EXPORT workaround.
2014-08-20 04:06:23 -04:00
Mark H Weaver 647cfda83b Merge branch 'master' into core-updates 2014-08-20 03:17:56 -04:00
Mark H Weaver cba95006a6 gnu: guile-2.0: Make 'bash' an input unconditionally.
* gnu/packages/guile.scm (guile-2.0): Make 'bash' an input
  unconditionally.
2014-08-20 01:44:50 -04:00
Mark H Weaver 785c33e3af gnu: libffi: Update to 3.1.
* gnu/packages/patches/libffi-mips-n32-fix.patch: Remove.
* gnu-system.am (dist_patch_DATA): Remove it.
* gnu/packages/libffi.scm (libffi): Update to 3.1.  Remove patch.
2014-08-20 01:43:05 -04:00
Mark H Weaver a23276cd8b gnu: libgc: Update to 7.4.2.
* gnu/packages/bdw-gc.scm (libgc): Update to 7.4.2.
2014-08-20 01:30:51 -04:00
Mark H Weaver 8174e9b7ae gnu: libatomic-ops: Update to 7.4.2.
* gnu/packages/bdw-gc.scm (libatomic-ops): Update to 7.4.2.
2014-08-20 01:29:42 -04:00
Alex Kost b211a66163 packages: Remove dead code.
* gnu/packages.scm (_): Remove.
  Remove an extra space.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-08-19 23:07:48 +02:00
Alex Kost 89caec6920 guix package: Use 'manifest-transaction'.
* guix/scripts/package.scm (guix-package)[process-actions]: Use
  'manifest-transaction' instead of the equivalent code.
  (show-what-to-remove/install): Remove.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-08-19 22:58:22 +02:00
Alex Kost 343745c80a profiles: Add 'manifest-transaction'.
* guix/profiles.scm (<manifest-transaction>): New record-type.
  (manifest-perform-transaction): New procedure.
  (manifest-show-transaction): New procedure.
* tests/profiles.scm ("manifest-perform-transaction"): New test.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2014-08-19 22:55:22 +02:00
Ludovic Courtès 667b250846 gexp: Add 'ungexp-native' and 'ungexp-native-splicing'.
* guix/gexp.scm (<gexp>)[natives]: New field.
  (write-gexp): Use both 'gexp-references' and
  'gexp-native-references'.
  (gexp->derivation): Use both 'gexp-inputs' and 'gexp-native-inputs',
  and append them.
  (gexp-inputs): Add 'references' parameter and honor it.
  (gexp-native-inputs): New procedure.
  (gexp->sexp)[reference->sexp]: Add 'native?' parameter and honor it.
  Use it, and use 'gexp-native-references'.
  (gexp)[collect-native-escapes]: New procedure.
  [escape->ref]: Handle 'ungexp-native' and 'ungexp-native-splicing'.
  [substitute-ungexp, substitute-ungexp-splicing]: New procedures.
  [substitute-references]: Use them, and handle 'ungexp-native' and
  'ungexp-native-splicing'.
  Adjust generated 'make-gexp' call to provide both normal references
  and native references.
  [read-ungexp]: Support 'ungexp-native' and
  'ungexp-native-splicing'.
  Add reader extension for #+.
* tests/gexp.scm (gexp-native-inputs): New procedure.
  (gexp->sexp*): Add 'target' parameter.
  ("ungexp + ungexp-native",
  "input list + ungexp-native",
  "input list splicing + ungexp-native-splicing",
  "gexp->derivation, ungexp-native",
  "gexp->derivation, ungexp + ungexp-native"): New tests.
  ("sugar"): Add tests for #+ and #+@.
* doc/guix.texi (G-Expressions): Document 'ungexp-native' et al.
2014-08-18 15:01:58 +02:00
Ludovic Courtès 68a61e9ffb gexp: Add #:target parameter to 'gexp->derivation'.
* guix/gexp.scm (lower-inputs): Add #:system and #:target.  Use
  'package->cross-derivation' when TARGET is true.  Honor SYSTEM.
  (gexp->derivation): Add #:target argument.  Pass SYSTEM and TARGET to
  'lower-inputs' and 'gexp->sexp'.
  (gexp->sexp): Add #:system and #:target.  Pass them in recursive call
  and to 'package-file'.
* tests/gexp.scm (gexp->sexp*): Add 'system' and 'target' parameters.
  ("gexp->derivation, cross-compilation"): New test.
2014-08-17 21:20:11 +02:00
Ludovic Courtès c90ddc8f81 monads: 'package-file' uses '%current-system' at '>>=' time.
* guix/monads.scm (package-file): Leave #:system to #f by default.
* tests/monads.scm ("package-file, default system"): New test.
2014-08-17 21:08:06 +02:00
Ludovic Courtès 4231f05bbc monads: Add 'package->cross-derivation' and #:target for 'package-file'.
* guix/monads.scm (package-file): Add #:target keyword parameter and
  honor it.
  (package->cross-derivation): New procedure.
* tests/monads.scm ("package-file + package->cross-derivation"): New test.
* doc/guix.texi (The Store Monad): Update 'package-file' documentation.
  Add 'package->cross-derivation'.
2014-08-17 20:58:58 +02:00
Ludovic Courtès 65f88b2085 gnu: lightning: Update to 2.0.5.
* gnu/packages/lightning.scm (lightning): Update to 2.0.5.
2014-08-17 11:59:47 +02:00
David Thompson cdf2b28654 gnu: guile-json: Update to 0.4.0.
* gnu/packages/guile.scm (guile-json): Update to 0.4.0.
2014-08-16 19:30:26 -04:00
Mark H Weaver f798837f9e gnu: apr: Disable parallel tests.
* gnu/packages/apr.scm (apr): Disable parallel tests.
2014-08-16 12:54:32 -04:00
Mark H Weaver 975071449c gnu: apr-util: Update to 1.5.3.
* gnu/packages/apr.scm (apr-util): Update to 1.5.3.
2014-08-16 12:36:13 -04:00
Mark H Weaver d7b4677f79 gnu: apr: Update to 1.5.1.
* gnu/packages/apr.scm (apr): Update to 1.5.1.
2014-08-16 12:36:09 -04:00
Eric Bavier ffbf749e6a gnu: texi2html: Fix tests in the absense of gettext.
* gnu/packages/patches/texi2html-i18n.patch: New patch.
* gnu/packages/texinfo.scm (texi2html)[source]: Use it.
* gnu-system.am (dist_patch_DATA): Add it.
2014-08-16 11:07:03 -05:00
Mark H Weaver cb8b285adf gnu: subversion: Update to 1.7.18.
* gnu/packages/version-control.scm (subversion): Update to 1.7.18.
2014-08-16 02:25:01 -04:00
Ludovic Courtès b9b8607824 Add (guix monad-repl).
* guix/monad-repl.scm: New file.
* guix.scm: Add it.
* Makefile.am (MODULES): Add it.
* doc/guix.texi (The Store Monad): Document it.
2014-08-15 16:26:28 +02:00
Ludovic Courtès c0b9213dbb linux-initrd: Do not create /etc/resolv.conf.
* guix/build/linux-initrd.scm (configure-qemu-networking): Don't create
  /etc/resolv.conf.
2014-08-15 16:26:28 +02:00
Ludovic Courtès 25290d2766 Update AUTHORS and THANKS. 2014-08-15 16:26:28 +02:00
Ludovic Courtès 6f22f3c954 linux-initrd: Load fscache.ko before the 9p modules.
* gnu/system/linux-initrd.scm (base-initrd)[virtio-9p-modules]: Add
  "fscache.ko", required by Linux-libre 3.16.
2014-08-15 16:26:28 +02:00
Mark H Weaver ae2189a9f2 gnu: Fix synopses for emacs-wget and fetchmail.
* gnu/packages/emacs.scm (emacs-wget): Improve synopsis.
* gnu/packages/mail.scm (fetchmail): Fix typo in synopsis.
2014-08-15 02:12:21 -04:00
Mark H Weaver ce33631f54 doc: Fix mention of default log location.
* doc/guix.texi (Invoking guix-daemon): Fix mention of default log location.
2014-08-15 01:18:50 -04:00
Mark H Weaver 89925972fb gnu: Add emacs-wget.
* gnu/packages/emacs.scm (emacs-wget): New variable.
2014-08-14 23:53:18 -04:00
Mark H Weaver 18d2621008 gnu: Add emacs-w3m.
* gnu/packages/emacs.scm (emacs-w3m): New variable.
2014-08-14 23:53:15 -04:00
Mark H Weaver fe4163f351 gnu: Add paredit.
* gnu/packages/emacs.scm (paredit): New variable.
2014-08-14 23:53:13 -04:00
Mark H Weaver 9a4c971521 gnu: Add magit.
* gnu/packages/emacs.scm (magit): New variable.
2014-08-14 23:53:10 -04:00
Mark H Weaver 75f3b1a12d Add (guix build emacs-utils).
* guix/build/emacs-utils.scm: New file.
* Makefile.am (MODULES): Add it.
* .dir-locals.el: Add indentation rules.
2014-08-14 23:53:04 -04:00
Jason Self 74dde9e919 gnu: linux-libre: Update to 3.16.1.
* gnu/packages/linux.scm (linux-libre): Update to version 3.16.1.
2014-08-14 10:57:29 -07:00
Mark H Weaver 87eabd5ca7 gnu: apl: Update to 1.4, add sqlite support.
* gnu/packages/apl.scm (apl): Update to 1.4.  Add 'sqlite' as an input.
  Pass --with-sqlite3 to configure.
2014-08-14 13:47:53 -04:00
Mark H Weaver 93c5b1fe1f gnu: mysql: Update to 5.1.73.
* gnu/packages/mysql.scm (mysql): Update to 5.1.73.  Update source URI.
2014-08-14 13:29:59 -04:00
Mark H Weaver e6a83df11b gnu: gpgme: Update to 1.5.1.
* gnu/packages/gnupg.scm (gpgme): Update to 1.5.1.  Pass "GPG=gpg2"
  to 'make'.
2014-08-14 10:03:57 -04:00
Ludovic Courtès 66269d4786 gnu: lvm2: Upgrade, use udev, improve synopsis and description.
* gnu/packages/linux.scm (lvm2): New variable.
* gnu/packages/lvm.scm: Remove.
* gnu-system.am (GNU_SYSTEM_MODULES): Remove it.
* gnu/packages/cryptsetup.scm: Adjust accordingly.
2014-08-14 00:34:47 +02:00
Mark H Weaver 2f7f32003f system: grub: Change the default default-entry to 0.
* gnu/system/grub.scm (<grub-configuration>)[default-entry]: Change the
  default to 0.
2014-08-13 12:56:25 -04:00
Mark H Weaver e69a4dd047 gnu: gnupg: Update to 2.0.26.
* gnu/packages/gnupg.scm (gnupg): Update to 2.0.26.
2014-08-13 02:48:31 -04:00
Guy Grant d41bb065c8 gnu: Add terminus-font.
* gnu/packages/fonts.scm (terminus-font): New variable.
2014-08-12 23:19:10 -04:00
David Thompson 734939a5f3 Remove ftp.sunet.se mirror.
* guix/download.scm (%mirrors): Remove ftp.sunet.se URIs.
2014-08-12 22:17:44 -04:00
Ludovic Courtès d34736c5c3 profiles: Adjust to unintended manifest format change.
Reported by Andreas Enge.

* guix/profiles.scm (sexp->manifest): Adjust to handle unintended format
  change introduced in 4ca0b41.
2014-08-12 22:09:42 +02:00
Ludovic Courtès dfd1d5edf6 guix package: Remove leftover internal procedure.
Reported by Alex Kost <alezost@gmail.com>.

* guix/scripts/package.scm (guix-package)[process-actions]: Remove
  'same-package?'.
2014-08-12 21:51:45 +02:00
Eric Bavier b36fcf9550 gnu: Add detox.
* gnu/packages/admin.scm (detox): New variable.
2014-08-12 13:36:35 -05:00
Ludovic Courtès f48624fc68 guix package: Use 'manifest-add'.
* guix/scripts/package.scm (guix-package)[process-actions]: Use
  'manifest-add' instead of the equivalent code.
2014-08-12 16:10:32 +02:00
Alex Kost f755403014 profiles: Add 'manifest-add'.
* guix/profiles.scm (manifest-add): New procedure.
* tests/profiles.scm (guile-1.8.8): New variable.
  ("manifest-add"): New test.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-08-12 16:03:33 +02:00
Ludovic Courtès 599f146400 Revert "nls: Use xgettext and msgmerge with --no-wrap."
This reverts commit 648453e8d6.

See <http://lists.gnu.org/archive/html/bug-gettext/2014-08/msg00005.html>
for the rationale.
2014-08-12 15:46:21 +02:00
Ludovic Courtès d759cf6774 gnu: texi2html: Remove dependency on Gettext.
Partly fixes <http://bugs.gnu.org/18247>.

* gnu/packages/texinfo.scm (texi2html)[source]: Add 'snippet' field.
2014-08-12 15:46:21 +02:00
Eric Bavier 51152cd125 gnu: Add orpheus.
* gnu/packages/orpheus.scm: New file.
* gnu/packages/patches/orpheus-cast-errors-and-includes.patch: New patch.
* gnu-system.am (GNU_SYSTEM_MODULES): Add file.
  (dist_patch_DATA): Add patch.
2014-08-12 00:28:39 -05:00
Taylan Ulrich Bayirli/Kammer 4a3e602c72 gnu: Add emacs-no-x-toolkit.
* gnu/packages/emacs.scm (emacs-no-x-toolkit): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-08-11 23:01:46 +02:00
Ludovic Courtès 29fce8b6eb system: Use (guix profiles) to build the system profile.
* gnu/system.scm (union): Remove.
  (operating-system-profile): Use 'profile-derivation' and related
  procedures instead of 'union'.
2014-08-11 23:01:46 +02:00
Eric Bavier c5d8376843 gnu: Add texi2html.
* gnu/packages/texinfo.scm (texi2html): New variable.
* gnu/packages/patches/texi2html-document-encoding.patch: New patch.
* gnu-system.am (dist_patch_DATA): Add it.
2014-08-11 12:22:53 -05:00
Ludovic Courtès 3d6e65d529 guix package: Remove dead code and unused variables.
Suggested by Alex Kost <alezost@gmail.com>.

* guix/scripts/package.scm (options->installable)[deduplicate]: Remove.
  [packages-to-upgrade]: Remove unused variable 'newest'.
  (roll-back): Remove unused variable 'manifest'.
  (guix-package): Remove unused variables 'guile-missing?', 'verbose?',
  and 'packages'.
2014-08-11 19:03:29 +02:00
Ludovic Courtès 26c398b182 nls: Add Czech translation. 2014-08-11 18:45:54 +02:00
Manolis Ragkousis 4acd5c0f9a gnu: Add AVRDUDE
* gnu/packages/avrdude.scm: New file
* gnu-system.am (GNU_SYSTEM_MODULES): Add avrdude.scm
* gnu/packages/patches/avrdude-fix-libusb.patch: New patch.
* gnu-system.am (dist_patch_DATA): Add it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-08-11 18:38:34 +02:00
Cyrill Schenkel 3a09e1d2e8 ui: Fix handling of periods by fill-paragraph.
Fixes <http://bugs.gnu.org/17468>.

* guix/ui.scm (fill-paragraph): Two spaces after period and no spaces before newline.
* tests/ui.scm: New test case.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-08-11 18:27:03 +02:00
Ludovic Courtès ebc32b3110 build: 'make clean' doesn't delete os-config.tmpl.
Fixes <http://bugs.gnu.org/18243>.
Reported by Andreas Enge and Mark H. Weaver.

* Makefile.am (EXAMPLES): New variable.
  (nobase_dist_guilemodule_DATA): Add it.
* gnu-system.am (GNU_SYSTEM_MODULES): Remove gnu/system/os-config.tmpl.
2014-08-11 17:49:45 +02:00
Mark H Weaver 8991a470ea gnu: geiser: Update to 0.6.
* gnu/packages/emacs.scm (geiser): Update to 0.6.
2014-08-09 21:11:11 -04:00
Jason Self c8c85ed7d2 gnu: linux-libre: Update to 3.16.
* gnu/packages/linux.scm (linux-libre): Update to version 3.16.
2014-08-09 09:33:28 -07:00
Mark H Weaver 2cabd7d862 gnu: openssl: Update to 1.0.1i.
* gnu/packages/openssl.scm (openssl): Update to 1.0.1i.
2014-08-09 11:27:36 -04:00
Mark H Weaver 0b28f1584f gnu: linux-libre: Update to 3.15.9.
* gnu/packages/linux.scm (linux-libre): Update to 3.15.9.
2014-08-09 04:44:25 -04:00
Andreas Enge 35536412a4 gnu: xorg: Add presentproto.
* gnu/packages/xorg.scm (presentproto): New variable.
2014-08-08 22:37:32 +02:00
Andreas Enge 43dd1cf360 gnu: xorg: Add dri3proto.
* gnu/packages/xorg.scm (dri3proto): New variable.
2014-08-08 22:30:07 +02:00
Andreas Enge 4e3a820bfd gnu: xf86-input-evdev: Add required input udev.
* gnu/packages/xorg.scm (xf86-input-evdev): Add input udev.
2014-08-08 21:37:54 +02:00
Mark H Weaver ac995eaf74 gnu: setxkbmap: Use xkeyboard-config as default config root.
* gnu/packages/xorg.scm (setxkbmap): Add 'xkeyboard-config' as an input.
  Pass --with-xkb-config-root to configure.
2014-08-08 02:34:53 -04:00
Mark H Weaver 1f347f5533 services: lsh: Fix activation script.
* gnu/services/ssh.scm (lsh-service)[activate]: Import (guix build utils)
  for 'mkdir-p'.
2014-08-07 21:09:51 -04:00
Mark H Weaver b087d41316 gnu: Add xsensors.
* gnu/packages/linux.scm (xsensors): New variable.
2014-08-07 20:41:53 -04:00
Mark H Weaver 30016044e0 gnu: Add lm-sensors.
* gnu/packages/patches/lm-sensors-hwmon-attrs.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/linux.scm (lm-sensors): New variable.
2014-08-07 20:41:39 -04:00
Mark H Weaver 13e7ce857c gnu: Add rrdtool.
* gnu/packages/rrdtool.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-08-07 20:41:34 -04:00
Mark H Weaver 4cf7bd2b7e gnu: Add stress.
* gnu/packages/admin.scm (stress): New variable.
2014-08-07 20:41:26 -04:00
Andreas Enge 87806dde17 gnu: curl: Update to 7.37.1.
* gnu/packages/curl.scm (curl): Update to 7.37.1. Remove patch.
* gnu/packages/patches/curl-fix-test172.patch: Remove file.
* gnu-system.am (dist_patch_DATA): Remove patch.
2014-08-07 22:53:21 +02:00
Andreas Enge 75f6f74f15 gnu: gnurl: Update to 7.37.0.
* gnu/packages/gnunet.scm (gnurl): Update to 7.37.0.
2014-08-07 22:29:33 +02:00
Mark H Weaver 7f767bccf8 gnu: notmuch: Update to 0.18.1.
* gnu/packages/mail.scm (notmuch): Update to 0.18.1.
2014-08-06 12:43:34 -04:00
Mark H Weaver 352b3bb6e3 gnu: xapian: Update to 1.2.18.
* gnu/packages/search.scm (xapian): Update to 1.2.18.
2014-08-06 12:43:28 -04:00
Mark H Weaver 1f2b8c886b gnu: transmission: Update to 2.84.
* gnu/packages/bittorrent.scm (transmission): Update to 2.84.
2014-08-06 00:28:29 -04:00
Mark H Weaver 13c8c2bf13 gnu: Add acpica.
* gnu/packages/admin.scm (acpica): New variable.
2014-08-05 20:00:37 -04:00
Mark H Weaver 42dc3af5bf gnu: Add flashrom.
* gnu/packages/patches/flashrom-use-libftdi1.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/admin.scm (flashrom): New variable.
2014-08-05 20:00:29 -04:00
Mark H Weaver f0176a9f18 gnu: libftdi: Fix mistakes in package description.
* gnu/packages/libftdi.scm (libftdi): Change 'libusb' from a
  'native-input' to a normal 'input'.  Fix the 'home-page' and
  'license' fields.
2014-08-05 20:00:21 -04:00
Mark H Weaver d43d1a7bbf gnu: ffmpeg: Update to 2.3.1.
* gnu/packages/video.scm (ffmpeg): Update to 2.3.1.
2014-08-05 20:00:12 -04:00
Mark H Weaver 66b93ee14b gnu: tor: Update to 0.2.4.23.
* gnu/packages/tor.scm (tor): Update to 0.2.4.23.
2014-08-04 22:43:42 -04:00
Mark H Weaver 82fce926f4 gnu: ffmpeg and vlc: Rely on runtime cpu detection.
* gnu/packages/video.scm (ffmpeg): Pass "--enable-runtime-cpudetect"
  to configure.  Do not disable use of processor features that can be
  detected at runtime.
  (vlc): Rely on runtime cpu detection.  Do not disable use of
  processor features that can be detected at runtime.
2014-08-04 16:12:44 -04:00
Mark H Weaver fe138965af gnu: mplayer: Enable runtime cpu detection.
* gnu/packages/video.scm (mplayer): Pass --enable-runtime-cpudetection
  to configure on supported platforms, as well as a suitable --target.
2014-08-03 23:50:19 -04:00
Mark H Weaver d6535cf1db gnu: tar: Update to 1.28.
* gnu/packages/base.scm (tar): Update to 1.28.
2014-08-03 21:01:32 -04:00
Mark H Weaver a092cd820b gnu: coreutils: Update to 8.23.
* gnu/packages/patches/coreutils-skip-nohup.patch: Remove.
* gnu-system.am (dist_patch_DATA): Remove coreutils-skip-nohup.patch.
* gnu/packages/patches/coreutils-dummy-man.patch: Adapt for 8.23.
* gnu/packages/base.scm (coreutils): Update to 8.23.
2014-08-03 21:01:27 -04:00
Mark H Weaver 8ceaf72c6d Merge branch 'master' into core-updates 2014-08-03 21:01:18 -04:00
Mark H Weaver 684a2f5974 gnu: gdb: Update to 7.8.
* gnu/packages/gdb.scm (gdb): Update to 7.8.  Add 'guile' and 'python'
  as inputs.  Add 'pkg-config' as a native-input.
2014-08-03 13:05:14 -04:00
Jason Self 087f67b641 gnu: linux-libre: Update to 3.15.8.
* gnu/packages/linux.scm (linux-libre): Update to version 3.15.8.
2014-08-01 15:35:16 -07:00
Mark H Weaver c4df90a594 gnu: gccgo: Suppress the separate "lib" output.
Fixes <http://debbugs.gnu.org/18101>.

* gnu/packages/gcc.scm (custom-gcc): Add 'separate-lib-output?'
  keyword argument.
  (gccgo-4.8): Pass #:separate-lib-output? #f to 'custom-gcc'.
2014-07-31 18:26:07 -04:00
Jason Self 1b13df509e gnu: linux-libre: Update to 3.15.7.
* gnu/packages/linux.scm (linux-libre): Update to version 3.15.7.
2014-07-30 07:55:53 -07:00
Mark H Weaver 33690ffde5 Merge branch 'master' into core-updates 2014-07-27 20:15:50 -04:00
Mark H Weaver b9663471a8 gnu: gnumeric: Adapt to glib "bin" split.
* gnu/packages/gnome.scm (gnumeric): Add glib:bin to 'native-inputs'.
2014-07-26 17:10:22 -04:00
Ludovic Courtès 462f5ccade profiles: Add 'package->manifest-entry'.
Suggested by Alex Kost <alezost@gmail.com>.

* guix/scripts/package.scm (options->installable)[package->manifest-entry]:
  Move to (guix profiles).
  [package->manifest-entry*]: New procedure.
  Use it.
* guix/profiles.scm (package->manifest-entry): New procedure.
* tests/profiles.scm (guile-for-build): New variable.
  Call '%guile-for-build'.
  ("profile-derivation"): New test.
2014-07-26 22:57:00 +02:00
Ludovic Courtès 4ca0b4101d profiles: Get rid of the 'inputs' field of 'manifest-entry'.
* guix/profiles.scm (<manifest-entry>)[inputs]: Remove.
  (profile-derivation): Rely on 'item' and 'deps' instead of 'inputs'.
  Adjust 'builder' accordingly.
* guix/scripts/package.scm (options->installable)[package->manifest-entry]:
  Remove 'inputs' field.  Change 'dependencies' field to contain
  packages.
2014-07-26 22:56:59 +02:00
Ludovic Courtès a54c94a40d profiles: Switch to gexps.
* guix/profiles.scm (<manifest-entry>)[path]: Rename to...
  [item]: ... this.  Update users.
  (manifest->sexp): Rename to...
  (manifest->gexp): ... this.  Return a gexp.
  (lower-input): Remove.
  (profile-derivation): Remove 'store' parameter, and turn into a
  monadic procedure.
  [inputs]: New variable.
  [builder]: Turn into a gexp.
  Replace call to 'build-expression->derivation' with call to
  'gexp->derivation'.
* guix/scripts/package.scm (link-to-empty-profile): Adjust call to
  'profile-derivation', and wrap it in 'run-with-store'.
  (show-what-to-remove/install): Rename 'path' to 'item'.  Check whether
  ITEM is a package, and return its output path if it is.
  (input->name+path): Remove.
  (options->installable): Set 'item' to P.
  (guix-package): Adjust call to 'profile-derivation'.
* tests/profiles.scm (guile-2.0.9): Change 'path' to 'item'.
2014-07-26 22:56:59 +02:00
Ludovic Courtès 48704e5b5c profiles: Do away with 'manifest=?'.
* guix/profiles.scm (manifest=?): Remove.
* guix/scripts/package.scm (readlink*): New procedure.
  (guix-package)[process-actions]: Use 'readlink*' and compare the
  profile to be built, PROF, with PROFILE to determine whether there's
  nothing to be done.
2014-07-26 22:56:59 +02:00
Mark H Weaver f280cdb1ba gnu: goffice: Adapt to glib "bin" split.
* gnu/packages/gnome.scm (goffice): Add glib:bin to 'native-inputs'.
2014-07-26 16:44:26 -04:00
Mark H Weaver f8984634fd gnu: sudo: Apply workaround to build system for MIPS.
* gnu/packages/admin.scm (sudo): Work around the fact that configure fails on
  MIPS without 'file'.
2014-07-26 16:08:35 -04:00
Ludovic Courtès ff838e2ce6 profiles: Remove dead code.
* guix/profiles.scm (write-manifest): Remove.
  (read-manifest): Keep private.
2014-07-25 23:42:42 +02:00
Ludovic Courtès 6621cdb65c doc: Replace incorrect uses of @ref by @pxref.
* doc/guix.texi: Use @pxref at the end of sentences, not @ref.
2014-07-25 23:42:42 +02:00
Mark H Weaver 936229930f gnu: libpeas: Adjust to glib "bin" split.
* gnu/packages/gnome.scm (libpeas): Add glib:bin to 'native-inputs'.
2014-07-25 15:48:25 -04:00
Ludovic Courtès 1b0a86dd1d tests: Make sure --search="" works.
* tests/guix-package.sh: Move '-s' tests outside of the network-only
  section.  Make sure --search="" works.
2014-07-25 17:56:14 +02:00
Ludovic Courtès d43f4296cc gnu: Add dmidecode.
* gnu/packages/admin.scm (dmidecode): New variable.
2014-07-25 17:48:06 +02:00
Eric Bavier 5e6feee617 guix: package: Fix recutils output for non-package inputs.
* guix/ui.scm (package->recutils)[dependencies]: Ignore non-package inputs.
* tests/guix-package.sh: New test.
2014-07-25 07:41:57 -05:00
Ludovic Courtès 7eade0ee03 gnu: guix: Update to 0.7.
* gnu/packages/package-management.scm (guix-0.6): Rename to...
  (guix-0.7): ... this.  Upgrade to 0.7.
  (guix): Alias for GUIX-0.7.
  (guix-devel): Change 'guix-0.6' to 'guix-0.7'.
2014-07-25 13:47:09 +02:00
Ludovic Courtès 5f28f6aab4 build: Bump to version 0.8.
* configure.ac: Switch to 0.8.
2014-07-25 13:47:09 +02:00
Ludovic Courtès 445d652916 doc: Fix typo in USB image file name.
* doc/guix.texi (System Installation): Change image file name.
2014-07-25 13:47:08 +02:00
Mark H Weaver 2f4640e320 gnu: texlive: Disable tests on mips64el.
* gnu/packages/texlive.scm (texlive): Disable tests on mips64el.
2014-07-24 23:32:13 -04:00
Mark H Weaver aaf77acc1a gnu: boost: Omit context and coroutines libraries on mips64el.
* gnu/packages/boost.scm (boost): Omit context and coroutines libraries on
  mips64el.
2014-07-24 23:06:49 -04:00
Ludovic Courtès 508ea01ef2 Update NEWS. 2014-07-25 01:01:51 +02:00
Ludovic Courtès 51af57102c build: Update PO files as per 'make dist'. 2014-07-25 00:56:50 +02:00
Ludovic Courtès dccc0b9800 Update NEWS. 2014-07-25 00:44:43 +02:00
Ludovic Courtès 20ffce820b ui: Improve formatting of package dependencies in recutils.
* guix/ui.scm (package->recutils)[dependencies->recutils]: New
  procedure. Use it.
2014-07-25 00:29:47 +02:00
Ludovic Courtès 3ce9aa44f1 build: Fix typo in 'guix package --show' test.
* tests/guix-package.sh: Change "^Package:" to "^name:".
2014-07-25 00:26:55 +02:00
Ludovic Courtès 6c9e7b2bea build: Better reject systems where the shebang would be too long.
* tests/gexp.scm (shebang): Add "#!".
2014-07-25 00:26:29 +02:00
Ludovic Courtès 417175096a services: Use system groups where applicable.
* gnu/services/avahi.scm (avahi-service): Add 'system?' field to
  'user-group' form.
* gnu/services/base.scm (guix-service): Likewise.
* gnu/services/dbus.scm (dbus-service): Likewise.
* gnu/services/networking.scm (tor-service): Likewise.
2014-07-25 00:15:46 +02:00
Ludovic Courtès c8fa34265d system: Add the 'system?' field for user groups.
Suggested by Mark H. Weaver.

* gnu/system/shadow.scm (<user-group>)[system?]: New field.
  (%base-groups): Introduce 'system-group' macro, and use it.
* gnu/system.scm (user-group->gexp): Pass the 'system?' field.
* guix/build/activation.scm (add-group): Add #:system? and honor it.
  (activate-users+groups): Handle the 'system?' field.
* gnu/system/file-systems.scm (%tty-gid): Choose an ID below 1000.
* doc/guix.texi (User Accounts): Document the 'system?' field.
2014-07-25 00:12:35 +02:00
Ludovic Courtès 931c132a58 doc: Make sure out-of-source-tree builds find os-config.tmpl.
* Makefile.am (BUILT_SOURCES): New variable.
* daemon.am (BUILT_SOURCES): Use +=.
* doc.am (BUILT_SOURCES, MAINTAINERCLEANFILES, EXTRA_DIST): Add
  doc/os-config.texi.
  (doc/os-config.texi): New target.
* doc/guix.texi (System Installation): Include os-config.texi.
2014-07-24 23:50:55 +02:00
Ludovic Courtès 054e85761f doc: Add "guix system" to 'dir'.
* doc/guix.texi: Add "guix system" to the dir entry.
2014-07-24 23:07:53 +02:00
Ludovic Courtès d9372161ef services: xorg: Honor ~/.xsession.
* gnu/services/xorg.scm (xinitrc): Attempt to execute ~/.xsession.
2014-07-24 23:02:27 +02:00
Ludovic Courtès 1dac856638 install: Add a configuration template to the image.
* gnu/system/os-config.tmpl: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it
* gnu/system/install.scm (configuration-template-service): New
  procedure.
  (installation-services): Call it.
* doc/guix.texi (System Installation): Mention
  configuration-template.scm, and @include gnu/system/os-config.tmpl.
2014-07-24 23:02:27 +02:00
Ludovic Courtès 0a90af1531 monads: Add 'interned-file'.
* guix/monads.scm (interned-file): New procedure.
* tests/monads.scm ("interned-file"): New test.
* doc/guix.texi (The Store Monad): Document it.
2014-07-24 23:02:26 +02:00
Ludovic Courtès 7ab44369b3 doc: Recommend partition labels.
* doc/guix.texi (System Installation): Recommend partition labels.
2014-07-24 23:02:26 +02:00
Ludovic Courtès 47b73c34f0 services: xorg: Remove /var/run/slim.lock when starting.
Reported by Mark H. Weaver.

* gnu/services/xorg.scm (slim-service)[start]: Remove /var/run/slim.lock
  before starting 'slim'.
2014-07-24 23:02:26 +02:00
Mark H Weaver da9c810280 gnu: gcc: Update to 4.9.1.
* gnu/packages/gcc.scm (gcc-4.9): Update to 4.9.1.
2014-07-24 10:13:38 -04:00
Manolis Ragkousis 7736218683 gnu: Add libftdi.
* gnu/packages/libftdi.scm: New file
* gnu-system.am (GNU_SYSTEM_MODULES): Add libftdi.scm

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-07-24 09:42:32 +02:00
Mark H Weaver 9fd571a292 gnu: Adjust more packages to GLib "bin" split.
* gnu/packages/gimp.scm (gegl): Add glib:bin to 'native-inputs'.
* gnu/packages/mail.scm (mu): Ditto.
2014-07-23 18:26:03 -04:00
Andreas Enge 408137d992 gnu: parallel: Upgrade to 20140722.
* gnu/packages/parallel.scm (parallel): Upgrade to 20140722.
2014-07-23 23:09:36 +02:00
Andreas Enge bc7f024c47 gnu: xorriso: Upgrade to 3.1.8.
* gnu/packages/cdrom.scm (xorriso): Upgrade to 3.1.8.
2014-07-23 23:07:18 +02:00
Andreas Enge 1b4f23bdf6 gnu: nano: Upgrade to 2.3.6.
* gnu/packages/nano.scm (nano): Upgrade to 2.3.6.
2014-07-23 23:06:55 +02:00
Mark H Weaver 20e6c852d3 gnu: htop: Update source URI.
* gnu/packages/admin.scm (htop): Update source URI.
2014-07-23 16:50:30 -04:00
Ludovic Courtès 94b13427d7 gnu: module-init-tools: Fix $LINUX_MODULE_DIRECTORY handling in 'depmod'.
* gnu/packages/patches/module-init-tools-moduledir.patch: Adjust the
  'depmod' part to handle $LINUX_MODULE_DIRECTORY without a trailing
  slash.
2014-07-23 22:27:17 +02:00
Ludovic Courtès 4a8b4c25b0 gnu: kmod: Install symlinks for 'insmod', 'modprobe', etc.
* gnu/packages/linux.scm (kmod)[arguments]: Add 'install-modprobe&co'
  phase.
2014-07-23 19:09:27 +02:00
Ludovic Courtès 906f70406a gnu: module-init-tools: Handle $LINUX_MODULE_DIRECTORY without trailing slash.
Fixes <http://bugs.gnu.org/18068>.

* gnu/packages/patches/module-init-tools-moduledir.patch: Adjust to deal
  with the lack of a trailing slash.
2014-07-23 18:51:07 +02:00
Ludovic Courtès 720ee245da guix system: Protect against changes to $PATH when activating the system.
Partly fixes <http://bugs.gnu.org/18082>.
Reported by Mark H Weaver <mhw@netris.org>.

* guix/scripts/system.scm (save-environment-excursion): New macro.
  (switch-to-system): Wrap 'primitive-load' call in it.
2014-07-23 18:20:56 +02:00
Ludovic Courtès b6debdaa22 guix system: Fix type error in 'reconfigure'.
Partly fixes <http://bugs.gnu.org/18082>.
Reported by Mark H Weaver <mhw@netris.org>.

* guix/scripts/system.scm (perform-action) <reconfigure>: Pass the
  output file name of GRUB.CFG to 'install-grub'.
2014-07-23 18:20:56 +02:00
Andreas Enge 742160428e gnu: dvdisaster: Upgrade to 0.72.6.
* gnu/packages/cdrom.scm (dvdisaster): Upgrade to 0.72.6.
2014-07-23 18:00:19 +02:00
Ludovic Courtès 83a17b6236 install: Add a service to back the store with the target disk.
Fixes <http://bugs.gnu.org/18061>.
Reported by Adam Pribyl <pribyl@lowlevel.cz>.

* gnu/services/dmd.scm (dmd-configuration-file)[config]: Import (guix
  build utils).
* gnu/system/install.scm (make-cow-store, cow-store-service): New
  procedures.
  (installation-services): Use it.
  (%backing-directory): New variable.
* doc/guix.texi (System Installation): Add the 'deco start cow-store
  /mnt' phase.
2014-07-23 17:47:25 +02:00
Andreas Enge 5383fb5bd4 gnu: pari-gp: Upgrade to 2.7.1.
* gnu/packages/algebra.scm (pari-gp): Upgrade to 2.7.1.
2014-07-23 16:46:05 +02:00
Mark H Weaver 705f8b68f1 system: Add missing exports to (gnu system file-systems).
* gnu/system/file-systems.scm (%pseudo-terminal-file-system)
  (%shared-memory-file-system): Add to export list.
2014-07-23 02:13:34 -04:00
Ludovic Courtès db17ae5c27 system: Add /dev/shm.
* gnu/system/file-systems.scm (%shared-memory-file-system): New
  variable.
  (%base-file-systems): Add it.
* doc/guix.texi (File Systems): Document it.
2014-07-23 02:02:07 +02:00
Ludovic Courtès 2c071ce96e system: Recognize more file system flags.
* guix/build/linux-initrd.scm (MS_NOSUID, MS_NODEV, MS_NOEXEC): New
  variables.
  (mount-flags->bit-mask): New procedure.
  (mount-file-system)[flags->bit-mask]: Remove.
  Use 'mount-flags->bit-mask' instead.
  In /etc/mtab, use the empty string when OPTIONS is false.
* gnu/services/base.scm (file-system-service): Add #:flags parameter and
  honor it.
* gnu/system.scm (other-file-system-services): Pass FLAGS to
  'file-system-service'.
2014-07-23 02:02:07 +02:00
Ludovic Courtès a85b83d227 doc: Merge the type, variable, and function indices.
* doc/guix.texi (Function Index): Rename to...
  (Programming Index): ... this.  Merge the type, variable, and function
  indices.
2014-07-23 02:02:07 +02:00
Ludovic Courtès 7f239fd33f system: Add 'file-system' decl. for /dev/pts, and use the right options.
Fixes <http://bugs.gnu.org/18081>.

* gnu/system/file-systems.scm (%devtmpfs-file-system): Add
  'needed-for-boot?' field.
  (%tty-gid, %pseudo-terminal-file-system): New variables.
  (%base-file-systems): Add %PSEUDO-TERMINAL-FILE-SYSTEM.
* gnu/services/base.scm (udev-service): Remove dependency on
  'file-system-/dev'.
* gnu/system/shadow.scm (%base-groups): Add 'id' field for group 'tty'.
* guix/build/linux-initrd.scm (boot-system): Remove 'mount' call for
  /dev/pts.
* doc/guix.texi (File Systems): Add %pseudo-terminal-file-system.
2014-07-23 02:02:07 +02:00
Ludovic Courtès 4e469051a7 system: Add 'create-mount-point?' file system option.
* gnu/system/file-systems.scm (<file-system>)[create-mount-point?]: New
  field.
* gnu/services/base.scm (file-system-service): Add #:create-mount-point?
  parameter and honor it.
* gnu/system.scm (other-file-system-services): Update
  'file-system-service' call accordingly.
* doc/guix.texi (File Systems): Document it.
2014-07-23 02:02:06 +02:00
Andreas Enge 5ac12a4f77 Require only lower gettext version.
* configure.ac: Change back to requiring gettext at least 0.18.1, partially
    reverting commit ee76417.
2014-07-22 21:35:07 +02:00
Ludovic Courtès 30d3e2e8db Thank Adam. 2014-07-22 16:59:17 +02:00
Ludovic Courtès a69576ea85 system: Add '%devtmpfs-file-system' for udev, and '%base-file-systems'.
Suggested by Adam Pribyl <pribyl@lowlevel.cz>.

* gnu/services/base.scm (udev-service)[requirement]: Add
  'file-system-/dev'.
* gnu/system/file-systems.scm (%devtmpfs-file-system,
  %base-file-systems): New variables.
* gnu/system/install.scm (installation-services)[file-systems]: Use
  %base-file-systems.
* build-aux/hydra/demo-os.scm (file-systems): Likewise.
* doc/guix.texi (System Installation): Show %BASE-FILE-SYSTEMS in the
  example.
  (Using the Configuration System): Likewise.
  (File Systems): Document %base-file-systems, %devtmpfs-file-system,
  %binary-format-file-system, and %fuse-control-file-system.
2014-07-22 16:59:10 +02:00
Ludovic Courtès 7cb9666dd0 doc: Fix typo.
* doc/guix.texi (System Installation): s/are/is/.
2014-07-22 15:23:14 +02:00
Ludovic Courtès bce7526f9a Add comments about global memoization.
* guix/build-system/gnu.scm (standard-inputs): Add comment about
  misplaced memoization.
* guix/packages.scm (cache): Likewise.
2014-07-21 23:18:21 +02:00
Ludovic Courtès 1b09031f78 services: Allow 'check-file-system' to work for non-boot-time file systems.
* gnu/services/base.scm (file-system-service)[start]: Set $PATH so that
  fsck.* can be found.  Reported by "DusXMT".
2014-07-21 23:18:21 +02:00
Ludovic Courtès 02dd2a9cb6 Update 'NEWS'. 2014-07-21 23:18:21 +02:00
Cyril Roelandt 2aa6efb0b9 guix package: add a "show" option.
* doc/guix.texi: Update the documentation.
* guix/scripts/package.scm: Add a "show" option.
* tests/guix-package.sh: Add a test for the "show" option.
2014-07-21 22:18:03 +02:00
Cyril Roelandt 9c0fc27968 ui: add the "dependencies" field to package->recutils:
* guix/ui.scm (package->recutils): Print the dependencies of the package.
2014-07-21 22:17:59 +02:00
Ludovic Courtès a4f51df98a nls: Add Hungarian translation. 2014-07-20 22:39:02 +02:00
Ludovic Courtès 58f485cc80 build: Fix typo that would lead to hitting the socket name length limit.
* tests/guix-register.sh: Remove redundant $new_store in $NIX_STATE_DIR,
  introduced in 689142cd ("guix-register: Add '--state-directory'
  parameter.")  Reported by Eric Bavier <ericbavier@gmail.com> and
  Alen Skondro <askondro@gmail.com>.
2014-07-20 22:39:02 +02:00
Ludovic Courtès 7779ab611d doc: Show output of 'guix refresh --list-dependent' example.
* doc/guix.texi (Invoking guix refresh): Show example output of the
  command.
2014-07-20 22:39:02 +02:00
Ludovic Courtès 65ea711189 guix refresh: Use (ice-9 format).
* guix/scripts/refresh.scm: Use (ice-9 format).
2014-07-20 22:39:02 +02:00
Ludovic Courtès 8334cf5b5c guix system: Factorize 'copy-closure'.
* guix/scripts/system.scm (copy-closure): Rename to...
  (copy-item): ... this.
  (copy-closure): New procedure.
  (install): Use it, and remove redundant code.
2014-07-20 22:39:02 +02:00
Jason Self fcbf703efa gnu: ffmpeg: Remove --disable-vis.
* gnu/packages/video.scm (ffmpeg): Remove --disable-vis.
2014-07-20 13:37:02 -07:00
Jason Self 7e81a45513 gnu: wpa-supplicant: Update to 2.2.
* gnu/packages/admin.scm (wpa-supplicant): Update to version 2.2.
2014-07-20 11:59:09 -07:00
Jason Self a915ab6a6b gnu: sudo: Update to 1.8.10p3.
* gnu/packages/admin.scm (sudo): Update to version 1.8.10p3.
2014-07-20 11:56:59 -07:00
Eric Bavier 7d193ec348 guix: refresh: Add --list-dependent option.
* guix/packages.scm (package-direct-inputs): New procedure.
* gnu/packages.scm (vhash-refq, package-direct-dependents)
  (package-transitive-dependents, package-covering-dependents): New procedures.
* guix/scripts/refresh.scm (%options, show-help, guix-refresh): Add
  --list-dependent option.
* doc/guix.texi (Invoking guix refresh): Document '--list-dependent' option.
2014-07-20 11:36:09 -05:00
Eric Bavier 516e3b6f7a guix: utils: Add fold-tree and fold-tree-leaves.
* guix/utils.scm (fold-tree, fold-tree-leaves): New functions.
* tests/utils.scm: Add tests for them.
2014-07-20 11:36:09 -05:00
Jason Self 5c47b06b43 gnu: acl: Update to 2.2.52.
* gnu/packages/acl.scm (acl): Update to version 2.2.52.
2014-07-20 06:55:33 -07:00
Jason Self da891830da gnu: htop: Update to 1.0.3.
* gnu/packages/admin.scm (htop): Update to version 1.0.3.
2014-07-20 06:48:58 -07:00
Jason Self 180d7ac163 gnu: dfc: Update to 3.0.4.
* gnu/packages/admin.scm (dfc): Update to version 3.0.4.
2014-07-20 06:47:14 -07:00
John Darrington 00e79195a5 gnu: Enable tests for patch.
* gnu/packages/base.scm (patch): Enable test and add "ed" as input.
2014-07-20 11:30:54 +02:00
John Darrington 0a643dc6f4 gnu: Enable swig tests.
* gnu/packages/swig.scm (swig): Add boost as input and enable tests.
2014-07-20 10:12:16 +02:00
Jason Self 428a62f257 gnu: linux-libre: Update to 3.15.6.
* gnu/packages/linux.scm (linux-libre): Update to version 3.15.6.
2014-07-19 07:14:09 -07:00
David Thompson ebc28a7d13 install: Add wireless-tools package.
* gnu/system/install.scm (installation-os): Add wireless-tools to packages.
2014-07-19 09:42:43 -04:00
David Thompson c299dffcc4 linux-initrd: Add AHCI modules.
* gnu/system/linux-initrd (linux-modules): Add them.
2014-07-19 08:41:43 -04:00
David Thompson 000f7559a7 gnu: Add wireless-tools.
* gnu/packages/linux.scm (wireless-tools): New variable.
2014-07-19 08:40:22 -04:00
Ludovic Courtès 66c2703f09 install: Set the store's permission to #o1775.
Fixes <http://bugs.gnu.org/18053>.
Reported by Mark H Weaver <mhw@netris.org>.

* guix/build/install.scm (directives): Add mode #o1775 for STORE.
2014-07-19 14:26:19 +02:00
Eric Bavier 501aa54f7d gnu: Add datamash.
* gnu/packages/datamash.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-07-18 14:40:15 -05:00
Ludovic Courtès 7a5c329b92 Thank Marek. 2014-07-18 20:40:51 +02:00
Ludovic Courtès a52127c052 guix system: init: Always use /var/guix as the target state directory.
Fixes <http://bugs.gnu.org/18049>.
Reported by Marek Benc <merkur32@gmail.com>.

* guix/scripts/system.scm (copy-closure): Pass #:state-directory to
  'register-path'.
2014-07-18 20:40:51 +02:00
Ludovic Courtès 689142cd75 guix-register: Add '--state-directory' parameter.
* nix/guix-register/guix-register.cc (GUIX_OPT_STATE_DIRECTORY): New
  macro.
  (parse_opt): Honor it.
* tests/guix-register.sh: Add test with '--state-directory'.
* guix/store.scm (register-path): Add #:state-directory parameter.
2014-07-18 20:40:51 +02:00
Mark H Weaver 1c00f83650 Fix typos in manual.
* doc/guix.texi (Using the Configuration System): 'gid' -> 'group'
  in user-account example.
  (Initial RAM Disk): 'base-init' -> 'base-initrd'.
2014-07-18 10:41:47 -04:00
John Darrington 0e534e74aa gnu: Add Aegis.
* gnu/packages/version-control.scm (aegis): New variable.
* gnu/packages/patches/aegis-constness-error.patch: New file.
* gnu/packages/patches/aegis-perl-tempdir1.patch: New file.
* gnu/packages/patches/aegis-perl-tempdir2.patch: New file.
* gnu/packages/patches/aegis-test-fixup-1.patch: New file.
* gnu/packages/patches/aegis-test-fixup-2.patch: New file.
2014-07-18 06:45:33 +02:00
John Darrington a4dc3bdb15 gnu: whitespace change only
* gnu/packages/version-control.scm: Remove blank line
2014-07-18 06:45:33 +02:00
John Darrington cdd754e8b6 Update 'AUTHORS'.
* AUTHORS: Correct the email address I use for Guix work.
2014-07-18 06:45:33 +02:00
Ludovic Courtès e5b648e06a gnu: apr-util: Run 'make check' sequentially.
* gnu/packages/apr.scm (apr-util)[arguments]: Add #:parallel-tests?.
2014-07-18 00:52:45 +02:00
Ludovic Courtès 9f9236b766 Merge branch 'gettext-upgrade' 2014-07-17 18:42:28 +02:00
Jason Self f125f4b72a gnu: ffmpeg: Update to 2.3.
* gnu/packages/video.scm (ffmpeg): Update to version 2.3.

Signed-off-by: Jason Self <j@jxself.org>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-07-17 18:41:48 +02:00
Jason Self 72fe9d0b39 gnu: libogg: Update to 1.3.2.
* gnu/packages/xiph.scm (libogg): Update to version 1.3.2.

Signed-off-by: Jason Self <j@jxself.org>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-07-17 18:39:41 +02:00
Ludovic Courtès 3172ed5a4c install: Show the "System Installation" node.
* gnu/system/install.scm (log-to-info): Go to the new 'System
  Installation' node.
2014-07-17 18:37:53 +02:00
Ludovic Courtès 42b9b8f9cb gnu: guix: Upgrade development snapshot.
* gnu/packages/package-management.scm (guix): Upgrade to commit
  0ae8c15.
2014-07-17 18:30:11 +02:00
Ludovic Courtès 0ae8c15aef doc: Add "Setuid Programs" node.
* doc/guix.texi (Setuid Programs): New node.
2014-07-17 18:10:16 +02:00
Ludovic Courtès fd1b1fa296 doc: Add "Initial RAM Disk" section.
* doc/guix.texi (Initial RAM Disk): New node.
* gnu/system/linux-initrd.scm (expression->initrd): Adjust docstring.
2014-07-17 17:49:34 +02:00
Ludovic Courtès a1906758c3 records: Report unknown field names in inheriting forms.
* guix/records.scm (define-record-type*)[record-inheritance]: Check for
  unexpected field names.
* tests/records.scm ("define-record-type* with let* behavior"): Return
  #t, not *unspecified*.
  ("define-record-type* & inherit & extra initializers"): New test.
2014-07-17 16:45:45 +02:00
Ludovic Courtès b1353e7a6b records: Factorize error-reporting macro.
* guix/records.scm (record-error): New macro.
  (define-record-type*)[error*]: Remove.
  Use 'record-error' instead.
2014-07-17 16:42:19 +02:00
Ludovic Courtès 23e9a68088 records: Add tests for error cases.
* tests/records.scm (test-module): New procedure.
  ("define-record-type* & missing initializers",
  "define-record-type* & extra initializers"): New tests.
2014-07-17 16:06:36 +02:00
Ludovic Courtès 62ca0fdf9e services: Add 'console-font-service'.
* gnu/services/base.scm (unicode-start, console-font-service): New
  procedures.
  (%base-services): Call 'console-font-service' for TTY1 to TTY6.
* gnu/system/install.scm (installation-services): Add comment about the
  console font.  Call 'console-font-service' for TTY1 to TTY6.
2014-07-17 15:53:01 +02:00
Ludovic Courtès 2cf0ea0dbb gexp: Gracefully handle printing of gexps with spliced references.
* guix/gexp.scm (write-gexp): Wrap 'write' call in
  'false-if-exception'.
* tests/gexp.scm ("printer", "printer vs. ungexp-splicing"): New tests.
2014-07-17 15:40:06 +02:00
Ludovic Courtès 8aaaae38a3 doc: List noteworthy limitations.
* doc/guix.texi (Limitations): New subsection.
2014-07-17 14:36:36 +02:00
Ludovic Courtès 6a1912743a services: syslog: Don't write trivial error messages to /dev/console.
* gnu/services/base.scm (syslog-service): Change "*.err" to "*.alert".
2014-07-16 22:40:14 +02:00
Ludovic Courtès b63dbd44f0 system: Add e2fsprogs to the base packages.
* gnu/system.scm (%base-packages): Add E2FSPROGS.
2014-07-16 15:54:47 +02:00
Ludovic Courtès 03e9998f41 system: Use kmod instead of module-init-tools.
* gnu/system.scm (%base-packages): Use kmod instead of
  module-init-tools.
2014-07-16 15:54:47 +02:00
Ludovic Courtès dc254e0568 gexp: Build 'gexp->file' derivations locally.
* guix/gexp.scm (gexp->file): Add #:local-build? argument.
2014-07-16 15:54:47 +02:00
Ludovic Courtès f2cdcafbc1 gnu: kbd: Make sure unicode_{start,stop} work as expected.
* gnu/packages/linux.scm (kbd): Patch 'src/unicode_{start,stop}' to use
  'tty'.
  <phases>: Add 'post-install' phase.
2014-07-16 15:54:47 +02:00
Ludovic Courtès cf4a912919 doc: Move "System Configuration" higher.
* doc/guix.texi (GNU Distribution): Move "System Configuration" right
  after "System Installation".
2014-07-16 15:54:47 +02:00
John Darrington 79ad1c6999 Update 'THANKS'.
* THANKS: Correct the email address I use for Guix work.
2014-07-16 06:31:57 +02:00
John Darrington 6217ca12c5 gnu: Tinyproxy: Cleanup xml dependencies
* gnu/packages/web.scm (tinyproxy): Use the XML catalog from docbook instead of
  generating a temporary one.
2014-07-16 06:28:01 +02:00
John Darrington b4ce630048 gnu: Enable gnome-doc-utils tests
* gnu/packages/gnome (gnome-doc-utils): Set the XML_CATALOG_FILES variable and
  enable the tests.
2014-07-16 06:28:01 +02:00
John Darrington 7f4bf03034 gnu: docbook-xsl write absolute file:// uris in catalogs instead of ./ relative ones
* gnu/packages/docbook.scm (docbook-xsl):  Replace ./ paths with file:// uris
2014-07-16 06:28:01 +02:00
John Darrington a6639cf7f2 gnu: docbook-xml: Substitute remote xml_catalog uris with local ones.
* gnu/packages/docbook.scm: substitute remote uri with local ones.
2014-07-16 06:28:01 +02:00
John Darrington 1cac3de660 gnu: Add docbook-xml version 4.3 and 4.4
* gnu/packages/docbook.scm (docbook-xml-4.3, docbook-xml-4.4): New variables.
2014-07-16 06:28:01 +02:00
John Darrington a37a30772f gnu: docbook-xsl update to 1.78.1
* gnu/packages/docbook.scm (docbook-xsl): Upgrade to version 1.78.1
2014-07-16 06:28:01 +02:00
Ludovic Courtès 2dd36f5a09 nls: Update 'eo' and 'vi' translations. 2014-07-15 23:43:41 +02:00
Ludovic Courtès 3146976496 Add Jason to 'AUTHORS'. 2014-07-15 22:48:48 +02:00
Jason Self 2af4937edd gnu: libvorbis: Update to 1.3.4.
* gnu/packages/xiph.scm (libvorbis): Update to version 1.3.4.

Signed-off-by: Jason Self <j@jxself.org>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-07-15 22:48:07 +02:00
Jason Self 399fdcf75c gnu: flac: Upgrade to 1.3.0.
* gnu/packages/xiph.scm (flac): Update to version 1.3.0.
  Remove 'patches' field.
* gnu/packages/patches/flac-fix-memcmp-not-declared.patch: Remove.
* gnu-system.am (dist_patch_DATA): Adjust accordingly.

Signed-off-by: Jason Self <j@jxself.org>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-07-15 22:42:42 +02:00
Ludovic Courtès b1e50c32a0 gnu: gettext: Update to 0.19.2.
* gnu/packages/gettext.scm (gnu-gettext): Update to 0.19.2.
2014-07-15 09:55:40 +02:00
Eric Bavier 49d91de763 guix: refresh: Correctly identify invalid package names.
* guix/scripts/refresh.scm (guix-refresh): Check for null list
  returned by find-packages-by-name rather than #f.
2014-07-15 00:10:10 -05:00
Ludovic Courtès 5af6de3e67 doc: Add a "System Installation" node.
* doc/guix.texi (Installation): Add cross-ref to "System Installation".
  (System Installation): New section.
  (System Configuration): Remove disclaimer.
2014-07-15 00:43:04 +02:00
Ludovic Courtès 8f297d422a install: Remove GNU fdisk from the image.
* gnu/system/install.scm (installation-os): Remove FDISK.
2014-07-14 18:06:35 +02:00
Ludovic Courtès 932e1f9240 vm: Make sure disk image initrds load 'usb-storage.ko'.
Reported by David Thompson <dthompson2@worcester.edu>.

* gnu/system/vm.scm (system-disk-image): Add usb-storage.ko to the
  initrd.
2014-07-14 18:05:10 +02:00
Ludovic Courtès 246a8106ff doc: Remove redundant listing of services.
* doc/guix.texi (Defining Services): Remove listing of service
  procedures; add xref to "Services".
2014-07-14 16:34:24 +02:00
Ludovic Courtès 3942305eb1 guix system: reconfigure: Always use "/" as GRUB's target file system.
* guix/scripts/system.scm (perform-action) <reconfigure>: Wrap
  'install-grub' call in 'false-if-exception'.  Always use "/" as the
  target.
2014-07-14 16:14:15 +02:00
Ludovic Courtès 66672a455c gnu: Synchronize synopses and descriptions with the Womb.
* gnu/packages/gimp.scm (gimp): Synchronize synopsis and description.
* gnu/packages/gl.scm (guile-opengl): Likewise.
* gnu/packages/gnome.scm (gnumeric): Likewise.
2014-07-14 15:59:41 +02:00
Ludovic Courtès c11a6eb1e5 services: Add options to 'guix-service'.
* gnu/services/base.scm (guix-service): Add #:use-substitutes? and
  #:extra-options parameters, and honor them.
* doc/guix.texi (Base Services): Adjust accordingly.
2014-07-14 15:51:22 +02:00
Ludovic Courtès 55e70e655d system: Add 'nano' and 'lsof' to the base packages.
* gnu/system.scm (%base-packages): Add NANO and LSOF.
2014-07-14 15:35:57 +02:00
Jason Self 88a1976cbe gnu: linux-libre: Update to 3.15.5.
* gnu/packages/linux.scm (linux-libre): Update to version 3.15.5.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-07-14 00:08:28 +02:00
Jason Self f123a18f8a gnu: linux-libre: Disable CONFIG_DEBUG_INFO and turn off nvidiafb module.
Disabling CONFIG_DEBUG_INFO so that local builds aren't so enormous.
Also turning off nvidiafb module based on a bug report I received.
Nouveau has its own framebuffer device and it looks like they conflict
if you load both.

* gnu/packages/linux-libre-x86_64.conf: Comment out CONFIG_FB_NVIDIA,
  and remove related items.  Comment out CONFIG_DEBUG_INFO.
* gnu/packages/linux-libre-i686.conf: Likewise.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-07-14 00:03:00 +02:00
Ludovic Courtès 4660b1e83b nls: Add German translation. 2014-07-13 23:59:48 +02:00
Ludovic Courtès bdfdf9017b nls: Update eo, pt_BR, sr, and vi package translations. 2014-07-13 23:56:05 +02:00
Ludovic Courtès c3cf9d36e4 Merge branch 'bug-17853' 2014-07-13 23:44:55 +02:00
Ludovic Courtès 314a83ef1e guix system: Fix return value for 'reconfigure'.
* guix/scripts/system.scm (perform-action) <reconfigure>: Add missing
  'return' expression.
2014-07-13 23:44:37 +02:00
Ludovic Courtès fa16f84502 linux-initrd: Allow extra modules to be passed to 'base-initrd'.
* gnu/system/linux-initrd.scm (base-initrd): Add #:extra-modules
  parameter.
2014-07-13 23:43:00 +02:00
Ludovic Courtès 3485716fd9 install: Make /var/db and /mnt.
* guix/build/install.scm (directives): Add /var/db and /mnt.
2014-07-13 16:37:47 +02:00
Ludovic Courtès 8e42796bdc guix system: Convert to monadic style.
* guix/scripts/system.scm (references*, topologically-sorted*,
  show-what-to-build*): New procedures.
  (copy-closure): Turn into a monadic procedure.
  (install): Likewise, and adjust parameter list.
  (switch-to-system): Likewise.
  (system-derivation-for-action, grub.cfg, maybe-build, perform-action):
  New procedures.
  (guix-system): Use them.
2014-07-13 16:37:11 +02:00
Ludovic Courtès 66670cf39c vm: Add support for i686.
Partially fixes <http://bugs.gnu.org/18002>.
Reported by David Thompson <dthompson2@worcester.edu>.

* guix/build/vm.scm (qemu-command): Add optional 'system' parameter.
  Special-case "^i[3456]86$".
* gnu/system/vm.scm (system-qemu-image/shared-store-script): Use it.
2014-07-13 16:37:11 +02:00
John Darrington ae9cb418df gnu: Add chess and xboard.
* gnu/packages/games.scm (xboard, chess): New variables.
2014-07-13 16:04:34 +02:00
Ludovic Courtès 927097effd services: Add Tor service.
* gnu/services/networking.scm (tor-service): New procedure.
* doc/guix.texi (Networking Services): Document it.
* build-aux/hydra/demo-os.scm: Use it.  Add TOR and TORSOCKS to
  'packages'.
2014-07-12 23:17:54 +02:00
Ludovic Courtès 8897603ad0 services: networking: Set interfaces up; delete default route only when needed.
* gnu/services/networking.scm (static-networking-service): Use -i, -A,
  and --up with Inetutils' ifconfig.  Do 'route del -net default' only
  when GATEWAY is true.
2014-07-12 23:17:54 +02:00
Ludovic Courtès 89a0d00a38 system: Add 'which' to the base packages.
* gnu/system.scm (%base-packages): Add WHICH.
2014-07-12 23:17:54 +02:00
Ludovic Courtès 4a3b3b073a services: Provide a 'loopback' service by default.
* gnu/services/networking.scm (static-networking-service): Add
  #:provision parameter; use it.
* gnu/services/base.scm (%base-services): Call
  'static-networking-service' for "lo".
2014-07-12 23:17:53 +02:00
Ludovic Courtès f111b327a9 system: Remove erroneous system binding in profile maker.
Partly fixes <http://bugs.gnu.org/18002>.
Reported by David Thompson <dthompson2@worcester.edu>.

* gnu/system.scm (union): Remove #:system parameter, which was unused.
2014-07-12 23:17:53 +02:00
Ludovic Courtès 5d0984595c gexp: Resolve the default system at '>>=' time.
Partly fixes <http://bugs.gnu.org/18002>.
Reported by David Thompson <dthompson2@worcester.edu>.

* guix/gexp.scm (gexp->derivation): Change #:system to default #f.
  Use (%current-system) from within the 'mlet*'.
* tests/gexp.scm ("gexp->derivation, default system"): New test.
2014-07-12 23:17:53 +02:00
Ludovic Courtès f62435e286 monads: Fix 'mapm' so that effects happen from left to right.
* guix/monads.scm (mapm): Don't reverse LST, so that items are processed
  from left to right.  Bind the result of 'foldm' and reverse it.
* tests/monads.scm ("sequence"): Change 'frob' so it performs its side
  effect within an 'mlet' body.  Adjust call accordingly.
2014-07-12 23:17:53 +02:00
John Darrington c2150d9ace gnu: Add links.
* gnu-system.am (GNU_SYSTEM_MODULES): Add new file.
* gnu/packages/links.scm: New file.
2014-07-12 06:44:26 +02:00
Ludovic Courtès ef5dd60a3f doc: Start writing about services.
* doc/guix.texi (Using the Configuration System): Remove details about
  '%base-services', and link to "Services".
  (Services): Add introductory text.
  (Base Services, Networking Services, X Window): New nodes.
2014-07-11 23:20:48 +02:00
Ludovic Courtès 51da7ca095 services: Use more Texinfo markup in docstrings.
* gnu/services/base.scm (host-name-service): Use Texinfo markup.
  (mingetty-service): Comment on #:allow-empty-passwords?.  Improve
  markup.
  (syslog-service, guix-service): Use Texinfo markup.
* gnu/services/networking.scm (static-networking-service): Likewise.
* gnu/services/xorg.scm (slim-service): Likewise.
2014-07-11 23:20:48 +02:00
Ludovic Courtès da417ffe3b system: Allow root to use 'groupadd' & co. without authenticating.
This fixes a bug whereby, if #:allow-root-passwords was #f, 'groupadd'
would ask for a password.  This is particularly problematic during
activation.

* gnu/system/linux.scm (rootok-pam-service): New procedure.
  (base-pam-services): Use it for all the user* and group* commands.
2014-07-11 23:20:48 +02:00
Ludovic Courtès f109696473 packages: Add printer for <origin>.
* guix/packages.scm (print-origin): New procedure.
  (<origin>): Add it as record type printer.
2014-07-11 23:20:48 +02:00
Eric Bavier 42e1394b11 gnu: texlive: Upgrade to 2014.
* gnu/packages/texlive.scm (texlive-extra-src, texlive-texmf-src,
  texlive): Upgrade to 2014.
  (texlive)[arguments]: Remove 'patch-perl-shebang' phase.
2014-07-11 10:58:56 -05:00
David Thompson 361046f7eb gnu: Add fish.
* gnu/packages/fish.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-07-11 08:11:07 -04:00
Ludovic Courtès 715956cc26 system: Add "netdev" group.
* gnu/system/shadow.scm (%base-groups): Add "netdev".
2014-07-11 00:27:27 +02:00
Ludovic Courtès cda3d81ea8 gnu: linux-libre: Remove '--strip-all' argument.
* gnu/packages/linux.scm (linux-libre)[arguments]: Remove
  #:strip-flags, which led to unloadable modules.  This reverts
  commit 9ca7eaa1.
  [build-phase]: Add INSTALL_MOD_STRIP=1.
2014-07-11 00:26:27 +02:00
Eric Bavier ca9ea1a849 gnu: glib: Fix build on i686.
* gnu/packages/patches/glib-tests-timer.patch: New patch.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/glib.scm: Use it.
2014-07-10 17:03:42 -05:00
Eric Bavier 8360758d5c gnu: Remove overlooked patch.
* gnu-system.am (dist_patch_DATA): Remove patch deleted previously.
2014-07-10 16:43:17 -05:00
Ludovic Courtès 501de668f1 gnu: Add VTK.
* gnu/packages/vtk.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-07-10 21:34:07 +02:00
Ludovic Courtès a6eb1a95d6 gnu: plotutils: Propagate libXaw.
* gnu/packages/plotutils.scm (plotutils): Move LIBXAW to from 'inputs'
  to 'propagated-inputs'.
2014-07-10 13:05:47 +02:00
Ludovic Courtès 1650dd8a38 gnu: linux-libre: Fallback to 'defconfig' when there's no config file.
* gnu/packages/linux.scm (kernel-config): Return #f rather than error
  out in the default case.
  (linux-libre)[native-inputs]: Add "kconfig" input only when
  'kernel-config' returns true.
  [build-phase]: Adjust accordingly.
2014-07-10 13:03:46 +02:00
Ludovic Courtès 9ca7eaa134 gnu: linux-libre: Strip everything with '--strip-all'.
* gnu/packages/linux.scm (linux-libre)[arguments]: Add #:strip-flags.
2014-07-10 00:35:27 +02:00
Ludovic Courtès a94546ecc4 gnu: linux-libre: Add i686 and x86_64 full-blown configs.
Thanks to Jason Self <jself@gnu.org> for the kernel configs.

* gnu/packages/linux.scm (kernel-config): New procedure.
  (linux-libre)[build-phase]: Copy it to .config.  Reduce the list of
  things appended to .config.
  [native-inputs]: Add "kconfig" input.
* gnu/packages/linux-libre-i686.conf,
  gnu/packages/linux-libre-x86_64.conf: New files, from
  <http://jxself.org/x86-32.txt> and <http://jxself.org/x86-64.txt>.
* Makefile.am (KCONFIGS): New variable.
  (nobase_dist_guilemodule_DATA): Add it.
2014-07-10 00:35:27 +02:00
Ludovic Courtès ed09bb11cd services: udev: Improve synchronization when starting.
* gnu/services/base.scm (udev-service)[start]: Add 'wait-for-udevd', and
  call it before running 'udevadm trigger'.  Pass --action=add to
  'udevadm trigger'.  Call 'udevadm settle' after 'udevadm trigger'.
2014-07-10 00:35:27 +02:00
Ludovic Courtès 971436c6bd services: xorg: Remove optional sections from xorg.conf.
* gnu/services/xorg.scm (xorg-start-command)[xserver.conf]: Remove
  sections "Monitor", "InputClass", "ServerLayout", "Device", and
  "Screen".
2014-07-10 00:35:27 +02:00
Ludovic Courtès 8dbab7125a services: xorg: Require 'udev'.
* gnu/services/xorg.scm: Add 'udev' to the 'requirement' field.
2014-07-10 00:35:27 +02:00
Ludovic Courtès 0adb027b27 services: xorg: Add drivers to the default search path.
* gnu/services/xorg.scm (xorg-start-command)[xserver.conf]: Add
  'ModulePath' entries for xf86-video-{fbdev,cirrus,intel,mach64,nv} and
  xf86-input-{synaptics,vmmouse}.
2014-07-10 00:35:27 +02:00
Ludovic Courtès 378377eb43 services: xorg: Fix typo in font path.
* gnu/services/xorg.scm (xorg-start-command)[xserver.conf]: Fix typo in
  font path.
2014-07-10 00:35:27 +02:00
John Darrington 8fd3de0bbb gnu: Add sipwitch and dependent packages
* gnu-system.am (GNU_SYSTEM_MODULES): Add new file.
* gnu/packages/telephony.scm: New file.
2014-07-09 18:21:41 +02:00
Ludovic Courtès df2ce34385 guix system: Add '--system' option.
* guix/scripts/system.scm (switch-to-system): Add #:system parameter;
  pass it to 'run-with-store'.
  (%options): Add '--system'.
  (guix-system): Pass the 'system' option to 'run-with-store',
  'package-derivation', and 'switch-to-system' calls.
* doc/guix.texi (Invoking guix system): Document '--system' and
  '--image-size'.
2014-07-08 23:42:35 +02:00
Cyrill Schenkel 35dbbbe04c gnu: Add conkeror.
* gnu-system.am (GNU_SYSTEM_MODULES): Add new package.
* gnu/packages/conkeror.scm: New file.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-07-08 17:57:32 +02:00
Mark H Weaver 3263b9b396 gnu: tor: Upgrade to 0.2.4.22.
* gnu/packages/tor.scm (tor): Upgrade to 0.2.4.22.
2014-07-08 09:12:50 -04:00
Ludovic Courtès 1c6b445b40 services: Update to use the dmd 0.2 API.
* gnu/services/avahi.scm (avahi-service)[start]: Wrap command in a
  list.
* gnu/services/dbus.scm (dbus-service)[start]: Likewise.
* gnu/services/ssh.scm (lsh-service): Likewise.
* gnu/services/base.scm (mingetty-service)[start]: Likewise.
  (nscd-service)[start]: Likewise.
  (syslog-service)[start]: Likewise.
  (guix-service)[start]: Likewise.
  (udev-service)[start]: Use 'exec-command' instead of 'execl'.
* gnu/services/xorg.scm (slim-service)[start]: Likewise, and use
  #:environment-variables.
2014-07-08 00:12:31 +02:00
Ludovic Courtès b3342b545a gnu: dmd: Update to 0.2.
* gnu/packages/admin.scm (dmd): Update to 0.2; remove 'patches'.
* gnu/packages/patches/dmd-getpw.patch,
  gnu/packages/patches/dmd-tests-longer-sleeps.patch: Remove.
* gnu-system.am (dist_patch_DATA): Adjust accordingly.
2014-07-08 00:12:30 +02:00
Ludovic Courtès ac47a7c240 gnu: linux-libre: Use the GNU + Freedo boot logo.
* gnu/packages/linux.scm (%boot-logo-patch): New variable.
  (linux-libre)[build-phase]: Apply it.
  [native-inputs]: Add it.
2014-07-08 00:12:30 +02:00
Mark H Weaver fa40e4d4ec gnu: bitlbee: Upgrade to 3.2.2.
* gnu/packages/messaging.scm (bitlbee): Upgrade to 3.2.2.  Remove patches.
  Use 'libotr' instead of 'libotr-3'.
* gnu/packages/patches/bitlbee-fix-tests.patch: Remove file.
* gnu/packages/patches/bitlbee-memset-fix.patch: Remove file.
* gnu-system.am (dist_patch_DATA): Remove patches.
2014-07-07 17:17:18 -04:00
Ludovic Courtès 59c51be290 build: Get the canonical $HOME name when testing 'guix package'.
* tests/guix-package.sh (HOME): Recompute using 'pwd -P'.
2014-07-06 21:26:11 +02:00
Ludovic Courtès 6171070bec build: Use the canonical srcdir/builddir in 'pre-inst-env'.
Fixes <http://bugs.gnu.org/17935>.

* pre-inst-env.in (abs_top_builddir, abs_top_srcdir): Use 'pwd -P'.
2014-07-06 19:13:12 +02:00
Ludovic Courtès c2d7747464 build: Remove empty element from $GUILE_LOAD_PATH.
* pre-inst-env.in (GUILE_LOAD_PATH): Remove extraneous colon.
2014-07-06 19:08:54 +02:00
Ludovic Courtès 8ee380ba3d gnu: gnupg: Update to 2.0.25 and 1.4.18.
* gnu/packages/gnupg.scm (gnupg): Update to 2.0.25.
  (gnupg-1): Update to 1.4.18.
2014-07-05 19:51:43 +02:00
Ludovic Courtès 8ad49499b9 build: Support running the test suite from a directory with symlinks.
Fixes <http://bugs.gnu.org/17935>.
Reported by Alex Kost <alezost@gmail.com>.

* test-env.in: Canonicalize $NIX_STORE_DIR, and remove
  $NIX_IGNORE_SYMLINK_STORE setting.
* tests/guix-register.sh: Likewise, canonicalize $new_store_dir and
  $new_store and leave $NIX_IGNORE_SYMLINK_STORE unchanged.
2014-07-05 19:15:08 +02:00
John Darrington 8731e52749 gnu: Add maxima.
* gnu/packages/maths.scm (maxima): New variable.
2014-07-05 16:16:03 +02:00
John Darrington f842bbed19 gnu: Add gcl.
* gnu-system.am (GNU_SYSTEM_MODULES): Add new package.
* gnu/packages/lisp.scm: New file.
2014-07-05 16:15:59 +02:00
Taylan Ulrich Bayirli/Kammer 6879fe235c guix package: Try $LOGNAME in addition to $USER.
Fixes <http://bugs.gnu.org/17946>.

Notoriously, cron jobs may set LOGNAME only and not USER.  See
e.g. crontab(5) under Debian 7 (wheezy).

* guix/scripts/package.scm (%profile-directory)
(guix-package): Also try LOGNAME if USER is unset.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-07-05 15:09:43 +02:00
Ludovic Courtès 3e39b916b6 Thank Taylan and Alex. 2014-07-05 15:02:42 +02:00
Ludovic Courtès 88371f0d7d guix package: Do the right thing for '-p ~/.guix-profile'.
Fixes <http://bugs.gnu.org/17939>.
Reported by Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>.

* guix/scripts/package.scm (canonicalize-profile): New procedure.
  (%options): Use it for --profile.
* tests/guix-package.sh: Add test.
2014-07-05 14:56:08 +02:00
Ludovic Courtès e84d8b30d9 vm: Enable QEMU support in the freestanding VM image.
* gnu/system/vm.scm (system-qemu-image): Add 'initrd' field.
2014-07-04 19:01:22 +02:00
Ludovic Courtès 3a100e7934 gnu: Avoid circular dependency among modules.
Reported by Alex Kost <alezost@gmail.com>.

* gnu/packages/python.scm: Don't use #:select for (gnu packages zip).
2014-07-04 15:09:39 +02:00
John Darrington 12c0f32a3f gnu: Add gegl and gimp
* gnu/packages/gimp.scm (gegl, gimp): New variables.
2014-07-04 06:53:50 +02:00
Ludovic Courtès 8451a568f4 doc: Document user accounts and user groups.
* doc/guix.texi (File Systems): Fix typo.
  (User Accounts): Populate.
2014-07-03 23:36:01 +02:00
Ludovic Courtès e3ced65af0 linux-initrd: Use 'call-with-error-handling' when booting.
* guix/build/linux-initrd.scm (canonicalize-device-spec): When label
  resolution fails, call 'error' instead of 'format' + 'start-repl'.
  (boot-system): Wrap most of body in 'call-with-error-handling'.
  Remove 'catch' around 'primitive-load' call.
2014-07-03 22:44:14 +02:00
Ludovic Courtès dccab4df20 linux-initrd: Remove unused local procedure.
* guix/build/linux-initrd.scm (boot-system)[resolve]: Remove.
2014-07-03 22:24:56 +02:00
Ludovic Courtès 615215a535 gnu: Add youtube-dl.
* gnu/packages/video.scm (youtube-dl): New variable.
2014-07-03 22:21:53 +02:00
Ludovic Courtès 113daf6270 doc: Write about file system configuration.
* doc/guix.texi (Using the Configuration System): Change 'guix system
  boot' to 'guix system reconfigure'.
  (File Systems, User Accounts, Services): New nodes.
2014-07-02 23:42:06 +02:00
Eric Bavier 59bad04fe4 gnu: glib: Upgrade to 2.40.0.
* gnu/packages/glib.scm (glib)[source]: Upgrade to 2.40.0.  Adjust
  patch list.
* gnu/packages/patches/glib-tests-newnet.patch: Remove.
* gnu/packages/patches/glib-tests-desktop.patch: Adjust for 2.40.0.
2014-07-02 13:58:02 -05:00
Eric Bavier f1fc45a9fd gnu: libbonobo: Skip failing test case.
* gnu/packages/patches/libbonobo-activation-test-race.patch: New patch.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/gnome.scm (libbonobo)[source]: New 'patches' field.
2014-07-02 13:52:12 -05:00
Eric Bavier 5becd02510 gnu: gnome: Version splitting and line wrapping.
* gnu/packages/gnome.scm (orbit2): Wrape code to 80 characters.  Use
  string-split/string-join to get version major/minor numbers.
  (libbonoboui): Likewise.
2014-07-02 13:47:23 -05:00
Eric Bavier 221ed17a58 gnu: Adjust yet more packages to GLib "bin" split.
* gnu/packages/maths.scm (pspp): Add glib:bin to 'native-inputs'.
* gnu/packages/gnome.scm (gconf, gnome-vfs, libgnome, libgnomeui,
  libbonoboui): Likewise.
  (libbonobo, libgnomecanvas, libgnomeprint): Comment on why glib:bin.
* gnu/packages/gtk.scm (gtksourceview): Likewise.
2014-07-02 13:32:59 -05:00
Ludovic Courtès d266b79332 linux-initrd: Gracefully handle lack of or invalid ext2 superblocks.
Reported by David Thompson <dthompson2@worcester.edu>.

* guix/build/linux-initrd.scm (read-ext2-superblock): Add
  'superblock-size' variable.  Read with 'get-bytevector-n!' instead of
  'getbytevector-n', and make sure we read exactly SUPERBLOCK-SIZE
  bytes.
2014-07-02 12:18:36 +02:00
Ludovic Courtès 44add1ce19 gnu: Adjust more packages to GLib "bin" split.
* gnu/packages/glib.scm (dbus-glib): Add glib-bin to 'native-inputs'.
  (glibmm): Likewise.
* gnu/packages/gstreamer.scm (gstreamer-0.10): Likewise.
* gnu/packages/gtk.scm (gtksourceview): Likewise.
* gnu/packages/qemu.scm (qemu-headless): Likewise.
* gnu/packages/gnome.scm (librsvg, libbonobo, libgnomecanvas,
  libgnomeprint): Likewise.
2014-07-02 11:42:17 +02:00
Ludovic Courtès 0f28ee3487 gnu: pdf: Add PoDoFo.
* gnu/packages/pdf.scm (podofo): New variable.
2014-07-02 09:50:04 +02:00
Cyrill Schenkel 3cf118a110 gnu: Add cmatrix.
* gnu/packages/games.scm (cmatrix):  New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-07-01 17:29:55 +02:00
Cyrill Schenkel ed02caff89 gnu: Add node.
* gnu-system.am (GNU_SYSTEM_MODULES): Add new package.
* gnu/packages/node.scm: New file.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-07-01 10:32:09 +02:00
Ludovic Courtès f33e2d78b7 services: Add lshd service.
* gnu/services/ssh.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-07-01 09:23:32 +02:00
Ludovic Courtès 060238ae64 linux-initrd: Rename 'qemu-initrd' to 'base-initrd'.
* gnu/system/linux-initrd.scm (qemu-initrd): Rename to...
  (base-initrd): ... this.
* gnu/system.scm (<operating-system>)[initrd]: Update accordingly.
* gnu/system/vm.scm (expression->derivation-in-linux-vm,
  system-disk-image, virtualized-operating-system): Likewise.
2014-07-01 09:23:32 +02:00
Ludovic Courtès 4fc96187b9 linux-initrd: Disable QEMU networking by default.
* gnu/system/linux-initrd.scm (qemu-initrd): Remove default value for
  #:qemu-networking?.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Pass
  #:qemu-networking? #t.
  (system-disk-image): Remove #:qemu-networking? #f.
  (virtualized-operating-system): Pass #:qemu-networking? #t.
2014-07-01 09:23:32 +02:00
Ludovic Courtès 24e0160a4a linux-initrd: Make the virtio kernel modules optional.
* gnu/system/linux-initrd.scm (qemu-initrd): Add #:virtio? parameter.
  Use it.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Pass
  'qemu-initrd' #:virtio?.
  (virtualized-operating-system): Likewise.
2014-07-01 09:23:32 +02:00
Eric Bavier cafc3f5ad7 gnu: Add jrnl, python-pycrypto, python-keyring, python-parsedatetime, and python-tzlocal.
* gnu/packages/jrnl.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
* gnu/packages/python.scm (python-pycrypto, python-keyring,
  python-dateutil-2, python-parsedatetime, python-tzlocal): New
  variables.
2014-06-30 11:26:42 -05:00
Eric Bavier 71639e1f17 guix: Add CC0 license.
* guix/licenses.scm (cc0): New variable.
2014-06-30 11:26:42 -05:00
Eric Bavier a480bc4157 gnu: Add behave, python-six, python-enum34, python-parse-type, and python-parse.
* gnu/packages/python.scm (python-six, python-enum34, python-parse-type,
  python-parse, behave): New variables.
2014-06-30 11:26:41 -05:00
Ludovic Courtès 426adbe827 gnu: glib: Add "bin" output.
Fixes <http://bugs.gnu.org/17853>.

* gnu/packages/glib.scm (glib)[outputs]: Add "bin".
  (gobject-introspection)[native-inputs]: New field.
* gnu/packages/avahi.scm (avahi)[native-inputs]: Add glib:bin.
* gnu/packages/gnome.scm (brasero, libgnome-keyring, evince,
  gsettings-desktop-schemas, libnotify, gtkglext): Likewise.
* gnu/packages/gstreamer.scm (gstreamer, gst-plugins-base,
  gst-plugins-base-0.10): Likewise.
* gnu/packages/gtk.scm (atk, pango, gdk-pixbuf, gtk+-2, gtk+):
  Likewise.
* gnu/packages/linux.scm (udev): Likewise.
* gnu/packages/pdf.scm (poppler): Likewise.
2014-06-30 18:05:57 +02:00
John Darrington b804c61e6f gnu: Add goffice and gnumeric
gnu/packages/gnome.scm (goffice, gnumeric): New variables.
2014-06-30 13:34:22 +02:00
Ludovic Courtès 1ddbd9fd71 guix-register: Add explicit libgcrypt initialization.
* nix/guix-register/guix-register.cc (main): Add calls to
  'gcry_check_version' and 'gcry_control', to appease libgcrypt.
2014-06-29 23:53:18 +02:00
Ludovic Courtès 1abb614051 Add Cyrill to AUTHORS. 2014-06-29 22:38:38 +02:00
Cyrill Schenkel 009c5b5cdc gnu: Add ncmpcpp.
* gnu/packages/mpd.scm (ncmpcpp): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-06-29 22:36:37 +02:00
Ludovic Courtès 081c5b2d66 services: udev: Make sure modules are found, and use "udevadm settle".
* gnu/services/base.scm (udev-service): Set $LINUX_MODULE_DIRECTORY.  In
  the parent, invoke "udevadm settle" before "udevadm trigger".
2014-06-29 22:06:29 +02:00
Ludovic Courtès 62f0a4792b system: Set $LINUX_MODULE_DIRECTORY as a function or /run/booted-system.
* gnu/system.scm (etc-directory): Remove #:kernel parameter.  Set
  LINUX_MODULE_DIRECTORY as a function or /run/booted-system.
  (operating-system-etc-directory): Update accordingly.
2014-06-29 22:02:42 +02:00
Ludovic Courtès 0918e64a49 doc: Improve wording and example in "Using the Configuration System".
* doc/guix.texi (Using the Configuration System): Make the intro more
  user-oriented.  Change example to return an operating system.  Fix
  typos.  Mention mandatory/optional fields.
2014-06-27 23:38:21 +02:00
Ludovic Courtès 5d69fb54fb gnu: guix: Use the development version by default.
* gnu/packages/package-management.scm (guix): Rename to...
  (guix-0.6): ... this.
  (guix-devel): Rename to...
  (guix): ... this.  Replace references to 'guix' by references to
  'guix-0.6'.
2014-06-27 23:38:19 +02:00
Ludovic Courtès 480af4d622 gnu: guix: Add development version.
* gnu/packages/package-management.scm (guix-devel): New variable.
2014-06-27 23:06:55 +02:00
Ludovic Courtès 6750877f46 git-download: Support recursive clones.
* guix/git-download.scm (<git-reference>)[recursive?]: New field.
  (git-fetch): Add 'inputs' variable.  Add it to the #:inputs argument
  of 'build-expression->derivation'.  Augment builder with call to
  'set-path-environment-variable', and pass #:recursive? to
  'git-fetch'.
* guix/build/git.scm (git-fetch): Add #:recursive? parameter.  Pass
  --recursive when RECURSIVE? is true, and delete all the '.git' files.
2014-06-27 23:04:48 +02:00
Ludovic Courtès 20b1d19e10 gnu: Adjust for (gnu packages image) merger.
* gnu/packages/aidc.scm: Use (gnu packages image).
2014-06-27 22:36:25 +02:00
Ludovic Courtès 459dd9eaf2 system: Add a 'system?' field to user accounts.
* gnu/system/shadow.scm (<user-account>)[system?]: New field.
* gnu/system.scm (user-account->gexp): Add it.
* guix/build/activation.scm (add-user): Add #:system? parameter and
  honor it.
  (activate-users+groups): Handle the 'system?' part of user tuples.
  Pass it to 'add-user'.  Don't create PROFILE-DIR when SYSTEM? is
  true.
* gnu/services/dbus.scm (dbus-service): Add 'system?' field for
  "messagebus" account.
* gnu/services/base.scm (guix-build-accounts): Likewise.
* gnu/services/avahi.scm (avahi-service): Likewise.
2014-06-27 19:06:08 +02:00
Ludovic Courtès f2c403eab6 system: Install /var/guix/profiles/system-1-link on new systems.
* guix/build/install.scm (directives): Add /var/guix/profiles/system.
  (populate-root-file-system): Add 'system' parameter.  Create
  /var/guix/profiles/system-1-link.
* guix/scripts/system.scm (install): Pass OS-DIR to
  'populate-root-file-system'.
* guix/build/vm.scm (initialize-root-partition): Add #:system-directory
  parameter, and pass it to 'populate-root-file-system'.
  (initialize-hard-disk): Add #:system-directory parameter, and pass it
  to 'initialize-root-partition'.
* gnu/system/vm.scm (qemu-image): Add #:os-derivation parameter and pass
  it to 'initialize-hard-disk'.
  (system-disk-image, system-qemu-image,
  system-qemu-image/shared-store): Pass #:os-derivation to 'qemu-image.
2014-06-27 19:06:08 +02:00
John Darrington dff624230a gnu: Add talkfilters.
* gnu/packages/games.scm (talkfilters): New variable.
2014-06-27 17:53:40 +02:00
John Darrington 51d3dcea42 gnu: Add qrencode.
* gnu/packages/aidc.scm (qrencode): New variable.
2014-06-27 17:53:40 +02:00
David Thompson e55354b87e gnu: Consolidate libjpeg, libpng, and libtiff into one module.
* gnu/packages/image.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add image.scm and remove libjpeg.scm,
  libpng.scm, and libtiff.scm.
* gnu/packages/libjpeg.scm, gnu/packages/libpng.scm, gnu/packages/libtiff.scm:
  Delete files.
* gnu/packages/emacs.scm gnu/packages/games.scm, gnu/packages/gd.scm,
  gnu/packages/geeqie.scm, gnu/packages/ghostscript.scm,
  gnu/packages/gimp.scm, gnu/packages/gnome.scm, gnu/packages/gnunet.scm,
  gnu/packages/gnustep.scm, gnu/packages/gnuzilla.scm,
  gnu/packages/graphviz.scm, gnu/packages/gtk.scm,
  gnu/packages/imagemagick.scm, gnu/packages/inkscape.scm,
  gnu/packages/netpbm.scm, gnu/packages/pdf.scm, gnu/packages/plotutils.scm,
  gnu/packages/qemu.scm, gnu/packages/qt.scm, gnu/packages/scheme.scm,
  gnu/packages/sdl.scm, gnu/packages/slim.scm, gnu/packages/tcl.scm,
  gnu/packages/texlive.scm, gnu/packages/video.scm, gnu/packages/xiph.scm,
  gnu/packages/xorg.scm: Use (gnu packages image) module.
2014-06-27 06:27:53 -04:00
David Thompson dc55b8b234 gnu: Enable libvpx support in ffmpeg.
* gnu/packages/video.scm (ffmpeg): Add libvpx input.
2014-06-27 06:22:49 -04:00
Ludovic Courtès 8a6d273137 system: Adjust the set of fields with default values.
* gnu/system.scm (<operating-system>)[file-systems]: Remove default.
  [locale]: Add default value.
2014-06-27 00:12:40 +02:00
Ludovic Courtès b25937e318 guix system: Add 'reconfigure' action.
* guix/scripts/system.scm (%system-profile): New variable.
  (switch-to-system, previous-grub-entries): New procedures.
  (unless-file-not-found): New macro.
  (show-help): Add 'reconfigure'.
  (guix-system): Handle it.
* gnu/system.scm: Export 'operating-system-activation-script'.
* doc/guix.texi (Invoking guix system): Document it.
2014-06-27 00:12:40 +02:00
Ludovic Courtès f01efec09a activation: Preserve /etc/groups upon reboots.
This is a followup to e2fcc23.  The /etc/group file would be cleared
when booting.

* guix/build/activation.scm (activate-users+groups)[touch]: Rewrite so
  it does not wipe out FILE's contents.
2014-06-27 00:12:40 +02:00
Ludovic Courtès c1202fb1f9 guix {system,offload}: Improve reporting of syntax errors.
* guix/scripts/system.scm (read-operating-system) <catch handler>: Add
  case for 'syntax-error'.  Correct message for default case.
* guix/scripts/offload.scm (build-machines) <catch handler>: Add case
  for 'syntax-error'.
* tests/guix-system.sh: New file.
* Makefile.am (SH_TESTS): Add it.
2014-06-27 00:12:40 +02:00
David Thompson 80b77646a4 gnu: Add libsodium.
* gnu-system.am (GNU_SYSTEM_MODULES): Add crypto.scm.
* gnu/packages/crypto.scm: New file.
2014-06-26 17:53:29 -04:00
David Thompson 7025a035df gnu: Add guile-opengl.
* gnu/packages/gl.scm (guile-opengl): New variable.
2014-06-26 17:52:44 -04:00
David Thompson d0ed39be55 gnu: Add libvpx.
* gnu/packages/video.scm (libvpx): New variable.
2014-06-26 17:51:40 -04:00
John Darrington 091befba64 gnu: Add new package barcode
* gnu/packages/aidc.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-06-26 19:49:09 +02:00
Ludovic Courtès fe6e3fe2a5 system: Support the addition of old entries in the GRUB menu.
* gnu/system.scm (operating-system-grub.cfg): Add 'old-entries'
  parameter.  Pass it to 'grub-configuration-file'.
* gnu/system/grub.scm (grub-configuration-file): Add #:old-entries
  parameter.  Honor it.
2014-06-25 23:53:27 +02:00
Ludovic Courtès 64e40dbb69 system: Store boot parameters in the system derivation.
* gnu/system.scm (operating-system-parameters-file): New procedure.
  (operating-system-derivation): Use it to produce a 'parameters' files.
2014-06-25 23:53:27 +02:00
Ludovic Courtès 2d23e6f051 system: Factorize GRUB menu entry label.
* gnu/system.scm (kernel->grub-label): New procedure.
  (operating-system-grub.cfg): Use it.
2014-06-25 23:53:27 +02:00
Eric Bavier 7cd157e221 gnu: cursynth: Upgrade to 1.5.
* gnu/packages/cursynth.scm (cursynth)[source]: Upgrade to 1.5.  New
  'patches' field.
* gnu/packages/patches/cursynth-wave-rand.patch: New patch.
* gnu-system.am (dist_patch_DATA): Add it.
2014-06-25 14:25:26 -05:00
Ludovic Courtès edc28d3c42 gnu: libmicrohttpd: Upgrade to 0.9.37.
* gnu/packages/gnunet.scm (libmicrohttpd): Upgrade to 0.9.37.
2014-06-25 11:47:58 +02:00
Ludovic Courtès 58970d6a5d gnu: gnupg: Upgrade versions 1 and 2 (security fix.)
* gnu/packages/gnupg.scm (gnupg): Upgrade to 2.0.24.
  (gnupg-1): Upgrade to 1.4.17.
2014-06-25 11:47:58 +02:00
Ludovic Courtès 473dad6fde gnu: libgpg-error: Upgrade to 1.13.
* gnu/packages/gnupg.scm (libgpg-error): Upgrade to 1.13.
2014-06-25 11:47:58 +02:00
Ludovic Courtès 7f27b32f31 gnu: nano: Upgrade to 2.3.4.
* gnu/packages/nano.scm (nano): Upgrade to 2.3.4.
2014-06-25 11:47:58 +02:00
Ludovic Courtès 0179cd7ed2 gnu: lightning: Upgrade to 2.0.4.
* gnu/packages/lightning.scm (lightning): Upgrade to 2.0.4.
2014-06-25 11:47:58 +02:00
Ludovic Courtès 85f35ad623 gnu: ddrescue: Upgrade to 1.18.1.
* gnu/packages/disk.scm (ddrescue): Upgrade to 1.18.1.
2014-06-25 11:47:58 +02:00
Ludovic Courtès d12c626cf8 gnu: mcron: Upgrade to 1.0.8.
* gnu/packages/guile.scm (mcron): Upgrade to 1.0.8.
2014-06-25 11:47:57 +02:00
Ludovic Courtès 5177f0fb41 gnu: libtasn1: Upgrade to 3.6.
* gnu/packages/gnutls.scm (libtasn1): Upgrade to 3.6.
2014-06-25 11:47:57 +02:00
Ludovic Courtès 39ed6749dd gnu: nettle: Add version 3.0.
* gnu/packages/nettle.scm (nettle-3): New variable.
2014-06-25 11:47:57 +02:00
Eric Bavier b4eab6a6a5 gnu: parallel: Upgrade to 20140622.
* gnu/packages/parallel.scm (parallel)[source]: Upgrade to 20140622.
2014-06-25 02:23:10 -05:00
Eric Bavier f4bf37825b gnu: moe: Upgrade to 1.6.
* gnu/packages/moe.scm (moe)[source]: Upgrade to 1.6.
  Add 'native-inputs' field.
2014-06-25 02:13:47 -05:00
Ludovic Courtès cadf6cb4cf guix system: Gracefully handle 'install-grub' errors.
* guix/scripts/system.scm (install): Wrap 'install-grub' call in
  'false-if-exception'.  This is a followup to 641f9a2a.
2014-06-24 22:11:12 +02:00
Ludovic Courtès f6ad09ae5a gnu: Move JSON-C to (gnu packages web).
* gnu/packages/pulseaudio.scm (json-c): Move to...
* gnu/packages/web.scm (json-c): ... here.  New variable.
2014-06-24 14:53:51 +02:00
Ludovic Courtès 9ab7415329 gnu: json-c: Upgrade to 0.12.
* gnu/packages/pulseaudio.scm (json-c)[source]: Upgrade to 0.12.  Add
  'modules' and 'snippet' fields.
2014-06-24 14:43:51 +02:00
Ludovic Courtès e11390df55 install: Use udev.
* gnu/system/install.scm (installation-services): Call 'udev-service'.
2014-06-24 00:20:01 +02:00
Ludovic Courtès 151a2c07aa services: Add udev service, and add it to '%base-services'.
* gnu/services/base.scm (udev-service): New procedure.
  (%base-services): Use it.
* gnu/system.scm (%base-packages): Add UDEV.
2014-06-24 00:20:01 +02:00
David Thompson 1bd3f84986 gnu: Add notmuch.
* gnu/packages/mail.scm (notmuch): New variable.
2014-06-23 08:09:39 -04:00
David Thompson f4eae897cb gnu: Add dtach.
gnu/packages/screen.scm (dtach): New variable.
2014-06-23 08:09:33 -04:00
David Thompson 1790739c75 gnu: Add talloc.
* gnu/packages/samba.scm (talloc): New variable.
2014-06-23 08:05:00 -04:00
Ludovic Courtès b76a384715 system: Use the default 'groups' field.
* gnu/system/install.scm (installation-os): Remove 'groups' field.
* build-aux/hydra/demo-os.scm: Likewise.
2014-06-22 22:28:24 +02:00
Ludovic Courtès 773e956d5d system: Augment the default set of groups.
* gnu/system/shadow.scm (%base-groups): New variable.
* gnu/system.scm (<operating-system>)[groups]: Use it as the default.
2014-06-22 22:16:14 +02:00
Ludovic Courtès 72507e23b5 system: Remove useless 'members' field of 'user-group'.
* gnu/system/shadow.scm (<user-group>)[members]: Remove field.
* gnu/system/install.scm (installation-os)[users]: Remove 'members'
  fields.  Use 'supplementary-groups' for 'guest'.
* build-aux/hydra/demo-os.scm (users): Likewise.
* gnu/services/base.scm (guix-service): Remove 'members' field.
2014-06-22 21:48:35 +02:00
Ludovic Courtès 528b6a3dce gnu: kmod: Honor $LINUX_MODULE_DIRECTORY.
* gnu/packages/patches/kmod-module-directory.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/linux.scm (kmod)[origin]: Use it.
2014-06-22 21:14:23 +02:00
Andreas Enge d7d42d6b24 gnu: Add udev.
* gnu/packages/linux.scm (udev): New variable.
* gnu/packages/patches/udev-gir-libtool.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2014-06-22 15:02:20 +02:00
Andreas Enge e062d54240 gnu: Add kmod.
* gnu/packages/linux.scm (kmod): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-06-22 12:29:38 +02:00
Ludovic Courtès 9b9148d8bb linux-initrd: Allow unionfs to have a large number of open files.
Fixes <http://bugs.gnu.org/17827>.

* guix/build/linux-initrd.scm (mount-root-file-system) [volatile-root?]:
  Pass unionfs '-o max_file=65536'.
2014-06-21 17:35:56 +02:00
Ludovic Courtès 738146bfd4 nls: Update 'sr' translation. 2014-06-21 15:21:04 +02:00
Ludovic Courtès b6a4dba116 gnu: man-pages: Upgrade to 3.69.
* gnu/packages/man.scm (man-pages): Upgrade to 3.69.
2014-06-21 12:52:34 +02:00
Ludovic Courtès d3e3b77dcc gnu: gnupg: Upgrade to 2.0.23.
* gnu/packages/gnupg.scm (gnupg): Upgrade to 2.0.23.
2014-06-21 00:26:31 +02:00
Ludovic Courtès ea9711018c gnu: global: Upgrade to 6.3.
* gnu/packages/global.scm (global): Upgrade to 6.3.
2014-06-21 00:22:34 +02:00
Ludovic Courtès f513527a8e Merge branch 'core-updates' 2014-06-20 23:44:42 +02:00
Ludovic Courtès 00fe93338d substitute-binary: Warn about uninitialized ACL.
* guix/scripts/substitute-binary.scm (guix-substitute-binary): Call
  'check-acl-initialized'.
  (check-acl-initialized): Don't rely on 'equal?' to compare keys.
  Instead, convert keys to strings.
2014-06-19 23:35:41 +02:00
Ludovic Courtès 080571eeac doc: Mention KVM support for 'guix system'.
* doc/guix.texi (Invoking guix system): Add note about KVM support.
2014-06-19 23:35:41 +02:00
Ludovic Courtès 9b762b8d7c system: Prefer packages from %FINAL-INPUTS.
* gnu/packages/base.scm (canonical-package): New procedure.
* gnu/system.scm (%base-packages): Pass BASH, COREUTILS, FINDUTILS,
  GREP, and SED through 'canonical-package'.
2014-06-19 23:35:41 +02:00
Ludovic Courtès eef4096c14 guix system: 'init' makes sure the target store directory exists.
* guix/scripts/system.scm (install): Before calling 'copy-closure', make
  sure directory (%store-prefix) under TARGET exists.
2014-06-19 23:35:41 +02:00
Ludovic Courtès dc34393569 gnu: isc-dhcp: In native builds, refer to the final Coreutils and sed.
* gnu/packages/admin.scm (isc-dhcp)[inputs]: Add Coreutils and sed only
  when (%current-target-system) is true.
2014-06-19 23:35:41 +02:00
Ludovic Courtès ae5c6fca26 gnu: privoxy: Use etc/privoxy as the sysconfdir.
Reported by "d00000" on #guix.

* gnu/packages/tor.scm (privoxy)[arguments]: Add #:configure-flags.
2014-06-19 23:35:41 +02:00
Mark H Weaver 2c14c6d7cb gnu: gawk: Apply work around to build system for MIPS.
* gnu/packages/gawk.scm (gawk): Work around a build problem on MIPS.
2014-06-18 18:42:35 -04:00
Ludovic Courtès ed4a8816d6 gnu: linux-libre: Upgrade to 3.15.
* gnu/packages/linux.scm (linux-libre): Upgrade to 3.15.
2014-06-18 16:23:06 +02:00
Ludovic Courtès c8f60748bd gnu: kbd: Patch buggy makefile.
* gnu/packages/linux.scm (kbd)[source]: Add 'modules' and 'snippet'
  fields.
2014-06-18 15:32:17 +02:00
Ludovic Courtès 81f61c17c5 build: Add 'assert-final-inputs-self-contained' rule.
* build-aux/check-final-inputs-self-contained.scm: New file.
* Makefile.am (EXTRA_DIST): Add it.
  (assert-final-inputs-self-contained): New target.
  (distcheck-hook): Depend on it.
2014-06-18 15:03:13 +02:00
Ludovic Courtès 2eea253f4d substitute-binary: Avoid the term "narinfo" in user messages.
* guix/scripts/substitute-binary.scm (assert-valid-narinfo): Change
  message to avoid the term "narinfo".
2014-06-17 00:30:16 +02:00
Ludovic Courtès 26fd908fcf Thank Benno. 2014-06-17 00:27:15 +02:00
Ludovic Courtès 648453e8d6 nls: Use xgettext and msgmerge with --no-wrap.
Suggested by Benno Schulenberg <coordinator@translationproject.org>.

* po/guix/Makevars (XGETTEXT_OPTIONS): Add --no-wrap.
  (MSGMERGE_OPTIONS): New variable.
* po/packages/Makevars (XGETTEXT_OPTIONS): Add --no-wrap.
  (MSGMERGE_OPTIONS): New variable.
2014-06-17 00:26:32 +02:00
Ludovic Courtès 7f52946adf nls: Remove obsolete messages from PO files.
Suggested by Benno Schulenberg <coordinator@translationproject.org>.

* po/guix/eo.po, po/guix/pt_BR.po, po/guix/sr.po, po/guix/vi.po,
  po/packages/eo.po, po/packages/pt_BR.po, po/packages/sr.po,
  po/packages/vi.po: Remove obsolete messages.
2014-06-17 00:24:25 +02:00
Ludovic Courtès 278b64283a tests: Use the C locale for 'guix package -s'.
* tests/guix-package.sh: Set LC_MESSAGES=C before the 'guix package -s'
  test.
2014-06-16 23:49:05 +02:00
Ludovic Courtès c4e52354c6 gnu: guile-ncurses: Work around missing test files.
* gnu/packages/patches/guile-ncurses-tests.patch: New file.
* gnu/packages/guile.scm (guile-ncurses)[source]: Use it.
* gnu-system.am (dist_patch_DATA): Add it.
2014-06-16 21:46:27 +02:00
Ludovic Courtès 1319cfe946 gnu: icu4c: Upgrade to 53.1.
* gnu/packages/icu4c.scm (icu4c): Upgrade to 53.1.
2014-06-16 17:19:34 +02:00
Ludovic Courtès eb705bb3f7 gnu: icu4c: Fix failing test.
* gnu/packages/patches/icu4c-test-date-format.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/icu4c.scm (icu4c)[source]: Use it.
2014-06-16 17:18:47 +02:00
Ludovic Courtès b344c505f4 gnu: qemu: Remove dependency on Samba.
* gnu/packages/qemu.scm (qemu-headless)[inputs]: Remove SAMBA.
  [arguments]: Remove --smbd configure flag.
2014-06-16 10:47:36 +02:00
Ludovic Courtès 7190ae7743 Reverting "gnu: ncurses: Build libtinfo."
This reverts commit 953c9fcf8c.  It turns
out that most packages (guile-ncurses, cursynth, aumix, util-linux,
etc.) expect libncurses to provide everything.  So they had to be
patched to add -ltinfow to their LDFLAGS, which is counterproductive.

Other recent distros take that approach---e.g.,
<https://bugs.launchpad.net/ubuntu/+source/ncurses/+bug/259139>.
2014-06-15 22:18:10 +02:00
Ludovic Courtès c3428a08be gnu: apr: Build sequentially.
* gnu/packages/apr.scm (apr)[arguments]: New field.
2014-06-15 21:10:58 +02:00
Ludovic Courtès 09ba396c02 gnu: Remove dependency from gzip to the bootstrap binaries.
* gnu/packages/base.scm (grep-final): New variable.
  (%boot5-inputs): Add it.
  (%final-inputs): Use it.
2014-06-15 11:53:02 +02:00
John Darrington feadf100a2 gnu: Add cook.
* gnu/packages/cook.scm: New file.
* gnu-system.am: New file cook.scm.
2014-06-15 06:52:06 +02:00
Ludovic Courtès 5c860cec83 gnu: gcc: Really avoid 'install-strip' when cross-compiling.
This is a followup to 6b9229c.

* gnu/packages/gcc.scm (gcc-4.7): Turn 'install-target' into a thunk,
  so (%current-target-system) is current.
2014-06-14 23:28:28 +02:00
Ludovic Courtès 7470df5ddf Merge branch 'master' into core-updates 2014-06-14 23:25:59 +02:00
Ludovic Courtès 07254feb24 ui: Avoid circularity with (guix gexp).
Fixes a regression introduced in 56b8210 ("guix build: Allow gexps to be
passed to '-e'.")

* guix/ui.scm (%guix-user-module): Wrap in 'delay'.
  (read/eval): Adjust accordingly.
2014-06-14 23:23:56 +02:00
Ludovic Courtès 240a2775de i18n: Move package descriptions from 'guix' to 'guix-packages'.
* po/guix: Merge with po/packages as per
  <https://lists.gnu.org/archive/html/guix-devel/2014-06/msg00058.html>.
* po/packages/LINGUAS: Add eo, pt_BR, sr, and vi.
2014-06-14 22:55:59 +02:00
Ludovic Courtès 243cea2461 guix: Look for "guix-packages" messages in $localedir.
* scripts/guix.in (run-guix-main): Add 'bindtextdomain' call.
2014-06-14 22:55:59 +02:00
Ludovic Courtès 56b8210697 guix build: Allow gexps to be passed to '-e'.
* guix/ui.scm (%guix-user-module): New variable.
  (read/eval): Pass it as the second argument to 'eval'.
* guix/scripts/build.scm (options/resolve-packages): Add case for
  'gexp?'.
* tests/guix-build.sh: Add tests.
* doc/guix.texi (Invoking guix build): Document '-e gexp'.
guxi build: Allow gexps to be passed to '-e'.

* guix/ui.scm (%guix-user-module): New variable.
  (read/eval): Pass it as the second argument to 'eval'.
* guix/scripts/build.scm (options/resolve-packages): Add case for
  'gexp?'.
* tests/guix-build.sh: Add tests.
* doc/guix.texi (Invoking guix build): Document '-e gexp'.
2014-06-14 22:55:59 +02:00
Ludovic Courtès d2e2f14226 gnu: gcc-4.7: Upgrade to 4.7.4.
* gnu/packages/gcc.scm (gcc-4.7): Upgrade to 4.7.4.
2014-06-14 22:21:29 +02:00
Ludovic Courtès 6b9229ca51 gnu: gcc: Don't use the 'install-strip' target when cross-compiling.
* gnu/packages/gcc.scm (gcc-4.7): Add 'install-target' variable.  Use
  it in the 'install' phase.
2014-06-14 22:16:03 +02:00
Ludovic Courtès fd0b276624 gnu: gcc: Fix cross-compilation of gcc (Canadian cross).
* gnu/packages/gcc.scm (gcc-4.7)[arguments] <#:make-flags>:
  When (%current-target-system) is true, pass the empty list or
  '("CFLAGS=-g0 -O2").
2014-06-14 16:04:38 +02:00
Ludovic Courtès 6e3ecad6ca gnu: make-bootstrap: Make sure %gcc-stripped binaries are usable.
* gnu/packages/make-bootstrap.scm (%gcc-stripped):
  When (%current-target-system) is false, run gcc, g++, and cpp with
  --version.
2014-06-14 15:58:23 +02:00
Ludovic Courtès c4873bc4f5 gnu: make-bootstrap: Build %gcc-static with --disable-lto.
* gnu/packages/make-bootstrap.scm (%gcc-static): Pass --disable-lto.
2014-06-14 15:34:56 +02:00
Eric Bavier a83c6a6471 gnu: Add pingus.
* gnu/packages/games.scm (pingus): New variable.
* gnu/packages/patches/pingus-sdl-libs-config.patch: New patch.
* gnu-system.am (dist_patch_DATA): Add it.
2014-06-13 14:11:14 -05:00
John Darrington 95faa10714 gnu: Add busybox.
* gnu/packages/busybox.scm: New file.
* gnu-system.am: Add gnu/packages/busybox.scm.
2014-06-13 20:21:26 +02:00
Ludovic Courtès 97b465feb1 gnu: make-bootstrap: Build libstdc++ in '%gcc-static'.
* gnu/packages/make-bootstrap.scm (%gcc-static): Re-enable C++.
2014-06-13 17:57:41 +02:00
Ludovic Courtès ee76417972 Separate package description translations from string translations.
* po/packages/LINGUAS, po/packages/Makevars, po/packages/POTFILES.in:
  New files.
* po/guix/Makevars (DOMAIN): Change to "guix".
  (XGETTEXT_OPTIONS): Remove "--keyword=synopsis --keyword=description".
* po/guix/POTFILES.in: Remove gnu/packages/*.scm.
* configure.ac: Change to gettext 0.18.3.  Produce
  po/packages/Makefile.in.
* Makefile.am (SUBDIRS): Add po/packages.
* guix/ui.scm (%package-text-domain): New variable.
  (P_): New procedure.
  (package->recutils): Use 'P_' instead of '_'.
* guix/scripts/package.scm (find-packages-by-description): Use 'P_'
  instead of 'gettext'.
2014-06-13 17:30:40 +02:00
Ludovic Courtès ef1a9bb7d6 Move gettext files to 'po/guix'.
* po: Rename to...
* po/guix: ... this.
* po/guix/Makevars (subdir, top_builddir): Adjust accordingly.
* configure.ac: Change 'po/Makefile.in' to 'po/guix/Makefile.in'.
* Makefile.am (SUBDIRS): Change 'po' to 'po/guix'.
2014-06-13 16:31:18 +02:00
Ludovic Courtès 37550e67b9 gnu: make-bootstrap: Use single-output GCCs.
* gnu/packages/make-bootstrap.scm (package-with-relocatable-glibc)[native-inputs]:
  Add 'outputs' field for the rewritten GCC.
  (%gcc-stripped): Add 'outputs' field.
2014-06-13 15:57:23 +02:00
Ludovic Courtès 9d0b8fbd78 pull: Copy and compile gnu.scm.
* guix/build/pull.scm (build-guix): Copy gnu.scm to OUT.
2014-06-13 11:42:33 +02:00
Ludovic Courtès df142dd40e gnu: grep: Upgrade to 2.20.
* gnu/packages/base.scm (grep): Upgrade to 2.20.
2014-06-12 23:35:02 +02:00
Ludovic Courtès cf02d3a5d7 gnu: gettext: Upgrade to 0.19.1.
* gnu/packages/gettext.scm (gnu-gettext): Upgrade to 0.19.1.
2014-06-12 23:33:15 +02:00
Ludovic Courtès 288a09ca91 gnu: make-bootstrap: Fix compilation of %gcc-static.
* gnu/packages/make-bootstrap.scm (%gcc-static)[arguments]
  <#:configure-flags>: Add --disable-bootstrap
  --with-stage1-ldflags=-static.
  Remove #:make-flags.
2014-06-12 23:27:25 +02:00
John Darrington b777d784a0 gnu: Add tinyproxy.
* gnu/packages/web.scm (tinyproxy): New variable.
* gnu/packages/docbook.scm: Remove #:select (tar)
2014-06-12 16:08:14 +02:00
John Darrington 8c6cfd553e gnu: Add dropbear.
* gnu/packages/ssh.scm (dropbear): New variable.
2014-06-12 16:01:56 +02:00
Ludovic Courtès a49c57a793 gnu: cross-gcc: Use a single output.
* gnu/packages/cross-base.scm (cross-gcc): Add 'outputs' field.
2014-06-09 22:45:01 +02:00
Ludovic Courtès b6b097ac81 guix build: Only 'guix build' sets #:print-build-trace.
This makes 'guix package' et al. slightly less verbose, by not emitting
"@ substituter-started" lines and similar.

* guix/scripts/build.scm (set-build-options-from-command-line): Pass
  #:print-build-trace.
  (%default-options): Add 'print-build-trace?'.
2014-06-09 18:55:48 +02:00
Ludovic Courtès 49ad317ae1 doc: Add a few words on the term "derivation".
* doc/guix.texi (Programming Interface): Add a sentence on "derivation".
2014-06-09 18:55:48 +02:00
Ludovic Courtès f9057dba6a Thank Carlos. 2014-06-09 18:55:47 +02:00
Ludovic Courtès 6ec2e6b0c9 gnu: skribilo: Propagate Guile dependencies.
Reported by Carlos Carleos <carleos@uniovi.es>.

* gnu/packages/skribilo.scm (skribilo)[inputs]: Move
  GUILE-READER/GUILE-2.0 and GUILE-LIB to...
  [propagated-inputs]: ... here.  New field.
2014-06-09 18:55:47 +02:00
Ludovic Courtès b47b2b5275 gnu: coreutils: Remove run-time dependency on Bash.
* gnu/packages/base.scm (coreutils)[arguments] <patch-shell-references>:
  Leave src/split.c unpatched.  Set $SHELL.  Use .../bin/sh and not
  .../bin/bash in tests.
2014-06-09 12:22:59 +02:00
Ludovic Courtès 84e6756c57 gnu: gcc: Add a "lib" output.
* gnu/packages/gcc.scm (gcc-4.7)[configure-flags]: Add
  --with-gxx-include-dir.
  [outputs]: New field.
  [arguments] <phases>: Adjust to use the "lib" output.  Add
  'substitute*' calls for "libstdc++-v3/python/Makefile.in" and
  "gcc/config.in".
* gnu/packages/base.scm (gcc-boot0) <symlink-libgcc_eh>: Use the "lib"
  output.
  (cross-gcc-wrapper): Add 'outputs' field.
  (glibc-final)[arguments]: Adjust #:allowed-references to list
  '(GCC-BOOT0 "lib").
  (libstdc++): Add 'outputs' field.
  (gcc-final)[arguments]: Add "lib" to #:allowed-references.
* gnu/packages/make-bootstrap.scm (%gcc-static): Add 'outputs' field.
2014-06-09 11:58:43 +02:00
Ludovic Courtès e0a0c84b4f gnu: glibc-final: Remove top-level circular dependency.
This fixes a top-level circular dependency between linux.scm and
base.scm introduced in 2e92375.

* gnu/packages/base.scm (glibc-final): Remove call to
  'package-with-restricted-references', and use an 'arguments' field
  instead.
2014-06-08 23:24:04 +02:00
Ludovic Courtès 3916023228 gnu: libunistring: Work around parallel build issue.
* gnu/packages/libunistring.scm (libunistring)[arguments]: New field.
2014-06-08 10:54:44 +02:00
Eric Bavier e531172d11 gnu: rdup: Fix tests.
* gnu/packages/backup.scm (rdup) [arguments]: Add pre-check phase.
  [origin]: Add snippet.
2014-06-07 21:49:54 -05:00
Ludovic Courtès a744719d70 gnu: gettext: Remove debugging leftover.
* gnu/packages/gettext.scm (gnu-gettext)[source](patches): Remove.
2014-06-07 22:42:57 +02:00
Ludovic Courtès 2e6a134515 gnu: gcc-final: Make sure the output refers only to libc.
* gnu/packages/base.scm (gcc-final)[arguments]: Add
  #:allowed-references.
2014-06-07 20:20:09 +02:00
Ludovic Courtès 592e8660a1 gnu: binutils-final: Make sure the output refers only to libc.
* gnu/packages/base.scm (binutils-final)[arguments]: Add
  #:allowed-references.
2014-06-07 19:39:23 +02:00
Ludovic Courtès 2e92375eb1 gnu: glibc-final: Make sure we hold just the right set of references.
* gnu/packages/base.scm (glibc-final): Wrap in
  'package-with-restricted-references'.
2014-06-07 19:36:50 +02:00
Ludovic Courtès f986c264b2 build-system/gnu: Add 'package-with-restricted-references'.
* guix/build-system/gnu.scm (package-with-restricted-references): New
  procedure.
2014-06-07 19:35:20 +02:00
Ludovic Courtès 1c93be5600 gnu: glibc: Make sure the bootstrap libc is not in $CPATH.
This fixes a bug whereby the bootstrap-glibc headers could be picked up
when building libc.so, which could be noticed by the fact that the
.debug files contained references to bootstrap-glibc.

* gnu/packages/base.scm (glibc-final-with-bootstrap-bash)[arguments]:
  Add 'pre-configure' phase.
  [inputs]: Remove 'alist-delete' call.
2014-06-07 17:23:53 +02:00
Ludovic Courtès 3d78d51d8e gnu: Build the final Coreutils before Findutils.
This fixes a bug whereby Findutils' 'updatedb' script would retain a
reference to the bootstrap binaries ('sort', etc.)

* gnu/packages/base.scm (coreutils-final, %boot5-inputs): New variables.
  (%final-inputs): Use them.
2014-06-07 00:38:17 +02:00
Ludovic Courtès 0e4e4b1329 gnu: gettext: Upgrade to 0.19.
* gnu/packages/gettext.scm (gnu-gettext): Upgrade to 0.19.
  [arguments] <phases>: Remove now unneeded 'link-expat' phase.  Patch
  lang-sh and msgfilter test scripts; patch msginit.c and project-id.
  Add #:make-flags.
2014-06-07 00:35:34 +02:00
Ludovic Courtès 872c69d00e Merge branch 'master' into core-updates 2014-06-06 17:23:14 +02:00
Ludovic Courtès b15d79dfe6 build-system/gnu: Add #:allowed-references.
* guix/build-system/gnu.scm (gnu-build): Add #:allowed-references.
  [canonicalize-reference]: New procedure.
  Pass #:allowed-references to 'build-expression->derivation'.
  (gnu-cross-build): Likewise.
2014-06-06 17:18:17 +02:00
Ludovic Courtès 63a4282468 derivations: 'build-expression->derivation' supports #:allowed-references.
* guix/derivations.scm (build-expression->derivation): Add
  #:allowed-references and pass it to 'derivation.
* doc/guix.texi (Derivations): Adjust accordingly.
2014-06-06 17:07:26 +02:00
Ludovic Courtès e97c5be914 services: Use a fixed GID for the build group and use that for the store.
This partly reverts commit 185f669 ("services: Make sure the store's
group is the build group.")

* gnu/services/base.scm (guix-service)[activate]: Remove 'chown' call.
  Add 'id' field to 'user-group' form.
* guix/build/install.scm (directives): Set the store's GID to 30000.
2014-06-06 00:28:21 +02:00
Ludovic Courtès c6b76405ff gnu: Add WakeLan.
* gnu/packages/admin.scm (wakelan): New variable.
2014-06-06 00:28:21 +02:00
Mark H Weaver 017f7415ab gnu: openssl: Upgrade to 1.0.1h.
* gnu/packages/openssl.scm (openssl): Upgrade to 1.0.1h.  Remove
  patches, which are now upstream.
* gnu/packages/patches/openssl-extension-checking-fixes.patch: Remove.
* gnu/packages/patches/openssl-CVE-2010-5298.patch: Remove.
* gnu-system.am (dist_patch_DATA): Remove them.
2014-06-05 16:36:25 -04:00
Ludovic Courtès cc24623d71 gnu: bdb: Move documentation to "doc" output.
* gnu/packages/bdb.scm (bdb): Add 'outputs' field.  Adjust 'configure'
  phase to move documentation to the "doc" output.
2014-06-04 23:55:12 +02:00
Ludovic Courtès 9d9b576bcd gnu: Set proper source location for 'gcc-final'.
* gnu/packages/base.scm (gcc-final)[location]: New field.
  Reported by Andreas Enge <andreas@enge.fr>.
2014-06-04 23:32:46 +02:00
Ludovic Courtès ea31dbbc18 install: Add missing argv[0] in Info invocation.
* gnu/system/install.scm (log-to-info): Add "info" as second argument to
  'execl'.
2014-06-04 23:08:59 +02:00
Ludovic Courtès e2fcc23a3a activation: Only create groups that do not exist yet.
Before that the effect would be to re-create groups at each boot, and
thus remove any members of the groups.

* guix/build/activation.scm (activate-users+groups): Call 'add-group'
  only when (getgrname name) fails.
2014-06-04 23:08:09 +02:00
Ludovic Courtès 185f669109 services: Make sure the store's group is the build group.
* gnu/services/base.scm (guix-service)[activate]: New variable.  Add
  'chown' call for (%store-prefix).  Set the 'activate' field to
  ACTIVATE.
* guix/build/install.scm (directives): Add comment about STORE's group.
2014-06-04 22:19:30 +02:00
Ludovic Courtès 3d116a70f9 services: Add the build group to the supplementary groups of build users.
* gnu/services/base.scm (guix-build-accounts): Add
  'supplementary-groups' field.
2014-06-04 22:17:20 +02:00
Ludovic Courtès c17b5ab4db tests: Skip tests that would hit the shebang length limitation.
* tests/gexp.scm (shebang): New variable.
  Skip "gexp->script" when SHEBANG is longer than 127 chars.
* guix/gexp.scm (gexp->script): Add comment on the issue.
2014-06-04 18:15:50 +02:00
Ludovic Courtès d3bbe992ec system: Tell module-init-tools where to look for modules.
* gnu/packages/linux.scm (module-init-tools)[source](patches): New
  field.
* gnu/packages/patches/module-init-tools-moduledir.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/system.scm (etc-directory): Add #:kernel parameter.  Set
  'LINUX_MODULE_DIRECTORY' in bashrc.
  (operating-system-etc-directory): Pass #:kernel to 'etc-directory'.
2014-06-04 18:15:50 +02:00
Ludovic Courtès 4654439be7 system: Rename activation script.
* gnu/system.scm (operating-system-activation-script): Change file name
  to "activate".
2014-06-04 18:15:50 +02:00
Ludovic Courtès 56ef7fcc50 vm: Add #:name parameter for 'system-disk-image'.
* gnu/system/vm.scm (system-disk-image): Add #:name parameter; pass it
  to 'qemu-image'.
2014-06-04 18:15:50 +02:00
Ludovic Courtès 2c5c696c39 install: Register the hydra.gnu.org key on the installation image.
* gnu/services/base.scm (hydra-key-authorization): New procedure.
  (guix-service): Add #:authorize-hydra-key? parameter; honor it using
  'hydra-key-authorization'.
* gnu/system/install.scm (installation-services): Pass
  #:authorize-hydra-key? #t.
2014-06-04 18:15:50 +02:00
Ludovic Courtès 202adef2ec gnu: guix: Use /etc as sysconfdir.
* gnu/packages/package-management.scm (guix)[arguments]: Pass
  --sysconfdir=/etc.
2014-06-04 18:15:50 +02:00
Ludovic Courtès 6f436c54d6 system: Define '%base-packages' and use it.
* gnu/system.scm (<operating-system>)[packages]: Change default value to
  %BASE-PACKAGES.
  (%base-packages): New variable.
* gnu/system/install.scm (installation-os): Use it when defining the
  'packages' field.
* doc/guix.texi (Using the Configuration System): Use %BASE-PACKAGES in
  example.  Remove now unneeded module imports.  Explain this.
2014-06-04 18:15:50 +02:00
Mark H Weaver 39d4fde3bf gnu: gnutls: Upgrade to 3.2.15.
* gnu/packages/gnutls.scm (gnutls): Upgrade to 3.2.15.
2014-06-04 01:03:17 -04:00
Ludovic Courtès e73a99a304 install: Add more useful packages.
* gnu/system/install.scm (installation-os)[packages]: Add isc-dhcp,
  net-tools, ddrescue, kbd, and texinfo-4.
2014-06-03 23:31:26 +02:00
Ludovic Courtès 28b1d6d8f3 Update 'eo.po'. 2014-06-03 22:43:07 +02:00
Ludovic Courtès d8bb353c26 gnu: linux-libre: Build the e1000e driver (Intel ethernet NIC driver.)
* gnu/packages/linux.scm (linux-libre): Add CONFIG_E1000E=m.
2014-06-03 22:43:05 +02:00
Ludovic Courtès cc4a2aeb98 gnu: Merge Parted, fdisk, and ddrescue in (gnu packages disk).
* gnu/packages/parted.scm: Rename to...
* gnu/packages/disk.scm: ... this.  New file.  Merge with...
* gnu/packages/fdisk.scm: ... this; remove file;
* gnu/packages/ddrescue.scm: ... and this; remove file.
* gnu/system/install.scm, gnu/system/vm.scm: Adjust accordingly.
* gnu-system.am (GNU_SYSTEM_MODULES): Remove
  gnu/packages/{parted,fdisk,ddrescue}.scm and add
  gnu/packages/disk.scm.
2014-06-03 22:43:00 +02:00
Ludovic Courtès a549ab4bcf hydra: Add Avahi to the demo OS.
* build-aux/hydra/demo-os.scm: Use 'avahi-service' and 'dbus-service'.
  Add AVAHI to 'packages'.
2014-06-03 11:49:28 +02:00
Ludovic Courtès 585c651951 system: Make sure /run/setuid-programs comes first in $PATH.
* gnu/system.scm (etc-directory) <bashrc>: Move /run/setuid-programs
  first in $PATH.
2014-06-03 11:48:41 +02:00
Ludovic Courtès b6772a01e9 gnu: elfutils: Add synopsis and description.
* gnu/packages/elf.scm (elfutils): Add synopsis and description.
2014-06-03 11:10:58 +02:00
Ludovic Courtès 57c0992927 list-packages: Add links to Hydra for mips64el-linux.
* build-aux/list-packages.scm (package->sxml): Add 'url' call for
  mips64el-linux.
2014-06-03 00:17:00 +02:00
Ludovic Courtès d4c87617e5 system: File system sources can be marked as labels or devices.
* gnu/system/file-systems.scm (<file-system>)[title]: New field.
* gnu/services/base.scm (file-system-service): Add #:title parameter.
  In 'start' gexp, use 'canonicalize-device-spec' and honor TITLE.
* gnu/system.scm (other-file-system-services,
  operating-system-root-file-system, operating-system-initrd-file):
  Adjust accordingly.
* gnu/system/linux-initrd.scm (file-system->spec): Likewise.
* gnu/system/vm.scm (system-disk-image): Add 'title' field for the root
  file system.
* guix/build/linux-initrd.scm (mount-file-system): Expect the second
  element of SPEC to be the title.
  (boot-system)[root-mount-point?, root-fs-type]: Likewise.
* gnu/services/dmd.scm (dmd-configuration-file): Select
  'canonicalize-device-spec'.
2014-06-03 00:14:58 +02:00
Ludovic Courtès 2405858a04 linux-initrd: Wait for devices to appear when resolving a label.
* guix/build/linux-initrd.scm (canonicalize-device-spec): Add #:title
  parameter.  When resolving a label, wait a little and try several
  times before bailing out.
2014-06-02 23:48:55 +02:00
Ludovic Courtès 0497ba3b26 Revert "gnu: hurd: Add Hurd Minimal."
This reverts commit bc046a94de,
which referred to uncommitted things ('glibc/hurd-headers'.)
2014-06-02 23:28:07 +02:00
Manolis Ragkousis bc046a94de gnu: hurd: Add Hurd Minimal.
* gnu/packages/hurd.scm (hurd-minimal): New variable.
* gnu/packages/patches/hurd-minimal.patch: New patch.
* gnu-system.am (dist_patch_DATA): Add it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-06-01 23:56:14 +02:00
Ludovic Courtès 1f3fc60da5 services: syslogd: Write fewer messages to /dev/console.
* gnu/services/base.scm (syslog-service)[contents]: Remove "kern.*" from
  /dev/console.
2014-06-01 23:51:59 +02:00
Ludovic Courtès 9b4a163a87 linux-initrd: Actually create /dev/console.
* guix/build/linux-initrd.scm (make-essential-device-nodes): Add
  "dev/console".
2014-06-01 23:51:12 +02:00
Ludovic Courtès 9e69b09857 hydra: Make USB installation image smaller.
* build-aux/hydra/gnu-system.scm (qemu-jobs): Reduce size of 'usb-image'
  to 630 MiB.
2014-06-01 23:50:39 +02:00
Ludovic Courtès b53be755e4 derivations: Add #:allowed-references 'derivation' parameter.
* guix/derivations.scm (derivation): Add #:allowed-references
  parameter.
  [user+system-env-vars]: Honor it.
* tests/derivations.scm ("derivation #:allowed-references, ok",
  "derivation #:allowed-references, not allowed",
  "derivation #:allowed-references, self allowed",
  "derivation #:allowed-references, self not allowed"): New tests.
* doc/guix.texi (Derivations): Document #:allowed-references.
2014-06-01 23:32:26 +02:00
Ludovic Courtès 5a6a3ba43a gnu: util-linux: Remove dependency on Perl.
* gnu/packages/linux.scm (util-linux)[source](patches): New field.
* gnu/packages/patches/util-linux-perl.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
2014-06-01 22:53:16 +02:00
Ludovic Courtès ac52e80b4e linux-initrd: Make more device nodes for SCSI disks and CD-ROM devices.
* guix/build/linux-initrd.scm (make-disk-device-nodes): New procedure.
  (make-essential-device-nodes): Use it.  Make more devices nodes for
  SCSI disks and CD-ROM devices.
2014-06-01 21:48:57 +02:00
Ludovic Courtès 009d831167 linux-initrd: Gracefully handle missing /dev nodes.
* guix/build/linux-initrd.scm (partition-label-predicate): Catch
  'system-error' around 'read-ext2-superblock'; return #f upon ENOENT.
2014-06-01 21:20:54 +02:00
Ludovic Courtès 10d86d54f0 hydra: Build the installation image.
* build-aux/hydra/gnu-system.scm (demo-os): New procedure.
  (qemu-jobs): Build for both x86_64-linux and i686-linux.  Add
  'usb-image' job that builds INSTALLATION-OS.
2014-05-31 22:15:06 +02:00
Ludovic Courtès fc91c17aa8 Add (gnu system install).
* gnu/system/install.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-05-31 22:13:33 +02:00
Ludovic Courtès 548d4c1395 system: Add 'issue' field.
* gnu/system.scm (<operating-system>)[issue]: New field.
  (%default-issue): New variable.
  (etc-directory): Add #:issue parameter and honor it.
  (operating-system-etc-directory): Adjust call accordingly.
* build-aux/hydra/demo-os.scm: Add 'issue' field.
2014-05-31 22:01:05 +02:00
Ludovic Courtès 52322163ac system: Add more options for 'mingetty-service'.
* gnu/services/base.scm (mingetty-service): Add #:auto-login,
  #:login-program, and #:login-pause? parameters and honor them.
2014-05-31 21:51:04 +02:00
Ludovic Courtès 1bb784ea05 linux-initrd: Gracefully deal with partitions with no label.
* guix/build/linux-initrd.scm (partition-label-predicate): Check whether
  'ext2-superblock-volume-name' returns #f, and return #f if it does.
2014-05-31 15:55:38 +02:00
Ludovic Courtès b0e3635e0a gnu: Move libarchive to (gnu packages backup).
* gnu/packages/compression.scm (libarchive): Move to...
* gnu/packages/backup.scm (libarchive): ... here.
  Import (guix licenses) with #:renamer to avoid conflicting 'zlib'
  bindings.
2014-05-31 15:25:49 +02:00
Ludovic Courtès 10ace2c49e vm: disk-image: Specify the root file system using a label.
* gnu/system/vm.scm (system-disk-image)[root-label]: New variable.
  Use it for the root file system, and pass it as #:file-system-label to
  'qemu-image'.
2014-05-30 23:46:17 +02:00
Ludovic Courtès 85a83edb36 linux-initrd: Allow use of volume labels in 'file-system' declarations.
* guix/build/linux-initrd.scm (%ext2-endianness, %ext2-sblock-magic,
  %ext2-sblock-creator-os, %ext2-sblock-uuid, %ext2-sblock-volume-name):
  New macros.
  (read-ext2-superblock, ext2-superblock-uuid,
  ext2-superblock-volume-name, disk-partitions,
  partition-label-predicate, find-partition-by-label,
  canonicalize-device-spec): New procedures.
  (mount-file-system): Use 'canonicalize-device-spec' on SOURCE.
  (boot-system): Likewise for ROOT.
* doc/guix.texi (Using the Configuration System): Adjust 'file-system'
  declaration accordingly.
2014-05-30 23:46:17 +02:00
Eric Bavier bd3fc08c4d gnu: Add rdiff-backup.
* gnu/packages/backup.scm (rdiff-backup): New variable.
2014-05-30 14:30:42 -05:00
Eric Bavier 22c2462112 gnu: Add btar.
* gnu/packages/backup.scm (btar): New variable.
2014-05-30 12:36:27 -05:00
Eric Bavier d42e61224e gnu: Add rdup.
* gnu/packages/backup.scm (rdup): New variable.
2014-05-30 12:36:27 -05:00
Eric Bavier 28469ab0ec gnu: Add libarchive.
* gnu/packages/compression.scm (libarchive): New variable.
2014-05-30 12:36:27 -05:00
Eric Bavier 2d762953ba gnu: Add hdup.
* gnu/packages/backup.scm (hdup): New variable.
2014-05-30 12:36:27 -05:00
Ludovic Courtès 411fc81d63 hydra: Don't cross-build from MIPS to MIPS.
* build-aux/hydra/gnu-system.scm (hydra-jobs)[same?, either]: New
  procedure.  Use it in 'remove' call.
2014-05-29 23:32:47 +02:00
Ludovic Courtès 8a07c28960 system: Add 'fusermount' to the default setuid programs.
* gnu/system.scm (%setuid-programs): Add 'fusermount'.
2014-05-29 23:32:46 +02:00
Ludovic Courtès ef9fc40dda vm: Allow a volume name to be specified for the root partition.
* guix/build/vm.scm (format-partition): Add #:label parameter, and honor
  it.
  (initialize-hard-disk): Add #:file-system-label parameter, and pass it
  to 'format-partition'.
* gnu/system/vm.scm (qemu-image): Add #:file-system-label parameter and
  pass it to 'initialize-hard-disk'.
2014-05-29 23:32:46 +02:00
Andreas Enge ff0bf0aca5 gnu: libgnome: Correct source file name.
* gnu/packages/gnome.scm (libgnome): Correct source file name.
2014-05-29 17:08:52 +02:00
Ludovic Courtès 0ba10e086f hydra: Build for mips64el-linux.
* build-aux/hydra/gnu-system.scm (hydra-jobs)[systems]: Add
  mips64el-linux.
2014-05-28 23:33:58 +02:00
Ludovic Courtès bd6639026b gnu: fuse: Allow use of 'fusermount' taken from $PATH.
* gnu/packages/linux.scm (fuse) <set-file-names>: Set FUSERMOUNT_DIR in
  lib/Makefile.
2014-05-28 23:25:17 +02:00
Ludovic Courtès db288efafb gnu: Add sshfs-fuse.
* gnu/packages/linux.scm (sshfs-fuse): New variable.
2014-05-28 23:25:17 +02:00
John Darrington a83b6a06b7 gnu: Make gtk-glext depend on pangox-compat and remove workaround patch
* gnu/packages/gnome.scm (gtk-glext): Add new dependency and remove patch
* gnu/packages/patches/gtkglext-remove-pangox-dependency.patch: Delete file
* gnu-system.am: Delete gnu/packages/patches/gtkglext-remove-pangox-dependency.patch
2014-05-28 18:50:01 +02:00
John Darrington 25f76ef0ba gnu: Add cssc.
* gnu/packages/version-control.scm (cssc): New variable.
* gnu/packages/patches/cssc-gets-undeclared.patch: New file
* gnu/packages/patches/cssc-missing-include.patch: New file
* gnu-system.am: Add gnu/packages/patches/cssc-gets-undeclared.patch
  and gnu/packages/patches/cssc-missing-include.patch
2014-05-28 18:50:00 +02:00
Andreas Enge 93c3de921a gnu: hdf5: Fix source download location.
* gnu/packages/maths.scm (hdf5): Use "release" directory and not the "current"
    directory for the source, which does not break on new upstream releases.
2014-05-28 16:04:08 +02:00
Ludovic Courtès a4d48cc24d gnu: grep: Upgrade to 2.19.
* gnu/packages/base.scm (grep): Upgrade to 2.19.
2014-05-27 23:23:10 +02:00
Ludovic Courtès a43da8f90c gnu: gcc-4.8: Upgrade to 4.8.3.
* gnu/packages/gcc.scm (gcc-4.8): Upgrade to 4.8.3.
2014-05-27 23:22:50 +02:00
Ludovic Courtès af018f5e0a Merge branch 'master' into core-updates 2014-05-27 23:19:49 +02:00
Ludovic Courtès 35066aa596 syscalls: Be more permissive in 'umount' test.
* tests/syscalls.scm ("umount, ENOENT"): Rename to...
  ("umount, ENOENT/EPERM"): ... this.  Accept EPERM as a valid return
  value.
2014-05-27 22:36:54 +02:00
Ludovic Courtès 5895f24443 store: Work around 'get-bytevector-n' bug that affects 'import-paths'.
Fixes <http://bugs.gnu.org/17591>.

* guix/store.scm (process-stderr) <%stderr-read>: Use
  'get-bytevector-n!' instead of 'get-bytevector-n'.
2014-05-27 22:28:34 +02:00
Ludovic Courtès 2a7050abf8 gnu: Add Autoconf 2.64.
* gnu/packages/autotools.scm (autoconf-2.64): New variable.
2014-05-27 22:28:34 +02:00
Eric Bavier 33dcd2a804 gnu: librsync: Fix source uri
* gnu/packages/rsync.scm (librsync) [source]: Fix sourceforge uri.
2014-05-27 10:38:57 -05:00
Eric Bavier d1a5439bcb gnu: Add duplicity.
* gnu/packages/backup.scm: New file.
* gnu-system.am: Add it.
2014-05-27 10:05:33 -05:00
Eric Bavier 5a1a4bf6b2 gnu: Add python-mock.
* gnu/packages/python.scm (python-mock): New variable.
2014-05-27 10:05:33 -05:00
Eric Bavier c1448c6974 gnu: Add python-lockfile.
* gnu/packages/python.scm (python-lockfile): New variable.
2014-05-27 10:05:32 -05:00
Ludovic Courtès f4561be2d1 services: Add D-Bus and Avahi.
* gnu/services/dbus.scm: New file.
* gnu/services/avahi.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add them.
2014-05-26 23:38:06 +02:00
Ludovic Courtès 3963a7292a gnu: Add Transmission.
* gnu/packages/bittorrent.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-05-26 23:38:06 +02:00
John Darrington 5698b8b82c gnu: Add gsegrafix and dependent libraries.
* gnu/packages/math.scm (gsegrafix): New variable.
* gnu/packages/gtk.scm (pangox-compat): New variable.
* gnu/packages/gnome.scm (libidl, orbit2, libbonobo, gconf, gnome-mime-data,
  gnome-vfs, libgnome, libart-lgpl, libgnomecanvas, libgnomeui, libglade,
  libgnomeprint, libgnomeprintui, libbonoboui): New variables.
2014-05-26 18:19:55 +02:00
Eric Bavier ff78435fa0 gnu: Add mcrypt, libmcrypt, and libmhash.
* gnu/packages/mcrypt.scm: New file.
* gnu/packages/patches/mhash-keygen-test-segfault.patch: New patch.
* gnu-system.am (GNU_SYSTEM_MODULES): Add file.
  (dist_patch_DATA): Add patch.
2014-05-26 01:15:53 -05:00
Eric Bavier 7f0635f684 gnu: Add librsync.
* gnu/packages/rsync.scm (librsync): New variable.
2014-05-25 23:33:58 -05:00
Ludovic Courtès de0b620e88 gnu: Add inotify-tools.
* gnu/packages/linux.scm (inotify-tools): New variable.
2014-05-26 00:08:50 +02:00
Ludovic Courtès 25083588b9 doc: Augment "Package Naming".
* doc/guix.texi (Package Naming): Mention underscores, and give SDL_net
  as an example.
2014-05-25 17:00:01 +02:00
Ludovic Courtès 884af1b4ec store: Remove misleading 'setsockopt' call.
* guix/store.scm (open-connection): Remove misleading 'setsockopt' call,
  erroneously introduced in df1fab58.  This would actually shrink the
  receive buffer from 124 KiB to 12 KiB, though it had little impact on
  performance.
2014-05-25 01:31:15 +02:00
Ludovic Courtès 4b2615e1ca services: nscd: Provide an 'activate' script to make /var/run/nscd.
* gnu/services/base.scm (nscd-service): Add 'activate' field.
* guix/build/install.scm (directives): Remove /var/run/nscd; add
  /var/run.
* doc/guix.texi (Defining Services): Add 'activate' field in example.
  Document it.
2014-05-24 18:10:05 +02:00
Ludovic Courtès 55ccc388b7 services: Support per-service activation scripts.
* gnu/services.scm (<service>)[activate]: New field.
* gnu/system.scm (operating-system-activation-script)[service-activations]:
  New procedure.  Use it, and primitive-load each activation.
2014-05-24 18:10:05 +02:00
Ludovic Courtès 517830cc01 system: Always create /var/empty.
* guix/build/install.scm (directives): Add /var/empty.
2014-05-24 18:10:05 +02:00
Ludovic Courtès 484a2b3a5a system: Separate the activation script from the boot script.
* gnu/system.scm (operating-system-activation-script): New procedure,
  containing most of the former 'operating-system-boot-script'.
  (operating-system-boot-script): Call it, and 'primitive-load' its
  result.
* guix/build/activation.scm (%booted-system): Remove.
  (activate-current-system): Remove #:boot? parameter and related code.
2014-05-24 18:10:05 +02:00
Eric Bavier a9f48ff076 gnu: Add lzop.
* gnu/packages/compression.scm (lzop): New variable.
2014-05-24 01:03:02 -05:00
Ludovic Courtès 112440a7b8 vm: Disable QEMU networking in the disk image initrd.
* gnu/system/linux-initrd.scm (qemu-initrd): Add #:qemu-networking?
  parameter and honor it.
* gnu/system/vm.scm (system-disk-image): Pass #:qemu-networking #f.
2014-05-23 22:37:24 +02:00
Ludovic Courtès a68d976b66 download: Enlarge your receive buffer.
* guix/build/download.scm (open-connection-for-uri): Remove call to
  'setsockopt'.
* guix/http-client.scm (open-socket-for-uri)[rmem-max, buffer-size]: New
  variables.  Add call to 'setsockopt'.
2014-05-23 22:19:37 +02:00
Ludovic Courtès fb729425dc guix system: Add 'disk-image' action.
* guix/scripts/system.scm (show-help): Add 'disk-image'.
  (guix-system)[parse-options]: Support 'disk-image' action.
  [option-arguments]: Likewise.
  Handle the 'disk-image' action.
* doc/guix.texi (Invoking guix system): Document 'disk-image'.
2014-05-22 23:24:13 +02:00
Ludovic Courtès 1e77fedb46 vm: Add 'system-disk-image'.
* gnu/system/vm.scm (system-disk-image): New procedure.
2014-05-22 23:24:13 +02:00
Ludovic Courtès c938494598 Add (gnu) module.
* gnu.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
* build-aux/hydra/demo-os.scm: Use (gnu) and strip import list
  accordingly.
* doc/guix.texi (Using the Configuration System): Adjust example
  accordingly.
2014-05-22 23:24:13 +02:00
Ludovic Courtès f19c6e5fe7 vm: Use a para-virtualized disk when creating an image.
* guix/build/vm.scm (load-in-linux-vm): When MAKE-DISK-IMAGE?, use
  '-drive ...,if=virtio' for better performance.
* gnu/system/vm.scm (qemu-image): Use /dev/vda instead of /dev/sda.
2014-05-22 23:24:13 +02:00
Ludovic Courtès c4a74364b9 vm: Make the image format a parameter.
* guix/build/vm.scm (load-in-linux-vm): Add #:disk-image-format
  parameter; add 'image-file' variable.  Honor DISK-IMAGE-FORMAT.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Add
  #:disk-image-format parameter, and honor it.
  (qemu-image): Likewise.
2014-05-22 23:24:13 +02:00
Ludovic Courtès 3035b50f28 linux-initrd: Build /dev/loop* nodes.
* guix/build/linux-initrd.scm (make-essential-device-nodes): Build
  /dev/loop[0-7].
2014-05-22 23:24:13 +02:00
Andreas Enge ca143f1379 gnu: imagemagick: Upgrade to 6.8.9-0.
* gnu/packages/imagemagick.scm (imagemagick): Upgrade to 6.8.9-0.
2014-05-22 22:28:12 +02:00
Andreas Enge 39aa11e090 gnu: perl-io-tty: Upgrade to 1.11.
* gnu/packages/perl.scm (perl-io-tty): Upgrade to 1.11.
2014-05-22 22:13:42 +02:00
Andreas Enge 6d763bdddb guix: download: Update imagemagick mirrors.
* guix/download.scm (%mirrors)[imagemagick]: Update and add the legacy
    subdirectory of the main site as a last resort.
2014-05-22 22:07:07 +02:00
Ludovic Courtès a3977466db build: Fix builds without --with-libgcrypt-prefix nor --with-libgcrypt-libdir.
Reported by Manolis Ragkousis <manolis837@gmail.com>.
Fixes a regression introduced in 14af289.

Before this commit, ./configure would leave LIBGCRYPT_PREFIX and
LIBGCRYPT_LIBDIR undefined, leading to LIBGCRYPT_LIBS="-L -lgcrypt" and
thus to a link failure.

* configure.ac: Make sure $LIBGCRYPT_PREFIX and $LIBGCRYPT_LIBDIR are
  never empty.
2014-05-22 10:38:41 +02:00
Ludovic Courtès 641f9a2a1f vm: Modularize build-side code.
* guix/build/install.scm (install-grub): Call 'error' if 'system*'
  returns non-zero.
* guix/build/vm.scm (initialize-partition-table): Make 'partition-size'
  a positional parameter.  Call 'error' when 'system*' returns
  non-zero'.
  (format-partition, initialize-root-partition): New procedures.
  (initialize-hard-disk): Use them.
2014-05-21 23:31:46 +02:00
Ludovic Courtès d1f477199d vm: Remove misleading comment.
* guix/build/vm.scm (load-in-linux-vm): Remove misleading comment.
2014-05-21 23:19:13 +02:00
Ludovic Courtès 952298d709 gnu: Add wpa_supplicant.
* gnu/packages/admin.scm (wpa-supplicant): New variable.
2014-05-21 17:12:03 +02:00
Ludovic Courtès d28869afad store: Flush the output when the build process emits '\r'.
This allows progress reports emitted by 'substitute-binary' to be
correctly displayed.

* guix/store.scm (%newlines): New variable.
  (process-stderr) <%stderr-next>: Flush (current-build-output-port)
  when S contains one of %NEWLINES.
2014-05-21 15:29:23 +02:00
Ludovic Courtès 29decd1f36 Augment (guix).
* guix.scm (%public-modules): Add 'monads' and 'gexp'.
2014-05-20 23:37:11 +02:00
Ludovic Courtès c5df183956 Add (gnu system file-systems).
This fixes a circular dependency between (gnu system) and (gnu system
linux-initrd), where the latter could end up being compiled before
'file-system-type' was defined as a macro.

* gnu/system.scm (<file-system>, %fuse-control-file-system,
  %binary-format-file-system): Move to...
* gnu/system/file-systems.scm: ... here.  New file.
* build-aux/hydra/demo-os.scm, gnu/system/linux-initrd.scm,
  gnu/system/vm.scm: Use it.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-05-20 23:37:11 +02:00
Ludovic Courtès eb7ccb1afa linux-initrd: Display a backtrace when the initial program fails.
* guix/build/linux-initrd.scm (boot-system): Add pre-unwind handler in
  'catch' form around 'primitive-load', and call 'format' and
  'display-backtrace' from there.
2014-05-20 23:37:11 +02:00
Ludovic Courtès 9bea3b42b4 vm: Fix typo.
Regression introduced in e38e18f.

* guix/build/vm.scm (initialize-hard-disk)[partition]: Use a string.
2014-05-20 23:37:11 +02:00
Eric Bavier 5bbd6bf181 gnu: Add ccache.
* gnu/packages/ccache.scm: New file.
* gnu/packages/patches/ccache-stdc-predef-test.patch: New patch.
* gnu-system.am (GNU_SYSTEM_MODULES): Add ccache.scm.
  (dist_patch_DATA): Add patch.
2014-05-20 16:21:43 -05:00
Eric Bavier 16ecf3ff4a gnu: Edit synopses of petsc packages.
* gnu/packages/maths.scm (petsc) [synopsis]: Shorten.
  (petsc-complex,petsc-openmpi,petsc-complex-openmpi) [synopsis]:
  Repeat synopsis from petsc package with extensions.  [description]: Remove.
2014-05-20 09:53:19 -05:00
Eric Bavier 7886e23b03 gnu: offlineimap: fix license.
* gnu/packages/mail.scm (offlineimap) [license]: Change to gpl2+.
2014-05-20 09:50:58 -05:00
Eric Bavier d2938d59aa gnu: Add mu.
* gnu/packages/mail.scm (mu): New variable.
2014-05-20 09:02:39 -05:00
Eric Bavier 3919a31a75 gnu: Add offlineimap
* gnu/packages/mail.scm (offlineimap): New variable.
2014-05-20 09:02:39 -05:00
Ludovic Courtès d84a7be667 utils: 'delete-file-recursively' doesn't follow mount points by default.
* guix/build/utils.scm (delete-file-recursively): Add #:follow-mounts?
  parameter and honor it.
2014-05-20 14:45:58 +02:00
Ludovic Courtès 953c9fcf8c gnu: ncurses: Build libtinfo.
* gnu/packages/ncurses.scm (ncurses)[arguments]: Add --with-termlib to
  #:configure-flags.
2014-05-20 14:30:19 +02:00
Ludovic Courtès 6d69a7ed10 gnu: ncurses: Set a RUNPATH on the executables and libraries.
* gnu/packages/ncurses.scm (ncurses)[arguments]: Add LDFLAGS to
  #:configure-flags.
2014-05-20 14:29:46 +02:00
Ludovic Courtès b10e9ff6da gnu: Add Linux kbd.
* gnu/packages/linux.scm (kbd): New variable.
2014-05-19 23:52:40 +02:00
Ludovic Courtès 52ddf2ae6f ui: Gracefully deal with zero-output derivations.
* guix/ui.scm (show-what-to-build)[built-or-substitutable?]: New
  procedure.  Check whether OUT is #f.
  Use it.
* tests/ui.scm ("show-what-to-build, zero outputs"): New test.
2014-05-19 23:52:40 +02:00
Ludovic Courtès 79b0d4e104 guix system: Check whether we are installing to /.
* guix/scripts/system.scm (install): Check whether TARGET is / and warn.
2014-05-19 23:52:40 +02:00
Ludovic Courtès c56d19fb11 guix system: Factorize out closure copy.
* guix/scripts/system.scm (copy-closure): New procedure.
  (install): Use it.
2014-05-19 23:52:40 +02:00
Ludovic Courtès d467e640aa doc: Show the 'bootloader' field in system example.
* doc/guix.texi (Using the Configuration System): Add 'bootloader'
  field.
2014-05-19 23:52:40 +02:00
Ludovic Courtès c79d54fe41 guix system: 'guix system init' installs GRUB by default.
* guix/scripts/system.scm (install): Add #:grub?, #:grub.cfg, and
  #:device parameters; honor them.
  (show-help): Document '--no-grub'.
  (%options): Add '--no-grub'.
  (%default-options): Add 'install-grub?'.
  (guix-system): Honor 'install-grub?' option from OPTS.  Adjust
  'install' call accordingly.
* doc/guix.texi (Invoking guix system): Document '--no-grub'.
2014-05-19 23:52:39 +02:00
Ludovic Courtès e38e18ff01 vm: Make the device name a parameter.
* guix/build/vm.scm (initialize-partition-table): Honor 'device'
  parameter.
  (initialize-hard-disk): Add 'device' parameter and honor it.
* gnu/system/vm.scm (qemu-image): Adjust accordingly.
2014-05-19 23:52:39 +02:00
Eric Bavier a54aefead6 gnu: Add superlu-dist package.
* gnu/packages/maths.scm (superlu-dist): New variable.
* gnu/packages/patches/superlu-dist-scotchmetis.patch: New patch.
* gnu-system.am (dist_patch_DATA): Add it.
2014-05-19 00:15:11 -05:00
Eric Bavier 6acb4adb34 gnu: Add pt-scotch package.
* gnu/packages/maths.scm (pt-scotch): New variable.
2014-05-19 00:15:11 -05:00
Eric Bavier f8ed036a31 gnu: Add scotch package.
* gnu/packages/maths.scm (scotch): New variable.
* gnu/packages/patches/scotch-test-threading.patch: New patch.
* gnu-system.am (dist_patch_DATA): Add it.
2014-05-19 00:15:11 -05:00
Eric Bavier c711f07c3e guix: licenses: Add CeCILL-C license.
* guix/licenses.scm (cecill-c): New variable.
2014-05-19 00:15:11 -05:00
Ludovic Courtès 6ffd11f129 system: Prevent grub.cfg from being GC'd.
* guix/build/install.scm (install-grub): Use 'copy-file' instead of
  'symlink' for GRUB.CFG.
2014-05-18 22:27:23 +02:00
Ludovic Courtès d5b429abda system: Add 'grub-configuration' record.
* gnu/system/grub.scm (<grub-configuration>): New record type.
  (grub-configuration-file): Add 'config' parameter; remove
  #:default-entry and #:timeout.  Honor CONFIG.
* gnu/system.scm (<operating-system>): Remove 'bootloader-entries'
  field; remove default value for 'bootloader' field.
  (operating-system-grub.cfg): Pass the 'bootloader' field to
  'grub-configuration-file'.
* build-aux/hydra/demo-os.scm (bootloader): New field.
2014-05-18 22:27:23 +02:00
Ludovic Courtès 72b9d60df4 guix system: Add 'init' sub-command.
* guix/scripts/system.scm (install): New procedure.
  (guix-system)[parse-option]: Remove check for extraneous arguments.
  [match-pair, option-arguments]: New procedures.
  Use 'option-arguments'.  Honor 'init'.
  (show-help): Document 'init'.
* doc/guix.texi (Invoking guix system): Document 'init'.
2014-05-18 22:27:23 +02:00
Ludovic Courtès bb31e0a3ee store: Change #:store parameter to #:prefix.
* guix/store.scm (register-path): Change #:store to #:prefix.
2014-05-18 22:27:22 +02:00
Ludovic Courtès 15d299874c vm: Avoid resetting timestamps twice.
* guix/build/vm.scm (initialize-hard-disk): Don't call
  'reset-timestamps' when REGISTER-CLOSURES? is true.
* guix/build/install.scm (register-closure): Mention timestamps in
  docstring.
2014-05-18 22:27:22 +02:00
Eric Bavier 1691b4cdc6 gnu: openmpi: Add memchecker support.
* gnu/packages/mpi.scm (openmpi) [inputs]: Add valgrind.  Unpropagate
  gfortran.  [arguments]: Add configure flags for memchecker.
2014-05-18 11:09:42 -05:00
Ludovic Courtès b4140694ac system: Make /run/current-system at activation time.
* gnu/system.scm (etc-directory): Change default value of #:profile.
  Change contents of SHELLS.  Use /run/current-system/profile/{s,}bin in
  BASHRC.
  (operating-system-boot-script)[%modules]: Add (guix build
  linux-initrd).  Add call to 'activate-current-system' in gexp.
  (operating-system-initrd-file, operating-system-grub.cfg): New
  procedures.
  (operating-system-derivation): Don't build grub.cfg here and remove it
  from the file union.
* gnu/system/vm.scm (qemu-image): Remove #:populate.
  (operating-system-build-gid, operating-system-default-contents):
  Remove.
  (system-qemu-image): Remove call to
  'operating-system-default-contents'.  Use 'operating-system-grub.cfg'
  to get grub.cfg.  Add GRUB.CFG to #:inputs.
  (system-qemu-image/shared-store): Likewise, but don't add GRUB.CFG to
  #:inputs.
  (system-qemu-image/shared-store-script): Pass --system kernel option.
* guix/build/activation.scm (%booted-system, %current-system): New
  variables.
  (boot-time-system, activate-current-system): New procedures.
* guix/build/install.scm (evaluate-populate-directive): Add case
  for ('directory name uid gid mode).
  (directives, populate-root-file-system): New procedures.
* guix/build/vm.scm (initialize-hard-disk): Replace calls to
  'evaluate-populate-directive' by a call to
  'populate-root-file-system'.
* gnu/services/dmd.scm (dmd-configuration-file): Use
  /run/current-system/profile/bin.
* gnu/services/xorg.scm (slim-service): Likewise.
2014-05-18 00:04:01 +02:00
Andreas Enge bf43449ace gnu: soprano: Add input redland.
* gnu/packages/rdf.scm (soprano): Add inputs redland and rasqal, drop raptor2
    (propagated by rasqal).
2014-05-17 17:53:39 +02:00
Andreas Enge af6fce0fd1 gnu: Add redland.
* gnu/packages/rdf.scm (redland): New variable.
2014-05-17 17:53:39 +02:00
Andreas Enge 85d83c3b7b gnu: rasqal: Propagate input raptor2.
* gnu/packages/rdf.scm (rasqal): Propagate input raptor2 as indicated in
    the pkg-config file.
2014-05-17 17:53:39 +02:00
Ludovic Courtès 14af289ed9 build: Add --with-libgcrypt-libdir=DIR to support Debian's multi-arch layout.
* configure.ac: Remove 'LIBGCRYPT_PREFIX' and use 'LIBGCRYPT_LIBDIR'
  instead.  Add --with-libgcrypt-libdir=DIR option.
* Makefile.am (AM_DISTCHECK_CONFIGURE_FLAGS): Pass
  '--with-libgcrypt-libdir'.
* config-daemon.ac: Honor $LIBGCRYPT_LIBDIR when computing
  LIBGCRYPT_LIBS.
2014-05-17 16:23:01 +02:00
Andreas Enge 1634c0420e gnu: Add rasqal.
* gnu/packages/rdf.scm (rasqal): New variable.
2014-05-17 14:43:34 +02:00
Ludovic Courtès e901ef297d store: Add #:store parameter to 'register-path'.
* guix/store.scm (register-path): Add #:store and honor it.
2014-05-17 00:08:39 +02:00
Ludovic Courtès 87a52da7d0 linux-initrd: Factorize kernel command-line option parsing.
* guix/build/linux-initrd.scm (find-long-option): New procedure.
  (boot-system): Use it instead of the local 'option'.
2014-05-16 23:31:48 +02:00
Ludovic Courtès d216323f0a hydra: Add dummy root file system declaration.
* build-aux/hydra/demo-os.scm (file-systems): Add "/" file system.
2014-05-16 21:57:11 +02:00
Ludovic Courtès 7889394e05 guix system: Add 'build' action.
* guix/scripts/system.scm (show-help): Document 'build' action.
  (guix-system): Honor 'build' action.
* doc/guix.texi (Invoking guix system): Add 'build' action.
2014-05-16 21:56:00 +02:00
Ludovic Courtès 90f69c2ec5 gnu: Add libuv.
* gnu/packages/libevent.scm (libuv): New variable.
2014-05-16 15:45:25 +02:00
Ludovic Courtès 4cca91832b authenticate: Add compatibility hack for Guile 2.0.5.
* guix/scripts/authenticate.scm (%default-port-conversion-strategy): New
  variable.  Reported by Andreas Enge <andreas@enge.fr>.
2014-05-16 10:22:19 +02:00
Ludovic Courtès d0281fec03 list-runtime-roots: Don't display a backtrace on 2.0.5 when lsof is lacking.
* nix/scripts/list-runtime-roots.in (lsof-roots): Fix typo in 'catch'
  tag.  Add 'parent' variable.  Wrap 'open-pipe*' call in 'catch'.
  Reported by Andreas Enge <andreas@enge.fr>.
2014-05-16 10:20:45 +02:00
Ludovic Courtès 5ce3defed1 system: Add (guix build install) module.
* guix/build/vm.scm (install-grub, evaluate-populate-directive,
  reset-timestamps, register-closure): Move to...
* guix/build/install.scm: ... here.  New file.
* Makefile.am (MODULES): Add it.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Add (guix
  build install) to #:modules.
2014-05-15 23:37:46 +02:00
Ludovic Courtès 150e20ddde vm: Support initialization of the store DB when the store is shared.
* gnu/system/vm.scm (qemu-image): Rename #:inputs-to-copy to #:inputs,
  and #:initialize-store? to #:register-closures?.  Add #:copy-inputs?.
  Adjust build gexp accordingly.
  (system-qemu-image): Remove #:initialize-store? argument and add
  #:copy-inputs?.
  (system-qemu-image/shared-store): Add #:inputs, #:register-closures?,
  and #:copy-inputs? arguments.
* guix/build/vm.scm (register-closure): New procedure.
  (MS_BIND): New variable.
  (initialize-hard-disk): Rename #:initialize-store? to
  #:register-closures?, #:closures-to-copy to #:closures, and add
  #:copy-closures?.
  Add 'target-directory' and 'target-store' variables.
  Call 'populate-store' only when COPY-CLOSURES?.
  Bind-mount the store to TARGET-STORE when REGISTER-CLOSURES? and not
  COPY-CLOSURES?.  Add call to 'register-closure'.
2014-05-15 22:55:14 +02:00
Ludovic Courtès c336a66fe8 build: Remove fusectl from the default file systems in the demo OS.
* build-aux/hydra/demo-os.scm (file-systems): Comment out
  %FUSE-CONTROL-FILE-SYSTEM, since fuse.ko is missing by default in the
  freestanding VM image.
2014-05-15 22:47:53 +02:00
Ludovic Courtès 2717a89a84 system: Provide declarations for the 'fusectl' and 'binfmt_misc' file systems.
* gnu/system.scm (%fuse-control-file-system,
  %binary-format-file-system): New variables.
* build-aux/hydra/demo-os.scm (file-systems): New field.
2014-05-14 23:17:03 +02:00
Ludovic Courtès 1eeccc2f31 vm: Keep acceptable file systems from the original OS.
* gnu/system/vm.scm (virtualized-operating-system): Instead of
  completely overriding 'file-systems', use 'remove' to filter out some
  of those declared in OS.
  (system-qemu-image): Likewise.
2014-05-14 23:15:51 +02:00
Ludovic Courtès 4106c58988 gnu: xterm: Upgrade to 304.
* gnu/packages/xorg.scm (xterm): Upgrade to 304.  Switch to a
  version-specific URL.
2014-05-14 23:02:10 +02:00
Ludovic Courtès f3b692acdd activation: Silence warning from 'useradd'.
* guix/build/activation.scm (add-user): Don't pass '--create-home' when
  HOME already exists.
2014-05-14 19:07:04 +02:00
Ludovic Courtès 7f17ff7841 linux-initrd: Make /dev/ttyS0, for debugging.
* guix/build/linux-initrd.scm (make-essential-device-nodes): Make
  /dev/ttyS0.
2014-05-14 19:07:04 +02:00
Ludovic Courtès 7d57cfd3b6 system: When unionfs-fuse is used for /, don't kill it when halting.
* guix/build/linux-initrd.scm (pidof): New procedure.
  (mount-root-file-system)[mark-as-not-killable]: New procedure.
  Use it for unionfs when VOLATILE-ROOT?.
* gnu/services/base.scm (%do-not-kill-file): New variable.
  (user-processes-service)[stop]: Honor it.
2014-05-14 19:07:03 +02:00
Ludovic Courtès 17a4d34489 syscalls: Add 'processes' to list all the live processes.
* guix/build/syscalls.scm (kernel?, processes): New procedures.
2014-05-14 19:07:03 +02:00
Andreas Enge 211345b3a5 gnu: libsm: Propagate input libice.
* gnu/packages/xorg.scm (libsm): Propagate input libice.
2014-05-14 16:04:42 +02:00
Andreas Enge c98f2ff309 gnu: qt-4: Upgrade to 4.8.6.
* gnu/packages/qt.scm (qt-4): Upgrade to 4.8.6.
2014-05-14 15:53:00 +02:00
Andreas Enge e7e5a4f8d4 gnu: qt-4: Enable session management by adding libsm as an input.
* gnu/packages/qt.scm (qt-4): Add input qt-4.
2014-05-14 14:32:22 +02:00
Ludovic Courtès 5a84a6c314 vm: Pass '-serial stdio' in the run-vm.sh.
* gnu/system/vm.scm (system-qemu-image/shared-store-script): Add
  '-serial stdio'.
2014-05-14 01:02:46 +02:00
Ludovic Courtès 838d9a9ddb system: Move skeleton code to (gnu system shadow).
* gnu/system.scm (default-skeletons, skeleton-directory): Move to...
* gnu/system/shadow.scm: ... here.
2014-05-14 01:02:46 +02:00
Ludovic Courtès 64d76fa6c2 doc: Improve debugging file documentation.
* doc/guix.texi (Installing Debugging Files): Add @cindex.  Remove
  unneeded '-i' in example.  Mention source code an 'directory'.  Link
  to "Build Systems" instead of "Defining Packages".
2014-05-14 01:02:46 +02:00
Ludovic Courtès 1a389e8d21 system: Add skeleton '.gdbinit'.
* gnu/system.scm (default-skeletons): Add .gdbinit.
2014-05-14 01:02:46 +02:00
Eric Bavier 5b527256ee gnu: openmpi: Use our hwloc.
* gnu/packages/mpi.scm (hwloc): Propagate numactl.
  (openmpi)[inputs]: Add hwloc.
  [native-inputs]: Add pkg-config.
  [argument]: Add hwloc configure flags.
2014-05-12 17:20:32 -05:00
Ludovic Courtès a37b807769 gnu: Add babl.
* gnu/packages/gimp.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-05-12 23:55:28 +02:00
Ludovic Courtès 40281c5424 system: Populate /etc/skel.
* gnu/system.scm (<operating-system>)[skeletons]: New field.
  (default-skeletons, skeleton-directory): New procedures.
  (etc-directory): Add #:skeletons parameter.  Call
  'skeleton-directory', and produce the 'skel' sub-directory.
  (operating-system-etc-directory): Pass #:skeletons to
  'etc-directory'.
2014-05-12 23:55:28 +02:00
Ludovic Courtès a12d92f54e doc: Add example for --search.
* doc/guix.texi (Invoking guix package): Add LGPLv3 example.
2014-05-12 23:55:28 +02:00
Eric Bavier f5ea273a00 gnu: perl-tk: Patch for i686
* gnu/packages/patches/perl-tk-x11-discover.patch: New patch.
* gnu-system.am [dist_patch_DATA]: Add it.
* gnu/packages/tcl.scm (perl-tk)[origin]: Use it.
2014-05-12 16:15:31 -05:00
Ludovic Courtès ab6a279abb system: Make accounts and groups at activation time.
* gnu/services/base.scm (guix-build-accounts): Remove #:gid parameter;
  add #:group.  Remove 'password' and 'gid' fields in 'user-account'
  form, and add 'group'.
  (guix-service): Remove #:build-user-gid parameter.  Remove 'id' field
  in 'user-group' form.
* gnu/system.scm (etc-directory): Remove #:groups and #:accounts.  No
  longer produce files "passwd", "shadow", and "group".  Adjust caller
  accordingly.
  (%root-account): New variable.
  (operating-system-accounts): Add 'users' variable.  Add %ROOT-ACCOUNT
  only of 'operating-system-users' doesn't already contain a root
  account.
  (user-group->gexp, user-account->gexp): New procedures.
  (operating-system-boot-script): Add calls to 'setenv' and
  'activate-users+groups' in gexp.
* gnu/system/linux.scm (base-pam-services): Add PAM services for
  "user{add,del,mode}" and "group{add,del,mod}".
* gnu/system/shadow.scm (<user-account>)[gid]: Rename to...
  [group]: ... this.
  [supplementary-groups]: New field.
  [uid, password]: Default to #f.
  (<user-group>)[id]: Default to #f.
  (group-file, passwd-file): Remove.
* gnu/system/vm.scm (operating-system-default-contents)[user-directories]:
  Remove.  Add "/home" to the directives.
* guix/build/activation.scm (add-group, add-user,
  activate-users+groups): New procedures.
2014-05-11 22:41:58 +02:00
Ludovic Courtès 057d6ce5e4 services: xorg: Fix harmless typo in slim.cfg.
* gnu/services/xorg.scm (slim-service): Add missing whitespace in
  XINITRC invocation.
2014-05-11 22:41:58 +02:00
John Darrington 7e0c23fb3e gnu: pspp: Upgrade to 0.8.3
* gnu/packages/maths.scm (pspp): Update to 0.8.3.
2014-05-11 13:42:49 +02:00
Ludovic Courtès d0c64188b6 doc: Mention upgrades that trigger a lot of rebuilds.
* HACKING (Commit Access): Mention upgrades that trigger a lot rebuilds.
2014-05-11 13:35:31 +02:00
Andreas Enge af8a56b8a2 doc: Add a section on perl modules in the packaging guidelines.
* doc/guix.texi (Perl modules): New section explaining the naming of perl
    modules.
2014-05-11 12:27:37 +02:00
Ludovic Courtès f3bde2ff9f vm: Fix recently-introduced regression in 'operating-system-services' use.
* gnu/system/vm.scm (operating-system-build-gid): Adjust to new return
  type of 'operating-system-services' introduced in 217a5b8.
2014-05-10 23:56:45 +02:00
Ludovic Courtès 023f391c78 services: Add 'file-system-service'.
* gnu/services/base.scm (file-system-service): New procedure.
  (user-processes-service): Add 'requirements' parameter.
* gnu/services/dmd.scm (dmd-configuration-file): Use (guix build
  linux-initrd).
* guix/build/linux-initrd.scm (guix): Export 'check-file-system'.
* gnu/system.scm (file-union): New procedure.
  (essential-services): Use it.  Add that to the returned list.
2014-05-10 23:33:52 +02:00
Ludovic Courtès 23ed63a12d services: Use (guix build syscalls) instead of util-linux.
* gnu/services/dmd.scm (dmd-configuration-file): Add derivations for
  the (guix build syscalls) module, and add that to the load path of
  dmd.conf.
* gnu/services/base.scm (root-file-system-service): Rewrite using the
  'sync' and 'mount' procedures.
2014-05-10 22:58:22 +02:00
Ludovic Courtès 29fa45f45d Add (guix build syscalls).
* guix/build/syscalls.scm, tests/syscalls.scm: New files.
* Makefile.am (MODULES): Add guix/build/syscalls.scm.
  (SCM_TESTS): Add tests/syscalls.scm.
* guix/utils.scm (%libc-errno-pointer, errno): Remove; take from (guix
  build syscalls).
2014-05-10 22:55:34 +02:00
Ludovic Courtès 02139eb9b2 linux-initrd: Append to /etc/mtab.
* guix/build/linux-initrd.scm (mount-file-system): Open /etc/mtab in
  append mode.
2014-05-10 21:47:05 +02:00
Ludovic Courtès 217a5b852e system: Automatically add essential services.
* gnu/services/base.scm (%base-services): Remove calls to
  'host-name-service', 'user-processes-service', and
  'root-file-system-service'.
* gnu/system.scm (<operating-system>)[operating-system-services]: Rename
  to...
  [operating-system-user-services]: ... this.
  (essential-services, operating-system-services): New procedures.
  (operating-system-accounts, operating-system-etc-directory,
  operating-system-boot-script, operating-system-derivation): Adjust to
  new 'operating-system-services' return type.
2014-05-09 22:59:18 +02:00
Eric Bavier e5c66f8c7b gnu: fftw: Factor out OpenMPI dependency.
* gnu/packages/algebra.scm (fftw)[inputs,arguments]: Remove OpenMPI.
  (fftw-openmpi): New variable.
2014-05-09 09:03:38 -05:00
Ludovic Courtès 2b0d560a3f gnu: Add hwloc.
* gnu/packages/mpi.scm (hwloc): New variable.
  (openmpi): Add TODO comment.
2014-05-09 15:49:08 +02:00
Ludovic Courtès 42422cc2f1 gnu: Add pciutils.
* gnu/packages/pciutils.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-05-09 15:48:15 +02:00
Ludovic Courtès 67b660037c gnu: Add numactl.
* gnu/packages/linux.scm (numactl): New variable.
2014-05-09 14:55:12 +02:00
Eric Bavier 85a84cbd83 gnu: openmpi: Fix typo in download uri
* gnu/packages/mpi.scm (openmpi)[origin]: Fix typo.
2014-05-08 17:06:46 -05:00
Eric Bavier 0fc54d4b31 gnu: fftw: Add dependency on openmpi.
* gnu/packages/algebra.scm (fftw)[inputs,arguments]: Add OpenMPI.
2014-05-08 17:00:27 -05:00
Eric Bavier 2cf287df59 gnu: fftw: Upgrade to 3.3.4
* gnu/packages/algebra.scm (fftw): Upgrade to 3.3.4.
2014-05-08 17:00:27 -05:00
Ludovic Courtès a00dd9fbf4 services: Add service to cleanly unmount the root file system.
* gnu/services/base.scm (root-file-system-service,
  user-processes-service): New procedures.
  (mingetty-service, nscd-service, syslog-service, guix-service): Add
  requirement on 'user-processes'.
  (%base-services): Add (user-processes-service)
  and (root-file-system-service).
* gnu/services/xorg.scm (slim-service): Add requirement on
  'user-processes'.
2014-05-08 23:42:15 +02:00
Ludovic Courtès 474b832d5e linux-initrd: Don't leak /dev/console file descriptors.
* guix/build/linux-initrd.scm (switch-root): Simplify /dev/console
  code.  This fixes a bug where we would leak the IN and OUT file
  descriptors.
2014-05-08 23:42:15 +02:00
Ludovic Courtès ef4ab0a4c5 doc: Mention Kiselyov's work on "staging".
* doc/guix.texi (G-Expressions): Mention Oleg's work on "staging" in
  footnote.
2014-05-08 23:42:15 +02:00
Ludovic Courtès 03178aec1d git-download: Disable TLS certificate verification.
* guix/build/git.scm (git-fetch): Add 'setenv' call.
2014-05-08 23:42:15 +02:00
Eric Bavier 8ede638c4b gnu: openmpi: Avoid "open source" verbiage
* gnu/packages/mpi.scm (openmpi)[synopsis,description]: Remove mention
  of "open source".
2014-05-08 14:48:59 -05:00
Eric Bavier d8c7eeb996 gnu: Add petsc-openmpi.
* gnu/packages/maths.scm (petsc-openmpi): New variable.
  (petsc-complex-openmpi): New variable.
2014-05-08 12:42:17 -05:00
Eric Bavier 10b11968c8 gnu: petsc: Clean some more leaked chroot references
* gnu/packages/maths.scm (petsc)[arguments]: Scrub some
  config-generated header files before build.  Only remove files if
  they exist.
2014-05-08 12:42:17 -05:00
Eric Bavier fb0e370928 gnu: Add OpenMPI
* gnu/packages/mpi.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-05-08 12:42:17 -05:00
Ludovic Courtès a29a09fc29 Change 'nix-upstream' submodule URL.
* .gitmodules: Use https, not http.  Reported by
  Pjotr Prins <pjotr.public12@thebird.nl>.
2014-05-08 18:38:03 +02:00
Ludovic Courtès b1995341ce linux-initrd: Update /etc/mtab.
* guix/build/linux-initrd.scm (mount-root-file-system): Populate
  /root/etc/mtab.
  (mount-file-system): Update ROOT/etc/mtab.
2014-05-08 00:22:26 +02:00
Ludovic Courtès 538cc2e016 Remove now unneeded (guix build gnome) module.
* guix/build/gnome.scm: Remove.
* Makefile.am (MODULES): Update accordingly.
2014-05-07 14:32:36 +02:00
Ludovic Courtès ce2df078d7 gnu: Make $XDG_DATA_DIRS a search path variable for GLib.
* gnu/packages/glib.scm (glib): Add 'native-search-paths' and
  'search-paths' fields.
* gnu/packages/gnome.scm (libpeas): Remove 'arguments' field.
  (librsvg)[arguments]: Remove #:modules and #:imported-modules.
  Remove settings of INTROSPECTION_SCANNER_ARGS and
  INTROSPECTION_COMPILER_ARGS in makefiles.
* gnu/packages/gtk.scm (gtk+): Likewise.
2014-05-06 23:10:11 +02:00
Ludovic Courtès 141aed8087 gnu: gobject-introspection is usually meant to be a native input.
* gnu/packages/gtk.scm (atk, pango, gdk-pixbuf, gtk+): Move
  gobject-introspection to 'native-inputs' since it's only used at build
  time.
* gnu/packages/gnome.scm (libpeas): Move pkg-config,
  gobject-introspection, and intltool to 'native-inputs'.
2014-05-06 22:47:21 +02:00
Ludovic Courtès 63016e7cd0 gnu: Add librsvg.
* gnu/packages/gnome.scm (librsvg): New variable.
2014-05-06 22:29:55 +02:00
Ludovic Courtès 26a728eb09 linux-initrd: Delete files from the initrd ramfs when switching roots.
* guix/build/linux-initrd.scm (switch-root): Delete file from the old
  root.  Chdir to / after 'chroot' call.  Re-open file descriptors 0, 1,
  and 2.
  (boot-system): Move 'loading' message after the 'switch-root' call.
* gnu/system.scm (operating-system-boot-script): Add loop that closes
  file descriptor before calling 'execl'.
2014-05-06 18:18:22 +02:00
Ludovic Courtès 94e3029a83 gnu: pius: Use Python 2.
* gnu/packages/gnupg.scm (pius): Use Python 2.
2014-05-06 16:48:58 +02:00
Ludovic Courtès 78214b4b89 gnu: make-bootstrap: Add missing export.
* gnu/packages/make-bootstrap.scm: Export '%guile-static-stripped'.  The
  problem was hidden because of <http://bugs.gnu.org/17418>.
2014-05-06 15:01:39 +02:00
Ludovic Courtès f57d263929 gnu: e2fsprogs: Install the libext2fs Info manual.
* gnu/packages/linux.scm (e2fsprogs)[native-inputs]: Add TEXINFO.
2014-05-06 14:26:49 +02:00
Ludovic Courtès 0997771ac1 gnu: e2fsprogs: Use 'static-package' for the statically-linked variant.
* gnu/packages/linux.scm (e2fsprogs/static): Remove.
  (e2fsck/static): Use (static-package e2fsprogs) instead.
2014-05-06 14:12:41 +02:00
Ludovic Courtès fd42e6b803 gnu: gdb: Upgrade to 7.7.1.
* gnu/packages/gdb.scm (gdb): Upgrade to 7.7.1.
2014-05-06 14:06:41 +02:00
Ludovic Courtès 03f4500118 gnu: gdb: Add dependency on libxml2.
* gnu/packages/gdb.scm (gdb)[inputs]: Add LIBXML2.
2014-05-06 14:06:16 +02:00
Ludovic Courtès 2517859411 gnu: Add libgsf.
* gnu/packages/gnome.scm (libgsf): New variable.
2014-05-06 00:26:10 +02:00
Ludovic Courtès 1dd26275a3 gnu: Add libcroco.
* gnu/packages/gnome.scm (libcroco): New variable.
2014-05-06 00:20:46 +02:00
Ludovic Courtès 6f194a1e77 gnu: pybugz: Add fixlet patches.
* gnu/packages/python.scm (python2-pybugz)[source]: Add 'patches'
  field.
* gnu/packages/patches/pybugz-encode-error.patch,
  gnu/packages/patches/pybugz-stty.patch: New files.
* gnu-system.am (dist_patch_DATA): Add them.
2014-05-05 17:12:55 +02:00
Ludovic Courtès 515eba4543 gnu-maintenance: Add missing type check.
* guix/gnu-maintenance.scm (gnu-package?): Only call 'mirror-type' when
  URL is a string.
2014-05-05 09:00:00 +02:00
Ludovic Courtès 1d4628329d linux-initrd: Improve root file system switching.
* guix/build/linux-initrd.scm (move-essential-file-systems,
  switch-root): New procedures.
  (MS_MOVE): New variable.
  (boot-system): Remove 'mount-essential-file-systems' call for ROOT.
  Use 'switch-root' instead of chdir + chroot.
2014-05-04 22:24:47 +02:00
Ludovic Courtès 2d49f84522 services: networking: Fix typo in static networking service.
* gnu/services/networking.scm (static-networking-service): Use
  $inetutils/bin/ifconfig, not $inetutils/sbin/ifconfig.
2014-05-04 21:09:29 +02:00
Ludovic Courtès 0e2672aee3 gnu: Add missing import in (gnu packages maths).
* gnu/packages/maths.scm: Use (guix utils), which was needed since
  b9100e2f.
2014-05-04 11:15:30 +02:00
Ludovic Courtès 3c05b4bc25 linux-initrd: Check the root and other early file systems.
* gnu/system.scm (operating-system-derivation)[boot-file-systems]: Keep "/".
* gnu/system/linux-initrd.scm (file-system->spec): Keep the 'check?'
  flag.
  (qemu-initrd)[helper-packages]: New variable.  Pass it as #:to-copy.
  <gexp>: Add 'set-path-environment-variable' call.  Remove #:unionfs
  argument for 'boot-system'.
* gnu/system/vm.scm (%linux-vm-file-systems): Add 'check?' field/
  (virtualized-operating-system): Likewise for the "9p" file system.
* guix/build/linux-initrd.scm (mount-root-file-system): Change #:unionfs
  default.  Call 'check-file-system' before mounting ROOT, when
  VOLATILE-ROOT? is false.
  (check-file-system): New procedure.
  (mount-file-system): Honor 'check?' element in list; add
  'check-file-system' call.
  (boot-system): Remove #:root-fs-type and #:unionfs parameters.
  [root-mount-point?, root-fs-type]: New variables.
  Call 'mount-file-system' on all MOUNTS but "/".
2014-05-04 00:30:39 +02:00
Ludovic Courtès ad896f23a5 activation: Fix deletion of setuid programs.
* guix/build/activation.scm (activate-setuid-programs): When
  %SETUID-DIRECTORY exists, pass the right file names to 'delete-file'.
2014-05-04 00:18:46 +02:00
Ludovic Courtès e102f94097 gnu: Add statically-linked versions of e2fsprogs and the fsck.* commands.
* gnu/packages/linux.scm (e2fsprogs/static, e2fsck/static): New
  variables.
2014-05-03 16:37:04 +02:00
Ludovic Courtès 66f23d6621 vm: Provide a root partition for the freestanding VM image.
Fixes a regression introduced in 83bcd0b.

* gnu/system/vm.scm (system-qemu-image): Override the 'file-systems'
  field of OS.  Add #:file-system-type parameter and honor it.
2014-05-03 12:46:09 +02:00
Ludovic Courtès 03ddfaf5fb vm: Make root file system type a parameter, and default to ext4.
* gnu/system/vm.scm (qemu-image): Add #:file-system-type parameter.
  Pass it to 'initialize-hard-disk'.
* guix/build/linux-initrd.scm (mount-root-file-system): Always honor
  TYPE.
  (boot-system): Change #:root-fs-type to default to "ext4".  Update
  docstring.
* guix/build/vm.scm (initialize-hard-disk): Remove #:mkfs parameter; add
  #:file-system-type.  Adjust 'mkfs' invocation and 'mount' call to
  honor #:file-system-type.
2014-05-03 12:16:23 +02:00
Ludovic Courtès e20fd1bf80 doc: Minor improvements in "G-Expressions".
* doc/guix.texi (G-Expressions): Show coreutils version number in store
  file name.  Add xref to "Derivations", in documentation of
  'gexp->derivation'.  Fix typo.
2014-05-03 12:02:43 +02:00
Ludovic Courtès 83a39ed7db gnu: Add diffstat.
* gnu/packages/version-control.scm (diffstat): New variable.
2014-05-03 00:46:51 +02:00
Ludovic Courtès 3c986b75f5 ftp-client: Add missing CR in "USER" command.
* guix/ftp-client.scm (%ftp-login): Add #\return before #\newline.
  Fixes access to some FTP servers, such as
  ftp://invisible-island.net ("ProFTPD 1.3.4a Server").
2014-05-03 00:46:51 +02:00
Ludovic Courtès 83bcd0b895 system: Add first-class file system declarations.
* gnu/system.scm (<operating-system>)[initrd]: Default to
  'qemu-initrd'.
  (<file-system>): New record type.
  (operating-system-root-file-system): New procedure.
  (operating-system-derivation): Take the device name for GRUB from
  'operating-system-root-file-system'.  Pass the
  'operating-system-initrd' procedure the list of boot file systems.
* gnu/system/linux-initrd.scm (file-system->spec): New procedure.
  (qemu-initrd): Add 'file-systems' parameter, and remove #:mounts
  parameter.
  [file-system-type-predicate]: New procedure.
  [linux-modules]: Use it.
  Adjust #:mounts argument in 'boot-system' call.
  (gnu-system-initrd): Remove.
* gnu/system/vm.scm (%linux-vm-file-systems): New variable.
  (expression->derivation-in-linux-vm): Adjust call to 'qemu-initrd'.
  (virtualized-operating-system): New procedure.
  (system-qemu-image/shared-store-script)[initrd]: Remove.  Use
  'virtualized-operating-system'.  Get the 'initrd' file from OS-DRV.
* guix/build/linux-initrd.scm (mount-qemu-smb-share, mount-qemu-9p):
  Remove.
  (MS_RDONLY, MS_BIND): New global variables.
  (bind-mount): Remove local 'MS_BIND' definition.
  (mount-root-file-system): New procedure, with code formerly in
  'boot-system'.
  (mount-file-system): New procedure.
  (boot-system): Add #:root-fs-type parameter.  Remove 'MS_RDONLY' local
  variable.  Use 'mount-root-file-system' and 'mount-file-system'.
* doc/guix.texi (Using the Configuration System): Add 'file-system'
  declaration.
2014-05-03 00:46:51 +02:00
Eric Bavier f5d5a346db gnu: Add missing copyright line
* gnu/packages/maths.scm: Add copyright line missing from 3de01d3.
2014-05-02 14:25:17 -05:00
Eric Bavier f258212df5 gnu: petsc: Add input superlu.
* gnu/packages/maths.scm (petsc): Configure with superlu support.
2014-05-02 14:25:17 -05:00
Eric Bavier 183e44ae44 gnu: Add superlu
* gnu/packages/maths.scm (superlu): New variable
2014-05-02 14:25:17 -05:00
Ludovic Courtès 6ab6ca4c9a gnu: qemu: Upgrade to 2.0.0.
* gnu/packages/qemu.scm (qemu-headless): Upgrade to 2.0.0.
2014-05-01 22:31:36 +02:00
Ludovic Courtès 6f8f8ccb5b download: Rewrite using gexps.
* guix/download.scm (gnutls-derivation): Remove.
  (gnutls-package): New procedure.
  (url-fetch): Rewrite using 'gexp->derivation'.
2014-05-01 22:31:36 +02:00
Ludovic Courtès 53e89b1732 monads, gexp: Remove unintended dependency on (gnu packages …).
* guix/gexp.scm (gexp->derivation, gexp->script): Use 'default-guile'
  instead of an explicit reference to 'guile-final'.
  (default-guile): New procedure.
* guix/monads.scm (run-with-store)[default-guile]: New procedure.
  Use it.
2014-05-01 22:31:36 +02:00
Ludovic Courtès 79c0c8cdf7 gexp: Add support for 'origin?' objects in 'ungexp' forms.
* guix/gexp.scm (lower-inputs, gexp-inputs, gexp->sexp,
  canonicalize-reference): Add 'origin?' case.
* guix/monads.scm (origin->derivation): New procedure.
* tests/gexp.scm ("one input origin"): New test.
2014-05-01 22:31:36 +02:00
Ludovic Courtès 696893801c system: Add 'sudo' to the setuid programs, and handle /etc/sudoers.
* gnu/system.scm (<operating-system>)[groups]: Change default to just
  the 'root' group.
  [sudoers]: New field.
  (etc-directory): Add #:sudoers parameter.  Add 'sudoers' to the
  file union.
  (operating-system-etc-directory): Pass #:sudoers to 'etc-directory'.
  (%setuid-programs): Add 'sudo'.
  (%sudoers-specification): New variable.
* gnu/system/linux.scm (base-pam-services): Add 'sudo'.
* build-aux/hydra/demo-os.scm: Add 'groups' field; add 'guest' to the
  'wheel' group.
2014-05-01 22:31:36 +02:00
Eric Bavier b9100e2f11 gnu: Add petsc
* gnu/packages/maths.scm (petsc): New variable.
  (petsc-complex): New variable.
* gnu/packages/patches/petsc-fix-threadcomm.patch: New patch.
* gnu-system.am (dist_patch_DATA): Add it.
2014-05-01 15:27:30 -05:00
David Thompson 3da5dca34c gnu: Add abbaye.
* gnu/packages/games.scm (abbaye): New variable.
2014-05-01 07:44:45 -04:00
David Thompson 586b6d4d45 gnu: Propagate necessary inputs for sdl-image.
* gnu/packages/sdl.scm (sdl-image): Propagate jpeg, png, and tiff
  libraries.
2014-05-01 07:44:45 -04:00
Ludovic Courtès 7560b00b1c gexp: Add pretty printer.
* guix/gexp.scm (write-gexp): New procedure.
  <top level>: Add call to 'set-record-type-printer!'.
2014-04-30 23:16:23 +02:00
Ludovic Courtès e1485c7b38 gnu: Add sudo.
* gnu/packages/admin.scm (sudo): New variable.
2014-04-30 23:16:23 +02:00
Ludovic Courtès 09e028f45f system: Add support for setuid binaries.
* gnu/system.scm (<operating-system>)[pam-services, setuid-programs]:
  New fields.
  (etc-directory)[bashrc]: Prepend /run/setuid-programs to $PATH.
  (operating-system-etc-directory): Honor
  'operating-system-pam-services'.
  (%setuid-programs): New variable.
  (operating-system-boot-script): Add (guix build utils) to the set of
  imported modules.  Call 'activate-setuid-programs' in boot script.
* gnu/system/linux.scm (base-pam-services): New procedure.
* guix/build/activation.scm (%setuid-directory): New variable.
  (activate-setuid-programs): New procedure.
* build-aux/hydra/demo-os.scm: Add 'pam-services' field.
2014-04-30 23:16:23 +02:00
Ludovic Courtès d8a7a5bfd5 linux-initrd: Allow setuid binaries from the unionfs to run.
* guix/build/linux-initrd.scm (boot-system): Pass the 'suid' option to
  UNIONFS.
2014-04-30 23:16:23 +02:00
Ludovic Courtès 4dfe6c58ee system: Add (guix build activation).
* gnu/services/dmd.scm (dmd-configuration-file): Remove 'etc'
  parameter.  Move /etc activation code to...
* guix/build/activation.scm: ... here; new file.
* gnu/system.scm (operating-system-boot-script): Augment script: add
  (guix build activation) to the load path; call 'activate-etc'.
* Makefile.am (MODULES): Add guix/build/activation.scm.
2014-04-30 23:16:22 +02:00
Eric Bavier 864068e204 gnu: calcurse: Fix module definition.
* gnu/packages/calcurse.scm: Define calcurse module correctly.
2014-04-30 15:12:43 -05:00
Eric Bavier edf684ef99 gnu: gmsh: Fix typos
* gnu/packages/maths.scm (gmsh): Fix typo and space aftern
  end-of-sentence.
2014-04-30 14:56:52 -05:00
Eric Bavier 3de01d3fa1 gnu: Add gmsh
* gnu/packages/maths.scm (gmsh): New variable
2014-04-30 11:39:31 -05:00
Ludovic Courtès be4e38fb6f derivations: Micro-optimize 'derivation'.
* guix/derivations.scm (derivation->string): New procedure.
  (derivation-hash, derivation): Use it.
  Memoization here yields a 5% improvement on "guix build -e '(@ (gnu
  packages emacs) emacs)' -n --no-substitutes".
2014-04-29 18:13:10 +02:00
Ludovic Courtès 2c6b7c7d55 gnu: guile-ncurses: Build with Unicode support.
* gnu/packages/guile.scm (guile-ncurses)[arguments]: Pass
  "--with-ncursesw".
2014-04-29 18:05:52 +02:00
Ludovic Courtès 187eb5f643 gnu-maintenance: Avoid network access in 'gnu-package?'.
* guix/gnu-maintenance.scm (gnu-package?): Add 'mirror-type' procedure.
  Resort to 'official-gnu-packages' only when 'mirror-type' returns #f.
2014-04-29 18:02:16 +02:00
Ludovic Courtès 0423b7847b Update 'TODO'. 2014-04-29 17:59:23 +02:00
Ludovic Courtès bfd9eed955 gexp: Remove leftover parameter.
* guix/gexp.scm (gexp->sexp): Remove #:outputs parameter.  Adjust
  callers accordingly.
2014-04-29 17:58:34 +02:00
Ludovic Courtès 6d7b4206d7 gnu: screen: Upgrade to 4.2.1.
* gnu/packages/screen.scm (screen): Upgrade to 4.2.1.
2014-04-28 23:53:01 +02:00
Ludovic Courtès b6c18d6af7 gnu: mcron: Upgrade to 1.0.7.
* gnu/packages/guile.scm (mcron): Upgrade to 1.0.7.
  Use GUILE-2.0 instead of GUILE-1.8; add 'native-inputs' field.
2014-04-28 23:52:13 +02:00
Ludovic Courtès ada3df03e3 monads: Hide 'derivation-expression' and 'lower-inputs'.
* guix/monads.scm: Unexport 'lower-inputs' and 'derivation-expression'.
  (text-file*): Add comment about the switch to 'gexp->derivation'.
  (lower-inputs): Add comment about its doom.
  (derivation-expression): Likewise.
* guix/gexp.scm (lower-inputs*): Rename to...
  (lower-inputs): ... this.  Update callers.
* tests/monads.scm (derivation-expression): New procedure.
* doc/guix.texi (The Store Monad): Use 'gexp->derivation' instead of
  'derivation-expression'.  Remove documentation of
  'derivation-expression'.
* guix/ui.scm (read/eval): Use THE-ROOT-MODULE so that macros are
  properly expanded.
* tests/guix-build.sh: Use 'gexp->derivation' instead of
  'derivation-expression'.monads: Hide 'derivation-expression' and 'lower-inputs'.
2014-04-28 23:41:12 +02:00
Ludovic Courtès 0c21d92b1c linux-initrd: Rewrite using gexps.
* gnu/system/linux-initrd.scm (expression->initrd): Rename 'inputs'
  parameter to 'to-copy'.  Remove 'files-to-copy'.  Rewrite 'builder' as
  a gexp, and use 'gexp->derivation'.
  (qemu-initrd): Adjust accordingly.
2014-04-28 23:41:12 +02:00
Ludovic Courtès 8c35bfb68c system: Rewrite 'union' using gexps.
* gnu/system.scm (union): Rewrite using 'gexp->derivation'.
2014-04-28 23:41:12 +02:00
Ludovic Courtès 8779d34294 services: xorg: Rewrite using gexps.
* gnu/services/xorg.scm (xorg-start-command): Rewrite in terms of
  'gexp->script'.
  (xinitrc): Likewise.
2014-04-28 23:41:11 +02:00
Ludovic Courtès f6a7b21df7 system: grub: Rewrite using gexps.
* gnu/system/grub.scm (grub-configuration-file): Rewrite using
  'gexp->derivation'.
* gnu/system.scm (operating-system-derivation): Adjust accordingly.
2014-04-28 23:41:08 +02:00
Ludovic Courtès 23f6056b50 system: Change 'file-union' to use gexps.
* gnu/system.scm (file-union): Make 'name' the first parameter; remove
  'inputs' parameter.  Rewrite using 'gexp->derivation'.
  (etc-directory): Adjust accordingly.
  (operating-system-derivation): Ditto.
2014-04-28 23:24:18 +02:00
Ludovic Courtès b5f4e68635 services: Rewrite using gexps.
* gnu/services.scm (<service>)[inputs]: Remove.
* gnu/system.scm (links): Remove.
  (etc-directory): Add PASSWD and SHADOW to #:inputs.
  (operating-system-boot-script): Pass ETC to 'dmd-configuration-file'.
  (operating-system-derivation): Remove EXTRAS from the union.
* gnu/system/linux.scm (pam-service->configuration): Rewrite in terms of
  'gexp->derivation'.  Compute the contents on the build side.  Expect
  'arguments' to contain a list of gexps.
  (pam-services->directory): Rewrite in terms of 'gexp->derivation'.
  (unix-pam-service): Change 'arguments' to a list of one gexp.
* gnu/system/shadow.scm (<user-account>)[inputs]: Remove.
  [shell]: Change default value to a gexp.
  (passwd-file): Rewrite in terms of 'gexp->derivation'.  Compute
  contents on the build side.
* gnu/services/base.scm (host-name-service, mingetty-service,
  nscd-service, syslog-service, guix-service): Change 'start' and 'stop'
  to gexps; remove 'inputs' field.
  (guix-build-accounts): Change 'shell' field to a gexp.
* gnu/services/networking.scm (static-networking-service): Change
  'start' and 'stop' to gexps; remove 'inputs' field.
* gnu/services/xorg.scm (slim-service): Likewise.
* gnu/services/dmd.scm (dmd-configuration-file): Expect ETC to be a
  derivation.  Change 'config' to a gexp.  Use 'gexp->file' instead of
  'text-file'.
* doc/guix.texi (Defining Services): Update nscd example with gexps, and
  without 'inputs'.  Add xref to "G-Expressions".
2014-04-28 23:24:18 +02:00
Ludovic Courtès 1aa0033b64 vm: Rewrite support procedures to use gexps.
* gnu/system/vm.scm (%imported-modules): Remove.
  (expression->derivation-in-linux-vm): Remove 'inputs' parameter.
  Rename 'imported-modules' to 'modules'.  Rewrite using gexps and
  'gexp->derivation'.
  (qemu-image): Add 'qemu' parameter.  Pass NAME to
  'expression->derivation-in-linux-vm'.  Rewrite using gexps.  Remove
  #:inputs argument to 'expression->derivation-in-linux-vm'.
  (operating-system-default-contents): Rewrite using gexps.
* gnu/system.scm (operating-system-profile-derivation): Rename to...
  (operating-system-profile): ... this.  Adjust callers.
  (operating-system-profile-directory): Remove.
2014-04-28 23:24:18 +02:00
Ludovic Courtès eee2127109 store: (direct-store-path? (%store-prefix)) returns #f.
* guix/store.scm (direct-store-path?): Return #f if PATH
  is (%store-prefix).
* tests/store.scm ("direct-store-path?"): Add test.
2014-04-28 23:24:18 +02:00
Ludovic Courtès 02100028bb gnu: Use gexps in obvious places in (gnu system ...).
* gnu/system.scm (operating-system-boot-script): Use 'gexp->file'
  instead of 'text-file*'.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Likewise.
  (system-qemu-image/shared-store-script)[builder]: Turn into a gexp.
  Use 'gexp->derivation' instead of 'derivation-expression'.
2014-04-28 23:24:17 +02:00
Ludovic Courtès 21b679f694 Add (guix gexp).
* guix/gexp.scm: New file.
* tests/gexp.scm: New file.
* Makefile.am (MODULES): Add guix/gexp.scm.
  (SCM_TESTS): Add tests/gexp.scm.
* doc/guix.texi (Derivations): Add #:inputs in 'derivation' example.
  Mark 'build-expression->derivation' as deprecated, refer to
  "G-Expressions".  Remove paragraph about code strata.
  (G-Expressions): New node.
2014-04-28 23:24:17 +02:00
Andreas Enge ba948b4fa0 gnu: soprano: Add input clucene.
* gnu/packages/rdf.scm (soprano): Add input clucene and patch the cmake
    file looking for it.
* gnu/packages/patches/soprano-find-clucene.patch: New file.
* gnu-system.am (dist_patch_DATA): Register the patch.
2014-04-28 20:20:52 +02:00
Andreas Enge c69fe8306d gnu: soprano: Upgrade to 2.9.4.
* gnu/packages/rdf.scm (soprano): Upgrade to 2.9.4.
2014-04-28 20:09:27 +02:00
Andreas Enge 06ed59825e guix: cmake: Add input and package libraries to the rpath, and adapt package
definitions accordingly.

* guix/build/cmake-build-system.scm (configure): Add flags.
* gnu/packages/maths.scm (lapack): Drop special code.
* gnu/packages/ssh.scm (libssh): Drop special code.
* gnu/packages/slim.scm (slim): Drop special code and enable shared library.

Co-authored-by: Eric Bavier <bavier@member.fsf.org>
2014-04-27 11:35:26 +02:00
Andreas Enge 5d17cf8eb9 gnu: soprano: Add native input doxygen.
* gnu/packages/rdf.scm (soprano): Add native input doxygen.
2014-04-25 00:32:11 +02:00
Andreas Enge 9e57c1b587 gnu: doxygen: Add propagated input graphviz.
* gnu/packages/doxygen.scm (doxygen): Add propagated input graphviz.
2014-04-25 00:31:41 +02:00
Andreas Enge 707d3e24a2 gnu: libkate: Add native input doxygen and make input pkg-config native.
* gnu/packages/xiph.scm (libkate): Add native input doxygen.
    Make input pkg-config native.
2014-04-25 00:24:10 +02:00
Andreas Enge b01932868e gnu: libmpdclient: Add native input doxygen.
* gnu/packages/mpd.scm (libmpdclient): Add native input doxygen.
2014-04-25 00:16:30 +02:00
Andreas Enge eb78797163 gnu: libdbusmenu-qt: Add native input doxygen for building the documentation,
and make input qjson native.

* gnu/packages/kde.scm (libdbusmenu-qt): Add native input doxygen for
    building the documentation.
    Make input qjson native, as it is needed only for the tests.
2014-04-25 00:09:59 +02:00
Andreas Enge 436d4d1fbb gnu: Add doxygen.
* gnu/packages/doxygen.scm: New file.
* gnu/packages/patches/doxygen-test.patch,
  gnu/packages/patches/doxygen-tmake.patch: New files.
* gnu-system.am (GNU_SYSTEM_MODULES, dist_patch_DATA): Register the new files.
2014-04-25 00:03:36 +02:00
Ludovic Courtès c0412fedf8 build: Add missing function checks for optional daemon features.
* config-daemon.ac: Check for lchown, posix_fallocate, vfork,
  sched_setaffinity, statvfs, nanosleep, and strsignal.  As a side
  effect, this enables daemon features depending on the corresponding
  feature test macros.
2014-04-24 17:47:20 +02:00
Andreas Enge 99fa3024b8 gnu: gp2c: Upgrade to 0.0.9pl1.
* gnu/packages/algebra.scm (gp2c): Upgrade to 0.0.9pl1.
2014-04-24 11:09:15 +02:00
Ludovic Courtès c47f0d8b71 vm: Clarify 'system-qemu-image/shared-store-script'.
* gnu/system/vm.scm (system-qemu-image/shared-store-script): Move
  'initrd' definition to the top-level.  Have a single definition of
  'initrd', 'image', and 'os-drv'.
2014-04-23 16:53:36 +02:00
Ludovic Courtès 2106d3fc81 system: Add 'operating-system-boot-script'.
* gnu/system.scm (operating-system-boot-script): New procedure.
  (operating-system-derivation): Use it.  Remove DMD-CONF from the
  file union.  Add BOOT-DRV to the inputs.
2014-04-23 16:52:14 +02:00
Ludovic Courtès 0b6f49ef69 system: Factorize (gnu system).
* gnu/system.scm (operating-system-accounts,
  operating-system-etc-directory): New procedures.
  (operating-system-derivation): Use them.
* gnu/services/base.scm (%base-services): Add 'host-name-service'
  invocation.
2014-04-23 15:47:42 +02:00
Ludovic Courtès 42b001381e gnu: cyrus-sasl: Add alternate source URL.
* gnu/packages/cyrus-sasl.scm (cyrus-sasl)[source]: Add alternate URL;
  the previous one is currently unreachable.
2014-04-22 22:15:18 +02:00
Ludovic Courtès 60bbd4f1be gnu: mplayer: Add mpg123 as an input.
* gnu/packages/video.scm (mplayer)[inputs]: Add mpg123.
2014-04-22 20:42:00 +02:00
Ludovic Courtès 1bdb591b74 gnu: Add mpg123.
* gnu/packages/mp3.scm (mpg123): New variable.
2014-04-22 20:41:25 +02:00
Ludovic Courtès 571aa6cd81 gnu: Add GCC 4.9.0.
* gnu/packages/gcc.scm (gcc-4.9): New variable.
* gnu/packages/base.scm (gcc-toolchain-4.9): New variable.
2014-04-22 17:45:09 +02:00
Mark H Weaver 0815f8f9a2 gnu: openssl: Fixes for CVE-2010-5298 and extension checking.
* gnu/packages/patches/openssl-CVE-2010-5298.patch: New file.
* gnu/packages/patches/openssl-extension-checking-fixes.patch: New file.
* gnu/packages/openssl.scm (openssl): Add them.
* gnu-system.am (dist_patch_DATA): Add them.
2014-04-22 08:55:43 -04:00
Ludovic Courtès 6ef3644e34 pk-crypto: Add pretty-printer to 'gcry-error' exceptions.
* guix/pk-crypto.scm (string->canonical-sexp, sign, generate-key): Pass
  the procedure name as the first argument to 'throw'.
  (gcrypt-error-printer): New procedure.
  <top level>: Add call to 'set-exception-printer!'.
* guix/nar.scm (restore-one-item): Add 'proc' parameter to 'catch'
  handler for 'gcry-error.
* guix/scripts/archive.scm (%options, generate-key-pair, authorize-key):
  Likewise.
* guix/scripts/substitute-binary.scm (narinfo-signature->canonical-sexp):
  Likewise.
2014-04-22 11:41:52 +02:00
Ludovic Courtès 6f69588529 authenticate: Allow signatures with binary data to be written to stdout.
Fixes <http://bugs.gnu.org/17312>.

* guix/scripts/authenticate.scm (guix-authenticate): Add calls to
  'set-port-encoding!' and 'set-port-conversion-strategy!'.  Wrap body
  in 'with-fluids' form that sets '%default-port-encoding' and
  '%default-port-conversion-strategy'.
* tests/guix-authenticate.sh: Add test.
* tests/pk-crypto.scm ("hash corrupt due to restrictive locale
  encoding"): Add reference to bug.
2014-04-22 11:30:58 +02:00
Ludovic Courtès 6030d8493e pk-crypto: Use ISO-8859-1 for strings passed to 'gcry_sexp_new'.
* guix/pk-crypto.scm (string->canonical-sexp): Pass "ISO-8859-1" as the
  2nd argument to 'string->pointer'.
* tests/pk-crypto.scm ("version"): New test.
  ("hash corrupt due to restrictive locale encoding"): New test.
2014-04-22 01:39:31 +02:00
Ludovic Courtès 50db7d82b3 nar: Really really protect the temporary store directory from GC.
This is a follow-up to 6071b55e10.
See <https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00167.html>
for the original report, and
<https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00198.html>
for an alternate solution that has been discussed.

* guix/nar.scm (temporary-store-file): Remove call to
  'add-permanent-root'; don't loop.
  (with-temporary-store-file): Rewrite using 'with-store' and
  'add-temp-root'.
2014-04-21 23:24:23 +02:00
Andreas Enge ace6924327 gnu: Add mplayer.
* gnu/packages/video.scm (mplayer): New variable.
2014-04-17 18:58:45 +02:00
Andreas Enge 8c0519bf83 gnu: xorg: libxxf86dga: Propagate input xf86dgaproto.
* gnu/packages/xorg.scm (libxxf86dga): Propagate input xf86dgaproto.
2014-04-17 18:43:40 +02:00
Andreas Enge d5a748e8e3 gnu: Add vlc.
* gnu/packages/video.scm (vlc): New variable.
2014-04-16 17:46:42 +02:00
Andreas Enge 01d3f19b6b gnu: lua: Add older version 5.1.5.
* gnu/packages/lua.scm (lua-5.1): New variable.
2014-04-16 15:31:24 +02:00
Andreas Enge 7b29779561 gnu: lua: Upgrade to 5.2.3.
* gnu/packages/lua.scm (lua): Upgrade to 5.2.3.
2014-04-16 15:14:43 +02:00
Andreas Enge 90f80bf21c gnu: lua: Compile with -fPIC.
* gnu/packages/lua.scm (lua): Add -fPIC to CFLAGS and LDFLAGS.
2014-04-16 15:12:46 +02:00
Ludovic Courtès 395bea2a53 download: Improve progress report output.
* guix/build/download.scm (url-fetch): Make current-output-port
  unbuffered.
2014-04-16 12:25:52 +02:00
Andreas Enge 58ec6f4ba9 gnu: Add strigi.
* gnu/packages/kde.scm (strigi): New variable.
2014-04-16 11:14:59 +02:00
Andreas Enge 7051054a0a gnu: clucene: Add patch to indicate linking with clucene-shared, not only
clucene-core, to pkgconfig.

* gnu/packages/patches/clucene-pkgconfig.patch: New file.
* gnu-system.am (dist_patch_DATA): Register patch.
* gnu/packages/rdf.scm (clucene): Use patch.
2014-04-16 10:58:31 +02:00
Andreas Enge 8a79ec41e8 gnu: Add clucene.
* gnu/packages/rdf.scm (clucene): New variable.
2014-04-16 10:07:52 +02:00
Andreas Enge 8b32a70b23 gnu: Add attica.
* gnu/packages/kde.scm (attica): New variable.
2014-04-16 09:04:52 +02:00
Ludovic Courtès 10db1e6c36 gnu: tcpdump: Add dependency on OpenSSL.
* gnu/packages/admin.scm (tcpdump)[inputs]: Add OpenSSL.
2014-04-16 00:18:44 +02:00
Ludovic Courtès fccf2fe06b gnu: Add Rot[t]log.
* gnu/packages/admin.scm (rottlog): New variable.
2014-04-15 23:55:15 +02:00
Ludovic Courtès 1da34f5ad5 gnu: Add tcpdump.
* gnu/packages/admin.scm (tcpdump): New variable.
2014-04-15 23:55:15 +02:00
Ludovic Courtès 158adb6611 gnu: Add lftp.
* gnu/packages/ftp.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-04-15 23:55:15 +02:00
Ludovic Courtès 2b42718b34 gnu: man-db: Add specification for $MANPATH.
* gnu/packages/man.scm (man-db)[native-search-paths]: New field.
2014-04-15 23:55:14 +02:00
Andreas Enge ff46707281 gnu: Add libdbusmenu-qt.
*  gnu/packages/kde.scm (libdbusmenu-qt): New variable.
2014-04-15 17:46:55 +02:00
Andreas Enge dc8d697609 gnu: Add qjson.
* gnu/packages/kde.scm (qjson): New variable.
2014-04-15 17:40:23 +02:00
Andreas Enge 7e1c735f0b gnu: wdiff: Upgrade to 1.2.2.
* gnu/packages/wdiff.scm (wdiff): Upgrade to 1.2.2.
2014-04-15 14:55:44 +02:00
Andreas Enge eda6a07419 gnu: gawk: Revert previous commit, which should go into core-updates.
* gnu/packages/gawk.scm (gawk): Downgrade to 4.1.0 to avoid recompiling
    almost everything in master.
2014-04-15 14:50:33 +02:00
Andreas Enge 87d7bb0d02 gnu: gawk: Upgrade to 4.1.1.
* gnu/packages/gawk.scm (gawk): Upgrade to 4.1.1.
2014-04-15 14:31:54 +02:00
Andreas Enge 722111abb7 gnu: gmp: Upgrade to 6.0.0a.
* gnu/packages/multiprecision.scm (gmp): Upgrade to 6.0.0a.
* gnu/packages/base.scm (gcc-boot0): Modify symbolic link to point to
    gmp-6.0.0 instead of the non-existing gmp-6.0.0a.
2014-04-15 09:36:32 +02:00
Ludovic Courtès 1c96c1bbab linux-initrd: Mount / as a unionfs when asking for a volatile root.
* guix/build/linux-initrd.scm (make-essential-device-nodes): Make
  /dev/fuse.
  (boot-system): Add #:unionfs parameter.  Invoke UNIONFS instead of
  copying files over when VOLATILE-ROOT? is true.
* gnu/system/linux-initrd.scm (expression->initrd): Add #:inputs
  parameter.
  [files-to-copy]: New procedure.
  [builder]: Add 'to-copy' parameter; honor it.
  (qemu-initrd)[linux-modules]: Add 'fuse.ko' when VOLATILE-ROOT?.
  Pass UNIONFS-FUSE/STATIC as #:inputs; change builder to pass #:unionfs
  to 'boot-system'.
2014-04-14 23:59:08 +02:00
Ludovic Courtès 0b7a0c2030 gnu: unionfs-fuse-static: Remove dependency on util-linux.
* gnu/packages/linux.scm (fuse-static): New variable.
  (unionfs-fuse/static): Use it.
2014-04-14 23:47:15 +02:00
Ludovic Courtès dcd3ed9cc7 gnu: man-pages: Fix URL.
* gnu/packages/man.scm (man-pages): Use the 'kernel.org' mirror set.
2014-04-14 13:55:59 +02:00
Ludovic Courtès 30ce8012cd offload: '{send,receive}-files' wait for completion of the transfer.
Fixes situations where the remote 'guix build' is invoked before the
.drv has been completely copied, as reported at
<https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00174.html>.

In some cases 'send-files' would return before the other end is done
importing the files, and so the subsequent 'guix build' invocation would
just miss the .drv file it refers to.

* guix/utils.scm (call-with-decompressed-port): Don't close PORT.
  (call-with-compressed-output-port): Likewise.
* tests/utils.scm ("compressed-output-port + decompressed-port"): Adjust
  accordingly.
* guix/scripts/offload.scm (send-files): Add explicit (close-pipe pipe)
  call.
  (retrieve-files): Likewise.
2014-04-14 00:24:24 +02:00
Ludovic Courtès 66ef541147 offload: Better synchronize with remote invocation of 'guix archive --missing'.
* guix/scripts/offload.scm (send-files)[missing-files]: Call 'waitpid'
  after reading all of MISSING.
2014-04-14 00:17:43 +02:00
Ludovic Courtès 8d846470f2 build-system/gnu: Reset timestamps on build tree when source is a directory.
* guix/build/utils.scm (copy-recursively): Add #:keep-mtime? parameter
  and honor it.
* guix/build/gnu-build-system.scm (unpack): Use #:keep-mtime? #t.
* gnu/packages/admin.scm (shadow)[arguments]: Remove 'reset-timestamps'
  phase.
2014-04-14 00:09:42 +02:00
Ludovic Courtès 4eb202a3d8 gnu: gcc-final: Add Texinfo as an input.
* gnu/packages/base.scm (gcc-final)[native-inputs]: New field.
2014-04-14 00:09:42 +02:00
Ludovic Courtès a6ac9ca6a5 gnu: gawk: Upgrade to 4.1.1.
* gnu/packages/gawk.scm (gawk): Upgrade to 4.1.1.
2014-04-14 00:09:35 +02:00
Ludovic Courtès 99e17dc927 derivations: Fix 'fixed-output-derivation?'.
Reported by Nikita Karetnikov <nikita@karetnikov.org>.

* guix/derivations.scm (fixed-output-derivation?): Fix pattern.
* tests/derivations.scm ("fixed-output-derivation?"): Add test.
2014-04-13 00:42:07 +02:00
Ludovic Courtès c5cd288bc7 gnu: Add Linux man-pages.
* gnu/packages/man.scm (man-pages): New variable.
2014-04-12 23:46:58 +02:00
Ludovic Courtès 6071b55e10 nar: Really protect the temporary store directory from GC.
Prevents garbage collection of the temporary store directory while
restoring a file set, as it could previously happen:
<https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00167.html>.

* guix/nar.scm (temporary-store-directory): Rename to...
  (temporary-store-file): ... this.  Use 'add-permanent-root' instead of
  'add-indirect-root'.
  (with-temporary-store-file): New macro.
  (restore-one-item): New procedure, with code formerly in
  'restore-file-set'.  Use 'with-temporary-store-file'.
  (restore-file-set): Use it.
2014-04-12 23:03:56 +02:00
Ludovic Courtès a9d2a10546 store: Add 'add-permanent-root' and 'remove-permanent-root'.
* guix/store.scm (add-indirect-root): Improve docstring.
  (%gc-roots-directory): New variable.
  (add-permanent-root, remove-permanent-root): New procedures.
* tests/store.scm ("permanent root"): New test.
2014-04-12 22:32:10 +02:00
Nikita Karetnikov ca2baf10ba openssh: Add another mirror.
* gnu/packages/ssh.scm (openssh): Add the mirror.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-04-12 14:41:47 +02:00
Ludovic Courtès 857ecb3df5 packages: Correctly handle patching for inputs with no extension.
Reported by Manolis Ragkousis <manolis837@gmail.com>.

* guix/packages.scm (patch-and-repack)[numeric-extension?]: Handle
  FILE-NAME with no extension.
2014-04-12 14:39:43 +02:00
Ludovic Courtès 87bf526b96 gnu: Add Mosh.
* gnu/packages/ssh.scm (mosh): New variable.
2014-04-11 22:05:33 +02:00
Ludovic Courtès 45f5cae655 gnu: Add perl-io-tty.
* gnu/packages/perl.scm (perl-io-tty): New variable.
2014-04-11 21:49:38 +02:00
Ludovic Courtès 14d17788a9 gnu: Add Protobuf.
* gnu/packages/protobuf.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-04-11 21:38:28 +02:00
Ludovic Courtès 616d9e1d2c hydra: Specify the image size of the QEMU image.
* build-aux/hydra/gnu-system.scm (qemu-jobs): Specify
  #:disk-image-size.
2014-04-11 19:08:25 +02:00
Ludovic Courtès 55651ff207 vm: Move image creation to (guix build vm); split into several procedures.
* guix/build/vm.scm (read-reference-graph, initialize-partition-table,
  install-grub, populate-store, evaluate-populate-directive,
  reset-timestamps, initialize-hard-disk): New procedures.
* gnu/system/vm.scm (qemu-image): Change 'builder' to a call to
  'initialize-hard-disk'.
2014-04-11 19:08:25 +02:00
Ludovic Courtès ade5ce7abc vm: 'expression->derivation-in-linux-vm' can import modules in the VM.
* gnu/system/vm.scm (%imported-modules): New procedure.
  (expression->derivation-in-linux-vm): Add #:imported-modules
  parameter; remove #:modules.  Add LOADER, and change BUILDER to load
  it.
  (qemu-image): Remove useless #:modules argument.
2014-04-11 19:08:25 +02:00
Ludovic Courtès 7bd9604cde vm: Strip import list.
* gnu/system/vm.scm: Strip #:select for (gnu packages base).
2014-04-11 19:08:25 +02:00
Ludovic Courtès ef09fdfb67 vm: Factorize input conversion.
* gnu/system/vm.scm (input->name+output): New procedure.
  (expression->derivation-in-linux-vm): Use it for 'input-alist'.
  (qemu-image)[input->name+derivation]: Remove.  Use
  'input->name+output' instead.
2014-04-11 19:08:25 +02:00
Ludovic Courtès e1a87b904a vm: Add (guix build vm) module.
* guix/build/vm.scm: New file.
* Makefile.am (MODULES): Add it.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Use it.
2014-04-11 19:08:24 +02:00
Andreas Enge 772d63658e gnu: ffmpeg: Upgrade to 2.2.1.
* gnu/packages/video.scm (ffmpeg): Upgrade to 2.2.1.
2014-04-11 12:50:24 +02:00
Ludovic Courtès a87f6bd7d0 gnu: qemu: Remove 'qemu-with-multiple-smb-shares' package.
* gnu/packages/qemu.scm (qemu/smb-shares): Remove.
* gnu/packages/patches/qemu-multiple-smb-shares.patch: Remove.
* gnu-system.am (dist_patch_DATA): Adjust accordingly.
2014-04-10 21:44:59 +02:00
Ludovic Courtès 1f3838ac5d vm: Use QEMU's para-virtualized file system support for all VMs.
* gnu/system/vm.scm (system-qemu-image/shared-store-script): Change
  #:qemu to default to QEMU.  Change INITRD to use a 9p mount for the
  store.  Change command-line to use -virtfs.
2014-04-10 21:41:58 +02:00
Ludovic Courtès 47d347b725 doc: Mention 'gcc-toolchain' in README.
* README (Installing Guix from Guix): Use "gcc-toolchain" instead of
  "gcc,binutils,ld-wrapper,glibc".
2014-04-10 21:41:58 +02:00
Alírio Eyng 8b8476b859 gnu: util-linux: Enable ddate.
* gnu/packages/linux.scm (util-linux): Add --enable-ddate configure flag.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-04-10 21:41:58 +02:00
Andreas Enge cc8ba868fa gnu: qt: Upgrade to 5.2.1.
* gnu/packages/qt.scm (qt): Upgrade to 5.2.1.
2014-04-10 10:07:22 +02:00
Ludovic Courtès 18d9a4466c daemon: Don't abort when $PATH is undefined.
* nix/nix-daemon/guix-daemon.cc (main): Check whether getenv ("PATH")
  returns NULL before blindly initializing 'search_path'.  Before that
  'guix-daemon' would abort when run in an environment where 'PATH' is
  undefined.
2014-04-09 23:05:42 +02:00
Ludovic Courtès 9132b9bd72 nar: 'restore-file-set' registers the temporary result as a GC root.
* guix/nar.scm (temporary-store-directory): Use 'add-indirect-root', not
  'add-temp-root'.  Reported by Andreas Enge <andreas@enge.fr> at
  <https://lists.gnu.org/archive/html/guix-devel/2014-04/msg00161.html>.
2014-04-09 23:01:02 +02:00
Alírio Eyng 9bf404e9e6 doc: Expect to fix typo.
* doc/guix.texi (Build Systems): "except" it is.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-04-09 22:22:19 +02:00
Alírio Eyng be0d8af822 gnu: linux-libre: Add SIS hardware compatibility.
* gnu/packages/linux.scm (linux-libre): Add CONFIG_SATA_SIS=y,
  CONFIG_SIS190=y and CONFIG_DEVPTS_MULTIPLE_INSTANCES=y.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-04-09 22:21:27 +02:00
Ludovic Courtès 901de55fbb build: Bump to version 0.7.
* configure.ac: Switch to 0.7.
2014-04-09 22:20:36 +02:00
Ludovic Courtès bd69ce5c0e Update '.po' files. 2014-04-09 20:54:35 +02:00
Ludovic Courtès e5c88dd739 hydra: Make demo OS smaller.
* build-aux/hydra/demo-os.scm: Replace Emacs with Zile.  Enable
  auto-login as "guest".  This is the configuration used for the Guix
  0.6 VM image.
2014-04-09 20:54:10 +02:00
Ludovic Courtès c865a878a0 gnu: linux-initrd: Mount /dev/pts at boot time.
* guix/build/linux-initrd.scm (make-essential-device-nodes): Remove
  'mount' call for /dev/pts.
  (boot-system): Add it here, after 'chroot' call.
2014-04-09 19:10:07 +02:00
Ludovic Courtès 289773c1d8 gnu: linux-initrd: Better populate /dev.
* guix/build/linux-initrd.scm (make-essential-device-nodes): Make
  /dev/{ptmx,tty} world-writable.  Build additional character devices.
2014-04-09 17:50:37 +02:00
Ludovic Courtès d69b35ee70 system: Initialize $PATH before starting dmd services.
* gnu/services/dmd.scm (dmd-configuration-file): Call 'setenv' before
  starting services.
2014-04-09 17:16:02 +02:00
Ludovic Courtès 2e4e01eebf gnu: guix: Upgrade to 0.6.
* gnu/packages/package-management.scm (guix): Upgrade to 0.6.
* gnu/services/dmd.scm (dmd-configuration-file): Change /var/nix to
  /var/guix.
* gnu/system/vm.scm (operating-system-default-contents): Likewise.
2014-04-09 16:43:13 +02:00
Ludovic Courtès 4ec91959f2 Update 'NEWS'. 2014-04-09 14:37:01 +02:00
Ludovic Courtès defa1b9bee vm: Add #:memory-size parameter for 'expression->derivation-in-linux-vm'.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Add
  #:memory-size parameter, defaulting to 256 (QEMU defaults to 128.)
2014-04-09 14:01:31 +02:00
Ludovic Courtès 4d9a80ba75 gnu: linux-initrd: Default initrd has no network mounts.
* gnu/system/linux-initrd.scm (gnu-system-initrd): Add #:mounts
  argument.
2014-04-09 14:01:31 +02:00
Ludovic Courtès f200b03e06 vm: 'expression->derivation-in-linux-vm' uses QEMU virtfs/9p.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Change #:qemu
  to default to QEMU-HEADLESS.  Use "-net nic,model=virtio".  Remove
  "-net user,smb=..." and add "-virtfs" options.  Change default initrd
  to include two 9p mounts.
2014-04-09 14:01:31 +02:00
Ludovic Courtès e1f88ff0ab gnu: qemu: Upgrade to 1.7.1; add virtfs support.
* gnu/packages/qemu.scm (qemu-headless): Upgrade to 1.7.1.
  [source]: Remove 'patches' field.
  [arguments]: Add --enable-virtfs configure flag.
  [inputs]: Add libcap and attr.
* gnu/packages/patches/qemu-make-4.0.patch: Remove.
* gnu-system.am (dist_patch_DATA): Adjust accordingly.
2014-04-09 14:01:31 +02:00
Eric Bavier 57e544e8f7 gnu: lapack: Augment library rpath
* gnu/packages/maths.scm (lapack) [arguments]: New post-installation
  phase to augment the rpath of installed libraries.
2014-04-08 23:10:42 -05:00
David Thompson cb3da2339a gnu: Move help2man package to (gnu packages man) module.
* gnu/packages/man.scm (help2man): New variable.
* gnu/packages/help2man.scm: Delete it.
* gnu/packages/cdrom.scm: Import (gnu packages man).
* gnu/packages/zile.scm: Import (gnu packages man).
* gnu-system.am (GNU_SYSTEM_MODULES): Delete 'gnu/packages/help2man.scm'.
2014-04-08 20:42:08 -04:00
David Thompson 67ca0a01bb gnu: Add man-db.
* gnu/packages.man.scm (man-db): New variable.
2014-04-09 00:40:09 +00:00
David Thompson cd2e0b64f2 gnu: Add libpipeline.
* gnu/packages/man.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-04-09 00:40:09 +00:00
Ludovic Courtès 2e7b5cea8c guix system: Add 'vm-image' action and '--image-size' option.
* guix/scripts/system.scm (%options): Add --image-size.
  (%default-options): Add 'image-size'.
  (guix-system)[parse-options]: Handle the 'vm-image' action.
  Honor them.
  (show-help): Update accordingly.
* doc/guix.texi (Invoking guix system): Add 'vm-image'.
2014-04-09 01:20:19 +02:00
Ludovic Courtès 1d6243cf70 ui: Add 'size->number'.
* guix/scripts/gc.scm (size->number): Remove.
* guix/ui.scm (size->number): New procedure.
* tests/ui.scm ("size->number, bytes",
  "size->number, MiB", "size->number, GiB", "size->number, 1.2GiB",
  "size->number, invalid unit"): New tests.
2014-04-08 22:01:44 +02:00
Ludovic Courtès c397e502ca gnu: dvdisaster: Build sequentially.
* gnu/packages/cdrom.scm (dvdisaster)[arguments]: Add #:parallel-build? #f.
2014-04-08 14:07:53 +02:00
Ludovic Courtès c950141495 offload: Remove all the GC roots in case of multiple-output derivations.
* guix/scripts/offload.scm (remove-gc-root): Rename to...
  (remove-gc-roots): ... this.
  [builder]: Use 'scandir' and remove all the files starting with
  %GC-ROOT-FILE.
  (transfer-and-offload): Adjust to renaming; remove
  'false-if-exception' wraps.
2014-04-08 13:48:30 +02:00
Ludovic Courtès 5d2933aecc gnu: openssl: Upgrade to 1.0.1g (CVE-2014-0160).
* gnu/packages/openssl.scm (openssl): Upgrade to 1.0.1g (for
  CVE-2014-0160, <http://www.openssl.org/news/secadv_20140407.txt>.)
2014-04-08 10:09:27 +02:00
Ludovic Courtès a4b42825a1 offload: Bail out when failing to register a GC root on the build machine.
* guix/scripts/offload.scm (register-gc-root): Call 'leave' when
  'close-pipe' returns non-zero.
2014-04-08 10:09:27 +02:00
Eric Bavier 8a9d928f57 gnu: Add patchutils and quilt
* gnu/packages/patchutils.scm: New file
* gnu/packages/patches/patchutils-xfail-gendiff-tests.patch: New patch
* gnu-system.am (GNU_SYSTEM_MODULES): Add patchutils.
  (dist_patch_DATA): Add patch.
2014-04-07 20:41:25 -05:00
Cyril Roelandt ce0849cc25 gnu: Python: disable failing tests on MIPS64.
* gnu/packages/patches/python-fix-tests.patch: disable two failing tests on
  MIPS64.
2014-04-07 20:05:32 -04:00
Mark H Weaver 32d5c72952 gnu: python: Apply mips n32 fix to bundled libffi.
* gnu/packages/patches/python-libffi-mips-n32-fix.patch: New file.
* gnu/packages/python.scm (python-2, python): Add it.
* gnu-system.am (dist_patch_DATA): Add it.
2014-04-07 17:41:48 -04:00
Ludovic Courtès d013fe50ba gnu: linux-libre: Upgrade to 3.13.7.
* gnu/packages/linux.scm (linux-libre): Update to 3.13.7.
2014-04-07 23:39:31 +02:00
Ludovic Courtès 717003e3ee gnu: python: Upgrade to 3.3.5.
* gnu/packages/python.scm (python): Upgrade to 3.3.5.
2014-04-07 23:39:30 +02:00
Cyril Roelandt c9fccced4e gnu: Python: disable test_wait_result() as it fails on some setups
* gnu/packages/patches/python-fix-tests.patch: disable a failing test.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-04-07 23:39:30 +02:00
Ludovic Courtès b0f981f06e Update 'NEWS' for 0.6. 2014-04-07 23:39:30 +02:00
Eric Bavier 8de3a57821 gnu: lapack: Build shared libraries
* gnu/packages/maths.scm (lapack) [arguments]: Add -DBUILD_SHARED_LIBS to
  #:configure-flags
2014-04-07 14:44:57 -05:00
Eric Bavier 2068f65cc4 gnu: fltk: Build shared libraries
* gnu/packages/fltk.scm (fltk) [arguments]: Add to --enable-shared to
  #:configure-flags
2014-04-07 14:44:57 -05:00
Ludovic Courtès af4535c58c utils: Make 'errno' procedure more robust.
Partially fixes <http://bugs.gnu.org/17212>.

* guix/utils.scm (errno): Move definition of 'bv' outside of the
  procedure.  Use 'bytevector-s32-native-ref' or
  'bytevector-s64-native-ref' instead of 'bytevector-sint-ref'.
2014-04-07 18:16:59 +02:00
Ludovic Courtès 68ec0450d1 tests: Avoid buffering in 'fcntl-flock' tests.
Partially fixes <http://bugs.gnu.org/17212>.

* tests/utils.scm ("fcntl-flock wait", "fcntl-flock non-blocking"): Open
  files in binary mode, with no buffering.
2014-04-07 18:16:58 +02:00
Ludovic Courtès 1d000ae73b gnu: shadow: Make source file timestamps deterministic.
* gnu/packages/admin.scm (shadow)[arguments]: Add 'reset-timestamps'
  phase.
2014-04-07 18:16:58 +02:00
Ludovic Courtès 6c1108330d build: Add 'hydra.gnu.org.pub' to the distribution.
* Makefile.am (pkgdata_DATA): Rename to...
  (dist_pkgdata_DATA): ... this.
2014-04-07 18:16:58 +02:00
Cyprien Nicolas 14e72a181e scheme/bigloo: Fix package description to reflect actual situation
* gnu/packages/scheme.scm (bigloo): Description: Remove the part about the C#
  connection which has been removed since release 3.8a.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-04-07 18:16:58 +02:00
Cyprien Nicolas 72a0c95013 Add missing space between funcall and string argument
* gnu/packages/scheme.scm (hop): Add missing space.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-04-07 18:16:58 +02:00
Mark H Weaver d2d8779b21 Work around behavior of old 'scandir' in Guile 2.0.5.
Problem reported by John Darrington <john@darrington.wattle.id.au>.

* guix/nar.scm (write-file): Filter out "." and ".." from the result of
  'scandir'.  Previously we did this by passing a suitable predicate.
2014-04-07 04:20:30 -04:00
Alírio Eyng 030daf7133 gnu: icecat: Remove duplicated line.
* gnu/packages/gnuzilla.scm (icecat): Remove duplicate PYTHON-2 input,
  and extraneous 'native-inputs' field.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2014-04-07 09:52:08 +02:00
Ludovic Courtès 9e4eddb4fc services: slim: Use a system-wide xinitrc that defaults to wmaker.
* gnu/services/xorg.scm (xinitrc): New procedure.
  (slim-service)[slim.cfg]: Use it as the 'login_cmd'.
2014-04-06 23:31:58 +02:00
Ludovic Courtès a0b25016eb Add Alírio to 'AUTHORS'. 2014-04-06 21:48:39 +02:00
Alírio Eyng c0888b3fe4 gnu: linux-libre: Make configuration more robust.
* gnu/packages/linux.scm (linux-libre): Append all configuration instead of
  replacing.  Order configuration like "make oldconfig" output.  Remove
  useless output.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-04-06 21:45:20 +02:00
Ludovic Courtès 574e86f9cf gnu: Synchronize synopses and descriptions with the Womb.
* gnu/packages/gnunet.scm (gnunet): Synchronize description and synopsis
  with upstream.
* gnu/packages/maths.scm (units): Likewise.
* gnu/packages/grub.scm (grub): Likewise.
* gnu/packages/pretty-print.scm (enscript): Likewise.
2014-04-06 21:18:13 +02:00
Ludovic Courtès 0ec6237b2e hydra: qemu-jobs: Return a derivation file name, not a derivation.
* build-aux/hydra/gnu-system.scm (qemu-jobs)[->alist]: Return the
  derivation file name, not the derivation.
2014-04-06 21:18:13 +02:00
Mark H Weaver 1660514094 gnu: imagemagick: Upgrade to 6.8.8-10.
* gnu/packages/imagemagick.scm (imagemagick): Upgrade to 6.8.8-10.
2014-04-06 00:56:51 -04:00
Mark H Weaver eb8cc6458d gnu: mailutils: Build against Readline 6.2.
* gnu/packages/mail.scm (mailutils): Use Readline 6.2.
2014-04-06 00:27:58 -04:00
Mark H Weaver 9ec7b6abc4 gnu: sqlite: Upgrade to 3.8.4.3.
* gnu/packages/sqlite.scm (sqlite): Upgrade to 3.8.4.3.
2014-04-05 23:47:18 -04:00
Ludovic Courtès 1b282ea849 hydra: Change 'qemu-jobs' to return name/thunk pairs.
* build-aux/hydra/gnu-system.scm (qemu-jobs)[->job]: Change the cdr to a
  thunk.
2014-04-05 22:57:06 +02:00
Ludovic Courtès 731b996255 hydra: Add 'qemu-image' job.
* build-aux/hydra/demo-os.scm: New file.
* Makefile.am (EXTRA_DIST): Add it.
* build-aux/hydra/gnu-system.scm (qemu-jobs): New procedure.
  (hydra-jobs): Use it.
* guix/scripts/system.scm (read-operating-system): Export.
2014-04-05 22:40:16 +02:00
Ludovic Courtès 512314d738 guix package: Fix indentation of packages to remove.
* guix/scripts/package.scm (show-what-to-remove/install): Add space when
  showing packages to remove.
2014-04-05 21:04:17 +02:00
Ludovic Courtès a28ef66e04 gnu: Add 'gcc-toolchain'.
* gnu/packages/base.scm (gcc-toolchain): New procedure.
  (gcc-toolchain-4.8): New variable.
2014-04-05 21:04:13 +02:00
Ludovic Courtès 7458bd0a4a doc: Add "Build Systems" section.
* doc/guix.texi (Defining Packages): Add 'arguments' field in the
  example; update 'synopsis' and 'description'.  Remove most of the
  description of 'build-system', and instead reference to the "Build
  Systems" node.  Briefly describe 'arguments' field, and remove more
  elaborate description.  Add cross-reference to "Packaging Guidelines".
  (Build Systems): New node.
  (Packaging Guidelines): Mention '--log-file'.
2014-04-05 17:02:21 +02:00
Ludovic Courtès 59f21ee34a gnu: qemu: Change multiple-SMB-share patch to /gnu/store.
* gnu/packages/patches/qemu-multiple-smb-shares.patch: Change
  "/nix/store" to "/gnu/store".
2014-04-05 17:02:21 +02:00
Eric Bavier 87216303c1 gnu: Add clusterssh
* gnu/packages/admin.scm (clusterssh): New variable
2014-04-04 15:30:55 -05:00
Eric Bavier 6c4727410b gnu: Add perl-x11-protocol
* gnu/packages/xorg.scm (perl-x11-protocol): New variable
2014-04-04 15:30:55 -05:00
Eric Bavier de0c31412e gnu: Add perl-tk
* gnu/packages/tcl.scm (perl-tk): New variable
2014-04-04 15:30:54 -05:00
Ludovic Courtès 34af3684d5 gnu: net-base: Upgrade to 5.2.
* gnu/packages/admin.scm (net-base): Upgrade to 5.2; use
  'mirror://debian'.
2014-04-04 22:21:49 +02:00
Ludovic Courtès aaff68eed3 gnu: shadow: Take the source from Git.
* gnu/packages/admin.scm (shadow)[source]: Use the git repo.
2014-04-04 22:04:44 +02:00
Ludovic Courtès 9c333da6f1 gnu: guile-ssh: Use libssh 0.5.5 patched for CVE-2014-0017.
* gnu/packages/patches/libssh-CVE-2014-0017.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/ssh.scm (libssh-0.5): New variable.
  (guile-ssh): Use it.
2014-04-04 22:04:44 +02:00
Ludovic Courtès bde8c0e6d9 ui: Improve reporting of 'system-error' exceptions.
* guix/ui.scm (call-with-error-handling): Change 'system-error' handler
  to display the error message as it was raised.
2014-04-04 22:04:43 +02:00
Ludovic Courtès 2a58b1b024 gnu: xpdf: Build sequentially.
* gnu/packages/pdf.scm (xpdf)[arguments]: Add #:parallel-build? #f.
2014-04-04 22:04:43 +02:00
Ludovic Courtès 0da01f4040 gnu: lsh: Build with Readline 6.2.
* gnu/packages/lsh.scm (lsh): Use READLINE-6.2 instead of READLINE.
2014-04-04 22:04:43 +02:00
Mark H Weaver f3b04737f7 gnu: gdb: Disable tests.
* gnu/packages/gdb.scm (gdb): Disable tests.
2014-04-04 12:47:42 -04:00
Ludovic Courtès c3ae3e7a57 gnu: valgrind: Adjust patch for glibc 2.19.
* gnu/packages/patches/valgrind-glibc.patch: s/2.18/2.19/.
2014-04-04 16:16:26 +02:00
Mark H Weaver 6a0b30f36c union: Ensure that the output is always a directory.
Fixes the creation of single-package profiles, reported by Ludovic Courtès.

* guix/build/union.scm (union-build): Add new internal procedure
  'union-of-directories' that always creates a directory, containing the code
  previously used only to merge multiple directories.  Call it from the
  multiple-directory case in 'union' and from the top-level 'union-build'.
2014-04-03 18:35:16 -04:00
Ludovic Courtès ded1012f3c pki: Introduce 'write-acl', and fix wrong conversion in 'ensure-acl'.
* guix/pki.scm (write-acl): New procedure.
  (ensure-acl): Use it.  Fixes a regression introduced in 39831f1,
  whereby 'ensure-acl' would yield a wrong-type-arg error.
* guix/scripts/archive.scm (authorize-key): Use 'write-acl'.
2014-04-04 00:23:17 +02:00
Ludovic Courtès 7864504feb build: Remove now useless Boost headers.
* daemon.am (libformat_headers): Remove 6 nix/boost files that were
  removed in Nix commit 1c2550a2ae826c422cf6d34f1c5c3e687474929d.
2014-04-04 00:05:08 +02:00
Ludovic Courtès 06ea5c8f6f Update 'nix-upstream' sub-module.
* nix-upstream: Update.
* daemon.am (AM_CXXFLAGS): Add -std=c++0x.
2014-04-03 23:55:51 +02:00
Ludovic Courtès 4743a4da9b doc: Update description of the chroot contents.
* doc/guix.texi (Build Environment Setup): Adjust description of /dev
  and /proc; remove footnote about /dev/shm, now obsolete.
2014-04-03 23:55:51 +02:00
Ludovic Courtès 4b00f3434e offload: Prevent the '.drv' and build result from being GC'd.
Before that, there was a small time window during which the GC could
wipe the .drv (before 'guix build' has been called), or the build
result (before 'retrieve-files' has started.)

* guix/scripts/offload.scm (remote-pipe): Add #:quote? parameter and
  honor it.
  (%gc-root-file): New variable.
  (register-gc-root, remove-gc-root): New procedures.
  (offload): Adjust comment.  Run 'guix build' with '-r %GC-ROOT-FILE'.
  (transfer-and-offload): Call 'register-gc-root' before
  sending (derivation-file-name DRV).  Call 'remove-gc-root' after the
  call to 'offload' or 'retrieve-files'.
  (send-files): Call 'remote-pipe' with #:quote? #f.
  (retrieve-files): Likewise.
2014-04-03 23:55:51 +02:00
Ludovic Courtès 50322c847d gnu: parted: Build against Readline 6.2.
* gnu/packages/readline.scm (readline-6.2): New variable.
* gnu/packages/parted.scm (parted): Use it instead of READLINE.
2014-04-03 23:55:51 +02:00
Ludovic Courtès ef0383eeca gnu: inkscape: Use libgc 7.2.
* gnu/packages/inkscape.scm (inkscape): Use LIBGC-7.2 instead of LIBGC.
2014-04-03 23:55:51 +02:00
Eric Bavier bb184d9884 gnu: python: Use /nix/.../sh in popen2 module
* gnu/packages/python.scm (python-2): patch Lib/popen2.py to use /nix/.../sh.
2014-04-03 15:52:23 -05:00
Andreas Enge 6e407e44a2 gnu: global: Upgrade to 6.2.12.
* gnu/packages/global.scm (global): Upgrade to 6.2.12.
2014-04-03 22:28:29 +02:00
Andreas Enge 31e7909b4f gnu: apl: Upgrade to 1.3.
* gnu/packages/apl.scm (apl): Upgrade to 1.3.
2014-04-03 22:23:18 +02:00
Andreas Enge 92b144d422 gnu: xorriso: Upgrade to 1.3.6.pl01.
* gnu/packages/cdrom.scm (xorriso): Upgrade to 1.3.6.pl01.
2014-04-03 22:02:25 +02:00
Andreas Enge adbd7bd64f gnu: gxmessage: Upgrade to 2.20.1.
* gnu/packages/gxmessage.scm (gxmessage): Upgrade to 2.20.1.
2014-04-03 21:35:13 +02:00
Andreas Enge 4f102a1d78 gnu: help2man: Upgrade to 1.45.1.
* gnu/packages/help2man.scm (help2man): Upgrade to 1.45.1.
2014-04-03 21:26:02 +02:00
Andreas Enge b93ab68a31 gnu: zile: Upgrade to 2.4.11.
* gnu/packages/zile.scm (zile): Upgrade to 2.4.11.
2014-04-03 21:09:13 +02:00
Andreas Enge 983815c8b9 gnu: units: Upgrade to 2.11.
* gnu/packages/maths.scm (units): Upgrade to 2.11.
2014-04-03 20:54:16 +02:00
Andreas Enge 1c0dbf9ef1 gnu: freeipmi: Upgrade to 1.4.1.
* gnu/packages/freeipmi.scm (freeipmi): Upgrade to 1.4.1.
2014-04-03 20:44:40 +02:00
Andreas Enge 29c45e950b gnu: parallel: Upgrade to 20140322.
* gnu/packages/parallel.scm (parallel): Upgrade to 20140322.
2014-04-03 20:37:24 +02:00
Andreas Enge 4a24c21434 gnu: xnee: Upgrade to 3.18.
* gnu/packages/xnee.scm (xnee): Upgrade to 3.18.
2014-04-03 20:22:03 +02:00
Andreas Enge 1f1c0aff26 gnu: glpk: Upgrade to 4.54.
* gnu/packages/maths.scm (glpk): Upgrade to 4.54.
2014-04-03 20:18:25 +02:00
Mark H Weaver 67880c8e2b gnu: texlive: Fix bug recently introduced in d4bf49b.
Fixes bug introduced in d4bf49b140.

* gnu/packages/texlive.scm (texlive): Change 'alist-replace' to
  'alist-cons-before'.
2014-04-03 01:40:33 -04:00
Ludovic Courtès a53a9aed93 tests: Add 'union-build' test for <http://bugs.gnu.org/17083>.
* tests/union.scm ("union-build with symlink to directory"): New test.
2014-04-02 23:08:44 +02:00
Mark H Weaver 1212999868 union: Rewrite to be faster; handle symlink/directory conflicts.
* guix/build/union.scm: Rewrite; only 'file=?' remains unchanged.  Remove
  'tree-union' and 'delete-duplicate-leaves' exports.  Merge inputs in a
  breadth-first fashion.  Follow symlinks for purposes of making decisions
  about the merge.

* tests/union.scm: Remove tests of 'tree-union' and 'delete-duplicate-leaves'.
2014-04-02 15:31:46 -04:00
Mark H Weaver 8ead71b4b0 gnu: sqlite: Fix sqlite on systems with page size larger than 32K.
Based on a patch by Dan Kennedy <danielk1977@gmail.com>.

* gnu/packages/patches/sqlite-large-page-size-fix.patch: New file.
* gnu/packages/sqlite.scm (sqlite): Add it.
* gnu-system.am (dist_patch_DATA): Add it.
2014-04-02 15:31:28 -04:00
Mark H Weaver d6a601816f gnu: sqlite: Upgrade to 3.8.4.2.
* gnu/packages/sqlite.scm (sqlite): Upgrade to 3.8.4.2.
2014-04-02 15:31:21 -04:00
Mark H Weaver 835281829a gnu: sqlite: Compute source URL from version number.
* gnu/packages/sqlite.scm (sqlite): Compute the numeric-version from the
  traditional version string, and use it to compute the source URL.
2014-04-02 15:31:12 -04:00
Mark H Weaver fb9c3acc6c gnu: mutt: Upgrade to 1.5.23.
* gnu/packages/mail.scm (mutt): Upgrade to 1.5.23.  Add bitbucket
  source URL and try it first.
2014-04-02 11:28:34 -04:00
Mark H Weaver 3b9af0f37b gnu: bazaar: Install man pages in share/man.
* gnu/packages/version-control.scm (bazaar): Add a phase that
  fixes setup.py to install man pages in share/man.
2014-04-02 11:28:26 -04:00
Mark H Weaver 56fab253e3 gnu: ocaml: Install man pages in share/man.
* gnu/packages/ocaml.scm (ocaml): Pass -mandir to configure.
2014-04-02 11:28:10 -04:00
Mark H Weaver 223ed921f2 gnu: pth: Install man pages in share/man.
* gnu/packages/pth.scm (pth): Add --mandir to configure flags.
2014-04-02 11:28:01 -04:00
Mark H Weaver 988cecfd4f gnu: expect: Install man pages in share/man.
* gnu/packages/tcl.scm (expect): Add --mandir configure flag.
  Use 'let' to simplify configure flags generation.
2014-04-02 11:27:52 -04:00
Mark H Weaver 7575778969 gnu: zip: Improve build process and install man pages in share/man.
* gnu/packages/zip.scm (zip): Eliminate custom configure phase which copied
  and patched the Makefile.  Instead add "-f" and "prefix" to make-flags, as
  well as "MANDIR".  Remove "generic_gcc" from the make-flags, so that it will
  not be passed during other phases involving 'make'.  Instead replace the
  'build' phase with one that specifies the "generic_gcc" target.
2014-04-02 11:27:38 -04:00
Mark H Weaver a2c03fb1af gnu: lua: Install man pages in share/man.
* gnu/packages/lua.scm (lua): Use 'system*' instead of 'system'.
  Add INSTALL_MAN argument to 'make'.
2014-04-02 11:27:21 -04:00
Mark H Weaver 0ad2f2e6e9 gnu: indent: Install docs in share/doc.
* gnu/packages/indent.scm (indent): Add a phase to fix the docdir
  setting in doc/Makefile.in.
2014-04-02 11:27:04 -04:00
Ludovic Courtès 27c68457d9 guix package: 'search-path-environment-variables' traverses module tree once.
* guix/scripts/package.scm (search-path-environment-variables)[manifest-entry->package]:
  Use 'find-best-packages-by-name' instead of 'find-packages-by-name'.
  On a profile with 140 packages, this reduces execution time of this
  procedure from 5.8 seconds to 2.9 seconds (50% improvement.)
2014-04-02 16:07:40 +02:00
Ludovic Courtès d2952326ae guix package: Register non-default profiles as GC roots.
* guix/scripts/package.scm (maybe-register-gc-root): New procedure.
* tests/guix-package.sh (profile): Grep the output of "guix gc
  --list-live" in a couple of places.
2014-04-02 16:07:40 +02:00
Mark H Weaver 0d55c3563c gnu: net-tools: Install man pages and locales in share, not usr/share.
* gnu/packages/linux.scm (net-tools): Add 'INSTALLNLSDIR' and 'mandir'
  variables to make flags.
2014-04-02 01:55:40 -04:00
Mark H Weaver c27d859707 gnu: libssh: Upgrade to 0.6.3.
* gnu/packages/ssh.scm (libssh): Upgrade to 0.6.3.
2014-04-02 01:54:55 -04:00
Mark H Weaver b036491119 gnu: pulseaudio: Increase timeouts for tests.
* gnu/packages/pulseaudio.scm: Set the 'CK_DEFAULT_TIMEOUT' environment
  variable to 120 in the 'pre-check' phase.  Suggested by Ludovic Courtès.
2014-04-02 01:54:35 -04:00
Mark H Weaver 02c108bd1d gnu: file: Upgrade to 5.18.
* gnu/packages/file.scm (file): Upgrade to 5.18.
2014-04-02 01:53:47 -04:00
Ludovic Courtès bf6fcf5477 gnu: guile-json: Install under .../site/2.0.
* gnu/packages/guile.scm (guile-json)[source]: Add 'snippet'.
2014-04-01 23:57:44 +02:00
Ludovic Courtès 39831f1663 pki: Keep ACL in native sexp format to speed up 'authorized-key?'.
* guix/pki.scm (acl-entry-sexp, acl-sexp): Remove.
  (public-keys->acl, current-acl): Return a native sexp.
  (acl->public-keys, authorized-key?): Expect ACL to be a native sexp.
* guix/scripts/archive.scm (authorize-key): Convert ACL to
  canonical-sexp when writing it.
2014-04-01 23:47:51 +02:00
Ludovic Courtès 57832f2ce7 substitute-binary: Avoid consing 'regexp-exec' arguments.
* guix/scripts/substitute-binary.scm (regexp-exec): Change formals
  to (rx str . rest).
2014-04-01 23:47:51 +02:00
Ludovic Courtès c6e9485924 substitute-binary: Avoid reloading the ACL repeatedly.
* guix/scripts/substitute-binary.scm (guix-substitute-binary) <--query>:
  Cache the result of (current-acl); pass it to 'valid-narinfo?' calls.
  This saves 12% wall-clock time for "guix build emacs -n".
2014-04-01 23:47:51 +02:00
Ludovic Courtès a7e59c50d2 gnu: Add Bogofilter.
* gnu/packages/mail.scm (bogofilter): New variable.
2014-04-01 23:47:51 +02:00
Cyril Roelandt 6050a1fb30 gnu: Add guile-json.
* gnu/packages/guile.scm (guile-json): New variable.
2014-04-01 00:48:25 +02:00
Ludovic Courtès e4687a5e68 Use 'signature-case' in (guix nar) and 'substitute-binary'.
* guix/nar.scm (restore-file-set)[assert-valid-signature]: Rewrite in
  terms of 'signature-case'.
* guix/scripts/substitute-binary.scm (narinfo-signature->canonical-sexp):
  Call 'leave' instead of 'raise' when SIGNATURE is invalid.
  (&nar-signature-error, &nar-invalid-hash-error): Remove.
  (assert-valid-signature): Add 'narinfo' parameter; remove 'port'.
  Rewrite in terms of 'signature-case' and 'leave'.  Mention NARINFO's
  URI in error messages.  Adjust caller.
  (narinfo-sha256): New procedure.
  (assert-valid-narinfo): Use it.
  (valid-narinfo?): Rewrite using 'narinfo-sha256' and
  'signature-case'.
* tests/substitute-binary.scm (assert-valid-signature,
  test-error-condition): Remove.
  ("corrupt signature data", "unauthorized public key", "invalid
  signature"): Remove.
2014-03-31 23:47:02 +02:00
Ludovic Courtès 81deef270d pki: Add 'signature-case' macro.
* guix/pki.scm (%signature-status): New procedure.
  (signature-case): New macro.
* tests/pki.scm (%secret-key, %alternate-secret-key): New variables.
  ("signature-case valid-signature", "signature-case invalid-signature",
  "signature-case hash-mismatch", "signature-case unauthorized-key",
  "signature-case corrupt-signature"): New tests.
2014-03-31 23:34:20 +02:00
Ludovic Courtès 8146fdb334 substitute-binary: Notify of valid signatures.
* guix/scripts/substitute-binary.scm (assert-valid-narinfo): Add
  #:verbose? parameter; when true, write "found valid signature".
  (valid-narinfo?): Pass #:verbose? #f.
2014-03-31 21:59:14 +02:00
Ludovic Courtès de28fefd77 guix archive: Make sure $sysconfdir/guix exists in '--authorize'.
* guix/scripts/archive.scm (authorize-key): Add 'mkdir-p' call.
  Reported by Alex Sassmannshausen <alex.sassmannshausen@gmail.com>.
2014-03-31 21:59:14 +02:00
Alex Sassmannshausen ef27aa9c8c doc: fix typo.
* doc/guix.texi (Substitutes): add a missing 's'.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-03-31 21:59:14 +02:00
Eric Bavier d4bf49b140 gnu: Remove unused lambda arguments and prefer separate phases over
augmented phases.

* gnu/packages/compression.scm (sharutils) [arguments]: Remove unused
  lambda args.
* gnu/packages/gl.scm (mesa) [arguments]: Same
* gnu/packages/fltk.scm [arguments]: Same.  Substitute const check
  phase with #:tests? #f.  Add pre-configure phase.
* gnu/packages/ghostscript.scm (ghostscript) [arguments]: Put makefile
  patches in separate phase.  Put so steps oinseparate phases.
* gnu/packages/glib.scm (gobject-introspection) [arguments]: Remove
  unused lambda args.  Put patches in pre-configure phase.
* gnu/packages/gnupg.scm (gnupg) [arguments]: Put patch in
  pre-configure phase.
  (pius) [arguments]: Delete const #t configure and build phases.
  (signing-party) [arguments]: Factor patches into post-unpack phase.
  (paperkey) [arguments]: Remove unused lambda args.  Factor out
  patches into pre-check phase.
* gnu/packages/icu4c.scm [arguments]: Change source dir after standard
  unpack phase.  Factor configure patches into pre-configure phase.
* gnu/packages/lsof.scm [arguments]: Remove unused lambda args.
  Remove unnecessary apply.
* gnu/packages/lvm.scm (lvm2) [arguments]: Factor out patches into
  pre-configure phase.
* gnu/packages/libtiff.scm [arguments]: Same
* gnu/packages/maths.scm (hdf5) [arguments]: Same
* gnu/packages/gtk.scm (gtk+-2) [arguments]: Same
* gnu/packages/mp3.scm (libmad) [arguments]: Same
  (id3lib) [arguments]: Same
* gnu/packages/python.scm (python-2) [arguments]: Same
* gnu/packages/texlive.scm (texlive) [arguments]: Same
* gnu/packages/pretty-print.scm (a2ps) [arguments]: Same
  (trueprint) [arguments]: Same
  (source-highlight) [arguments]: Same.  Remove unused lambda args.
* gnu/packages/netpbm.scm [arguments]: Remove unused lambda args.
  Factor out test patches into pre-check phase.  Condense calls to
  substitute*
* gnu/packages/openldap.scm [arguments]: Factor out libtool copy into
  post-configure phases. [synopsis] Remove package name.
* gnu/packages/ssh.scm (openssh) [arguments]: Factor out patches into
  separate phases.
* gnu/packages/tcsh.scm [arguments]: Factor out test patches into
  pre-check phase.
* gnu/packages/version-control.scm (git) [arguments]: Factor out
  patches into post-configure phase.
* gnu/packages/vim.scm [arguments]: Same. [synopsis] Remove package
  name.
* gnu/packages/vpn.scm (openconnect) [arguments]: Put configure flags
  in #:configure-flags
2014-03-31 10:34:17 -05:00
Ludovic Courtès 36b5851df6 offload: Exit with code 100 upon build failures.
* guix/scripts/offload.scm (transfer-and-offload): Exit with code 100
  upon build failure.
2014-03-31 10:57:28 +02:00
Ludovic Courtès c4202d60b2 doc: Document substitutes.
* doc/guix.texi (Invoking guix-daemon): Add cross-reference to
  "Substitutes".
  (Features): Remove footnote about unauthenticated substitutes.  Link
  to "Substitutes".
  (Substitutes): New node.
  (Invoking guix build): Link to "Substitutes".
  (Packaging Guidelines): Likewise.
2014-03-30 23:37:46 +02:00
Ludovic Courtès bf59c06d36 Add hydra.gnu.org's narinfo signing public key.
* hydra.gnu.org.pub: New file.
* Makefile.am (pkgdata_DATA): New variable.
2014-03-30 23:36:00 +02:00
Ludovic Courtès f84f859093 tests: Test the error output of 'substitute-binary'.
* tests/substitute-binary.scm (test-error*): Rename to...
  (test-quit): ... this.  Add 'error-rx' parameter and honor it.
  ("not a number", "wrong version number", "substitute, no signature",
  "substitute, invalid hash", "substitute, unauthorized key"): Adjust
  accordingly.
2014-03-30 22:32:16 +02:00
Ludovic Courtès e903b7c1a8 tests: Add more signed substitute tests.
* tests/substitute-binary.scm (%narinfo): Set 'URL', 'Compression', and
  'NarHash'.
  (call-with-narinfo): Create 'example.out' and 'example.nar'.
  ("query narinfo without signature", "substitute, no signature",
  "substitute, authorized key"): New tests.
2014-03-30 22:32:16 +02:00
Ludovic Courtès 52f80dfc8a tests: Simplify 'substitute-binary' tests; reduce use of global variables.
* tests/substitute-binary.scm (signature-body): Change 'str' parameter
  to 'bv', and expect it to be a bytevector.
  (%signature-body, %wrong-signature, %acl): Remove.
  (signature): Rename to...
  (signature-field): ... this.  Add 'bv-or-str' parameter.  Change 'str'
  parameter to #:version.  Add #:public-key parameter.  Call
  'signature-body' directly.  Change domain part of the signature to
  'example.gnu.org'.
  ("not a number", "wrong version number", "valid
  narinfo-signature->canonical-sexp"): Use 'signature-field' instead of
  'signature' or %SIGNATURE.
  (test-error-condition): Add 'message-rx' parameter and honor it.
  ("corrupt signature data", "unauthorized public key", "invalid
  signature"): Adjust accordingly.
  (narinfo, %signed-narinfo): Remove.
  ("query narinfo with invalid hash"): Use '%narinfo' and
  'signature-field' instead of 'narinfo' and '%signature'.
  ("query narinfo signed with authorized key", "query narinfo signed
  with unauthorized key", "substitute, invalid hash", "substitute,
  unauthorized key"): Likewise.
2014-03-30 22:32:16 +02:00
Ludovic Courtès 491e6de7d6 tests: Make sure the daemon reports substitute hash mismatches.
* tests/store.scm ("substitute, corrupt output hash"): New test.
2014-03-30 22:32:16 +02:00
Ludovic Courtès cdea30e061 substitute-binary: Defer narinfo authentication and authorization checks.
* guix/scripts/substitute-binary.scm (narinfo-signature->canonical-sexp):
  Catch 'gcry-error' around 'string->canonical-sexp' call, and re-raise
  as a SRFI-35 &message and &nar-signature-error.
  (narinfo-maker): Handle when SIGNATURE is #f or an invalid canonical
  sexp.
  (&nar-signature-error, &nar-invalid-hash-error): New variables.
  (assert-valid-signature): Use them.  Expect 'signature' to be a
  canonical sexp.
  (read-narinfo): Remove authentication and authorization checks.
  (%signature-line-rx): New variable.
  (assert-valid-narinfo, valid-narinfo?): New procedures.
  (guix-substitute-binary): Wrap body in 'with-error-handling'.
  [valid?]: New procedure.
  <--query>: Show only store items of narinfos that match
  'valid-narinfo?'.
  <--substitute>: Call 'assert-valid-narinfo'.
* tests/substitute-binary.scm (test-error*): Use 'test-equal'.
  (%keypair): Remove.
  (%public-key, %private-key): Load from signing-key.{pub,sec}.
  (signature-body): Add #:public-key parameter.
  (call-with-narinfo): New procedure.
  (with-narinfo): New macro.
  ("corrupt signature data", "unauthorized public key", "invalid
  signature"): Make the first argument to 'assert-valid-signature' a
  canonical sexp.
  ("invalid hash", "valid read-narinfo", "valid write-narinfo"):
  Remove.
  ("query narinfo with invalid hash", "query narinfo signed with
  authorized key", "query narinfo signed with unauthorized key",
  "substitute, invalid hash", "substitute, unauthorized key"): New
  tests.
2014-03-30 22:32:11 +02:00
Ludovic Courtès 00230df107 substitute-binary: Store the cache's URI in the local cached narinfo.
* guix/scripts/substitute-binary.scm (<narinfo>)[uri-base]: New field.
  (narinfo-maker): Pass CACHE-URL as the 'uri-base' value.
  (string->narinfo): Add 'cache-uri' parameter.
  (lookup-narinfo)[cache-entry]: Switch to version 1.  Add 'cache-uri'
  field.  Adjust body accordingly.
  (remove-expired-cached-narinfos): Switch to version 1 by default.
2014-03-30 12:02:10 +02:00
Nikita Karetnikov e9c6c58418 substitute-binary: Support the Signature field of a narinfo file.
* guix/scripts/substitute-binary.scm (<narinfo>): Add the 'signature'
  and 'contents' fields.
  (narinfo-signature->canonical-sexp): New function.
  (narinfo-maker): Add the 'signature' argument and use it.
  (assert-valid-signature): New function.
  (read-narinfo): Support the Signature field.
  (write-narinfo): Use 'narinfo-contents'.
  (%allow-unauthenticated-substitutes?): New variable.
* guix/base64.scm, tests/base64.scm, tests/substitute-binary.scm: New files.
* Makefile.am (SCM_TESTS): Add tests/base64.scm and
  tests/substitute-binary.scm.
  (MODULES): Add guix/base64.scm.
* test-env.in: Set 'GUIX_ALLOW_UNAUTHENTICATED_SUBSTITUTES'.
2014-03-30 12:02:10 +02:00
Nikita Karetnikov 24194b6b54 nar: Clarify that 'assert-valid-signature' accepts a string.
* guix/nar.scm (assert-valid-signature): Improve the wording.
2014-03-30 12:02:10 +02:00
Ludovic Courtès 3f5497ee10 gnu: ed: Upgrade to 1.10.
* gnu/packages/ed.scm (ed): Upgrade to 1.10.  Use '.tar.lz' file, and
  add 'native-inputs' field.
2014-03-29 23:15:27 +01:00
Ludovic Courtès 18fae7b939 gnu: ocrad: Upgrade to 0.23.
* gnu/packages/ocrad.scm (ocrad): Upgrade to 0.23.
2014-03-29 23:14:37 +01:00
Ludovic Courtès e4629ef43b tests: Make sure 'guix archive --import' succeeds.
* tests/guix-archive.sh: Check the exit value of 'guix archive
  --import'.
2014-03-29 22:59:46 +01:00
Ludovic Courtès c9e2b0b16e daemon: Add tests for substitutes and --no-substitutes.
* tests/guix-daemon.sh: Add substituter tests.
2014-03-27 23:56:47 +01:00
Ludovic Courtès 968e84a6cf daemon: Clear $NIX_SUBSTITUTERS when passed '--no-substitutes'.
* nix/nix-daemon/guix-daemon.cc (main): When --no-substitutes is used,
  clear NIX_SUBSTITUTERS.  Before that, and after
  89faa5c75c, '--no-substitutes' would
  lead to attempts to use 'download-using-manifests.pl', which in
  practice would gracelessly fail.
2014-03-27 23:56:47 +01:00
Ludovic Courtès ad0ab74eef daemon: Change some options via 'settings.set'.
* nix/nix-daemon/guix-daemon.cc (parse_opt): Use 'settings.set' instead
  of direct field access for 'buildCores', 'maxBuildJobs', and
  'useSubstitutes'.
  (main): Call 'settings.update' after 'argp_parse'.
2014-03-27 23:56:47 +01:00
Mark H Weaver 15f682f4a3 gnu: tcl: Install man pages in share/man.
* gnu/packages/tcl.scm (tcl): Add --mandir configure flag.
2014-03-26 21:33:36 -04:00
Sree Harsha Totakura b3acf3656e Add (guix svn-download).
* guix/svn-download.scm, guix/build/svn.scm: New files.
* Makefile.am (MODULES): Add them.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-03-27 00:21:44 +01:00
Andreas Enge 8bae41a4ce gnu: gnu-pw-mgr: Fix download location.
* gnu/packages/gnu-pw-mgr.scm (gnu-pw-mgr): Fix download location.
2014-03-26 21:35:54 +01:00
Eric Bavier 5da64c7d5d gnu: Add mc
* gnu/packages/mc.scm: New file
* gnu/packages/patches/mc-fix-ncurses-build.patch: New patch
* gnu-system.am (GNU_SYSTEM_MODULES): Add mc.scm.
(dist_patch_DATA): Add patch
2014-03-26 10:50:01 -05:00
Eric Bavier e9c14f37a8 gnu: libssh2: Fix use with libssh2.pc
* gnu/packages/ssh.scm (libssh2): Pass --with-libgcrypt configure flag and
  propagate inputs.
2014-03-26 10:50:00 -05:00
Ludovic Courtès 4979ee04f0 Merge branch 'core-updates' 2014-03-26 16:31:57 +01:00
Ludovic Courtès 07fb21b231 offload: Remove erroneous 'close-pipe' call.
* guix/scripts/offload.scm (send-files): Remove 'close-pipe' call from
  'guard' handler ('pipe' here referred to Guile's 'pipe' procedure.)
2014-03-26 16:27:46 +01:00
Ludovic Courtès 6c41cce0be offload: Wait for the processes involved in 'guix archive --missing'.
* guix/scripts/offload.scm (send-files): Keep the second return value of
  'filtered-port'.  Call 'waitpid' on it.
2014-03-26 16:27:46 +01:00
Andreas Enge c67ccedd9e gnu: gp2c: Upgrade to 0.0.8pl1.
* gnu/packages/algebra.scm (gp2c): Upgrade to 0.0.8pl1, add native input perl.
2014-03-26 15:50:25 +01:00
Ludovic Courtès 236e66481d offload: Allow one transfer in each direction simultaneously.
* guix/scripts/offload.scm (transfer-and-offload): Use 'upload' lock
  instead of 'bandwidth' around 'send-files' calls, and 'download' lock
  around 'retrieve-files' call.
2014-03-26 15:06:52 +01:00
Ludovic Courtès 3dfd8af534 offload: Disable SSH-level compression.
* guix/scripts/offload.scm (remote-pipe): Remove '-z' lsh command line
  argument.  This makes transfers almost an order of magnitude slower.
  OpenSSH's ssh(1) man page notes: "Compression is desirable on modem lines
  and other slow connections, but will only slow down things on fast
  networks."  See also
  <http://www.spikelab.org/blog/transfer-largedata-scp-tarssh-tarnc-compared.html>.
2014-03-26 15:06:52 +01:00
Andreas Enge ee172b1a06 gnu: pari-gp: Upgrade to 2.7.0.
* gnu/packages/algebra.scm (pari-gp): Upgrade to 2.7.0.
2014-03-26 13:48:49 +01:00
Eric Bavier 7216a04158 gnu: gnu-pw-mgr: Upgrade to 1.2
* gnu/packages/gnu-pw-mgr.scm: Upgrade to 1.2
2014-03-25 17:09:48 -05:00
Ludovic Courtès eafee15b3c check-available-binaries: Make sure substitutes are enabled.
* build-aux/check-available-binaries.scm: Add call to
  'set-build-options'.
2014-03-25 20:45:13 +01:00
Ludovic Courtès 1971737f2b hydra: Hard-code target systems.
* build-aux/hydra/gnu-system.scm (hydra-jobs)[systems]: Define locally,
  independently of ARGUMENTS.  This matches the new Hydra convention,
  where using a 'system' input is deprecated.
2014-03-25 18:57:07 +01:00
Ludovic Courtès afde8da3f2 gnu: guile-ssh: Upgrade to 0.6.0.
* gnu/packages/ssh.scm (guile-ssh): Upgrade to 0.6.0.
  [arguments]: Remove #:tests? #f; add #:parallel-build? #f.
2014-03-25 18:54:53 +01:00
Ludovic Courtès b8c291fc88 gnu: recutils: Upgrade to 1.7.
* gnu/packages/recutils.scm (recutils): Upgrade to 1.7.
  Add 'arguments' field.
2014-03-25 18:54:53 +01:00
Ludovic Courtès 212ece42b0 download: Don't use 'http-get*' on Guile 2.0.10+.
* guix/build/download.scm (http-fetch)[post-2.0.7?]: Use
  'string->number' and numeric comparison.  This fixes version
  comparison with "2.0.10" and subsequent 2.0 releases.
2014-03-25 18:54:52 +01:00
Eric Bavier 505b1aa88f gnu: Add cursynth
* gnu/packages/cursynth.scm: New file
* gnu-system.am (GNU_SYSTEM_MODULES): Add it
2014-03-25 11:41:01 -05:00
Cyril Roelandt 9214f9bc0a gnu: remove python-fix-dbm.patch
* gnu/packages/patches/python-fix-dbm.patch: remove file. It is not needed
  anymore, and is probably a left-over of a failed merge.
* gnu-system.am: remove gnu/packages/patches/python-fix-dbm.patch
2014-03-25 14:41:32 +01:00
Cyril Roelandt 9a9a3adf66 gnu: Enable tests in Python 3.
* gnu/packages/python.scm: enable tests for Python 3
* gnu/packages/python-fix-tests.patch: New file.
* gnu/packages/gnu-system.am (dist_patch_DATA): add it.
2014-03-25 14:41:32 +01:00
Cyril Roelandt 70318b4672 gnu: Python: use /nix/.../sh instead of /bin/sh in the subprocess module
* gnu/packages/python.scm (python-2): patch Lib/subprocess.py to use
  /nix/.../sh.
2014-03-25 14:41:32 +01:00
Cyril Roelandt b10ab7230f gnu: Enable the 'ctypes' module in Python.
* gnu/packages/python.scm (python-2): add libffi to the inputs and use it to
  build the ctypes module.
2014-03-25 14:41:32 +01:00
Ludovic Courtès d452b595f9 hydra: Fix typo in core package list.
* build-aux/hydra/gnu-system.scm: Use (gnu packages gcc).
  (%core-packages): Remove nonexistent 'gcc'; add GCC-4.8 and GCC-4.7.
2014-03-25 13:57:51 +01:00
Ludovic Courtès e795890212 hydra: Remove cross-builds from i686-linux to mips64el-linux-gnuabi64.
* build-aux/hydra/gnu-system.scm (hydra-jobs)[cross-jobs]: Define
  'from-32-to-64?'.  Filter out %CROSS-TARGETS that match.
2014-03-25 13:55:56 +01:00
Ludovic Courtès 707c8b2ca7 hydra: Build GCC and glibc, not their '-final' variant.
* build-aux/hydra/gnu-system.scm (%core-packages): Replace GCC-FINAL and
  GLIBC-FINAL with GCC and GLIBC.
2014-03-25 13:40:27 +01:00
Manolis Ragkousis c6e9628078 gnu: autotools: Add Autoconf 2.68; turn 'autoconf-wrapper' into a procedure.
* gnu/packages/autotools.scm (autoconf-2.68): New variable.
  (autoconf-wrapper): Turn into a procedure.  Turn comment into a
  docstring.
  (automake): Adjust accordingly.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2014-03-24 23:57:38 +01:00
Ludovic Courtès 8b7af63754 offload: Compress files being sent/retrieved.
* guix/scripts/offload.scm (send-files): Add "xz -dc |" to the remote
  pipe command.  Pass PIPE through 'call-with-compressed-output-port'.
  Remove 'close-pipe' call.
  (retrieve-files): Add "| xz -c" to the remote pipe command.  Pass PIPE
  through 'call-with-decompressed-port'.  Remove 'close-pipe' call.
2014-03-24 22:20:54 +01:00
Ludovic Courtès 01ac19dca4 utils: Add 'call-with-decompressed-port' and 'call-with-compressed-output-port'.
* guix/utils.scm (call-with-decompressed-port,
  call-with-compressed-output-port): New procedures.
* tests/utils.scm ("compressed-output-port + decompressed-port"):
  Rewrite to use them.
2014-03-24 22:15:29 +01:00
Ludovic Courtès 80dea563a3 utils: Add 'filtered-output-port' and 'compressed-output-port'.
* guix/utils.scm (filtered-output-port, compressed-output-port): New
  procedures.
* tests/utils.scm ("compressed-output-port + decompressed-port"): New
  test.
2014-03-24 21:09:15 +01:00
Ludovic Courtès 2ed6aa9e39 gnu: glibc: Patch mtrace.pl to avoid retaining a reference to Perl.
* gnu/packages/base.scm (glibc)[argument] <pre-configure phase>: Patch
  malloc/mtrace.pl.
2014-03-24 01:10:17 +01:00
Mark H Weaver 6ef91c8fc0 gnu: tor: Upgrade to 0.2.4.21.
* gnu/packages/tor.scm (tor): Upgrade to 0.2.4.21.
2014-03-23 04:36:03 -04:00
Ludovic Courtès 1950bf56d0 tests: Make sure substitutes are usable when we need them.
* tests/derivations.scm ("derivation-prerequisites-to-build and
  substitutes"): Add call to 'set-build-options'.
2014-03-22 22:57:10 +01:00
Ludovic Courtès 9b0a2233db authenticate: Support reading the hash or key from stdin.
* guix/scripts/authenticate.scm (guix-authenticate): Add clauses
  for ("rsautl" "-sign" "-inkey" key) and ("rsautl" "-verify" "-inkey" _
  "-pubin").
* tests/guix-authenticate.sh (hash): Add test using -sign and -verify in
  a pipeline.
2014-03-22 22:57:10 +01:00
Ludovic Courtès 9dbe6e43ea authenticate: Move actual work to separate procedures.
* guix/scripts/authenticate.scm (read-canonical-sexp): Change to expect
  a port instead of a file name.
  (read-hash-data): Likewise.
  (sign-with-key, validate-signature): New procedures.
  (guix-authenticate): Rewrite in terms of these two procedures.
2014-03-22 22:57:10 +01:00
Ludovic Courtès ed1aff038a Update 'nix-upstream' sub-module.
* nix-upstream: Update.
2014-03-22 22:57:10 +01:00
Ludovic Courtès 7a8024a33a utils: Add 'decompressed-port' and 'compressed-port'.
* guix/utils.scm (decompressed-port, compressed-port): New procedures.
* guix/scripts/substitute-binary.scm (decompressed-port): Remove.
  (guix-substitute-binary): Pass a symbol or #f as the first argument to
  'decompress-port'.
* tests/utils.scm ("compressed-port, decompressed-port, non-file"): New
  test.
2014-03-22 22:57:09 +01:00
Ludovic Courtès 443eb4e950 utils: 'filtered-port' doesn't leave dangling processes behind.
* guix/utils.scm (filtered-port): Make sure the 'execl' child process
  always exits, and does (primitive-_exit 1) upon execution failure.
  Use 'primitive-_exit' in the 'dump-port' child process.
* tests/utils.scm ("filtered-port, does not exist"): New test.
2014-03-22 22:57:09 +01:00
Yakkala Yagnesh Raghava ca534666aa licenses: Fix Nixpkgs license URL.
* guix/licenses.scm: Fix Nixpkgs URL in comment.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-03-22 22:57:09 +01:00
Eric Bavier 7569c5cb35 gnu: Provide single-precision fftw library for pulseaudio
* gnu/packages/algebra.scm (fftwf): New variable
* gnu/packages/pulseaudio.scm (pulseaudio): Use it
2014-03-22 13:03:15 -05:00
Mark H Weaver 1eefbb2693 Merge branch 'master' into core-updates 2014-03-22 11:19:19 -04:00
Mark H Weaver b1a01474ac gnu: guile: Upgrade to 2.0.11.
* gnu/packages/guile.scm (guile): Upgrade to 2.0.11.
2014-03-22 11:14:29 -04:00
Mark H Weaver 6212b8e5d3 gnu: cmake: Install man pages and docs in share/{man,doc}.
* gnu/packages/cmake.scm (cmake): Pass --mandir and --docdir to configure.
  Rewrite the code that selects the first two components of the version.
2014-03-22 10:34:21 -04:00
Mark H Weaver c9a010db8a gnu: flac: Install man pages in share/man.
* gnu/packages/xiph.scm (flac): Add --mandir configure flag.
2014-03-22 10:34:14 -04:00
Eric Bavier f0cfe3c4d5 gnu: libvorbis: disable parallel tests
* gnu/packages/xiph.scm (libvorbis): disable parallel tests
2014-03-21 15:12:47 -05:00
Mark H Weaver 9a03b893cc gnu: openssh: Upgrade to 6.6p1.
* gnu/packages/ssh.scm (openssh): Upgrade to 6.6p1.
2014-03-21 12:16:35 -04:00
Ludovic Courtès 89faa5c75c daemon: Really override the substituters setting.
Reported by Andreas Enge <andreas@enge.fr>:
<https://lists.gnu.org/archive/html/guix-devel/2014-03/msg00211.html>.

* nix/nix-daemon/guix-daemon.cc (main): Set the 'NIX_SUBSTITUTERS'
  env. var.  Leave 'settings.substituters' unchanged.
2014-03-20 23:06:48 +01:00
Ludovic Courtès 1fda6840a8 pk-crypto: Don't use Ed25519 when libgcrypt is older than 1.6.0.
* guix/pk-crypto.scm (gcrypt-version): New procedure.
* guix/scripts/archive.scm (%key-generation-parameters): New variable.
  (%options) <generate-key>: Use it.
* tests/pk-crypto.scm ("sign + verify, Ed25519"): Skip if using gcrypt < 1.6.0.
2014-03-20 23:06:47 +01:00
Mark H Weaver 2f66e64c53 gnu: tzdata: Upgrade to 2014a. 2014-03-20 16:31:02 -04:00
Mark H Weaver 5f32ba88c4 gnu: lynx: Upgrade to 2.8.8rel.2.
* gnu/packages/lynx.scm (lynx): Upgrade to 2.8.8rel.2.
2014-03-20 16:21:33 -04:00
Mark H Weaver 12fa800d7e gnu: util-macros: Install .pc file in lib/pkgconfig; remove INSTALL file.
* gnu/packages/xorg.scm (util-macros): Substitute "$(libdir)/pkgconfig"
  for "$(datadir)/pkgconfig" in Makefile.in.  After install, remove
  share/util-macros/INSTALL and share/util-macros.
2014-03-20 05:08:23 -04:00
Mark H Weaver e2ca23c584 gnu: bc: Install docs in share/man and share/info.
* gnu/packages/algebra.scm (bc): Pass --mandir and --infodir to configure.
2014-03-20 05:07:42 -04:00
Mark H Weaver 809e9b52bb gnu: unzip: Install man pages in share/man.
* gnu/packages/zip.scm (unzip): Substitute /share/man/ for /man/ in Makefile.
2014-03-20 05:07:35 -04:00
Mark H Weaver f6b272fa18 gnu: screen: Install docs in share/man and share/info.
* gnu/packages/screen.scm (screen): Add --mandir and --infodir
  configure flags.
2014-03-20 05:07:26 -04:00
Mark H Weaver 0e4e89c28c gnu: netcat: Install docs in share/man and share/info.
* gnu/packages/admin.scm (netcat): Add --mandir and --infodir
  configure flags.
2014-03-20 05:07:18 -04:00
Ludovic Courtès f6d47eb6d5 gnu: readline: Fix cross-compilation.
* gnu/packages/readline.scm (readline)[arguments]: Add
  "bash_cv_wcwidth_broken=no" to #:configure-flags
  when (%current-target-system) is true.
2014-03-19 23:21:34 +01:00
Ludovic Courtès d81195bffd offload: Send build logs to file descriptor 4.
* guix/scripts/offload.scm (with-error-to-port): New macro.
  (remote-pipe): Add #:error-port parameter.  Use 'with-error-to-port'
  around 'open-pipe*' call.
  (build-log-port): New procedure.
  (offload): Change #:log-port to default to (build-log-port).  Call
  'remote-pipe' with #:error-port LOG-PORT.
2014-03-19 23:12:06 +01:00
Ludovic Courtès 19ee8c7dc5 substitute-binary: Quietly handle 404s when fetching narinfos.
* guix/scripts/substitute-binary.scm (fetch): Add #:quiet-404?
  parameter.  Upon &http-get-error, re-raise C if the QUIET-404? is
  true and the code is 404.
  (fetch-narinfo): Pass #:quiet-404? #t.
2014-03-19 22:26:08 +01:00
Ludovic Courtès 4a06f0ef2b gnu: xterm: Upgrade to 303.
* gnu/packages/xorg.scm (xterm): Upgrade to 303.
2014-03-19 22:22:36 +01:00
Ludovic Courtès 32a1eb8025 pk-crypto: Use RFC6979 when signing with an ECC or DSA key.
* guix/pk-crypto.scm (bytevector->hash-data): Add #:key-type parameter.
  Use the 'pkcs1' flag when KEY-TYPE is 'rsa', and 'rfc6979' when
  KEY-TYPE is 'ecc' or 'dsa'.
  (key-type): New procedure.
* guix/scripts/authenticate.scm (read-hash-data): Add 'key-type'
  parameter.  Pass it to 'bytevector->hash-data'.  Adjust caller
  accordingly.
* tests/pk-crypto.scm (%ecc-key-pair): New variable.
  ("key-type"): New test.
  ("sign + verify"): Pass #:key-type to 'bytevector->hash-data'.
  ("sign + verify, Ed25519"): New test.
2014-03-19 21:40:10 +01:00
Ludovic Courtès 0f4139e97e gnu: imagemagick: Upgrade to 6.8.8-8.
* gnu/packages/imagemagick.scm (imagemagick): Upgrade to 6.8.8-8.
2014-03-19 19:12:04 +01:00
Mark H Weaver afd1cff148 gnu: bzip2: Install man pages to share/man/man1, not share/man1.
* gnu/packages/compression.scm (bzip2)[fix-man-dir]: Rename "man"
  to "share/man", not "share".
2014-03-19 12:06:55 -04:00
Mark H Weaver b1d5f5da84 gnu: ncurses: Install man pages in share/man/man*, not man/man*.
* gnu/packages/ncurses.scm (ncurses): Add --mandir configure flag.
2014-03-19 12:05:49 -04:00
Ludovic Courtès d7a9ed37c3 gnu: Add Window Maker.
* gnu/packages/gnustep.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-03-19 00:18:04 +01:00
Ludovic Courtès e297d8fc56 tests: Test recovery from 'valid-path?' RPCs with an invalid parameter.
* tests/store.scm ("valid-path? live", "valid-path? false", "valid-path?
  error", "valid-path? recovery"): New tests.
2014-03-19 00:00:29 +01:00
Ludovic Courtès dc19a986d4 Update 'nix-upstream' sub-module.
* nix-upstream: Update.
2014-03-18 23:44:22 +01:00
Ludovic Courtès 7305f2f1e5 gnu: libxft: Propagate Freetype and Fontconfig.
* gnu/packages/xorg.scm (libxft): Move Freetype and Fontconfig from
  'inputs' to 'propagated-inputs'.
2014-03-18 18:13:15 +01:00
Ludovic Courtès 39b71fc89b gnu: guile: Upgrade to 2.0.10.
* gnu/packages/guile.scm (guile-2.0): Upgrade to 2.0.10.
2014-03-18 15:17:50 +01:00
Ludovic Courtès bda1bc6c51 gnu: Make libgc 7.4 the default.
* gnu/packages/bdw-gc.scm (libgc): Rename to...
  (libgc-7.2): ... this.
  (libgc-7.4): Rename to...
  (libgc): ... this.
* gnu/packages/guile.scm (guile-2.0): Switch to LIBGC.
  (guile-2.0/fixed): Alias GUILE-2.0.
2014-03-18 15:14:02 +01:00
Ludovic Courtès 1cbfce1669 guix archive: Generate curve Ed25519 keys by default.
* guix/scripts/archive.scm (%options) <generate-key>: Default to curve
  Ed25519.  Suggested by Christian Grothoff <grothoff@in.tum.de>.
2014-03-17 23:49:35 +01:00
Ludovic Courtès d0a850698a guix archive: Improve '--generate-key' error reporting.
* guix/scripts/archive.scm (%options) <generate-key>: Report the error
  source and string when 'string->canonical-sexp' fails.
2014-03-17 23:47:18 +01:00
Ludovic Courtès aa2480e50d build: Fix test failures due to the nix -> guix directory name change.
Reported by Nikita Karetnikov <nikita@karetnikov.org>
and Pierre-Antoine Rault <par@rigelk.eu>.

* test-env.in: Change 'NIX_LOG_DIR' in accordance with f5768af.
* tests/guix-register.sh: Likewise for 'NIX_LOG_DIR' and 'NIX_DB_DIR'.
2014-03-17 23:30:42 +01:00
Raimon Grau 32beec1cd9 gnu: luajit: Update to 2.0.3.
* gnu/packages/lua.scm (luajit): Update to 2.0.3.
2014-03-17 19:04:33 +01:00
Ludovic Courtès 0562dbe5d3 Merge branch 'master' into core-updates 2014-03-17 18:26:46 +01:00
Ludovic Courtès 9b43a0ffa3 gnu: python: Change URL to https.
* gnu/packages/python.scm (python-2, python)[source]: Change URL to
  https.  This makes sure GnuTLS is available in the derivation that
  downloads the source, which is required since http URLs get redirected
  to https anyway.  Reported by Manolis Ragkousis <manolis837@gmail.com>.
2014-03-17 18:24:13 +01:00
Ludovic Courtès 7c516af641 gnu: pulseaudio: Upgrade to 5.0.
* gnu/packages/pulseaudio.scm (pulseaudio): Upgrade to 5.0.
  Remove patches.
* gnu/packages/patches/pulseaudio-test-timeouts.patch,
  gnu/packages/patches/pulseaudio-volume-test.patch: Remove.
* gnu-system.am (dist_patch_DATA): Adjust accordingly.
2014-03-17 18:13:06 +01:00
Ludovic Courtès b148bd714e gnu: fuse: Refer to the right 'mount' and 'umount' commands.
* gnu/packages/linux.scm (fuse)[inputs]: Change to...
  [native-inputs]: ... this.
  [arguments]: Add #:phases argument.
2014-03-16 23:18:36 +01:00
Ludovic Courtès 11e7a6cf46 store: Add 'hash-part->path'.
* guix/store.scm (hash-part->path): New procedure.
* tests/store.scm ("hash-part->path"): New test.
2014-03-14 17:16:10 +01:00
Ludovic Courtès 1a8ea0a188 offload: Fix 'choose-build-machine' for several machines.
* guix/scripts/offload.scm (choose-build-machine)[undecorate]: Turn into
  a two-argument procedure.
2014-03-13 22:57:21 +01:00
Ludovic Courtès 3c0e6e6080 offload: Convert the port number to a string when invoking lsh.
* guix/scripts/offload.scm (remote-pipe, send-files): Pass the result of
  'build-machine-port' to 'number->string'.
2014-03-13 22:46:32 +01:00
Ludovic Courtès cecd72d55a offload: Allow build machines to specify a port number.
* guix/scripts/offload.scm (<build-machine>): Add 'port' field.
  (remote-pipe, send-files): Use lsh's '-p' option when invoking it.
2014-03-13 21:58:04 +01:00
Ludovic Courtès 257b93412a guix build: Support '--with-source' along with '-e'.
* guix/scripts/build.scm (derivation-from-expression): Remove.
  (options->derivations): Handle pairs of the form
  "('argument . (? derivation?))".
  (options/resolve-packages): Add 'store' parameter; update caller.  Add
  'system' variable.  Add case for 'expression pairs.
* guix/scripts/archive.scm (derivation-from-expression): New procedure.
2014-03-13 19:21:49 +01:00
Ludovic Courtès 9037ea2c12 gnu: guile-xcb: Upgrade to 1.3.
* gnu/packages/guile-wm.scm (guile-xcb): Upgrade to 1.3.
  [arguments] Pass --with-guile-site-dir= instead of --datadir=,
  and pass --with-guile-site-ccache-dir=.  Remove #:phases.
2014-03-13 00:04:07 +01:00
Ludovic Courtès 68276f164f gnu: linux-libre: Build the FUSE module.
* gnu/packages/linux.scm (linux-libre): Set CONFIG_FUSE_FS=m.
2014-03-12 22:55:48 +01:00
Ludovic Courtès ed7485886e gnu: unionfs-fuse: Add statically-linked variant.
* gnu/packages/linux.scm (unionfs-fuse/static): New variable.
2014-03-12 15:11:30 +01:00
Ludovic Courtès 7f3673f21d guix build: Add '--with-source'.
* guix/scripts/build.scm (package-with-source): New procedure.
  (show-help): Add '--with-source'.
  (%options): Likewise.
  (options->derivations): Call 'options/with-source' and
  'options/resolve-packages'.
  (options/resolve-packages, options/with-source): New procedures.
* doc/guix.texi (Invoking guix build): Document '--with-source'.
2014-03-12 00:22:41 +01:00
Ludovic Courtès d91a879121 download: 'download-to-store' accepts plain file names.
* guix/download.scm (download-to-store): When URI is #f, assume that URL
  is a file name, and handle it.
2014-03-11 22:09:42 +01:00
Mark H Weaver bfb6b1c7b7 gnu: libgc: Upgrade to 7.2e.
* gnu/packages/bdw-gc.scm (libgc): Upgrade to 7.2e.
2014-03-10 23:47:40 -04:00
Ludovic Courtès 6f58d58243 More /gnu/store replacements.
* gnu/packages/gcc.scm (gcc-4.7): Change /nix/store in comment.
* gnu/system/vm.scm (operating-system-default-contents):
  Use (%store-prefix) instead of "/nix/store".
* guix/derivations.scm (derivation-path->output-path,
  derivation-path->output-paths): Change to /gnu/store in docstring.
2014-03-10 23:58:40 +01:00
Ludovic Courtès 8be3b8a39b Change default store values from /nix/store to /gnu/store.
* gnu/packages/ld-wrapper.scm (%store-directory): Change the default to
  /gnu/store.
* guix/build/utils.scm (%store-directory): New procedure.
  (remove-store-references): Use it for the default value of 'store'.
* guix/packages.scm (patch-and-repack)[builder]: Change default store to
  /gnu/store.
2014-03-10 23:54:27 +01:00
Ludovic Courtès e06f7865e2 Merge branch 'master' into core-updates 2014-03-10 23:54:17 +01:00
Ludovic Courtès c9c88118a1 gnu: linux-initrd: Make the pseudo-tty device nodes.
* guix/build/linux-initrd.scm (make-essential-device-nodes): Create
  /dev/ptmx and /dev/pts.
* gnu/system/vm.scm (qemu-image): Umount /fs/dev/pts before /fs.
2014-03-10 23:43:31 +01:00
Ludovic Courtès 58cbbe4b55 tests: 'topologically-sorted' test handles different references orders.
* tests/store.scm ("topologically-sorted, more difficult"): Arrange to
  handle a different ordering of (references %store y).
2014-03-10 23:43:31 +01:00
Ludovic Courtès 220193ad03 gnu: Add UnionFS-FUSE.
* gnu/packages/linux.scm (unionfs-fuse): New variable.
2014-03-10 23:43:31 +01:00
Pierre-Antoine Rault 5ff3c4b820 doc: Update packaging guidelines.
* HACKING (Submitting Patches): Mention 'git send-mail'.
* doc/guix.texi (Packaging Guidelines): More details on how to prepare a
  package module.
  (Contributing): Add reference to #guix channel on Freenode.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2014-03-10 23:43:31 +01:00
Eric Bavier 8a1f6a7e02 gnu: pretty-print: Fix boost reference
* gnu/packages/pretty-print.scm (source-highlight): Change "boost-1.54" input
  to "boost"
2014-03-10 13:41:40 -05:00
Ludovic Courtès 714084e6c0 offload: Honor absolute build timeouts.
* guix/scripts/offload.scm (offload): Remove default value for
  'build-timeout'.  Pass '--timeout' to the remote 'guix build'
  process.
  (transfer-and-offload, process-request): Remove default value for
  'build-timeout'.
2014-03-09 23:15:09 +01:00
Ludovic Courtès 002622b65b guix build: Add '--timeout' to the common build options.
* guix/scripts/build.scm (show-build-options-help): Document
  '--timeout'.
  (set-build-options-from-command-line): Pass #:timeout to
  'set-build-options'.
  (%standard-build-options): Add '--timeout'.
* doc/guix.texi (Invoking guix build): Document it.
2014-03-09 23:09:18 +01:00
Ludovic Courtès 6c20d1d0c3 store: Add #:timeout build option.
* guix/serialization.scm (write-string-pairs): New procedure.
* guix/store.scm (write-arg): Add 'string-pairs' case.
  (set-build-options): Add 'timeout' keyword parameter.  Honor it.
* tests/derivations.scm ("build-expression->derivation and timeout"):
  New test.
2014-03-09 23:01:18 +01:00
Ludovic Courtès 02c86a5e36 gnu: Add libpcap and jnettop.
* gnu/packages/admin.scm (libpcap, jnettop): New variables.
2014-03-09 22:36:48 +01:00
Ludovic Courtès f5768afa33 build: Change state and log directories to $localstatedir/.../guix.
* daemon.am (libstore_a_CPPFLAGS): Change /nix to /guix.
* guix/config.scm.in (%state-directory): Likewise.
* guix/store.scm (log-file): Likewise.
2014-03-09 22:10:01 +01:00
Ludovic Courtès 834129e0e2 Change the default store file name to /gnu/store.
* configure.ac: Change the default 'storedir' to /gnu/store.  Print
  $storedir.
* doc/guix.texi: Replace "/nix/store" by "/gnu/store", except where
  describing Nix compatibility.
* Makefile.am: Likewise.
2014-03-09 22:09:58 +01:00
Ludovic Courtès 59f704dff6 offload: Move macro definitions before use.
* guix/scripts/offload.scm (lock-file, unlock-file, with-file-lock,
  with-machine-lock, machine-slot-file, acquire-build-slot,
  release-build-slot): Move definitions above their first use.
2014-03-09 18:08:38 +01:00
Andreas Enge 2a51db7d8d gnu: soprano: Add input raptor2.
* gnu/packages/rdf.scm (soprano): Add input raptor2.
2014-03-09 15:02:46 +01:00
Ludovic Courtès 88da0b6888 offload: Distinguish between 'decline' and 'postpone'.
* guix/scripts/offload.scm (transfer-and-offload): New procedure, with
  core formerly in 'process-request'.
  (choose-build-machine): Remove 'requirements' parameter.
  (process-request): Reply 'decline' when none of MACHINES matches the
  requirements, and 'postpone' when MACHINES are busy.
2014-03-09 14:06:35 +01:00
Andreas Enge 0e6260a493 gnu: raptor2: Disable parallel tests.
* gnu/packages/rdf.scm (raptor2): Disable parallel tests since it makes
    tests fail.
2014-03-09 11:42:37 +01:00
Ludovic Courtès 5cc569dc73 offload: Prevent locked files from being GC'd.
* guix/scripts/offload.scm (%slots): New variable.
  (choose-build-machine): Add SLOT to '%slots'.
2014-03-08 21:23:12 +01:00
Ludovic Courtès 7df3ade112 offload: Fix thinko.
* guix/scripts/offload.scm (choose-build-machine)[machine+slots]: Use
  'filter-map', not 'filter'.
2014-03-08 12:22:49 +01:00
Ludovic Courtès d652b85137 offload: Make 'parallel-builds' a hard limit.
* guix/scripts/offload.scm (machine-choice-lock-file,
  machine-slot-file, acquire-build-slot, release-build-slot): New
  procedures.
  (choose-build-machine): Operate with (machine-choice-lock-file)
  taken.  Acquire a build slot for each of MACHINES.  Release those not
  used.
2014-03-08 12:16:06 +01:00
Ludovic Courtès 4bf1eb4f88 offload: Further generalize lock files.
* guix/scripts/offload.scm (lock-machine, unlock-machine): Remove.
  (lock-file, unlock-file): New procedures.
  (with-file-lock): New macro.
  (with-machine-lock): Rewrite in terms of 'with-file-lock'.
2014-03-08 12:07:57 +01:00
Ludovic Courtès 178f5828eb offload: Generalize the machine lock mechanism.
* guix/scripts/offload.scm (lock-machine): Add 'hint' parameter.
  (unlock-machine): Remove 'machine' parameter.
  (with-machine-lock): Add 'hint' parameter, and pass it down.
  (process-request): Adjust uses of 'with-machine-lock' to pass the
  'bandwidth hint.
2014-03-08 11:29:52 +01:00
Ludovic Courtès c7445833eb utils: Add a non-blocking option for 'fcntl-flock'.
* guix/utils.scm (F_SETLK): New variable.
  (fcntl-flock): Add 'wait?' keyword parameter; honor it.
* tests/utils.scm ("fcntl-flock non-blocking"): New test.
2014-03-08 00:18:22 +01:00
Ludovic Courtès e7f34eb0dc doc: Explain what's special about the (gnu packages ...) name space.
* doc/guix.texi (Invoking guix package): Explain where packages are
  searched for and link to "Package Modules".
  (Defining Packages) <example>: Use 'define-module' clause instead of
  'use-modules'.  Explain why and link to "Package Modules".
  (Invoking guix build): Explain where packages aer searched for and
  link to "Package Modules".
  (Package Modules): Explain that (gnu packages ...) is scanned.
2014-03-08 00:18:21 +01:00
Eric Bavier 583103416d gnu: Add a2ps, trueprint, enscript, and source-highlight
* gnu/packages/pretty-print.scm: New file
* gnu/packages/patches/source-highlight-regexrange-test.patch: New file
* gnu-system.am (dist_patch_DATA): Add patch.
(GNU_SYSTEM_MODULES): Add pretty-print.scm
2014-03-07 10:11:12 -06:00
Cyril Roelandt ff3c0c1b80 coreutils: fix test suite
* gnu/packages/patches/coreutils-skip-nohup.patch: patch taken from the git
  repository of coreutils, that makes sure tests/misc/nohup.sh does not fail
  when /dev/tty does not exist.
* gnu/packages/base.scm (coreutils): use it.
* gnu-system.am (dist_patch_DATA): add it.
2014-03-07 00:45:51 +01:00
Ludovic Courtès cafb92d853 store: 'export-paths' doesn't export references of the given files.
This fixes a regression introduced in
99fbddf9a6 ("store: Change 'export-paths'
to always export in topological order.")

* guix/store.scm (export-paths): Define 'ordered' variable.  Iterate
  over it.
* tests/store.scm ("export/import paths, ensure topological order"): Add
  'file0'.  Adjust accordingly.
2014-03-07 00:19:03 +01:00
David Thompson 4d01bd3c1c gnu: Add ncmpc.
* gnu/packages/mpd.scm (ncmpc): New variable.
2014-03-06 16:51:16 -05:00
Ludovic Courtès 9ea3ef2655 utils: 'fcntl-flock' passes an errno when throwing an exception.
* guix/utils.scm (%libc-errno-pointer, errno): New procedures.
  (fcntl-flock): Use it as the exception's argument.
2014-03-06 21:42:24 +01:00
Ludovic Courtès f326fef8a8 offload: Serialize file transfers to build machines.
* guix/scripts/offload.scm (machine-lock-file, lock-machine,
  unlock-machine): New procedures.
  (with-machine-lock): New macro.
  (process-request): Wrap 'send-files' and 'retrieve-files' calls in
  'with-machine-lock'.
2014-03-06 21:42:24 +01:00
Ludovic Courtès 827d556311 tests: Rewrite 'fcntl-lock' test.
* tests/utils.scm (temp-file): New variable.
  ("fcntl-flock"): Rewrite to actually test whether the child process
  waits for the lock to be released.  The previous test was wrong
  because (1) it expected F_SETLK semantics, not F_SETLKW, and (2) it
  got EBADF because of a mismatch between the open mode and the lock
  style.
2014-03-06 21:42:24 +01:00
Ludovic Courtès 56c72822a8 download: Perform derivations locally.
* guix/download.scm (url-fetch): Pass #:local-build? #t to
  'build-expression->derivation'.
* guix/git-download.scm (git-fetch): Likewise.
2014-03-06 21:42:24 +01:00
Mark H Weaver 8b3099cf03 gnu: Add bitlbee.
* gnu/packages/messaging.scm (bitlbee): New variable.
* gnu/packages/patches/bitlbee-fix-tests.patch: New file.
* gnu/packages/patches/bitlbee-memset-fix.patch: New file.
* gnu-system.am (dist_patch_DATA): Add patches.
2014-03-06 10:23:45 -05:00
Mark H Weaver 7c706558f5 gnu: Add libotr.
* gnu/packages/messaging.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-03-06 10:23:37 -05:00
Mark H Weaver 5249045cd4 gnu: gnupg: Add support for version 1.4.16.
* gnu/packages/gnupg.scm (gnupg-1): New variable.
2014-03-06 10:23:21 -05:00
Mark H Weaver ece2624616 gnu: Add lynx.
* gnu/packages/lynx.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-03-05 13:55:06 -05:00
Mark H Weaver 9b521a678b gnu: gnutls: Upgrade to 3.2.12.
* gnu/packages/gnutls.scm (gnutls): Upgrade to 3.2.12.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2014-03-05 00:09:42 +01:00
Ludovic Courtès 8deeda0c35 gnu: Add ElementTree and pybugz.
* gnu/packages/python.scm (python2-element-tree, python2-pybugz): New
  variables.
2014-03-03 00:22:46 +01:00
Ludovic Courtès 70ee564299 doc: Factorize documentation of common build options.
* doc/guix.texi (Invoking guix package): Remove documentation for
  --dry-run, --fallback, --no-substitutes, and --max-silent-time.  Add a
  cross-ref to "Invoking guix build".
  (Invoking guix archive): Add "common build options" as the cross-ref
  topic for "Invoking guix build".
  (Invoking guix build): Move common build options separately.  Add a
  paragraph to explain.
2014-03-03 00:22:46 +01:00
Andreas Enge ebb7aeff80 gnu: subversion: Update to 1.7.14.
* gnu/packages/version-control.scm (subversion): Update to 1.7.14.
2014-03-02 15:09:59 +01:00
Andreas Enge 98b79d361c gnu: subversion: Enable http checkouts.
* gnu/packages/version-control.scm (subversion): Add input neon-0.29.6 to
    enable http and https checkouts.
2014-03-02 14:12:40 +01:00
Andreas Enge d56052bd80 gnu: Add neon-0.29.6.
* gnu/packages/version-control.scm (neon-0.29.6): New variable.
2014-03-02 14:03:00 +01:00
Andreas Enge fc1e45160e gnu: Add neon.
* gnu/packages/version-control.scm (neon): New variable.
2014-03-02 13:48:28 +01:00
Manolis Ragkousis dc91c10f2b gnu: hurd: Add Hurd headers.
* gnu/packages/hurd.scm (hurd-headers): New variable.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-03-01 18:59:34 +01:00
Ludovic Courtès dd67b429e1 guix package: Use the common build options from (guix scripts build).
* guix/scripts/build.scm (%standard-build-options): Change option
  handlers to support multiple seeds.
* guix/scripts/package.scm (show-help): Remove --dry-run, --fallback,
  --no-substitutes, and --max-silent-time.
  (%options): Likewise, and add %STANDARD-BUILD-OPTIONS.
  (%default-options): Add 'verbosity'.
  (guix-package): Call 'set-build-options-from-command-line' instead of
  'set-build-options'.
2014-03-01 18:29:29 +01:00
Ludovic Courtès 00ee3a712f gnu: guile-ssh: Upgrade to 0.5.0.
* gnu/packages/ssh.scm (guile-ssh): Upgrade to 0.5.0.
  [arguments]: Adjust 'autoreconf' phase.  Add #:parallel-tests? #f and
  #:tests? #f.
  [native-inputs]: Add TEXINFO.
2014-03-01 15:41:18 +01:00
Ludovic Courtès 706e9e575d substitute-binary: Gracefully handle HTTP GET errors.
* guix/http-client.scm (&http-get-error): New condition type.
  (http-fetch): Raise it instead of using 'error'.
* guix/scripts/substitute-binary.scm (fetch) <http>: Wrap body into
  'guard' form; gracefully handle 'http-get-error?' conditions.
2014-03-01 15:38:11 +01:00
Ludovic Courtès 1f7fd80032 offload: Comment out attempt to set up an lsh gateway.
* guix/scripts/offload.scm (open-ssh-gateway): Comment out.
  (process-request): Remove call to 'open-ssh-gateway' and to 'kill'.
2014-03-01 12:24:39 +01:00
Ludovic Courtès aedbf9b873 offload: 'remote-pipe' uses the right SSH key.
* guix/scripts/offload.scm (remote-pipe): Pass -i when invoking
  %LSHG-COMMAND.
2014-03-01 12:15:47 +01:00
Ludovic Courtès 165f4b2add offload: Take the target machine load into account.
* guix/scripts/offload.scm (machine-load, machine-less-loaded?,
  machine-less-loaded-or-faster?): New procedures.
  (choose-build-machine): Use 'machine-less-loaded-or-faster?' when
  sorting.  Return the head of MACHINES unless it's loaded is >= 2.
2014-03-01 01:31:18 +01:00
Ludovic Courtès 36b56f081b guix archive: Change '--help' to show '--authorize'.
* guix/scripts/archive.scm (show-help): Add '--authorize'.
2014-02-28 22:31:16 +01:00
Ludovic Courtès 62b76320b4 gnu: libgc: Change URLs to point to hboehm.info.
* gnu/packages/bdw-gc.scm (libgc)[source, home-page, license]: Update
  URL.
  (libatomic-ops)[source, home-page]: Likewise.
  (libgc-7.4)[source]: Likewise.
2014-02-28 18:14:49 +01:00
Ludovic Courtès 1faca892a3 Partly revert "gnu: Remove now unneeded 'modules' fields from 'origin' specifications."
This partly reverts commit a3a1417dc7.

* gnu/packages/base.scm (glibc)[source]: Re-add 'modules' clause.
* gnu/packages/lsh.scm (lsh)[source]: Remove 'use-modules' form from
  'snippet'.  Add 'modules' field.
2014-02-28 12:22:14 +01:00
Ludovic Courtès 664b031031 gnu: coreutils: Patch 'Makefile.in', not 'local.mk'.
* gnu/packages/patches/coreutils-dummy-man.patch: Patch 'Makefile.in',
  not 'local.mk'; the latter otherwise requires Automake to regenerate
  the build system.
2014-02-28 10:56:45 +01:00
Ludovic Courtès a3a1417dc7 gnu: Remove now unneeded 'modules' fields from 'origin' specifications.
The previous commit has made (guix build utils) imported by default, so
no need to specify it.

* gnu/packages/base.scm (glibc)[source]: Remove 'modules' and
  'imported-modules' fields.
* gnu/packages/lsh.scm (lsh)[source]: Likewise.
2014-02-28 10:49:07 +01:00
Ludovic Courtès 3ca00bb51e packages: Support 'patches' and 'snippets' for sources that are directories.
* guix/packages.scm (patch-and-repack)[numeric-extension?, tarxz-name]:
  New procedures.
  [builder]: Adjust to deal with SOURCE when it's a directory.
  <body>: Use 'tarxz-name'.  Always add (guix build utils) to
  IMPORTED-MODULES.
2014-02-28 10:42:09 +01:00
Ludovic Courtès a74da6b015 gnu-maintenance: Adjust 'latest-release' to filter Bash's patch directories.
* guix/gnu-maintenance.scm (latest-release)[patch-directory-name?]: New
  procedure.
  <subdirs>: Use it to filter out Bash-like patch directories.
2014-02-28 00:01:53 +01:00
Ludovic Courtès 284c004613 gnu: bash, readline: Upgrade.
* gnu/packages/readline.scm (readline): Upgrade to 6.3.
* gnu/packages/bash.scm (bash): Upgrade to 4.3.
2014-02-27 23:59:55 +01:00
Ludovic Courtès 829ecd002e Merge branch 'master' into core-updates
Conflicts:
	gnu/packages/libwebsockets.scm
2014-02-27 23:49:30 +01:00
Ludovic Courtès 65f7c35d02 hydra: Set the default absolute build timeout to 20h.
* build-aux/hydra/gnu-system.scm (package->alist): Add 'timeout' item.
2014-02-27 22:24:02 +01:00
Ludovic Courtès 833efa0d3e gnu: Move libwebsockets to (gnu packages web).
* gnu/packages/libwebsockets.scm: Remove.  Move libwebsockets package
  definition to...
* gnu/packages/web.scm (libwebsockets): ... here.
* gnu-system.am (GNU_SYSTEM_MODULES): Remove libwebsockets.scm.
2014-02-27 22:24:02 +01:00
Ludovic Courtès 371e87d286 store: Use 'when' instead of 'if' in effectful context.
* guix/store.scm (set-build-options): Use 'when' instead of 'if'.
2014-02-27 22:24:02 +01:00
David Thompson 7dc68701da gnu: Add mpd.
* gnu/packages/mpd.scm (mpd): New variable.
2014-02-25 17:27:43 -05:00
David Thompson 892d8a818b gnu: Add libmpdclient.
* gnu/packages/mpd.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-02-25 17:27:28 -05:00
Eric Bavier d79ffe0ece gnu: zile: Upgrade to 2.4.10
* gnu/packages/zile.scm (zile): Upgrade to 2.4.10
2014-02-25 13:59:50 -06:00
Eric Bavier 87e398bdc5 gnu: parallel: Upgrade to 20140222
* gnu/packages/parallel.scm (parallel): Upgrade to 20140222
2014-02-25 12:02:53 -06:00
Mark H Weaver 41109e60b7 gnu: ffmpeg: Upgrade to 2.1.4
* gnu/packages/video.scm (ffmpeg): Upgrade to 2.1.4.
2014-02-25 06:02:51 -05:00
Sree Harsha Totakura 6a6b8ffc97 gnu: libmicrohttpd: Update to 0.9.34.
* gnu/packages/gnunet.scm (libmicrohttpd): Update to 0.9.34.
2014-02-24 23:10:31 -05:00
Mark H Weaver 8fade76f5d Update SRFI-64 to the latest upstream version.
* srfi/srfi-64.scm: Export 'test-group'.  Call 'cond-expand-provide'.
* srfi/srfi-64.upstream.scm: Update to the latest upstream version.
2014-02-24 16:30:08 -05:00
Sree Harsha Totakura c4dc4466d6 gnu: Add miniupnpc.
* gnu/packages/upnp.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.

Signed-off-by: Andreas Enge <andreas@enge.fr>
2014-02-24 22:06:58 +01:00
Ludovic Courtès 3bb33e24bb gnu: coreutils: Attempt to really fix cross-compilation.
* gnu/packages/patches/coreutils-dummy-man.patch: Directly take the
  patch from <http://git.yoctoproject.org/cgit.cgi/poky/plain/meta/recipes-core/coreutils/coreutils-8.22/fix-for-dummy-man-usage.patch>.
2014-02-22 00:43:50 +01:00
Ludovic Courtès b7db387be3 gnu: grep: Upgrade to 2.18.
* gnu/packages/base.scm (grep): Upgrade to 2.18.
2014-02-22 00:37:58 +01:00
Ludovic Courtès 17919a5801 build-system/gnu: Allow the source to be a directory.
* guix/build/gnu-build-system.scm (unpack): Check if SOURCE is a
  directory, and copy it locally if it is.
* gnu/packages/libwebsockets.scm (libwebsockets)[arguments]: Remove
  'unpack' phase.
2014-02-22 00:34:49 +01:00
Ludovic Courtès b2bfa32d25 Merge branch 'master' into core-updates
Conflicts:
	gnu-system.am
2014-02-22 00:27:57 +01:00
Ludovic Courtès 2096ef47aa derivations: Remove unused 'derivation' parameter.
* guix/derivations.scm (derivation): Remove unused #:hash-mode parameter.
* doc/guix.texi (Derivations): Adjust accordingly.
2014-02-21 23:49:53 +01:00
Ludovic Courtès 93cc13aabb gnu: Add libwebsockets.
* gnu/packages/libwebsockets.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-02-21 23:49:53 +01:00
Ludovic Courtès 9b5b5c1740 Add (guix git-download).
* guix/git-download.scm, guix/build/git.scm: New files.
* Makefile.am (MODULES): Add them.
* guix/packages.scm (<origin>): Fix comment for 'method' field.
2014-02-21 23:49:53 +01:00
Ludovic Courtès 0dbd88db39 doc: More on what's special about the archive format.
* doc/guix.texi (Invoking guix archive): Expound on what sets the Nar
  format apart.
2014-02-21 23:49:53 +01:00
Ludovic Courtès 96c7448f37 nar: Produce archives with files sorted in C collation order.
* guix/nar.scm (write-file) <directory>: Pass 'string<?' as the second
  argument to 'scandir'.
* tests/nar.scm ("write-file puts file in C locale collation order"):
  New test.
2014-02-21 23:49:53 +01:00
Ludovic Courtès 36bbbbd150 derivations: Add support for recursive fixed-output derivations.
* guix/derivations.scm (<derivation-output>): Add 'recursive?' field.
  Adjust 'make-derivation-output' callers.
  (%read-derivation) <fixed-output>: When HASH-ALGO starts with 'r:',
  set the 'recursive?' field and drop 'r:' from the hash algo name.
  (write-derivation)[write-output]: Write the algo as 'r:HASH-ALGO' when
  the RECURSIVE? field is set.
  (derivation-hash) <fixed-output>: Prepend "r:" when RECURSIVE? is set.
  (fixed-output-path): New procedure.
  (derivation): Add #:recursive? parameter.  Use 'fixed-output-path' to
  compute the output file name of a fixed output derivation.
  (build-expression->derivation): Add #:recursive? parameter.  Pass it
  to 'derivation'.
* tests/derivations.scm ("fixed-output derivation, recursive",
  "build-expression->derivation produces recursive fixed-output",
  "build-expression->derivation uses recursive fixed-output"): New
  tests.
* doc/guix.texi (Derivations): Document #:recursive? for 'derivation'.
  Add #:recursive? for 'build-expression->derivation'.
2014-02-21 23:49:52 +01:00
Ludovic Courtès 3140f2df42 guix hash: Add '--recursive'.
* guix/scripts/hash.scm (show-help): Add --recursive.
  (%options): Likewise.
  (guix-hash)[file-hash]: New procedure.  Honor --recursive.
  Use it.
* guix/nar.scm (write-file): Add missing field to the &nar-error
  condition raised upon unsupported file type; change its message to be
  more descriptive.
* tests/guix-hash.sh: Add tests with -r.
* doc/guix.texi (Invoking guix hash): Document --recursive.
2014-02-21 23:49:52 +01:00
Ludovic Courtès c1d52c71aa ui: Handle SRFI-35 '&message' conditions.
* guix/ui.scm (call-with-error-handling): Add case for
  'message-condition?'.
* po/Makevars: Fix typo in comment.
2014-02-21 23:49:52 +01:00
Ludovic Courtès a93e91ff48 nar: 'write-file' can write to non-file ports.
* guix/nar.scm (write-contents): Use 'sendfile' only when P is a file
  port.
* tests/nar.scm ("write-file supports non-file output ports"): New test.
2014-02-21 23:49:52 +01:00
Ludovic Courtès 86d07a5514 gnu: mpc123: Add patch that fixes a segfault.
* gnu/packages/patches/mpc123-initialize-ao.patch: New file.
* gnu/packages/mp3.scm (mpc123): Use it.
* gnu-system.am (dist_patch_DATA): Add it.
2014-02-21 23:49:52 +01:00
Mark H Weaver 504a83af42 gnu: emacs: Add more inputs: giflib, libice, libsm, alsa-lib.
* gnu/packages/emacs.scm (emacs): Add 'giflib', 'libice', 'libsm', and
  'alsa-lib' inputs.  Remove "--with-gif=no" from configure arguments.
2014-02-21 10:49:55 -05:00
Mark H Weaver 8ec773a8b8 gnu: Add giflib.
* gnu/packages/giflib.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-02-21 10:49:46 -05:00
Andreas Enge 7563004301 gnu: gmime: Use gnome mirror for download.
* gnu/packages/mail.scm (gmime): Use gnome mirror, fixes download problems
    with automatic https redirection.
2014-02-21 12:04:48 +01:00
Manolis Ragkousis 396b3c8b55 gnu: hurd: Add MiG.
* gnu/packages/hurd.scm (mig): New variable.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-02-20 23:18:08 +01:00
Ludovic Courtès c6d37be951 guix hash: Don't load the whole file in memory.
* guix/scripts/hash.scm (guix-hash)[eof->null]: Remove.
  (guix-hash): Use 'port-sha256' to compute the hash instead of
  'get-bytevector-all' and co.
2014-02-20 23:18:08 +01:00
Mark H Weaver 62d4575de2 gnu: tor: Upgrade to 0.2.4.20.
* gnu/packages/tor.scm (tor): Upgrade to 0.2.4.20.
2014-02-19 22:27:32 -05:00
Mark H Weaver 681a6588b2 gnu: Add gmime.
* gnu/packages/mail.scm (gmime): New variable.
2014-02-19 22:27:25 -05:00
Mark H Weaver 68640c3c09 gnu: gpgme: Make 'libgpg-error' a propagated input.
* gnu/packages/gnupg.scm (gpgme): Make 'libgpg-error' a propagated input.
2014-02-19 22:21:37 -05:00
Mark H Weaver 6ee5a658f7 gnu: shishi: Add more inputs for libidn and PAM support.
* gnu/packages/shishi.scm (shishi): Add 'pkg-config' native-input.
  Add 'libidn' and 'linux-pam' inputs.
2014-02-19 22:16:35 -05:00
Eric Bavier a438d540b1 gnu: calcurse: New module
* gnu/packages/calcurse.scm: New file
* gnu-system.am (GNU_SYSTEM_MODULES): Add it

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-02-19 23:27:01 +01:00
Ludovic Courtès 9038298cbf gnu: Add /etc/shells.
* gnu/system.scm (etc-directory): Add /etc/shells.
2014-02-19 21:30:16 +01:00
Ludovic Courtès 0b14d1d7e3 gnu: vm: Remove '%demo-operating-system'.
* gnu/system/vm.scm (%demo-operating-system): Remove.
  (system-qemu-image, system-qemu-image/shared-store,
  system-qemu-image/shared-store-script): Adjust accordingly.
2014-02-19 21:10:12 +01:00
Ludovic Courtès 8b198abecd gnu: Define '%base-services'.
* gnu/services/base.scm (%base-services): New variable.
* gnu/system.scm (<operating-system>)[services]: Change the default
  value to %BASE-SERVICES.
* doc/guix.texi (Using the Configuration System): Change
  '%standard-services' to '%base-services'.
2014-02-19 21:08:28 +01:00
Ludovic Courtès db4fdc04cc gnu: Introduce the (gnu services ...) modules.
* gnu/system/dmd.scm: Remove file.  Move contents to...
* gnu/services.scm, gnu/services/base.scm, gnu/services/dmd.scm,
  gnu/services/networking.scm, gnu/services/xorg.scm: ... here.  New
  files.
* gnu/system.scm, gnu/system/vm.scm: Adjust accordingly.
* guix/scripts/system.scm (%user-module): Likewise.
* doc/guix.texi (Using the Configuration System): Likewise.
  (Defining Services): Likewise.
2014-02-19 20:58:24 +01:00
Ludovic Courtès 7fe492e8d9 gnu: bigloo: Upgrade to 4.1a.
* gnu/packages/scheme.scm (bigloo): Upgrade to 4.1a.
2014-02-19 16:43:25 +01:00
Ludovic Courtès 75475ff728 gnu: qemu: Disable debug info.
* gnu/packages/qemu.scm (qemu-headless): Add '--disable-debug-info' as a
  'configure' flag.
2014-02-18 23:47:50 +01:00
Ludovic Courtès 523e48969b Add 'guix system'.
* guix/scripts/system.scm: New file.
* Makefile.am (MODULES): Add it.
* po/POTFILES.in: Likewise.
* doc/guix.texi (Using the Configuration System): Link to "Invoking guix
  system".
  (Invoking guix system): New node.
2014-02-18 23:47:49 +01:00
Sree Harsha Totakura c0e57fb876 gnu: curl: Fix tests.
* gnu/packages/curl.scm (curl): Add a new phase and python-2 to native-inputs.

Signed-off-by: Andreas Enge <andreas@enge.fr>
2014-02-18 23:32:08 +01:00
Sree Harsha Totakura 2977b307ef gnu: curl: Update to 7.35.0.
* gnu/packages/curl.scm (curl): Update to 7.35.0.

Signed-off-by: Andreas Enge <andreas@enge.fr>
2014-02-18 23:00:25 +01:00
Sree Harsha Totakura 67543125f3 gnu: gnurl: Do not disable testcase 1022.
* gnu/packages/gnunet.scm (gnurl): Do not disable testcase 1022.

Signed-off-by: Andreas Enge <andreas@enge.fr>
2014-02-18 22:54:31 +01:00
Sree Harsha Totakura 7c869effd4 gnu: ncdc: Update to 1.19.
* gnu/packages/dc (ncdc): Update to 1.19.

Signed-off-by: Andreas Enge <andreas@enge.fr>
2014-02-18 22:19:33 +01:00
Mark H Weaver d93627e4a9 gnu: gnutls: Upgrade to 3.2.11.
* gnu/packages/gnutls.scm (gnutls): Upgrade to 3.2.11.  Improve URI
  computation.
2014-02-18 10:27:04 -05:00
Mark H Weaver 625bd40806 gnu: icu4c: Upgrade to 52.1.
* gnu/packages/icu4c.scm (icu4c): Upgrade to 52.1.
2014-02-17 18:47:23 -05:00
Mark H Weaver 0841dcf7dd gnu: patchelf: Fix platform page size determination.
* gnu/packages/patches/patchelf-page-size.patch: New file.
* gnu/packages/elf.scm (patchelf): Add the patch.
* gnu-system.am (dist_patch_DATA): Add the patch.
2014-02-17 18:47:22 -05:00
Ludovic Courtès e7fc17b592 guix build: Factorize common options.
* guix/scripts/build.scm (show-build-options-help,
  set-build-options-from-command-line): New procedures.
  (show-help): Remove description of --dry-run,
  --fallback, --no-substitutes, --max-silent-time, and --cores.  Call
  'show-build-options-help'.
  (%standard-build-options): New variable.
  (%options): Remove --dry-run, --fallback, --no-substitutes,
  --verbosity, --max-silent-time, and --cores.  Add
  %STANDARD-BUILD-OPTIONS.
  (guix-build): Use 'set-build-options-from-command-line' instead of
  'set-build-options'.
* guix/scripts/archive.scm (show-help): Remove description of --dry-run,
  --fallback, --no-substitutes, --max-silent-time, and --cores.  Call
  'show-build-options-help'.
  (%options): Remove --dry-run, --fallback, --no-substitutes,
  --verbosity, --max-silent-time, and --cores.  Add
  %STANDARD-BUILD-OPTIONS.
  (export-from-store): Call 'set-build-options-from-command-line'
  instead of 'set-build-options.
2014-02-18 00:13:24 +01:00
Mark H Weaver 98e7fc9b02 gnu: Add xapian.
* gnu/packages/search.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-02-17 15:07:15 -05:00
Sree Harsha Totakura d850e5b913 gnu: gnurl: Update to 7.35.0.
* gnu/packages/gnunet.scm (gnurl): Update to 7.35.0.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-02-16 23:35:38 +01:00
John Darrington 7ee3f1a208 gnu: Add hdf5.
* gnu/packages/maths.scm (hdf5): New variable.
* gnu/packages/maths.scm (octave): New input hdf5.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-02-16 23:35:37 +01:00
Mark H Weaver 436c95d9a7 gnu: dmd: Sleep longer in tests, for slower machines.
* gnu/packages/patches/dmd-tests-longer-sleeps.patch: New file.
* gnu/packages/admin.scm (dmd): Add the patch.
* gnu-system.am (dist_patch_DATA): Add it.
2014-02-16 16:40:21 -05:00
Mark H Weaver 72f210eafa gnu: Add ttf-dejavu.
* gnu/packages/fonts.scm (ttf-dejavu): New variable.
2014-02-16 16:40:15 -05:00
Mark H Weaver aaab995948 Update .gitignore for Guile 2.0.9 bootstrap binaries.
* .gitignore: Change version number in ignored Guile bootstrap
  binaries from 2.0.7 to 2.0.9.
2014-02-16 16:40:08 -05:00
Mark H Weaver 445c5abad8 gnu: ratpoison: Patch to use $SHELL instead of /bin/sh.
* gnu/packages/patches/ratpoison-shell.patch: New file.
* gnu/packages/ratpoison.scm (ratpoison): Add patch.
* gnu-system.am (dist_patch_DATA): Add patch.
2014-02-16 16:39:37 -05:00
Ludovic Courtès 686e637ed2 Add Manolis to 'AUTHORS'. 2014-02-16 19:53:59 +01:00
Manolis Ragkousis 0193c00432 gnu: Add GNU Mach headers.
* gnu/packages/hurd.scm: New file
* gnu-system.am (GNU_SYSTEM_MODULES): Add hurd.scm

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-02-16 19:52:59 +01:00
Sree Harsha Totakura 7af52bd58c gnu: gnunet: Fix failing testcases.
* gnu/packages/gnunet.scm (gnurl): Add pkg-config.
* gnu/packages/patches/gnunet-fix-tests.patch: Append fix for integration testcases.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-02-12 18:36:46 +01:00
Ludovic Courtès bdff90a16a guix build: Move 'set-build-options' call earlier.
* guix/scripts/build.scm (guix-build): Move 'set-build-options' call
  before 'show-what-to-build'.
2014-02-12 00:03:20 +01:00
Ludovic Courtès d66b704b51 store: Add comments for the stracer.
* guix/store.scm (%worker-magic-1, %worker-magic-2): Add comments.
2014-02-12 00:03:20 +01:00
Mark H Weaver 9e5ace9d1d gnu: isc-dhcp: Upgrade to 4.3.0.
* gnu/packages/admin.scm (isc-dhcp): Upgrade to 4.3.0.
2014-02-11 15:57:06 -05:00
Sree Harsha Totakura b6b29c7737 gnu: curl, gnurl: Fix failing testcase 172.
* gnu/packages/patches/curl-fix-test172.patch: New file.
* gnu-system.am (dist_patch_DATA): Add the patch file.
* gnu/packages/gnunet.scm (gnurl): Apply the patch file.
* gnu/packages/curl.scm (curl): Apply the patch file.

Signed-off-by: Andreas Enge <andreas@enge.fr>
2014-02-11 19:44:48 +01:00
Andreas Enge 1680df13a8 gnu: gnunet: Correct typo.
* gnu/packages/gnunet.scm (gnunet): Correct typo.
2014-02-11 10:22:01 +01:00
Mark H Weaver bbafef3ff1 gnu: texinfo: Make version 4.13a available.
* gnu/packages/texinfo.scm (texinfo-4): New variable.
2014-02-10 19:21:08 -05:00
Andreas Enge 05e8a0b005 gnu: gnunet: Add input libmicrohttpd.
* gnu/packages/gnunet.scm (gnunet): Add input libmicrohttpd and improve
    formatting.
2014-02-10 23:44:57 +01:00
Ludovic Courtès 99fbddf9a6 store: Change 'export-paths' to always export in topological order.
* guix/store.scm (export-paths): Pass PATHS through
  'topologically-sorted' before iterating.
* tests/store.scm ("export/import paths, ensure topological order"): New
  test.
2014-02-10 23:36:42 +01:00
John Darrington 829b1b253e gnu: lout: Change docdir from "doc" to "share/doc"
* gnu/packages/lout.scm (lout):
  Change docdir from "doc" to "share/doc".

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-02-10 23:36:42 +01:00
Sree Harsha Totakura 266b39fc26 gnu: Add GNUnet.
* gnunet/packages/gnunet.scm (gnunet): New variable.
* gnu/package/patches/gnunet-fix-scheduler.patch: New file.
* gnu/package/patches/gnunet-fix-tests.patch: New file.
* gnu-system.am (dist_patch_DATA): Add the above two patch files.

Co-authored-by: Andreas Enge <andreas@enge.fr>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-02-10 23:36:42 +01:00
Ludovic Courtès 93bfe3e27c gnu: gstreamer 1.0.10: Temporarily disable tests.
* gnu/packages/gstreamer.scm (gstreamer): Add 'arguments' field.
2014-02-10 23:36:42 +01:00
Ludovic Courtès 99662b8dbf gnu: glibc: Upgrade to 2.19.
* gnu/packages/base.scm (glibc): Upgrade to 2.19.  Remove
  'glibc-make-4.0.patch'.
* gnu/packages/patches/glibc-make-4.0.patch: Remove.
* gnu-system.am (dist_patch_DATA): Adjust accordingly.
2014-02-10 22:37:08 +01:00
John Darrington c2e6516721 build-system/gnu: Set the docdir to "share/doc"
* guix/build/gnu-build-system.scm (configure):
  Change docdir directory from "doc" to "share/doc".

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-02-10 22:22:53 +01:00
Ludovic Courtès 7f31c71cb8 gnu: coreutils: Fix cross-compilation issue with 'dummy-man'.
This should work around the bug described at
<http://git.yoctoproject.org/cgit.cgi/poky/plain/meta/recipes-core/coreutils/coreutils-8.22/fix-for-dummy-man-usage.patch>.

* gnu/packages/base.scm (coreutils)[patches]: Add
  'coreutils-dummy-man.patch'.
  [native-inputs]: Don't pass PERL when (%current-target-system) is
  true.
* gnu/packages/patches/coreutils-dummy-man.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
2014-02-10 18:27:42 +01:00
Mark H Weaver fc0a973d70 gnu: openssh: Upgrade to 6.5p1.
* gnu/packages/ssh.scm (openssh): Upgrade to 6.5p1.
2014-02-09 22:27:41 -05:00
Mark H Weaver 18095a4ae0 gnu: openssl: Upgrade to 1.0.1f.
* gnu/packages/openssl.scm (openssl): Upgrade to 1.0.1f.
2014-02-09 22:27:40 -05:00
Ludovic Courtès 6ede17ca69 union: Do not compare directories upon collision.
* guix/build/union.scm (file=?): Return #f if FILE1 and FILE2 are not
  regular files.  Fixes a bug whereby collisions among directories would
  lead to the invocation of 'file=?' and thus 'call-with-input-file' on
  directories.  Reported by Mark H. Weaver <mhw@netris.org>.
2014-02-10 00:05:39 +01:00
Ludovic Courtès 2de227af4b download: Provide a 'User-Agent' field in HTTP requests.
Fixes <http://bugs.gnu.org/16703>.
Reported by Raimon Grau <raimonster@gmail.com>.

* guix/build/download.scm (http-fetch)[headers]: New variable.
  Pass it as #:headers or #:extra-headers to 'http-get' and
  'http-get*'.
2014-02-10 00:03:34 +01:00
Ludovic Courtès 06d275f67f gnu: dmd: Add SLiM service.
* gnu/system/dmd.scm (xorg-service): Remove.
  (xorg-start-command, slim-service): New procedure.
2014-02-09 23:46:28 +01:00
Ludovic Courtès f3d4af173a gnu: dmd: Fix X font directory name in X service.
* gnu/system/dmd.scm (xorg-service)[xserver.conf]: Fix directory name in
  'FontPath' entry for FONT-ADOBE75DPI.
2014-02-09 23:30:49 +01:00
Ludovic Courtès 26fc862a61 gnu: linux-initrd: When booting, chdir to the new root before calling 'chroot'.
* guix/build/linux-initrd.scm (boot-system): Add 'chdir' call right
  before 'chroot'.
2014-02-09 23:28:18 +01:00
Ludovic Courtès f9ec07a985 gnu: slim: Work around flaky synchronization with the X server.
* gnu/packages/patches/slim-sigusr1.patch: New file.
* gnu/packages/slim.scm (slim): Use it.
* gnu-system.am (dist_patch_DATA): Add it.
2014-02-09 23:20:42 +01:00
Raimon Grau 4cccb3617e gnu: Add stalonetray
* gnu/packages/stalonetray.scm: New file
* gnu-system.am (GNU_SYSTEM_MODULES): Add stalonetray.scm

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-02-09 22:06:15 +01:00
Eric Bavier 350b9b9933 gnu: moe: New module
* gnu/packages/moe.scm: New file
* gnu-system.am (GNU_SYSTEM_MODULES): Add moe.scm

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-02-08 18:00:25 +01:00
Ludovic Courtès e30835e247 gnu: Add FUSE.
* gnu/packages/linux.scm (fuse): New variable.
2014-02-08 16:07:02 +01:00
Ludovic Courtès ea0e9ce2e6 gnu: Move root's home directory to /root.
* gnu/system.scm (operating-system-derivation): Change root's
  'home-directory' to "/root".
* gnu/system/vm.scm (operating-system-default-contents): Add /root.
2014-02-08 00:18:25 +01:00
Ludovic Courtès 7a03af707c gnu: python-pysqlite: Point to the latest release tarball.
* gnu/packages/python.scm (python2-pysqlite): Change 'version' to
  "2.6.3a".  Change 'uri' to point to pypi.python.org.
  Reported by Mark H Weaver <mhw@netris.org> and others.
  Update 'home-page' and 'synopsis'.
2014-02-07 23:57:48 +01:00
Eric Bavier 4380a7b4b8 gnu: Add paperkey.
* gnu/packages/gnupg.scm (paperkey): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-02-07 23:33:30 +01:00
Ludovic Courtès b93afd5b53 gnu: gdb: Upgrade to 7.7.
* gnu/packages/gdb.scm (gdb): Upgrade to 7.7.  Remove
  'gdb-loongson-madd-fix.patch', no longer needed.
* gnu/packages/patches/gdb-loongson-madd-fix.patch: Remove.
* gnu-system.am (dist_patch_DATA): Adjust accordingly.
2014-02-06 22:09:52 +01:00
Ludovic Courtès 6e37066e76 daemon: Add '--gc-keep-outputs' and '--gc-keep-derivations'.
* nix/nix-daemon/guix-daemon.cc (GUIX_OPT_GC_KEEP_OUTPUTS,
  GUIX_OPT_GC_KEEP_DERIVATIONS): New macros.
  (options): Add 'gc-keep-outputs' and 'gc-keep-derivations'.
  (string_to_bool): New function.
  (parse_opt): Honor GUIX_OPT_GC_KEEP_DERIVATIONS and
  GUIX_OPT_GC_KEEP_OUTPUTS.
* doc/guix.texi (Invoking guix-daemon): Document --gc-keep-outputs and
  --gc-keep-derivations.
2014-02-06 21:49:47 +01:00
Ludovic Courtès c37b2b2aa5 Add Raimon to 'AUTHORS'. 2014-02-06 19:07:10 +01:00
Raimon Grau 924cd63116 gnu: Add luajit
* gnu/packages/lua.scm (luajit): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-02-06 19:04:02 +01:00
John Darrington 3600420e3e gnu: Add Glade.
* gnu/packages/gnome.scm (glade): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-02-06 19:01:52 +01:00
Ludovic Courtès cc0a128226 gnu: binutils: Build with --enable-deterministic-archives.
* gnu/packages/base.scm (binutils): Add
  '--enable-deterministic-archives' to #:configure-flags.
  Suggestion from Lunar's 2014 FOSDEM talk on reproducible builds.
2014-02-06 14:06:28 +01:00
Ludovic Courtès 2c1dea853d gnu: coreutils: Move Perl to 'native-inputs'.
* gnu/packages/base.scm (coreutils): Add 'native-inputs' field.
  This should allow cross builds to have man pages, and work around this
  'dummy-man' bug:
  <http://git.yoctoproject.org/cgit.cgi/poky/plain/meta/recipes-core/coreutils/coreutils-8.22/fix-for-dummy-man-usage.patch>.
2014-02-06 12:17:16 +01:00
Andreas Enge c6ebb77cb7 gnu: imagemagick: Upgrade to 6.8.8-4.
* gnu/packages/imagemagick.scm (imagemagick): Upgrade to 6.8.8-4.
2014-02-06 09:32:12 +01:00
Eric Bavier 8254b48066 gnu: gnu-pw-mgr: Upgrade to 1.1.
* gnu/packages/gnu-pw-mgr.scm (gnu-pw-mgr): Upgrade to 1.1.

Signed-off-by: Andreas Enge <andreas@enge.fr>
2014-02-06 09:13:43 +01:00
Ludovic Courtès c36b22281e gnu: guile-wm: Upgrade to 1.0.
* gnu/packages/guile-wm.scm (guile-wm): Upgrade to 1.0.
2014-02-05 23:21:24 +01:00
Ludovic Courtès 7aec36830f gnu: system: Build /etc/localtime.
* gnu/system.scm (etc-directory)[bashrc]: Use 'text-file*' instead of
  'text-file'.  Adjust users accordingly.
  [files]: Add the /etc/localtime file for TIMEZONE.
  Add TZDATA to the 'file-union' inputs.
  (operating-system-derivation): Pass 'etc-directory' PROFILE-DRV
  instead of PROFILE.
2014-02-05 22:22:51 +01:00
Ludovic Courtès 16686a9022 gnu: slim: Upgrade to 1.3.6; allow the choice of a config file at run time.
* gnu/packages/slim.scm (slim): Upgrade to 1.3.6.  Add patches.  Comment
  out systemd-related stuff from CMakeLists.txt.  Add
  "-DBUILD_SHARED_LIBS=OFF" and "-DCMAKE_SKIP_BUILD_RPATH=ON" to
  #:configure-flags.  Adjust 'home-page' field.
* gnu/packages/patches/slim-config.patch,
  gnu/packages/patches/slim-session.patch: New files.
* gnu-system.am (dist_patch_DATA): Add them.
2014-02-05 22:18:14 +01:00
John Darrington 1d07e9316a gnu: inkscape: New module
* gnu/packages/inkscape.scm,
  gnu/packages/patches/inkscape-stray-comma.patch: New files.
* gnu-system.am (GNU_SYSTEM_MODULES): Add inkscape.scm.
  (dist_patch_DATA): Add inkscape-stray-comma.patch.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-02-05 00:02:17 +01:00
John Darrington 2a72eeeea1 gnu: Add Boost.
* gnu/packages/boost.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add boost.scm

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-02-04 21:50:42 +01:00
John Darrington 99b030c705 gnu: gxmessage: New module
* gnu/packages/gxmessage.scm: New file
* gnu-system.am (GNU_SYSTEM_MODULES): Add gxmessage.scm

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-02-04 21:41:46 +01:00
Ludovic Courtès 7c9325a9ec gnu: dmd: Use 'text-file*' when building Xorg's config file.
* gnu/system/dmd.scm (xorg-service)[xserver.conf]: Change to use
  'text-file*' instead of 'text-file'.
  Adjust body accordingly.  Remove now extraneous packages from the
  service's 'inputs' field.
2014-02-03 23:37:09 +01:00
Ludovic Courtès 45adbd624f monads: Add 'text-file*'.
* guix/monads.scm (text-file*): New procedure.
* tests/monads.scm ("text-file*"): New test.
* doc/guix.texi (The Store Monad): Change example since the previous one
  would erroneously fail to retain a reference to Coreutils.  Document
  'text-file*'.
2014-02-03 23:20:49 +01:00
John Darrington 67995f4bea gnu: file: Upgrade to 5.16.
* gnu/packages/file.scm (file): Upgrade to 5.16.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-02-03 22:21:47 +01:00
John Darrington 9c08644340 gnu: gtkmm-2 New variable
* gnu/packages/gtk.scm (gtkmm-2): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-02-03 22:11:32 +01:00
Ludovic Courtès 682b6599d7 gnu: vm: Create all the user directories.
* gnu/system/vm.scm (operating-system-default-contents)[user-directories]:
  New procedure.  Use it to create each user's home and GC root
  directories.
2014-02-02 20:41:53 +01:00
Ludovic Courtès ba6f8e423e gnu: Add xterm.
* gnu/packages/xorg.scm (xterm): New variable.
2014-02-02 20:38:03 +01:00
Ludovic Courtès f6a9d0484c gnu: vm: Add /run/current-system and /bin/sh.
* gnu/system/vm.scm (operating-system-default-contents): Populate
  /run/current-system and create /bin/sh.
* gnu/system.scm (operating-system-profile-derivation,
  operating-system-profile-directory): New procedures.
  (operating-system-derivation): Use it.
2014-02-02 01:34:33 +01:00
Ludovic Courtès 92cb2e2888 offload: Have 'build-machines' honor its argument.
* guix/scripts/offload.scm (build-machines): Honor FILE.
2014-02-02 01:32:50 +01:00
Ludovic Courtès 1c2215108b gnu: linux-initrd: Build /dev/input devices.
* guix/build/linux-initrd.scm (make-essential-device-nodes): Make
  dev/input devices.
2014-02-01 02:22:23 +01:00
Ludovic Courtès 53bd729e8c gnu: Add preliminary Xorg service.
* gnu/system/dmd.scm (xorg-service): New procedure.
2014-02-01 01:58:37 +01:00
Ludovic Courtès c04c6ff64c gnu: linux-initrd: Make /dev/{mem,kmem}.
* guix/build/linux-initrd.scm (make-essential-device-nodes): Make
  dev/{mem,kmem}.
2014-02-01 01:07:14 +01:00
Ludovic Courtès e420308f29 gnu: xorg-server: Use /var as $localstatedir.
* gnu/packages/xorg.scm (xorg-server): Pass --localstatedir=/var.  In
  'configure' phase, patch 'hw/xfree86/Makefile.in'.
2014-01-31 18:22:04 +01:00
Ludovic Courtès fd3bfc44ff gnu: vm: Add support for running a VM that shares its store with the host.
* gnu/system/vm.scm (qemu-image): Check whether GUIX is #f.
  (operating-system-build-gid, operating-system-default-contents): New
  procedures.
  (system-qemu-image): Use 'operating-system-build-gid'.
  (system-qemu-image/shared-store,
  system-qemu-image/shared-store-script): New procedures.
* gnu/system.scm: Add missing exports.
2014-01-31 14:36:48 +01:00
Ludovic Courtès 44ddf33ed5 gnu: linux-initrd: Allow the root file system to be volatile.
* gnu/system/linux-initrd.scm (qemu-initrd): Add 'volatile-root?'
  parameter.
* guix/build/linux-initrd.scm (boot-system): Likewise.  Honor it.
2014-01-31 14:26:30 +01:00
Ludovic Courtès 70b33d81cf gnu: linux: Really build 9p/virtio modules.
* gnu/packages/linux.scm (linux-libre): Add CONFIG_NET_9P and
  CONFIG_9P_FS.
2014-01-31 14:23:54 +01:00
Ludovic Courtès 4919d68432 gnu: linux-initrd: Recognize 9p file systems.
* gnu/system/linux-initrd.scm (qemu-initrd)[virtio-9p-modules]: New
  variable.
  [linux-modules]: Append VIRTIO-9P-MODULES when a 9p file system is in
  MOUNTS.
* guix/build/linux-initrd.scm (mount-qemu-9p): New procedure.
  (boot-system): Recognize '9p' in MOUNTS, and use 'mount-qemu-9p'.
2014-01-31 12:52:13 +01:00
Ludovic Courtès 217b862f0e gnu: linux-initrd: Match kernel module file names exactly.
* gnu/system/linux-initrd.scm (expression->initrd)[string->regexp]: New
  procedure.  Use it in the call to 'find-files'.
2014-01-31 12:01:23 +01:00
Ludovic Courtès fc4bc4b6de gnu: linux-initrd: Properly distinguish between /dev/sda* and /dev/vda*.
* guix/build/linux-initrd.scm (make-essential-device-nodes): Rename
  devices with major = 8 to /dev/sda*.  Make /dev/vda* devices.
* gnu/system/vm.scm (qemu-image): Change '/dev/vda' to '/dev/sda'.
* gnu/system.scm (operating-system-derivation): Likewise.
2014-01-31 01:43:16 +01:00
Ludovic Courtès 83b9e6a185 gnu: linux-initrd: Start a REPL when the root could not be mounted.
* guix/build/linux-initrd.scm (boot-system): Catch errors when mounting
  ROOT and call 'start-repl' upon error.
2014-01-31 01:40:02 +01:00
Ludovic Courtès 882f034fa8 gnu: linux-libre: Build more virtio modules.
* gnu/packages/linux.scm (linux-libre): Append CONFIG_NET_9P_VIRTIO and
  CONFIG_VIRTIO_{NET,BLK,BALLOON} to '.config'.
2014-01-31 01:15:38 +01:00
Ludovic Courtès a7d46f12ac gnu: vm: Run QEMU with '-enable-kvm'.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Pass QEMU
  '-enable-kvm'.
2014-01-30 23:32:22 +01:00
John Darrington 668c06acfc gnu: Add GNU Octave.
* gnu/packages/maths.scm (octave): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-01-30 22:00:55 +01:00
Ludovic Courtès f914963e47 gnu: linux-libre: Build virtio modules.
* gnu/packages/linux.scm (linux-libre): Build modules matching
  CONFIG.*VIRTIO.
2014-01-29 23:42:36 +01:00
Ludovic Courtès 7b99ba4acd gnu: linux-libre: Upgrade to 3.13.
* gnu/packages/linux.scm (linux-libre): Upgrade to 3.13.
2014-01-29 23:34:47 +01:00
Sree Harsha Totakura a85cb48643 gnu: gnunet: Add gnurl 7.34.0.
* gnu/packages/gnunet.scm (gnurl): New variable. Thanks to Zerwas for
  the initial recipe.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-01-29 23:08:37 +01:00
Ludovic Courtès 610b5cd8a1 gnu: libgcrypt: Upgrade to 1.6.1.
* gnu/packages/gnupg.scm (libgcrypt): Upgrade to 1.6.1.
2014-01-29 22:37:53 +01:00
Ludovic Courtès d425471182 gnu: linux-initrd: Factorize boot code.
* guix/build/linux-initrd.scm (boot-system): New procedure.
* gnu/system/linux-initrd.scm (qemu-initrd): Add keyword parameters
  'guile-modules-in-chroot?' and 'mounts'.  Change builder to simply
  call 'boot-system'.
  (gnu-system-initrd): Change to a simple call to 'qemu-initrd'.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Call
  'qemu-initrd' with #:guile-modules-in-chroot?.
2014-01-29 21:57:56 +01:00
Ludovic Courtès 735c6dd7fa gnu: Lower initrd makers from packages to monadic procedures.
* gnu/packages/linux-initrd.scm: Remove.
* gnu/system/linux-initrd.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Adjust accordingly.
* gnu/system.scm (<operating-system>): Change default 'initrd' value
  to (gnu-system-initrd).
  (operating-system-derivation): Bind 'operating-system-initrd'.  Pass
  'menu-entry' an initrd file name instead of a package.
* gnu/system/grub.scm (grub-configuration-file): Expect 'initrd' to be
  file name.
2014-01-29 16:50:02 +01:00
Ludovic Courtès 413d5351aa monads: Add 'imported-modules' and 'compiled-modules'.
* guix/monads.scm (package-file): Fix typo.
  (imported-modules, compiled-modules): New procedures.
2014-01-29 13:05:42 +01:00
Ludovic Courtès b0dd47a8d0 gnu: qemu-initrd: Adjust to allow booting with a non-empty /root.
* gnu/packages/linux-initrd.scm (qemu-initrd): Use 'mkdir-p' instead of
  'mkdir' for /root/xchg and /root/{share,lib}.  When TO-LOAD is a
  symlink, resolve it.
  (gnu-system-initrd): Fix typo in message.
2014-01-28 23:38:19 +01:00
Ludovic Courtès 49a8b80da6 Revert "build-system/gnu: Pass --localstatedir=/var --sharedstatedir=/com."
This reverts commit 65529e49ff.
2014-01-28 08:57:37 +01:00
Ludovic Courtès 65529e49ff build-system/gnu: Pass --localstatedir=/var --sharedstatedir=/com.
Suggested by John Darrington <john@darrington.wattle.id.au>
and Mark H Weaver <mhw@netris.org>.

* guix/build/gnu-build-system.scm (configure): Pass --localstatedir=/var
  --sharedstatedir=/com.
* gnu/packages/admin.scm (dmd): Remove 'arguments' field.
* gnu/packages/avahi.scm (avahi): Remove --localstatedir flag.
* gnu/packages/glib.scm (dbus): Likewise.
* gnu/packages/package-management.scm (guix): Likewise.
* gnu/packages/pulseaudio.scm (pulseaudio): Likewise.
2014-01-27 23:45:59 +01:00
Ludovic Courtès f06afd4da2 download: Add archive.apache.org to the Apache mirrors.
* guix/download.scm (%mirrors)[apache]: Add archive.apache.org as a last
  resort.
2014-01-27 23:31:28 +01:00
Ludovic Courtès a76611c435 offload: Do not try to retrieve anything upon build failure.
* guix/scripts/offload.scm (offload): Add 'log-port' keyword parameter.
  Handle log display here.  Return the result of (close-pipe pipe).
  (process-request): Adjust 'offload' call site accordingly.  Call
  'retrieve-files' only when 'offload' returns zero; exit when 'offload'
  returns non-zero.
2014-01-27 21:32:59 +01:00
Ludovic Courtès 35cebf0166 gnu: iotop: Fix typos.
* gnu/packages/linux.scm (iotop): Fix typos introduced by myself.
2014-01-27 19:02:59 +01:00
Sree Harsha Totakura 7c0dbe780a gnu: linux: Add iotop-0.6.
* gnu/packages/linux.scm (iotop): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-01-27 18:59:22 +01:00
Ludovic Courtès d43547f12d gnu: libffi: Leave a copy of headers where libffi.pc expects them.
Suggested by Sree Harsha Totakura <sreeharsha@totakura.in>.

* gnu/packages/libffi.scm (libffi): Symlink header files instead of
  moving them.
2014-01-27 15:30:35 +01:00
Ludovic Courtès 5d80dd0823 gnu: Add asciidoc.
* gnu/packages/asciidoc.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-01-26 23:52:59 +01:00
Ludovic Courtès 829c095dae gnu: qemu: Add note about 9p.
* gnu/packages/qemu.scm (qemu/smb-shares): Add comment.
2014-01-26 23:25:55 +01:00
John Darrington 73fed4f868 gnu: Add gnuplot
* gnu/packages/maths.scm (gnuplot): New variable

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-01-26 21:16:55 +01:00
Ludovic Courtès 70d1ce9afc build: Set 'NIX_LIBEXEC_DIR' in 'pre-inst-env'.
Reported by Nikita Karetnikov <nikita@karetnikov.org>.

* test-env.in: Move 'NIX_LIBEXEC_DIR' setting to...
* pre-inst-env.in: ... here.
2014-01-26 15:53:56 +01:00
Andreas Enge 566146abba gnu: lapack: Update to 3.5.0.
* gnu/packages/maths.scm (lapack): Update to 3.5.0.
2014-01-26 13:04:03 +01:00
Ludovic Courtès 22f33e6112 gnu: sdl: Explicitly link against libXext.
* gnu/packages/sdl.scm (sdl): Add #:configure-flags to 'arguments'.
  Move PKG-CONFIG to 'native-inputs'.
2014-01-25 23:07:35 +01:00
Andreas Enge 1ca03c048b gnu: apl: Update to 1.2.
* gnu/packages/apl.scm (apl): Update to 1.2.
2014-01-25 19:08:13 +01:00
Andreas Enge daaa00c82a gnu: global: Update to 6.2.10.
* gnu/packages/global.scm (global): Update to 6.2.10.
2014-01-25 19:06:02 +01:00
Andreas Enge fe9aeab9dd gnu: lightning: Update to 2.0.3.
* gnu/packages/lightning.scm (lightning): Update to 2.0.3.
2014-01-25 19:01:23 +01:00
Ludovic Courtès ecb1b610d2 tests: Adjust to recent Binutils change.
* tests/guix-package.sh: Refer to 'glibc:debug' instead of
  'binutils:lib' since the latter no longer exists.
2014-01-25 17:23:23 +01:00
Ludovic Courtès 6ce206cb92 Prefer local builds for "small" derivations.
* gnu/system.scm (union, file-union, links): Pass #:local-build? #t to
  'derivation-expression'.
* guix/derivations.scm (imported-files, compiled-modules): Likewise.
* guix/profiles.scm (profile-derivation): Likewise.
2014-01-25 17:22:53 +01:00
Andreas Enge 5ae7b708bb gnu: parallel: Update to 20140122.
* gnu/packages/parallel.scm (parallel): Update to 20140122.
2014-01-25 17:18:06 +01:00
Ludovic Courtès 200a97e64f Merge branch 'master' into core-updates 2014-01-25 17:07:21 +01:00
Ludovic Courtès 1909431c5b derivations: Add #:local-build? parameter for derivations.
* guix/derivations.scm (derivation): Add #:local-build? parameter and
  honor it.
  (build-expression->derivation): Likewise.
* doc/guix.texi (Derivations): Update documentation of these
  procedures.
2014-01-25 17:04:35 +01:00
John Darrington b6cbb314d9 gnu: fltk: New module
* gnu/packages/fltk.scm: New file
* gnu-system.am: New file fltk.scm

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-01-25 16:39:03 +01:00
John Darrington 3c9aa5c12d gnu: libxft: Propagate input.
* gnu/packages/xorg.scm (libxft): Propagate input libxrender.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-01-25 16:37:51 +01:00
John Darrington 4f3a10d59d gnu: ncdu: New module
* gnu/packages/ncdu.scm: New file
* gnu-system.am: New file ncdu.scm

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-01-25 16:20:24 +01:00
Sree Harsha Totakura 513e1950fb gnu: Add Corkscrew 2.0.
* gnu/packages/ssh.scm (corkscrew): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-01-25 16:20:23 +01:00
Sree Harsha Totakura 28fb9101d9 gnu: Add ncdc-1.18.1.
* gnu/packages/dc.scm : New module.
* gnu-system.am (GNU_SYSTEM_MODULES): Add module.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-01-25 16:20:23 +01:00
Ludovic Courtès 9e55f04a4b profiles: Remove misleading message.
Fixes <http://bugs.gnu.org/16484>.
Reported by Andreas Enge <andreas@enge.fr>.

* guix/profiles.scm (profile-derivation)[builder]: Remove "building
  profile '~a' with ~a packages" message.
2014-01-25 16:20:23 +01:00
Ludovic Courtès 4ec2e92ddb doc: More about offloading.
* doc/guix.texi (Daemon Offload Setup): Start with "When desired".  Say
  more on what can go in 'machines.scm', and mention Guile-Avahi.
  (Invoking guix-daemon): Document '--no-build-hook'.
  (Invoking guix build): Add xref to "Daemon Offload Setup".
2014-01-25 16:20:23 +01:00
Ludovic Courtès b5d4a81133 wget: Upgrade to 1.15.
* gnu/packages/wget.scm (wget): Upgrade to 1.15.  Remove Gettext from
  'inputs'.  Move Perl to 'native-inputs'.
2014-01-25 16:20:23 +01:00
Andreas Enge 93e48d19c7 gnu: ffmpeg: Update to 2.1.3.
* gnu/packages/video.scm (ffmpeg): Update to 2.1.3.
2014-01-24 22:40:44 +01:00
Andreas Enge e816b34878 gnu: ffmpeg: Add input opus.
* gnu/packages/video.scm (ffmpeg): Add input opus.
2014-01-24 22:22:42 +01:00
Ludovic Courtès 70f228cd86 Add Sree to 'AUTHORS'. 2014-01-24 14:03:12 +01:00
Sree Harsha Totakura a7f904fd63 gnu: Add Opus 1.1.
* gnu/packages/xiph.scm (opus): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-01-24 14:01:38 +01:00
Ludovic Courtès 49e6291a7a Add 'guix offload' as a daemon build hook.
* nix/nix-daemon/guix-daemon.cc (GUIX_OPT_NO_BUILD_HOOK): New macro.
  (options): Add '--no-build-hook'.
  (parse_opt): Handle it.
  (main)[HAVE_DAEMON_OFFLOAD_HOOK]: Set 'useBuildHook' by default.
  Set $NIX_BUILD_HOOK to our offload hook unless otherwise specified.
  [!HAVE_DAEMON_OFFLOAD_HOOK]: Clear 'useBuildHook'.
* pre-inst-env.in: Set and export NIX_BUILD_HOOK.
* nix/scripts/offload.in, guix/scripts/offload.scm: New files.
* guix/ui.scm (show-guix-help)[internal?]: Add "offload".
* config-daemon.ac: Call 'GUIX_CHECK_UNBUFFERED_CBIP'.
  Instantiate 'nix/scripts/offload'.  Set 'BUILD_DAEMON_OFFLOAD'
  conditional, and optionally define 'HAVE_DEAMON_OFFLOAD_HOOK' cpp
  macro.
* daemon.am (nodist_pkglibexec_SCRIPTS)[BUILD_DAEMON_OFFLOAD]: Add it.
* Makefile.am (MODULES)[BUILD_DAEMON_OFFLOAD]: Add
  'guix/scripts/offload.scm'.
  (EXTRA_DIST)[!BUILD_DAEMON_OFFLOAD]: Likewise.
* m4/guix.m4 (GUIX_CHECK_UNBUFFERED_CBIP): New macro.
* doc/guix.texi (Setting Up the Daemon): Move most of the body to...
  (Build Environment Setup): ... this.  New subsection.
  (Daemon Offload Setup): New subsection.
2014-01-24 00:01:50 +01:00
Ludovic Courtès 50add47748 store: Add 'topologically-sorted'.
* guix/store.scm (topologically-sorted): New procedure.
* tests/store.scm ("topologically-sorted, one item",
  "topologically-sorted, several items", "topologically-sorted, more
  difficult"): New tests.
2014-01-24 00:01:50 +01:00
Ludovic Courtès cd4027fa47 nar: Add 'restore-file-set', for use by build hooks.
* guix/nar.scm (&nar-invalid-hash-error, &nar-signature-error): New
  condition types.
  (&nar-error): Add 'file' and 'port' fields.
  (&nar-read-error): Remove 'port' and 'file' fields.
  (lock-store-file, unlock-store-file, finalize-store-file,
  temporary-store-directory, restore-file-set): New procedures.
* tests/nar.scm (%seed): New variable.
  (random-text): New procedure.
  ("restore-file-set (signed, valid)", "restore-file-set (missing
  signature)", "restore-file-set (corrupt)"): New tests.
* po/Makevars (XGETTEXT_OPTIONS): Add '--keyword=message'.nar fixes
* po/POTFILES.in: Add guix/nar.scm.
2014-01-24 00:01:50 +01:00
Ludovic Courtès ce4a482983 store: Add 'with-store' convenience macro.
* guix/store.scm (with-store): New macro.
2014-01-24 00:01:49 +01:00
Ludovic Courtès 045111e10c hash: Add 'open-sha256-input-port', for Guile > 2.0.9.
* guix/hash.scm (open-sha256-input-port): New procedure.
* tests/hash.scm (supports-unbuffered-cbip?): New procedure.
  ("open-sha256-input-port, empty", "open-sha256-input-port, hello",
  "open-sha256-input-port, hello, one two",
  "open-sha256-input-port, hello, read from wrapped port"): New tests.
2014-01-24 00:01:49 +01:00
Ludovic Courtès d28684b5a5 pki: Factorize signature manipulation procedures.
* guix/pki.scm (signature-subject, signature-signed-data,
  valid-signature?): New procedures.
* guix/scripts/authenticate.scm (guix-authenticate): Adjust to use
  them.
2014-01-24 00:01:49 +01:00
Ludovic Courtès 2cd5c0380e utils: Add 'fcntl-flock'.
* guix/utils.scm (%struct-flock, F_SETLKW, F_xxLCK): New variables.
  (fcntl-flock): New procedure.
* tests/utils.scm ("fcntl-flock"): New test.
2014-01-24 00:01:49 +01:00
Ludovic Courtès 6bfec3edf5 store: Add 'register-path' procedure.
* guix/store.scm (register-path): New procedure.
* tests/store.scm ("register-path"): New test.
* guix/config.scm.in (%guix-register-program): New variable.
* configure.ac: Compute and substitute 'guix_sbindir'.  Compute
  'guix_prefix'.
* pre-inst-env.in: Define 'GUIX_REGISTER'.
2014-01-24 00:01:49 +01:00
Ludovic Courtès 349fd3b11f guix-register: Support registration in the current store, without '--prefix'.
* nix/guix-register/guix-register.cc (register_validity): Leave
  'info.path' unmodified when PREFIX is empty.
  (main): Call 'settings.processEnvironment' early on.
  Leave 'settings.nixStore' unmodified when PREFIX is empty.
2014-01-24 00:01:49 +01:00
Ludovic Courtès 5674a3fdb6 store: Add comments for the %stderr constants.
* guix/store.scm (process-stderr): Add comments for the various
  constants, to help when stracing.
2014-01-24 00:01:49 +01:00
Ludovic Courtès 59f734f351 ui: Filter out internal commands from '--help'.
* guix/ui.scm (show-guix-help)[internal?]: New procedure.
  Use it to filter out internal commands reported by '--help'.
2014-01-24 00:01:49 +01:00
Andreas Enge 54ff0b7dd7 gnu: Rename (gnu packages oggvorbis) to (gnu packages xiph).
* gnu/packages/oggvorbis.scm: Rename this ...
* gnu/packages/xiph.scm: ... to this. Adjust module name accordingly.
* gnu-system.am (GNU_SYSTEM_MODULES): Update.
* gnu/packages/{gnunet.scm, libcanberra.scm, mp3.scm, pulseaudio.scm, sdl.scm,
    video.scm}: Use new module name.
2014-01-23 19:05:09 +01:00
Sree Harsha Totakura 997ef1df51 gnu: sqlite: Upgrade to 3.8.2.
* gnu/packages/sqlite.scm (sqlite): Upgrade to 3.8.2.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-01-23 00:03:02 +01:00
Ludovic Courtès 32795fcffb gnu: guile-2.0: Switch to libgc 7.4.0.
* gnu/packages/guile.scm (guile-2.0): Use LIBGC-7.4.
  (guile-2.0/fixed): Keep using LIBGC.
2014-01-22 23:45:44 +01:00
Ludovic Courtès ad7583f6f5 gnu: Add libatomic_ops 7.4.0 and libgc 7.4.0.
* gnu/packages/bdw-gc.scm (libatomic-ops, libgc-7.4): New variables.
2014-01-22 23:44:20 +01:00
Ludovic Courtès 6596ac3987 gnu: libgc: Explicitly mark license as 'x11-style'.
* gnu/packages/bdw-gc.scm (libgc)[license]: Use 'x11-style'.
2014-01-22 23:15:07 +01:00
Ludovic Courtès 463d6dac7d gnu: isc-dhcp: Fix license.
* gnu/packages/admin.scm (isc-dhcp): Change license to ISC.
2014-01-22 00:25:43 +01:00
Ludovic Courtès e67f555161 gnu: gnubik: Synchornize synopsis and description.
* gnu/packages/games.scm (gnubik): Synchornize synopsis and description.
2014-01-22 00:22:16 +01:00
Ludovic Courtès a869565b98 gnu: Add GNU V.E.R.A.
* gnu/packages/dictionaries.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-01-22 00:21:19 +01:00
Ludovic Courtès 66ea671393 licenses: Add GNU FDL 1.3+.
* guix/licenses.scm (fdl1.3+): New variable.
2014-01-22 00:20:40 +01:00
Ludovic Courtès 00585a5582 gnu: glib: Upgrade to 2.39.1.
* gnu/packages/glib.scm (glib): Upgrade to 2.39.1.  Run tests
  sequentially.
* gnu/packages/patches/glib-tests-desktop.patch: Adjust for 2.39.1.  Add
  hunk for gsettings.c.
2014-01-20 01:06:22 +01:00
Ludovic Courtès 6dc99317fb doc: List what's in the chroot.
* doc/guix.texi (Setting Up the Daemon): List what's in the chroot.
2014-01-18 22:32:51 +01:00
Ludovic Courtès d43eb499a6 Update 'nix-upstream' sub-module; adjust build system, doc, and substituter.
* nix-upstream: Update sub-module.
* daemon.am (libutil_a_SOURCES): Add affinity.cc.
  (libutil_headers): Add affinity.hh.
  (libexec_PROGRAMS, nix_setuid_helper_SOURCES,
  nix_setuid_helper_CPPFLAGS, nix_setuid_helper_LDADD): Remove.
* doc/guix.texi (Setting Up the Daemon): Remove paragraph about
  'nix-setuid-helper'.
* guix/scripts/substitute-binary.scm (guix-substitute-binary): Exit 0 when
  %CACHE-URL has an HTTP scheme and looking up its host fails.
  Always print a newline to stdout when starting.
2014-01-18 22:32:50 +01:00
Ludovic Courtès b97c95eb3c linux-initrd: Make /dev/{null,zero} world-writable.
Reported by zerwas on #guix.

* guix/build/linux-initrd.scm (make-essential-device-nodes): Make
  /dev/null and /dev/zero world-writable.
2014-01-18 22:32:50 +01:00
Andreas Enge 8bb1699bd5 gnu: mesa: Propagate input.
* gnu/packages/gl.scm (mesa): Propagate input libx11.
2014-01-18 17:53:43 +01:00
Ludovic Courtès a8bcd6eb6f hydra: Add debugging for the Guix job set.
* build-aux/hydra/guix.scm: Set '%load-verbosely'.
2014-01-18 14:41:58 +01:00
Andreas Enge 10b4d0f6ff gnu: gl: Correct copyright notice.
* gnu/packages/gl.scm: Add copyright notice for mesa, moved here from
    module xorg in commit 200726e.
2014-01-18 14:15:39 +01:00
Ludovic Courtès c915b404b2 gnu: Add DocBook DTD and XSL style sheets.
* gnu/packages/docbook.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-01-17 23:47:31 +01:00
Ludovic Courtès 7e17f65d95 doc: Distinguish between (gnu packages ...) and "GNU packages".
* doc/guix.texi (Package Modules): Add a footnote stating that (gnu
  packages ...) has nothing to do with "GNU packages."
2014-01-17 22:52:10 +01:00
Ludovic Courtès c5e0eb2884 ui: Update copyright year in '--version' output.
* guix/ui.scm (show-version-and-exit): Increment copyright year.
2014-01-17 22:49:42 +01:00
Ludovic Courtès 9208d0c1a0 gnu: Add libexif, libgphoto2, and gphoto2.
* gnu/packages/photo.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-01-15 22:47:55 +01:00
John Darrington e7d6f7bfa0 gnu: pspp: Upgrade to 0.8.2
* gnu/packages/maths.scm (pspp): Update to 0.8.2.
* gnu/packages/patches/pspp-tests.patch: Deleted.
* gnu-system.am: Removed pspp-tests.patch from the manifest.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2014-01-15 21:27:41 +01:00
Andreas Enge fcaa7523d4 gnu: mpc: Update to 1.0.2.
* gnu/packages/multiprecision.scm (mpc): Update to 1.0.2.
2014-01-15 16:37:54 +01:00
Ludovic Courtès 2a5e15c6e1 gnu: git: 'git-submodule' works even if Perl is not in $PATH.
* gnu/packages/version-control.scm (git): Add 'native-inputs' field;
  move Gettext there from 'inputs'.  In 'split' phase, wrap the
  'git-submodule' script.
2014-01-15 15:39:47 +01:00
Andreas Enge da923d11d2 gnu: valgrind: Update to 2.9.0.
* gnu/packages/valgrind.scm (valgrind): Update to 2.9.0.
2014-01-15 15:11:57 +01:00
Ludovic Courtès f7ad76e06d Update 'sr.po'. 2014-01-15 00:24:46 +01:00
Ludovic Courtès 16f68e4840 gnu: Add Taylor UUCP.
* gnu/packages/uucp.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-01-15 00:15:55 +01:00
Ludovic Courtès 9927622f3f gnu: inetutils: Upgrade to 1.9.2.
* gnu/packages/admin.scm (inetutils): Upgrade to 1.9.2.  Add Readline
  as an input.
2014-01-14 09:11:13 +01:00
Ludovic Courtès 4eaad71db6 doc: Fix another reference to (gnu packages admin).
* doc/guix.texi (Using the Configuration System): Change module name
  to (gnu packages admin).
2014-01-14 09:00:29 +01:00
Ludovic Courtès 8f0fd238d4 gnu: Add mpc123.
* gnu/packages/mp3.scm (libmpcdec, mpc123): New variables.
2014-01-14 00:14:12 +01:00
Ludovic Courtès 9de46ffb1c gnu: Changes references to (gnu packages admin).
* gnu/packages/version-control.scm, gnu/packages/vim.scm,
  gnu/system.scm, gnu/system/dmd.scm, gnu/system/shadow.scm,
  gnu/system/vm.scm: Change references to (gnu packages system) to (gnu
  packages admin).
  This is a followup to commit 4aeea89.
2014-01-13 23:21:47 +01:00
Ludovic Courtès 4aeea896f8 gnu: Rename (gnu packages system) to (gnu packages admin).
* gnu/packages/system.scm: Rename to...
* gnu/packages/admin.scm: ... this.  Adjust module name accordingly.
* gnu-system.am (GNU_SYSTEM_MODULES): Update.
2014-01-13 21:32:39 +01:00
Ludovic Courtès c73d4c9276 gnu: Add ISC's DHCP implementation.
* gnu/packages/system.scm (isc-dhcp): New variable.
2014-01-13 21:27:57 +01:00
Ludovic Courtès 3e424f2541 gnu: Add libtirpc.
* gnu/packages/onc-rpc.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2014-01-13 18:53:26 +01:00
Ludovic Courtès eb9a9feefd guix package: Gracefully handle EPIPE on '--search'.
* guix/scripts/package.scm (guix-package): Wrap body of 'search' in
  'leave-on-EPIPE'.
2014-01-13 18:51:07 +01:00
Ludovic Courtès 8fa3e6b338 ui: Don't use hyphens in 'package->recutils' output.
* guix/ui.scm (package->recutils): Rename recutils field from
  'home-page' to 'homepage'.
2014-01-13 18:49:26 +01:00
Ludovic Courtès 6869e5c90c gnu: Add aumix.
* gnu/packages/linux.scm (aumix): New variable.
2014-01-13 18:47:59 +01:00
Ludovic Courtès 40d806afae gnu: Add GnuPG's pinentry.
* gnu/packages/gnupg.scm (pinentry): New variable.
2014-01-13 18:47:31 +01:00
Ludovic Courtès d50f242d50 gnu: guile-ssh: Remove now unneeded cruft.
* gnu/packages/ssh.scm (guile-ssh): Remove libssh version hack from
  'autoreconf' phase.
2014-01-13 00:37:16 +01:00
Ludovic Courtès 15756a7a12 gnu: Add Aspell dictionaries.
* gnu/packages/aspell.scm (aspell-dictionary): New procedure.
  (aspell-dict-en, aspell-dict-eo, aspell-dict-es, aspell-dict-fr): New
  variables.
2014-01-12 22:47:48 +01:00
Ludovic Courtès 1731596792 hydra: Add GCC, Binutils, and libc to the core package set.
* build-aux/hydra/gnu-system.scm (%core-packages): Add GCC-FINAL,
  GLIBC-FINAL, and BINUTILS.
2014-01-11 11:47:38 +01:00
Ludovic Courtès 8e92b6b5b5 gnu: grep, coreutils: Upgrade.
* gnu/packages/base.scm (grep): Upgrade to 2.16.
  (coreutils): Upgrade to 8.22.
2014-01-08 22:32:20 +01:00
Ludovic Courtès 2a48cd9915 gnu: gettext: Upgrade to 0.18.3.2.
* gnu/packages/gettext.scm (gnu-gettext): Upgrade to 0.18.3.2.
2014-01-08 22:30:57 +01:00
Ludovic Courtès 6c95f363d5 gnu: binutils: Upgrade to 2.24.
* gnu/packages/patches/binutils-loongson-madd-fix.patch: Remove.
* gnu-system.am (dist_patch_DATA): Adjust accordingly.
* gnu/packages/base.scm (binutils): Upgrade to 2.24.  Remove
  'binutils-loongson-madd-fix.patch'.  Remove 'outputs' field.  Pass
  '--enable-install-libbfd'.
2014-01-08 22:30:33 +01:00
Ludovic Courtès 2f265602ff Merge branch 'master' into core-updates 2014-01-08 22:06:54 +01:00
Ludovic Courtès 1d6816f98c config: '%store-directory' always honors $NIX_STORE_DIR.
* guix/config.scm.in (%store-directory): Honor $NIX_STORE_DIR.
* guix/store.scm (%store-prefix): Use %store-directory directly.
2014-01-08 21:37:06 +01:00
Ludovic Courtès 80d0447c95 config: '%state-directory' always honors $NIX_STATE_DIR.
* guix/config.scm.in (%state-directory): Honor $NIX_STATE_DIR.
* guix/scripts/package.scm (%profile-directory): Use %state-directory
  directly.
* guix/store.scm (%default-socket-path, log-file): Likewise.
2014-01-08 21:12:55 +01:00
Ludovic Courtès 021a201f29 store: Fix 'log-file' to support uncompressed logs.
* guix/store.scm (log-file): Report the file without '.bz2' if it
  exists.
2014-01-08 19:23:33 +01:00
Ludovic Courtès aa6b0d6bf0 gnu: make: Build with Guile support.
* gnu/packages/base.scm (gnu-make, gnu-make-boot0): Add 'native-inputs'
  field.
2014-01-07 18:10:01 +01:00
Ludovic Courtès 8fd6487e1c gnu: glibc: Build the Info pages.
* gnu/packages/base.scm (glibc): Add 'native-inputs' field.
  (perl-boot0): New variable.
  (linux-libre-headers-boot0): Use it.
  (texinfo-boot0): New variable.
  (glibc-final-with-bootstrap-bash): Add 'native-inputs' field.
2014-01-07 18:08:51 +01:00
Ludovic Courtès 87236aed77 archive: Add '--missing'.
* guix/scripts/archive.scm (show-help, %options): Add '--missing'.
  (guix-archive)[lines]: New procedure.
  Use it to honor '--missing'.
* tests/guix-archive.sh: Add tests.
* doc/guix.texi (Invoking guix archive): Document '--missing'.
2014-01-06 22:25:29 +01:00
Ludovic Courtès b846126052 gnu: lsh: Move generic patching to 'snippet'.
* gnu/packages/lsh.scm (lsh): Move generic patching to the 'snippet'
  field of 'origin'.
2014-01-05 23:46:45 +01:00
Ludovic Courtès 590e4154b6 archive: Make sure $sysconfdir/guix exists.
* guix/pki.scm (ensure-acl): Make sure the directory of %ACL-FILE
  exists.
* guix/scripts/archive.scm (generate-key-pair): Likewise for
  %PUBLIC-KEY-FILE.
2014-01-05 23:40:06 +01:00
Ludovic Courtès 425b0bfc2e guix build: Add '--no-build-hook'.
* guix/scripts/build.scm (%default-options): Add 'build-hook?' pair.
  (show-help, %options): Add --no-build-hook.
  (guix-build): Pass the 'build-hook?' value to 'set-build-options'.
* doc/guix.texi (Invoking guix build): Document '--no-build-hook'.
2014-01-05 22:58:32 +01:00
Ludovic Courtès 1a43e4dc57 guix package: Gracefully deal with EPIPE on stdout for --list-*.
* guix/scripts/package.scm (leave-on-EPIPE): New macro.
  (guix-package): Use it for 'list-installed', 'list-available', and
  '--list-generations'.
* tests/guix-package.sh: Add test.
2014-01-04 22:45:33 +01:00
Ludovic Courtès aebaeaee33 gnu: lsh: Fix the absolute file name of 'sexp-conv'.
* gnu/packages/lsh.scm (lsh): Rename 'fix-test-suite' phase to
  'pre-configure'.  Set PATH_SEXP_CONV in environ.h.in.
2014-01-04 17:27:41 +01:00
Ludovic Courtès 64cc58b249 gnu: nettle: Set the RUNPATH on 'sexp-conv' and other programs.
* gnu/packages/nettle.scm (nettle): Rename 'inputs' to 'native-inputs'.
  Add 'arguments' field.
2014-01-04 16:59:46 +01:00
Ludovic Courtès cb58dd3479 gnu: lsh: Distinguish between native inputs and target inputs.
* gnu/packages/lsh.scm (lsh): Move M4, Guile, gperf, and psmisc to
  'native-inputs'.  Use GUILE-2.0 instead of GUILE-FINAL.
2014-01-04 16:46:01 +01:00
Ludovic Courtès 48ad99db25 doc: Update 'ROADMAP'.
* ROADMAP: Add link to the updated road map, and the a note on release
  history.
2014-01-03 18:19:58 +01:00
Ludovic Courtès 7c49bbe466 Thank Niels. 2014-01-03 16:51:30 +01:00
Ludovic Courtès f5ac2352e9 gnu: pulseaudio: Add patch for 'volume-test'; re-enable tests.
* gnu/packages/patches/pulseaudio-volume-test.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/pulseaudio.scm (pulseaudio): Use it.  Remove
  #:tests? #t.
2014-01-03 16:47:19 +01:00
John Darrington bf0018cd87 gnu: games: Add new package gnubg
* gnu/packages/games.scm (gnubg): New variable

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-12-30 23:33:56 +01:00
Ludovic Courtès 40fed2d836 gnu: libgcrypt: Add "debug" output.
* gnu/packages/gnupg.scm (libgcrypt): Add 'outputs' field.
2013-12-30 23:22:08 +01:00
Ludovic Courtès f82cc5fdbe archive: Add '--authorize'.
* guix/scripts/archive.scm (authorize-key): New procedure.
  (guix-archive): Call it when OPTS contains 'authorize-key'.
* tests/guix-archive.sh: Add test with invalid public key.
* guix/pki.scm: Export '%acl-file'.
* doc/guix.texi (Invoking guix archive): Make it clear that '--import'
  works only with authorized keys.  Document '--authorize'.
2013-12-30 23:18:52 +01:00
Ludovic Courtès 554f26ece3 archive: Add '--generate-key'.
* guix/pk-crypto.scm (error-source, error-string): New procedures.
* guix/pki.scm (%private-key-file): New variable.
* guix/scripts/archive.scm (show-help): Document '--generate-key'.
  (%options): Add "generate-key".
  (generate-key-pair): New procedure.
  (guix-archive): Call 'generate-key' when OPTS contains a
  'generate-key' pair.
* doc/guix.texi (Setting Up the Daemon): Suggest generating a key pair.
  (Invoking guix archive): Document '--generate-key'.
2013-12-30 22:57:37 +01:00
Ludovic Courtès dedb5d947e pk-crypto: Fix 'canonical-sexp->sexp' for atoms.
* guix/pk-crypto.scm (canonical-sexp->sexp): Add hack to extract an
  atom's buffer.
* tests/pk-crypto.scm ("sexp->canonical-sexp->sexp"): Add sample.
2013-12-30 22:29:12 +01:00
Ludovic Courtès 36341854df pk-crypto: Work around Libgcrypt bug <https://bugs.g10code.com/gnupg/issue1594>.
* guix/pk-crypto.scm (canonical-sexp-fold): Call 'nth-data' before
  'nth' to work around <https://bugs.g10code.com/gnupg/issue1594>.
* tests/pk-crypto.scm ("https://bugs.g10code.com/gnupg/issue1594"): New
  test.
2013-12-30 22:19:19 +01:00
Ludovic Courtès c909dab269 authenticate: Consistently use 'leave' for fatal error reporting.
* guix/scripts/authenticate.scm (guix-authenticate): Replace all uses of
  'format' + 'exit' with 'leave'.
2013-12-30 18:23:44 +01:00
Ludovic Courtès 6fc04984d2 Thank Kete. 2013-12-30 16:57:05 +01:00
John Darrington 200726ed09 gnu: mesa: Move out of xorg.scm and into gl.scm
* gnu/packages/xorg.scm (mesa): Move to...
* gnu/packages/gl.scm (mesa): ... here.  New variable.
* gnu/packages/gnome.scm, gnu/packages/gnuzilla.scm,
  gnu/packages/qemu.scm, gnu/packages/qt.scm: Adjust accordingly.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-12-30 16:53:30 +01:00
Ludovic Courtès 4d1a2b50a6 doc: Invoke 'useradd' with '--system'.
Reported by Kete <kete@ninthfloor.org>.
Fixes <http://bugs.gnu.org/16289>.

* doc/guix.texi (Setting Up the Daemon): Add '--system' to the 'useradd'
  command line.  Suggested by Kete <kete@ninthfloor.org>.
2013-12-30 16:47:32 +01:00
Ludovic Courtès 4b155fea74 gnu: automake: Upgrade to 1.14.1.
* gnu/packages/autotools.scm (automake): Upgrade to 1.14.1.
2013-12-29 22:44:23 +01:00
Ludovic Courtès 57ed6ab792 gnu: gdbm: Upgrade to 1.11.
* gnu/packages/gdbm.scm (gdbm): Upgrade to 1.11.
2013-12-29 22:22:09 +01:00
Ludovic Courtès bb0a70e1f1 build: Improve documentation of Nix-related options.
* configure.ac: Add documentation for --with-nix and --with-nixpkgs.
2013-12-29 19:53:05 +01:00
John Darrington 490c6528ed gnu: games: New module
* gnu/packages/games.scm (gnubik): New variable

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-12-29 19:50:23 +01:00
John Darrington ed19903d56 gnu: gnome: Add new package gtkglext
* gnu/packages/gnome.scm (gtkglext): New variable.
* gnu/packages/patches/gtkglext-disable-disable-deprecated.patch,
  gnu/packages/patches/gtkglext-remove-pangox-dependency.patch: New
  files.
* gnu-system.am (dist_patch_DATA): Add them.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-12-29 18:53:25 +01:00
Ludovic Courtès 96e5085c81 authenticate: Disallow imports signed with unauthorized keys.
* guix/scripts/authenticate.scm (signature-sexp): Remove.
  (guix-authenticate): Upon '-verify', check whether the signature's
  public key passes 'authorized-key?'.
2013-12-29 15:57:24 +01:00
Ludovic Courtès 8b420f74e4 Add (guix pki).
* guix/pki.scm, tests/pki.scm: New files.
* Makefile.am (MODULES): Add 'guix/pki.scm'.
  (SCM_TESTS): Add 'tests/pki.scm'.
2013-12-29 15:57:24 +01:00
Ludovic Courtès 3f40cfdece config: Export '%config-directory'.
* configure.ac: Define and substitute 'guix_sysconfdir'.
* guix/config.scm.in (%config-directory): New variable.
2013-12-29 15:57:24 +01:00
Ludovic Courtès 04d4c8a439 Move 'with-atomic-file-output' to (guix utils).
* guix/scripts/substitute-binary.scm (with-atomic-file-output): Move to...
* guix/utils.scm (with-atomic-file-output): ... here.
2013-12-29 15:57:24 +01:00
Ludovic Courtès 9501d7745e pk-crypto: Add canonical-sexp to sexp conversion procedures.
* guix/pk-crypto.scm (canonical-sexp-fold, canonical-sexp->sexp,
  sexp->canonical-sexp): New procedures.
* tests/pk-crypto.scm ("canonical-sexp->sexp",
  "sexp->canonical-sexp->sexp"): New tests.
2013-12-29 15:57:24 +01:00
Ludovic Courtès 363ae1da82 pk-crypto: Add 'canonical-sexp-length' and related procedures.
* guix/pk-crypto.scm (canonical-sexp-length, canonical-sexp-null?,
  canonical-sexp-list?): New procedures.
* tests/pk-crypto.scm ("canonical-sexp-length", "canonical-sexp-list?"):
  New tests.
2013-12-29 15:57:24 +01:00
Ludovic Courtès a2cbbb743d pk-crypto: 'canonical-sexp-nth-data' returns a symbol for "tokens".
* guix/pk-crypto.scm (token-string?): New procedure.
  (canonical-sexp-nth-data): Return a symbol when the element is a
  "token", and a bytevector otherwise.
  (latin1-string->bytevector): Remove.
  (hash-data->bytevector): Adjust accordingly.
* tests/pk-crypto.scm ("canonical-sexp-nth"): Adjust accordingly.  Add
  octet string example.
2013-12-29 15:57:23 +01:00
Ludovic Courtès 6df1fb8991 authenticate: Store the public key as part of the signature.
* guix/scripts/authenticate.scm (signature-sexp): New procedure.
  (guix-authenticate): Use it to produce the signature.  Adjust
  verification code accordingly.
* tests/store.scm ("import corrupt path"): Adjust test accordingly.
2013-12-29 15:57:23 +01:00
Ludovic Courtès b0a33ac157 pk-crypto: Rename 'gcry-sexp' to 'canonical-sexp'.
* guix/pk-crypto.scm: Rename procedures, variables, etc. from
  'gcry-sexp' to 'canonical-sexp'.  Add comment with references.
* guix/scripts/authenticate.scm, tests/pk-crypto.scm: Adjust
  accordingly.
2013-12-29 15:57:23 +01:00
Andreas Enge 557813760d gnu: python: Update to 3.3.3.
* gnu/packages/python.scm (python): Update to 3.3.3.
2013-12-28 15:41:01 +01:00
Andreas Enge ee2b510929 gnu: python-2: Update to 2.7.6.
* gnu/packages/python.scm (python-2): Update to 2.7.6.
2013-12-28 15:24:08 +01:00
Andreas Enge 81bb10ad17 gnu: parallel: Update to 20131122.
* gnu/packages/parallel.scm (parallel): Update to 20131122.
2013-12-28 14:59:15 +01:00
Andreas Enge f6727409c2 gnu: xorriso: Update to 1.3.4.
* gnu/packages/cdrom.scm (xorriso): Update to 1.3.4.
2013-12-28 14:53:07 +01:00
Andreas Enge d0c2cf7d54 gnu: libcdio: Update to 0.92.
* gnu/packages/cdrom.scm (libcdio): Update to 0.92.
2013-12-28 14:42:04 +01:00
Andreas Enge 579b249683 gnu: libextractor: Update to 1.3.
* gnu/packages/gnunet.scm (libextractor): Update to 1.3.
2013-12-28 09:01:15 +01:00
Andreas Enge d3f1333693 gnu: vim: Update to 7.4.
* gnu/packages/vim.scm (vim): Update to 7.4.
2013-12-22 23:23:11 +01:00
Ludovic Courtès d6b5e4bbbd Update 'TODO'. 2013-12-22 01:11:12 +01:00
Ludovic Courtès 760c60d684 Add 'guix archive'.
* guix/scripts/archive.scm, tests/guix-archive.sh: New files.
* Makefile.am (MODULES): Add 'archive.scm'.
  (SH_TESTS): Add 'guix-archive.sh'.
* doc/guix.texi (Invoking guix archive): New section.
* guix/scripts/build.scm: Export 'derivation-from-expression'.
* guix/scripts/package.scm: Export 'specification->package+output'.
2013-12-22 01:08:21 +01:00
Ludovic Courtès 7edccf4d62 build: Install 'guix-authenticate'.
* daemon.am (nodist_libexec_SCRIPTS): New variable.
2013-12-22 00:02:39 +01:00
Ludovic Courtès 81fa80b245 guix build: Improve procedural decomposition.
* guix/scripts/build.scm (%store): Remove.
  (derivation-from-expression): Add 'store' parameter.  Adjust caller
  accordingly.
  (register-root): New procedure, formerly within 'guix-build'.
  (options->derivations): New procedure, formerly inline within
  'guix-build'.
  (guix-build): Adjust accordingly.
2013-12-21 22:53:58 +01:00
Ludovic Courtès 3f26bfc18a Factorize package search between 'guix package' and 'guix build'.
* guix/scripts/package.scm (newest-available-packages): Remove.
  (find-best-packages-by-name): Move to...
* gnu/packages.scm (find-best-packages-by-name): ... here.
  (find-newest-available-packages): Memoize.
* guix/scripts/build.scm (specification->package): New procedure,
  formerly called 'find-package' within 'guix-build'.
  (guix-build): Adjust accordingly.
2013-12-21 22:36:32 +01:00
Ludovic Courtès 0820098d1c authenticate: Add test.
* tests/guix-authenticate.sh: New file.
* Makefile.am (SH_TESTS): Add it.
2013-12-21 21:47:17 +01:00
Ludovic Courtès 0a66781eee build: Adjust pk-crypto tests to Libgcrypt 1.5.3.
Reported by Andreas Enge <andreas@enge.fr>.

* tests/pk-crypto.scm ("string->gcry-sexp->string"): Remove "#C0FFEE#"
  from SEXPS.
  ("gcry-sexp-nth"): Start at index 1.
2013-12-21 00:10:09 +01:00
Ludovic Courtès 526382ff92 daemon: Implement signed archive import/export.
* guix/scripts/authenticate.scm, nix/scripts/guix-authenticate.in,
  tests/signing-key.pub, tests/signing-key.sec: New files.
* po/POTFILES.in: Add 'guix/scripts/authenticate.scm'.
* guix/store.scm (dump-port): New procedure.
  (process-stderr): Add 'user-port' optional parameter.  Handle
  the %STDERR-WRITE and %STDERR-READ cases as expected.
  (import-paths, export-path, export-paths): New procedures.
* tests/store.scm ("export/import several paths", "import corrupt
  path"): New tests.
* Makefile.am (MODULES): Add 'guix/scripts/authenticate.scm'.
  (EXTRA_DIST): Add 'tests/signing-key.{pub,sec}'.
* daemon.am (libstore_a_CPPFLAGS)[-DNIX_CONF_DIR]: Change 'NIX_CONF_DIR'
  to .../guix.  Change 'OPENSSL_PATH' to 'guix-authenticate'.
* config-daemon.ac: Instantiate 'nix/scripts/guix-authenticate'.
* nix/nix-daemon/guix-daemon.cc (main): Augment $PATH to include
  'settings.nixLibexecDir'.
* test-env.in: Export 'NIX_CONF_DIR' and 'NIX_LIBEXEC_DIR'.  Populate
  $NIX_CONF_DIR.
2013-12-20 17:17:42 +01:00
Ludovic Courtès ce507041f7 pk-crypto: Add a few sexp utility procedures.
* guix/pk-crypto.scm (gcry-sexp-car, gcry-sexp-cdr, gcry-sexp-nth,
  gcry-sexp-nth-data, dereference-size_t, latin1-string->bytevector,
  hash-data->bytevector): New procedures.
* tests/pk-crypto.scm ("gcry-sexp-car + cdr", "gcry-sexp-nth",
  "gcry-sexp-nth-data", "bytevector->hash-data->bytevector"): New tests.
2013-12-20 15:22:15 +01:00
Ludovic Courtès 971cb56dd0 Update 'TODO'. 2013-12-20 00:37:41 +01:00
Ludovic Courtès 3476ded934 Add (guix pk-crypto).
* guix/pk-crypto.scm, tests/pk-crypto.scm: New files.
* Makefile.am (MODULES, SCM_TESTS): Add them.
2013-12-20 00:36:26 +01:00
Ludovic Courtès b1aa25be00 sync-with-upstream: Work around limitation of dash.
Reported by Andreas Enge <andreas@enge.fr>.

* nix/sync-with-upstream: Expand use of {cc,hh}, to placate dash.
2013-12-19 00:42:35 +01:00
Ludovic Courtès 0c5028faea daemon: Fix 'HashSink::currentHash()'.
Before that, calls to 'HashSink::currentHash()' would eventually lead to
a segfault because the underlying gcrypt handle has been closed.  (Note
that this method is only used via 'importPaths' and 'exportPath', though.)

* nix/libutil/gcrypt-hash.hh (struct guix_hash_context): Add a
  constructor and a copy constructor; move out of 'extern "C"'.
* nix/libutil/gcrypt-hash.cc (guix_hash_final): Clear 'md_handle' upon
  exit.
* nix/sync-with-upstream (top_srcdir): Change hash.{cc,hh} to read
  'struct Ctx' instead of 'union Ctx'.
2013-12-19 00:02:49 +01:00
Ludovic Courtès 37dd969c2e daemon: Add libgcrypt call to state that the initialization is over.
* nix/nix-daemon/guix-daemon.cc (main): Add 'gcry_control' call.
2013-12-19 00:02:49 +01:00
Andreas Enge 7eb71d7a3d gnu: xf86-video-vmware: Add input xorg-server.
* gnu/packages/xorg.scm (xf86-video-vmware): Add input xorg-server.
2013-12-18 19:58:40 +01:00
Andreas Enge 217a67c020 gnu: iso-codes: Update to 3.49.
* gnu/packages/iso-codes.scm (iso-codes): Update to 3.49.
2013-12-18 15:49:57 +01:00
Andreas Enge e148203588 gnu: shishi: Use libgcrypt-1.5.
* gnu/packages/shishi.scm (shishi): Use input libgcrypt-1.5 instead of 1.6.
2013-12-18 14:24:34 +01:00
Andreas Enge a53421fdda gnu: libgcrypt: Make old version 1.5.3 public.
* gnu/packages/gnupg.scm (libgcrypt-1.5): New variable.
* gnu/packages/ssh.scm (libssh): Use libgcrypt-1.5 instead of defining it
    ad-hoc.
2013-12-18 14:11:01 +01:00
Ludovic Courtès d44da8b092 gnu: libssh: Upgrade to 0.5.5.
* gnu/packages/ssh.scm (libssh): Upgrade to 0.5.5.
2013-12-17 22:02:07 +01:00
Ludovic Courtès 678110b949 gnu: libssh: Build against an older libgcrypt.
* gnu/packages/ssh.scm (libssh): Use libgcrypt 1.5.3 as an input.
2013-12-17 22:01:42 +01:00
John Darrington db6190899e gnu: gnu-build-system: Add CC_FOR_BUILD to configure flags.
* guix/build/gnu-build-system.scm: Add new configure flag: CC_FOR_BUILD=gcc

* gnu/packages/gnupg.scm, gnu/packages/guile.scm, gnu/packages/make-bootstrap.scm:
  remove CC_FOR_BUILD from these package descriptions.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-12-17 21:28:07 +01:00
Andreas Enge f22e0e264e gnu: ffmpeg: Modify runpath of binaries to include output library path.
* gnu/packages/video.scm (ffmpeg): Patch binaries to add output library path
    to runpath.
2013-12-17 21:19:41 +01:00
Ludovic Courtès f733c4c838 gnu: tor: Upgrade to 0.2.4.19.
* gnu/packages/tor.scm (tor): Upgrade to 0.2.4.19.
2013-12-16 23:57:24 +01:00
Ludovic Courtès ec9a25612e gnu: freeipmi: Upgrade to 1.3.4.
* gnu/packages/freeipmi.scm (freeipmi): Upgrade to 1.3.4.
2013-12-16 23:45:21 +01:00
Ludovic Courtès 375c6297c6 gnu: libgcrypt: Upgrade to 1.6.0.
* gnu/packages/gnupg.scm (libgcrypt): Upgrade to 1.6.0.
2013-12-16 23:44:58 +01:00
Ludovic Courtès 3dbeecd2ff pull: Move build code to (guix build pull).
* guix/build/pull.scm: New file.
* Makefile.am (MODULES): Add it.
* guix/scripts/pull.scm (unpack): Use it.
2013-12-16 23:26:48 +01:00
Cyril Roelandt 9cc98f8aa6 gnu: Add gnome-desktop.
* gnu/packages/gnome.scm (gnome-desktop): New variable.
2013-12-16 02:21:09 +01:00
Cyril Roelandt 2748062080 gnu: Add iso-codes.
* gnu/packages/iso-codes.scm: New file.
* gnu-system.am: Add it.
2013-12-15 23:39:43 +01:00
Cyril Roelandt 7a8605ceb5 gnu: Add libpeas.
* gnu/packages/gnome.scm (libpeas): New variable.
2013-12-15 23:39:43 +01:00
Cyril Roelandt af949e8ee7 gnu: gtk+: enable introspection.
* gnu/packages/gtk.scm (atk, gdk-pixbuf, gtk+, pango): enable introspection
* guix/build/gnome.scm: New file.
2013-12-15 23:39:43 +01:00
Cyril Roelandt 503c5f6d5d gnu: gobject-introspection: look for 'gcc' when no compiler seems available.
* gnu/packages/patches/gobject-introspection.patch: New file.
2013-12-15 23:37:22 +01:00
Ludovic Courtès 3e778ad3af gnu: Move libelf and patchelf to (gnu packages elf).
* gnu/packages/patchelf.scm (patchelf): Move to...
* gnu/packages/elf.scm (patchelf): ... here.
* gnu/packages/patchelf.scm: Remove.
* gnu-system.am (GNU_SYSTEM_MODULES): Adjust accordingly.
* gnu/packages/gcc.scm (libelf): Move to...
* gnu/packages/elf.scm (libelf): ... here.
* gnu/packages/cdrom.scm, gnu/packages/icu4c.scm,
  gnu/packages/samba.scm, gnu/packages/scheme.scm, gnu/packages/ssh.scm:
  Adjust references to (gnu packages patchelf).
2013-12-15 23:27:56 +01:00
Ludovic Courtès 2ed5b0f42c gnu: Add elfutils.
* gnu/packages/elf.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2013-12-15 23:19:44 +01:00
John Darrington c4c4cc0597 gnu: Move numerous "inputs" which should be "native-inputs".
* gnu/packages/avahi.scm, gnu/packages/cdrom.scm, gnu/packages/cryptsetup.scm,
  gnu/packages/curl.scm, gnu/packages/emacs.scm, gnu/packages/fontutils.scm,
  gnu/packages/gdb.scm, gnu/packages/geeqie.scm, gnu/packages/ghostscript.scm,
  gnu/packages/glib.scm, gnu/packages/gnome.scm, gnu/packages/gnunet.scm,
  gnu/packages/gnupg.scm, gnu/packages/gnuzilla.scm, gnu/packages/graphviz.scm,
  gnu/packages/groff.scm, gnu/packages/gstreamer.scm, gnu/packages/gtk.scm,
  gnu/packages/gv.scm, gnu/packages/imagemagick.scm, gnu/packages/irssi.scm,
  gnu/packages/kde.scm, gnu/packages/libcanberra.scm, gnu/packages/libtiff.scm,
  gnu/packages/linux.scm, gnu/packages/lvm.scm, gnu/packages/mp3.scm,
  gnu/packages/netpbm.scm, gnu/packages/parted.scm, gnu/packages/pdf.scm,
  gnu/packages/pulseaudio.scm, gnu/packages/qemu.scm, gnu/packages/qt.scm,
  gnu/packages/ratpoison.scm, gnu/packages/rdf.scm, gnu/packages/slim.scm,
  gnu/packages/texlive.scm, gnu/packages/version-control.scm,
  gnu/packages/video.scm, gnu/packages/vpn.scm, gnu/packages/w3m.scm,
  gnu/packages/xml.scm, gnu/packages/xnee.scm, gnu/packages/xorg.scm,
  gnu/packages/zip.scm:  Move some build-time dependencies from `inputs' to
  `native-inputs'.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-12-15 22:31:19 +01:00
John Darrington e766f699be gnu: gnupg: Fix cross-compile issues.
* gnu/packages/gnupg.scm (libgpg-error): Add gcc as a native input,
  and set the CC_FOR_BUILD variable.

* gnu/packages/gnupg.scm (libgcrypt): Add libgpg-error as a native input and
  set the --with-gpg-error-prefix configure option.

* gnu/packages/gnupg.scm (libksba): Add libgpg-error as a native input and
  set the --with-gpg-error-prefix configure option.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-12-15 22:31:18 +01:00
John Darrington 94e450812b gnu: openssl: Fix cross-compile issues.
* gnu/packages/openssl.scm (openssl): Move perl from inputs to
  native-inputs.
  Replace reference to target bash with the native bash or target bash as
  appropriate.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-12-15 22:31:18 +01:00
Andreas Enge 9b937137fb gnu: imagemagick: Add inputs.
* gnu/packages/imagemagick.scm (imagemagick): Add inputs fftw and lcms.
2013-12-15 01:15:49 +01:00
Andreas Enge d694a44cef gnu: imagemagick: Update to 6.8.7-9.
* gnu/packages/imagemagick.scm (imagemagick): Update to 6.8.7-9.
2013-12-15 00:19:09 +01:00
Andreas Enge f198ffd097 gnu: qt: Update to 5.2.0.
* gnu/packages/qt.scm (qt): Update to 5.2.0.
2013-12-14 23:49:27 +01:00
Mark H Weaver 6447738c01 guix package: allow multiple arguments after -i, -r, and -u.
* guix/scripts/package.scm (%options): Adapt option processors to accept and
  return a second seed value: 'arg-handler', which handles bare arguments (if
  not false).  The install, remove, and upgrade option processors return an
  arg-handler that repeat the same operation.  All other option processors
  return #f as the arg-handler.  Make the arguments to install and remove
  optional.  The upgrade option processor deletes (upgrade . #f) from the
  alist before adding a new entry.
  (guix-package): Procedures passed to 'args-fold*' accept the new seed value
  'arg-handler'.  The 'operand-proc' uses 'arg-handler' (if not false).

* doc/guix.texi (Invoking guix package): Update docs.

* tests/guix-package.sh: Add test.
2013-12-14 16:25:02 -05:00
John Darrington 5839958a8f gnu: libxml2: Fixed cross-compilation.
* gnu/packages/xml.scm (libxml2): assign "cross-libc"
  to the variable glibc.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-12-14 22:12:08 +01:00
Ludovic Courtès c94d01bab2 gnu: tzdata: Fix cross-compilation.
Reported by John Darrington <john@darrington.wattle.id.au>.

* gnu/packages/base.scm (tzdata): Use the 'source' keyword argument in
  phases rather than the "source" input.  This fixes cross-compilation.
2013-12-14 19:23:29 +01:00
Ludovic Courtès 52a79f1e73 pull: Compile guix/ files before gnu/ files.
* guix/scripts/pull.scm (unpack)[builder]: Build files under guix/
  before files under gnu/.
2013-12-14 16:48:38 +01:00
Ludovic Courtès ca6c4fa190 pull: Compile files in parallel.
* guix/scripts/pull.scm (unpack)[builder](compile-file*): Remove.
  (call-with-process, p-for-each): New procedures.  Use them to compile
  files in parallel.
2013-12-14 16:32:42 +01:00
Ludovic Courtès 0c2e1dd45d pull: Limit memory usage when compiling.
Reported by Arne Babenhauserheide <arne.babenhauserheide@kit.edu>.

* guix/scripts/pull.scm (unpack)[builder](compile-file*): Change to run
  'compile-file' in a child process.  This limits memory usage; before
  that memory usage was proportional to the number of files to compile.
2013-12-14 16:32:42 +01:00
Andreas Enge 98a046cd25 gnu: icecat: Further analyse the failure of using system libpng and libjpeg.
* gnu/packages/gnuzilla.scm (icecat): Add comments.
2013-12-14 13:51:54 +01:00
John Darrington e93c24df09 gnu: file: Fixed cross-compilation.
* gnu/packages/file.scm (file): [(eq? (%current-target-system) #f)] Add native-inputs.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-12-13 23:36:57 +01:00
Ludovic Courtès 1ae6df81db gnu: icecat: Build without debugging symbols; use some of the system libs.
* gnu/packages/gnuzilla.scm (icecat): Add 'native-inputs'.  Add bzip2,
  libevent, libffi, and zlib as inputs.  Add #:configure-flags.  Change
  'configure' phase to honor it.
2013-12-13 18:09:01 +01:00
Ludovic Courtès 2e5728318b gnu: idutils: Add Emacs as an input so idutils.el gets compiled and installed.
* gnu/packages/idutils.scm (idutils): Add Emacs to 'native-inputs'.
2013-12-13 18:09:01 +01:00
Ludovic Courtès 9ed1ba8ae2 gnu: global: Install the elisp file under $out/share/emacs/site-lisp.
* gnu/packages/global.scm (global)[arguments]: Add #:phases.
2013-12-13 18:09:01 +01:00
Andreas Enge 31f9322e6f gnu: ffmpeg: Check via "make fate".
* gnu/packages/patches/ffmpeg-check.patch: Drop patch.
* gnu-system.am (dist_patch_DATA): Unregister patch.
* gnu/packages/video.scm (ffmpeg): Drop patch and use "fate" as test target
    as recommended at http://trac.ffmpeg.org/ticket/3177#comment:11 .
* gnu/packages/video.scm
2013-12-13 11:32:25 +01:00
Ludovic Courtès a31f4d3557 gnu: libtasn1: Upgrade to 3.4.
* gnu/packages/gnutls.scm (libtasn1): Upgrade to 3.4.  Add
  'native-inputs' field.
2013-12-11 23:05:12 +01:00
Ludovic Courtès b29f947d22 build: Skip one 'package-source-derivation' test when networking is missing.
* tests/packages.scm ("package-source-derivation, snippet"): Skip when
  networking is missing.
2013-12-11 13:55:49 +01:00
Ludovic Courtès 8a43ff101e gnu: guix: Upgrade to 0.5.
* gnu/packages/package-management.scm (guix): Upgrade to 0.5.  Update
  the bootstrap binaries; add mips64el; add
  'guix-test-networking.patch'.
2013-12-11 13:55:17 +01:00
Ludovic Courtès e71998cd93 build: Bump to version 0.6.
* configure.ac: Switch to 0.6.
2013-12-11 13:53:03 +01:00
Ludovic Courtès 5d6dbd299e Update 'NEWS'. 2013-12-11 13:06:19 +01:00
Ludovic Courtès d862bf0fe9 build: Remove '..' from srcdir/builddir in 'pre-inst-env'.
* pre-inst-env.in (abs_top_srcdir, abs_top_builddir): New variables.
  Use them instead of @abs_top_srcdir@ and @abs_top_builddir@.
  This fixes the "package-field-location, relative file name" test in
  'make distcheck'.
2013-12-11 11:58:54 +01:00
Ludovic Courtès 68ad877c6b doc: Slightly improve the "System Configuration" node.
* doc/guix.texi (System Configuration): Add paragraph on upgrades and
  rollback, moved from "Using the Configuration System".
  (Using the Configuration System): Change variable name to
  'komputilo'.  Add xref to "Package Modules".
2013-12-11 10:47:55 +01:00
Ludovic Courtès 9afb63bb7f gnu: gdb: Upgrade to 7.6.2.
* gnu/packages/gdb.scm (gdb): Update to 7.6.2.
2013-12-11 01:25:39 +01:00
Ludovic Courtès 22dd04383d gnu: vm: Increase size of VM image.
* gnu/system/vm.scm (system-qemu-image): Add 'disk-image-size'
  parameter; increase it.
2013-12-11 01:10:41 +01:00
Ludovic Courtès 5c0f184536 store: Optimize 'store-path-package-name' and 'store-path-hash-part'.
* guix/store.scm (store-regexp*): New procedure.
  (store-path-package-name, store-path-hash-part): Use it.
2013-12-11 00:19:27 +01:00
Ludovic Courtès c61a5b4a6d store: Add tests for 'store-path-package-name'.
* tests/store.scm ("store-path-package-name", "store-path-package-name
  #f"): New tests.
2013-12-11 00:18:14 +01:00
Ludovic Courtès 0b7e8e9d49 Update '.po' files. 2013-12-10 23:06:29 +01:00
Andreas Enge 4a8c5617f9 NEWS: Small changes.
NEWS: Typos and very minor changes.
2013-12-10 22:14:23 +01:00
Ludovic Courtès a043ac04d9 Update 'NEWS'. 2013-12-10 21:53:59 +01:00
Ludovic Courtès 3141a8bdb3 gnu: Honor the operating system's locale and timezone.
* gnu/system.scm (etc-directory): Add 'locale' and 'timezone'
  parameters.  Set 'LC_ALL', 'TZ', and 'TZDIR' in /etc/profile.
  (operating-system-derivation): Adjust call accordingly.
* gnu/system/vm.scm (%demo-operating-system): Change locale to
  'en_US.UTF-8'.  Add TZDATA to 'packages'.
2013-12-10 21:46:59 +01:00
Ludovic Courtès dfb74e50b7 hydra: Add zlib, gzip, and xz to the core package set.
* build-aux/hydra/gnu-system.scm (%core-packages): Add zlib, gzip, and xz.
2013-12-10 13:56:26 +01:00
John Darrington e67253dbe2 gnu: compression: Fix cross-compilation of zlib.
* gnu/packages/compression.scm : Zlib uses a non-standard
  way of configuring for cross-compilation.  Thanks to Ludovic
  for showing me the correct way to fix this.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-12-10 13:55:35 +01:00
Ludovic Courtès 4af2447e37 doc: First stab at documenting whole-system configuration.
* doc/guix.texi (Features): Add xref to "Using the Configuration
  System".
  (System Configuration, Using the Configuration System, Defining
  Services): New nodes.
2013-12-10 00:24:02 +01:00
Ludovic Courtès 4f62d8d6c7 gnu: Allow a plain list of packages in 'operating-system'.
* gnu/system.scm (union): Allow (PACKAGE OUTPUT), (PACKAGE), and
  PACKAGE.
  (<operating-system>)[packages]: Make the default a list of package?
  objects.
* gnu/system/vm.scm (%demo-operating-system): Likewise.  Add a few
  packages.
2013-12-10 00:24:02 +01:00
Ludovic Courtès 78ed003811 gnu: Add 'inputs' field to <user-account>; make 'shell' a monadic value.
* gnu/system/shadow.scm (<user-account>)[inputs]: New field.
  (passwd-file): Bind the 'shell' field of each account.
* gnu/system/vm.scm (%demo-operating-system): Remove 'shell' field.
* gnu/system/dmd.scm (guix-build-accounts): Store a monadic value in
  'shell'.  Add 'inputs' field.
* gnu/system.scm (operating-system-derivation): Remove 'shell' field for
  'root' account.  Add all the 'user-account-inputs' to EXTRAS.
2013-12-10 00:24:02 +01:00
Ludovic Courtès 13ce0e3aa7 gnu: dmd: Avoid "already exists" error on startup.
* gnu/system/dmd.scm (dmd-configuration-file)[config]: Remove
  "/var/nix/gcroots/etc-directory" before trying to recreate it.
2013-12-10 00:24:02 +01:00
Ludovic Courtès 033adfe7e0 gnu: Add (gnu system).
* gnu/system/vm.scm (lower-inputs): Move to monads.scm.
  (qemu-image): Don't add GRUB-CONFIGURATION to the INPUTS-TO-COPY.
  (union, file-union, etc-directory): Move to gnu/system.scm.
  (%demo-operating-system): New variable.
  (system-qemu-image): Add 'os' parameter.  Rewrite in terms of
  'operating-system-derivation'.
* guix/monads.scm (lower-inputs): New procedure.
* gnu/system/grub.scm (grub-configuration-file): Change 'entries' to be
  a plain list instead of a list of monadic values.
* gnu/system.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2013-12-10 00:24:02 +01:00
Ludovic Courtès 593c3fe600 monads: Fix 'anym'.
* guix/monads.scm (anym): Fix successful case.
* tests/monads.scm ("anym"): New test.
2013-12-10 00:24:01 +01:00
Andreas Enge f7faff88b7 gnu: perl-xml-dom: Propagate inputs.
* gnu/packages/xml.scm (perl-xml-dom): Drop inputs that are obtained through
    propagation, propagate the other inputs.
2013-12-10 00:17:04 +01:00
Andreas Enge 7b81406a4f gnu: perl-libxml: Propagate input.
* gnu/packages/xml.scm (perl-libxml): Propagate input perl-xml-parser.
2013-12-10 00:13:08 +01:00
Andreas Enge f852114ed6 gnu: perl-http-message: Propagate input perl-http-date.
* gnu/packages/web.scm (perl-http-message): Propagate input perl-http-date.
* gnu/packages/web.scm (perl-http-cookies, perl-http-daemon): Drop input perl-http-date.
2013-12-10 00:06:02 +01:00
Andreas Enge d42daec07b gnu: perl-libwww: Propagate all inputs.
* gnu/packages/web.scm (perl-libwww): Drop inputs that appear through
    propagation, and propagate all others.
2013-12-09 23:59:11 +01:00
Andreas Enge 846972ebe5 gnu: perl-file-listing: Propagate input.
* gnu/packages/web.scm (perl-file-listing): Propagate input perl-http-date.
2013-12-09 23:49:22 +01:00
Andreas Enge 3adf588805 gnu: perl-www-robotrules: Propagate input.
* gnu/packages/web.scm (perl-www-robotrules): Propagate input perl-uri.
2013-12-09 23:47:00 +01:00
Andreas Enge d0bb5f77e9 gnu: perl-http-negotiate: Propagate input.
* gnu/packages/web.scm (perl-http-negotiate): Propagate input
    perl-http-message, drop input perl-uri (propagated by perl-http-message).
2013-12-09 23:45:02 +01:00
Andreas Enge 6e8cf5c9e0 gnu: perl-http-daemon: Propagate inputs.
* gnu/packages/web.scm (perl-http-daemon): Propagate inputs perl-http-date,
    perl-http-message and perl-lwp-mediatypes; drop input perl-uri
    (propagated by perl-http-message).
2013-12-09 23:42:25 +01:00
Andreas Enge 800de8da3b gnu: perl-http-cookies: Propagate inputs.
* gnu/packages/web.scm (perl-http-cookies): Propagate inputs perl-http-date
    and perl-http-message; drop input perl-uri (itself propagated from
    perl-http-message).
2013-12-09 23:38:10 +01:00
Andreas Enge daee66fc2e gnu: perl-http-message: Propagate input perl-uri.
* gnu/packages/web.scm (perl-http-message): Propagate input perl-uri,
    since "perl -MHTTP::Message" complains that it is missing.
2013-12-09 23:34:18 +01:00
Andreas Enge ad871fc600 gnu: Add perl-xml-dom.
* gnu/packages/xml.scm (perl-xml-dom): New variable.
2013-12-09 22:37:28 +01:00
Andreas Enge 374a9a8520 gnu: Add perl-libwww.
* gnu/packages/web.scm (perl-libwww): New variable.
2013-12-09 22:23:47 +01:00
Andreas Enge 09a8778f73 gnu: Add perl-encode-locale.
* gnu/packages/web.scm (perl-encode-locale): New variable.
2013-12-09 22:21:27 +01:00
Andreas Enge 56aa03b0c2 gnu: Add perl-file-listing.
* gnu/packages/web.scm (perl-file-listing): New variable.
2013-12-09 22:16:30 +01:00
Andreas Enge 15974e6358 gnu: Add perl-file-list.
* gnu/packages/perl.scm (perl-file-list): New variable.
2013-12-09 15:45:25 +01:00
Andreas Enge 9200c11009 build-system/perl: Honour phases argument in perl build system.
* guix/build-system/perl.scm (perl-build): Propagate phases argument to
    builder.
2013-12-09 13:50:58 +01:00
Andreas Enge 97ac64284d gnu: rcs: Update to 5.9.2.
* gnu/packages/version-control.scm (rcs): Update to 5.9.2.
2013-12-08 23:04:42 +01:00
Andreas Enge 201180e481 gnu: parallel: Update to 20131122.
* gnu/packages/parallel.scm (parallel): Update to 20131122.
2013-12-08 22:58:25 +01:00
Ludovic Courtès 9b0ac80258 gnu: Populate /etc upon startup.
* gnu/packages/patches/dmd-getpw.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/system.scm (dmd): Use it.
* gnu/system/vm.scm (system-qemu-image): Don't explicitly populate /etc;
  don't add ETC to the GC roots.
* gnu/system/dmd.scm (dmd-configuration-file): Add 'etc' parameter.
  [config]: Populate /etc from there.
2013-12-08 22:43:56 +01:00
Andreas Enge 677078b48f gnu: Add perl-net-http.
* gnu/packages/web.scm (perl-net-http): New variable.
2013-12-08 22:24:21 +01:00
Andreas Enge a3eb919fb4 gnu: Add perl-www-robotrules.
* gnu/packages/web.scm (perl-www-robotrules): New variable.
2013-12-08 22:18:58 +01:00
Andreas Enge e7444ee273 gnu: Add perl-http-negotiate.
* gnu/packages/web.scm (perl-http-negotiate): New variable.
2013-12-08 22:03:50 +01:00
Andreas Enge 77874f970e gnu: bison: Update to 3.0.2.
* gnu/packages/bison.scm (bison): Update to 3.0.2.
2013-12-08 21:54:49 +01:00
Andreas Enge 3f41e6b310 gnu: Add perl-http-daemon.
* gnu/packages/web.scm (perl-http-daemon): New variable.
2013-12-08 21:53:12 +01:00
Andreas Enge b3d18aff2f gnu: Add perl-http-cookies.
* gnu/packages/web.scm (perl-http-cookies): New variable.
2013-12-07 22:52:29 +01:00
Andreas Enge 91318a9e19 gnu: Add perl-http-message.
* gnu/packages/web.scm (perl-http-message): New variable.
2013-12-07 22:49:07 +01:00
Andreas Enge e426106bd1 gnu: Add perl-io-html.
* gnu/packages/web.scm (perl-io-html): New variable.
2013-12-07 22:47:40 +01:00
Andreas Enge 24b3c0533d gnu: Add perl-lwp-mediatypes.
* gnu/packages/web.scm (perl-lwp-mediatypes): New variable.
2013-12-07 22:42:18 +01:00
Andreas Enge fea5ebb106 gnu: Add perl-uri.
* gnu/packages/web.scm (perl-uri): New variable.
2013-12-07 22:36:02 +01:00
Andreas Enge ae2aa18dba gnu: Add perl-http-date.
* gnu/packages/web.scm (perl-http-date): New variable.
2013-12-07 22:24:53 +01:00
Andreas Enge 8ec0d3fbcf gnu: Add perl-html-parser.
* gnu/packages/web.scm (perl-html-parser): New variable.
2013-12-07 22:20:53 +01:00
Andreas Enge c9ea41ffd2 gnu: Add perl-html-tagset.
* gnu/packages/web.scm (perl-html-tagset): New variable.
2013-12-07 22:16:05 +01:00
Andreas Enge 7339fbe279 gnu: Rename perl-xml-parser-perlsax to perl-libxml.
* gnu/packages/xml.scm (perl-libxml): Rename from perl-xml-parser-perlsax.
2013-12-07 21:28:54 +01:00
Ludovic Courtès f7d6fafaa2 gnu: dmd: Add 'pam-services' field to <service>.
* gnu/system/dmd.scm (<service>)[pam-services]: New field.
  (mingetty-service): Add #:motd and #:allow-empty-passwords?
  parameters.  Add MOTD to 'inputs' field; add 'pam-services' field.
* gnu/system/vm.scm (system-qemu-image): Aggregate PAM entries from
  SERVICES.
2013-12-07 16:18:51 +01:00
Ludovic Courtès f0387dd167 gnu: vm: Fix inputs in 'file-union'.
* gnu/system/vm.scm (file-union): Filter out members of FILES that are
  outputs of INPUTS.
2013-12-07 16:16:01 +01:00
Ludovic Courtès 18fb40e414 gnu: dmd: Add 'user-accounts' and 'user-groups' fields to <service>.
* gnu/system/shadow.scm (guix-build-accounts): Move to...
* gnu/system/dmd.scm (guix-build-accounts): ... here.
  (<service>)[user-accounts, user-groups]: New fields.
  (guix-service): New #:build-user-id and #:build-accounts parameters.
  Use 'guix-build-accounts' and set the 'user-accounts' and
  'user-groups' fields accordingly.
* gnu/system/vm.scm (system-qemu-image): Remove use of
  'guix-build-accounts'.  Augment ACCOUNTS and GROUPS from what SERVICES
  demand.
2013-12-07 15:01:40 +01:00
Ludovic Courtès 25ed6edb6c doc: Adjust "Building from Git" instructions.
* HACKING (Building from Git): As a follow-up to ff1cbb9, update the
  error reported when pkg.m4 is missing.  Suggested by
  John Darrington <john@darrington.wattle.id.au>.
2013-12-07 12:12:41 +01:00
Ludovic Courtès a348b09ea9 gnu: Move /etc/resolv.conf handling to the networking service.
* gnu/system/vm.scm (etc-directory): Remove 'resolv.conf'.
  (system-qemu-image): Use 'static-networking-service' with
  #:name-servers.  Don't populate the image with /etc/resolv.conf.
* gnu/system/dmd.scm (static-networking-service): Add #:name-servers
  parameter.  Use it to populate /etc/resolv.conf.
2013-12-07 00:01:06 +01:00
Ludovic Courtès 0b8a376b68 gnu: vm: Factorize /etc creation.
* gnu/system/vm.scm (expression->derivation-in-linux-vm)[lower-inputs]:
  Move to top-level...
  (lower-inputs): ... here.  New variable.
  (file-union, etc-directory): New procedures.
  (system-qemu-image): Use 'etc-directory'; remove redundant code, and
  register the result of 'etc-directory' as a GC root.
2013-12-07 00:01:06 +01:00
Andreas Enge dc47b181da gnu: pulseaudio: Disable tests on mips64el.
* gnu/packages/pulseaudio.scm (pulseaudio): Drop tests also on mips64el.
2013-12-06 23:17:40 +01:00
Andreas Enge a2e520afbf gnu: Add perl-xml-regexp.
* gnu/packages/xml.scm (perl-xml-regexp): New variable.
2013-12-06 22:54:44 +01:00
Andreas Enge 1385ba4fd1 gnu: Add perl-xml-parser-perlsax.
* gnu/packages/xml.scm (perl-xml-parser-perlsax): New variable.
2013-12-06 22:50:12 +01:00
Andreas Enge 703d18e252 gnu: libmicrohttpd: Upgrade to 0.9.32.
* gnu/packages/gnunet.scm (libmicrohttpd): Upgrade to 0.9.32.
2013-12-06 00:29:53 +01:00
Andreas Enge 5642cecdde gnu: soprano: Add input raptor2.
* gnu/packages/rdf.scm (soprano): Add input raptor2.
2013-12-06 00:07:59 +01:00
Andreas Enge 2c4e4d2597 gnu: Add raptor2.
* gnu/packages/rdf.scm (raptor2): New variable.
2013-12-06 00:05:13 +01:00
Ludovic Courtès c01f767843 gnu: pulseaudio: Fix typo introduced in 76dcc99.
* gnu/packages/pulseaudio.scm (pulseaudio): Disable tests on i686.
  (pavucontrol): Remove 'arguments'.
2013-12-05 23:07:23 +01:00
Ludovic Courtès 14f550c31c monads: Remove erroneous comment.
* guix/monads.scm (sequence): Remove erroneous comment.
2013-12-05 23:05:13 +01:00
Ludovic Courtès 76dcc993f7 gnu: pulseaudio: Disable tests on i686.
* gnu/packages/pulseaudio.scm (pavucontrol): New 'arguments' field.
2013-12-05 22:50:38 +01:00
Ludovic Courtès de1355f186 build: Work around build problem on systems that lack (gnutls).
Reported at <https://lists.gnu.org/archive/html/guix-devel/2013-12/msg00002.html>.

* Makefile.am (MODULES): Shuffle modules to work around build failure
  on systems that lack the (gnutls) module.
2013-12-05 22:50:38 +01:00
Andreas Enge e7de5ac0d5 gnu: ffmpeg: Enable tests.
* gnu/packages/video.scm (ffmpeg): Add upstream patch and re-enable tests.
* gnu/packages/patches/ffmpeg-check.patch: New file.
* gnu-system.am (dist_patch_DATA): Register patch.
2013-12-05 21:43:41 +01:00
Ludovic Courtès 49d294e5c8 gnu: Move 'guile-ssh' to (gnu packages ssh).
Reported by John Darrington <john@darrington.wattle.id.au>.

* gnu/packages/guile.scm (guile-ssh): Move to...
* gnu/packages/ssh.scm (guile-ssh): ... here.  New variable.
  This fixes a circular dependency issue, as reported at
  <https://lists.gnu.org/archive/html/guix-devel/2013-12/msg00024.html>.
2013-12-04 22:24:28 +01:00
Ludovic Courtès f4badde3fa build-system/gnu: Fix reference to Gettext in 'dist-package'.
* guix/build-system/gnu.scm (dist-package): Change 'gettext' to
  'gnu-gettext'.
2013-12-04 21:43:55 +01:00
Ludovic Courtès dd1a5a152c derivations: Use more keyword parameters for 'build-expression->derivation'.
* guix/derivations.scm (build-expression->derivation): Turn 'system' and
  'inputs' into keyword parameters.
  Adjust callers accordingly.
* gnu/system/linux.scm, gnu/system/vm.scm, guix/build-system/cmake.scm,
  guix/build-system/gnu.scm, guix/build-system/perl.scm,
  guix/build-system/python.scm, guix/build-system/trivial.scm,
  guix/download.scm, guix/packages.scm, guix/profiles.scm,
  guix/scripts/pull.scm, tests/derivations.scm, tests/guix-build.sh,
  tests/monads.scm, tests/store.scm, tests/union.scm: Adjust users of
  'build-expression->derivation' and 'derivation-expression'
  accordingly.
* doc/guix.texi (Derivations): Adjust 'build-expression->derivation'
  documentation accordingly.
  (The Store Monad): Likewise for 'derivation-expression'.
2013-12-04 16:07:53 +01:00
Ludovic Courtès 7b63fa8d15 Augment 'gitignore'. 2013-12-04 16:07:53 +01:00
Ludovic Courtès 279fef2e45 nls: Add Vietnamese translation.
* po/vi.po: New file.
* po/LINGUAS: Add 'vi'.
2013-12-04 16:07:53 +01:00
Ludovic Courtès e060ec3eb0 Update 'eo.po'. 2013-12-04 16:07:53 +01:00
Andreas Enge b0a552e30b gnu: ffmpeg: Disable tests.
* gnu/packages/video.scm (ffmpeg): Disable tests, see
    https://trac.ffmpeg.org/ticket/3177 .
2013-12-04 08:15:31 +01:00
Ludovic Courtès 595801e2f4 gnu: Add Guile-SSH.
* gnu/packages/guile.scm (guile-ssh): New variable.
2013-12-04 00:30:08 +01:00
Ludovic Courtès deed349b4a gnu: libssh: Add $libdir to RUNPATH of libssh_threads.so.
* gnu/packages/ssh.scm (libssh)[arguments]: Add #:phases, #:modules, and
  #:imported-modules.
  [native-inputs]: New field.
2013-12-04 00:29:19 +01:00
Ludovic Courtès 799dcdc48f gnu: Improve synopses in vpn.scm.
* gnu/packages/vpn.scm (vpnc): Shorten synopsis, and fix spelling.
  (openconnect): Fix synopsis spelling.
2013-12-04 00:00:19 +01:00
Ludovic Courtès 4095b41308 gnu: Add missing copyright line.
* gnu/packages/vpn.scm: Add copyright line lost in commit 7af8a9b.
2013-12-03 23:59:22 +01:00
Ludovic Courtès 136b008fe7 gnu: patchelf: Shorten synopsis.
* gnu/packages/patchelf.scm (patchelf): Shorten synopsis.
2013-12-03 23:57:48 +01:00
Eric Bavier 97aed46fa3 Add GNU Serveez
* gnu/packages/serveez.scm: New file
* gnu-system.am (GNU_SYSTEM_MODULES): Add it

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-12-03 23:47:32 +01:00
John Darrington addfc3fc02 gnu: Add mtools.
* gnu/packages/mtools.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-12-03 23:33:00 +01:00
Eric Bavier 889a87f08c gnu: Add gnu-pw-mgr
* gnu/packages/gnu-pw-mgr.scm: New file
* gnu-system.am (GNU_SYSTEM_MODULES): Add it

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-12-03 22:07:23 +01:00
Ludovic Courtès 7af8a9b7ba gnu: Move GVPE to vpn.scm.
* gnu/packages/vpn.scm (gvpe): New variable, moved from...
* gnu/packages/gvpe.scm: ... here.  Remove.
* gnu-system.am (GNU_SYSTEM_MODULES): Remove 'gvpe.scm'.
2013-12-03 22:07:00 +01:00
Ludovic Courtès 901eee2c4c gnu: Add Guile-WM.
* gnu/packages/guile-wm.scm (guile-wm): New variable.
2013-12-03 22:05:13 +01:00
Ludovic Courtès 4d5f0bae3e gnu-maintenance: Ignore "redirect" blurbs.
* guix/gnu-maintenance.scm (official-gnu-packages)[official-description]:
  Return #f for blurbs that start with "redirect ".
2013-12-03 21:33:55 +01:00
Ludovic Courtès f5a345adeb gnu: dmd: Update start/stop of standard service definitions.
* gnu/system/dmd.scm (mingetty-service): Add 'stop' field.
  (nscd-service): Run with '--foreground'.  Change 'stop' to use
  'make-kill-destructor'.
  (syslog-service): Run with '--no-detach'; change 'stop' similarly.
  (guix-service): Likewise for 'stop'.
  (static-networking-service): Remove 'sleep' call from 'start'.  Change
  'stop' to return #f when networking was actually stopped.
2013-12-02 23:38:49 +01:00
Ludovic Courtès 2941448ea8 gnu: dmd: Upgrade to 0.1.
* gnu/packages/system.scm (dmd): Upgrade to 0.1.  Move PKG-CONFIG to
  'native-inputs'.
2013-12-02 23:35:12 +01:00
Ludovic Courtès 0af626ff0f gnu: Add Guile-XCB.
* gnu/packages/guile-wm.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2013-12-02 23:25:59 +01:00
John Darrington e6a5ce8e67 gnu: pspp: Enabled build of the gui
* gnu/packages/math.scm (pspp): Removed the --without-gui flag
and added the necessary inputs to build it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-12-02 13:51:02 +01:00
John Darrington 95d439b24c gnu: Add GtkSourceView.
* gnu/packages/gtk.scm (gtksourceview): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-12-02 13:50:43 +01:00
Ludovic Courtès 79c311b81c gnu: Synchronize descriptions with 'gnumaint'. 2013-12-01 22:33:23 +01:00
gzg e6a9aa366e Update references from Guy's old name 2013-11-29 14:21:36 +01:00
Ludovic Courtès 1681cd4a24 gnu: Add libssh.
* gnu/packages/ssh.scm (libssh): New variable.
2013-11-28 00:15:07 +01:00
Ludovic Courtès 977f03ffd3 build-system/cmake: Build out of source tree by default.
* guix/build-system/cmake.scm (cmake-build): Change 'out-of-source?' to
  default to #t.
* guix/build/cmake-build-system.scm (configure): Add 'out-of-source?'
  keyword parameter and honor it.
2013-11-28 00:15:07 +01:00
Ludovic Courtès b4f0bb1771 gnu: dmd: Add service documentation.
* gnu/system/dmd.scm (<service>): Add 'documentation' field.
  (host-name-service, mingetty-service, nscd-service, syslog-service,
  static-networking-service): Provide a 'documentation' value.
  (dmd-configuration-file): Use it.
2013-11-28 00:15:07 +01:00
Ludovic Courtès b455a11868 gnu: qemu/smb-shares: Keep the original patches.
* gnu/packages/qemu.scm (qemu/smb-shares): Keep the patches from
  QEMU-HEADLESS.
2013-11-28 00:15:07 +01:00
Andreas Enge c1897890ea gnu: luit: Accomodate stricter warnings of gcc-4.8.
* gnu/packages/patches/luit-posix.patch: New file.
* gnu-system.am (dist_patch_DATA): Register patch.
* gnu/packages/xorg.scm (luit): Apply patch.
2013-11-27 22:52:42 +01:00
Andreas Enge d02196a7b3 gnu: ffmpeg: Update to 2.1.1.
* gnu/packages/video.scm (ffmpeg): Update to 2.1.1.
2013-11-27 22:37:29 +01:00
Ludovic Courtès 079fd3ec63 gnu: qemu: Upgrade to 1.6.1.
* gnu/packages/patches/qemu-make-4.0.patch: New file.
* gnu/packages/qemu.scm (qemu-headless): Use it.  Upgrade to 1.6.1.
* gnu-system.am (dist_patch_DATA): Add it.
2013-11-26 23:55:04 +01:00
Ludovic Courtès df8a09c708 gnu: mit-krb5: Build with GCC 4.7.
* gnu/packages/mit-krb5.scm (mit-krb5): Make BISON and PERL native
  inputs.  Add GCC-4.7 as a native input.
2013-11-26 22:31:22 +01:00
Ludovic Courtès de6792699e substitute-binary: Work around Guile 2.0.5's broken 'n-par-map'.
* guix/scripts/substitute-binary.scm (n-par-map*): New procedure.
  (guix-substitute-binary): Use it instead of 'n-par-map'.
  Reported by Nikita Karetnikov and Eric Bavier.
2013-11-26 22:20:39 +01:00
Ludovic Courtès 0edfdb8924 Add Guy to 'AUTHORS'. 2013-11-26 22:12:43 +01:00
Ludovic Courtès a8300ef9fd gnu: xmodmap: Add patch to allow builds with GCC 4.8.
* gnu/packages/patches/xmodmap-asprintf.patch: New file.
* gnu/packages/xorg.scm (xmodmap): Use it.
* gnu-system.am (dist_patch_DATA): Add it.
2013-11-26 00:20:58 +01:00
Andreas Enge 07cec9a5b9 gnu: Correct typo in previous commit.
* gnu/packages/rdf.scm: Name module rdf.
2013-11-25 23:14:07 +01:00
Andreas Enge c079848873 gnu: Add soprano.
* gnu/packages/rdf.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add module.
2013-11-25 23:10:30 +01:00
gzg 4aa0891cd2 gnu: Add SLiM.
* gnu/packages/slim.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-11-25 22:54:32 +01:00
Ludovic Courtès 5fd7f3e015 gnu: iproute2: Upgrade to 3.12.0.
* gnu/packages/linux.scm (iproute): Upgrade to 3.12.0.
2013-11-25 18:51:24 +01:00
Ludovic Courtès 2e1f5bcac1 gnu: {binutils,bash,gnu-make}-final are private.
* gnu/packages/base.scm (binutils-final, bash-final, gnu-make-final):
  Use 'define', not 'define-public'.
2013-11-24 23:01:33 +01:00
Ludovic Courtès aad560a56f list-packages: Make 'snippet-link' more tolerant.
* build-aux/list-packages.scm (package->sxml)[snippet-link]: If
  'package-field-location' returns #f, use 'package-location.
2013-11-24 22:57:06 +01:00
Ludovic Courtès 840f71cdfc Add John to 'AUTHORS'. 2013-11-24 18:32:55 +01:00
John Darrington 0ed873f3f6 gnu: pixman: Upgrade to 0.32.4.
* gnu/packages/xorg.scm (pixman): Upgrade to 0.32.4.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-11-24 18:32:05 +01:00
Ludovic Courtès b874f305e5 guix package: Honor the current output when upgrading.
* guix/scripts/package.scm (specification->package+output): Pass OUTPUT
  to 'package-specification->name+version+output'.
2013-11-24 15:30:06 +01:00
Ludovic Courtès 53c85e97dc Merge branch 'core-updates'
Conflicts:
	gnu/packages/gnunet.scm
2013-11-23 22:30:10 +01:00
Ludovic Courtès c320011da5 doc: List the supported platforms.
* doc/guix.texi (GNU Distribution): List the supported platforms.
2013-11-23 22:26:13 +01:00
Ludovic Courtès cd143df018 gnu: net-tools: Adjust to removal of the 'patch' phase.
* gnu/packages/linux.scm (net-tools): Adjust to removal of the 'patch'
  phase.  Reported by Mark H. Weaver <mhw@netris.org>.
2013-11-23 22:17:48 +01:00
Andreas Enge 2e838890ff gnu: libextractor: Add input.
* gnu/packages/gnunet.scm (libextractor): Add input exiv2.
2013-11-23 18:30:07 +01:00
Ludovic Courtès 4942d42a94 gnu: qemu: Add GUI version.
* gnu/packages/qemu.scm (qemu): Rename to...
  (qemu-headless): ... this.
  (qemu/smb-shares): Inherit from it.
  (qemu): New variable.
* gnu/packages/grub.scm (qemu-for-tests): Inherit from QEMU-HEADLESS.
2013-11-23 18:21:44 +01:00
Ludovic Courtès 558a5122fa gnu: sdl: Propagate libx11.
* gnu/packages/sdl.scm (sdl): Propagate LIBX11.
  (sdl-gfx, sdl-ttf): Remove LIBX11 from 'inputs'.
2013-11-23 18:21:44 +01:00
Ludovic Courtès ff1cbb9538 build: Make sure pkg.m4 is present.
Suggested by John Darrington <john@darrington.wattle.id.au>.

* configure.ac: Forbid occurrences of 'PKG_CHECK_MODULES' in the
  output.
2013-11-23 18:21:44 +01:00
Andreas Enge 248c06454e gnu: libextractor: Add optional inputs.
* gnu/packages/gnunet.scm (libextractor): Add inputs ffmpeg and gstreamer.
2013-11-23 18:16:03 +01:00
Ludovic Courtès 0ece707470 gnu: make-bootstrap: Add missing inputs for Canadian cross of '%gcc-static'.
* gnu/packages/make-bootstrap.scm (%gcc-static): Add 'native-inputs'
  field.
2013-11-23 16:07:29 +01:00
David Thompson 5cf3bcd4fb gnu: Add SDL extension libraries.
* gnu/packages/sdl.scm (sdl-gfx, sdl-image, sdl-mixer, sdl-net, sdl-ttf): New
  variables.
2013-11-23 08:50:30 -05:00
Ludovic Courtès 023fef7d94 gnu: Add PowerTOP.
* gnu/packages/linux.scm (powertop): New variable.
2013-11-22 22:55:06 +01:00
Ludovic Courtès 3cc2067523 gnu: Add libnl.
* gnu/packages/linux.scm (libnl): New variable.
2013-11-22 22:50:17 +01:00
Ludovic Courtès d321bf4c27 gnu: apl: Adjust to gettext renaming.
* gnu/packages/apl.scm (apl): Use GNU-GETTEXT.
2013-11-21 00:21:12 +01:00
Ludovic Courtès a2b154d7cb hydra: Adjust to gettext package rename.
* build-aux/hydra/gnu-system.scm (%core-packages): Change 'gettext' to
  'gnu-gettext'.
2013-11-20 23:55:38 +01:00
Ludovic Courtès edae5b3d50 Merge branch 'master' into core-updates
Conflicts:
	guix/packages.scm
2013-11-20 23:51:26 +01:00
Ludovic Courtès 1dba64079c gnu: gettext: Rename binding to 'gnu-gettext'.
* gnu/packages/gettext.scm (gettext): Rename to...
  (gnu-gettext): ... this.  This is used to work around the circular
  dependency introduced in commit c42a4b7, which users with a #:renamer
  cannot cope with.
* gnu/packages/acl.scm, gnu/packages/attr.scm, gnu/packages/cdrom.scm,
  gnu/packages/fdisk.scm, gnu/packages/gkrellm.scm, gnu/packages/glib.scm,
  gnu/packages/gnunet.scm, gnu/packages/grub.scm, gnu/packages/linux.scm,
  gnu/packages/maths.scm, gnu/packages/nano.scm, gnu/packages/parted.scm,
  gnu/packages/system.scm, gnu/packages/version-control.scm,
  gnu/packages/vpn.scm, gnu/packages/w3m.scm, gnu/packages/wget.scm:
  Adjust accordingly.
2013-11-20 22:12:49 +01:00
Eric Bavier e3aaefe71b gnu: Add GNU Parallel.
* gnu/packages/parallel.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-11-20 19:03:46 +01:00
Ludovic Courtès 5dfd5b82c2 build-system/python: Add #:test-target parameter.
* guix/build-system/python.scm (python-build): Add #:test-target
  parameter.  Reported by Eric Bavier <ericbavier@gmail.com>.
2013-11-20 19:03:26 +01:00
Ludovic Courtès 953ab5030f gnu: make-bootstrap: Simplify '%gcc-static'.
* gnu/packages/make-bootstrap.scm (%gcc-static): Add a bunch of
  --disable configure flags.  Remove useless 'inputs' field.
2013-11-20 19:01:27 +01:00
David Thompson 8bf8d7c78f gnu: Add SDL and SDL2.
* gnu/packages/sdl.scm (sdl, sdl2): New variables.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-11-20 12:08:34 +01:00
Ludovic Courtès 8d9865df14 gnu: autogen: Upgrade to 5.18.2.
* gnu/packages/autogen.scm (autogen): Upgrade to 5.18.2.
2013-11-19 23:47:04 +01:00
Ludovic Courtès 4cec7feeee gnu: bison: Upgrade to 3.0.1.
* gnu/packages/bison.scm (bison): Upgrade to 3.0.1.
2013-11-19 23:46:35 +01:00
Ludovic Courtès c3af0bf243 gnu: hello: Upgrade to 2.9.
* gnu/packages/base.scm (hello): Upgrade to 2.9.  Remove 'arguments' and
  'inputs' fields, which were never needed.
2013-11-19 23:25:35 +01:00
Ludovic Courtès 1635658d69 gnu: libextractor: Upgrade to 1.2.
* gnu/packages/gnunet.scm (libextractor): Upgrade to 1.2.
2013-11-19 23:24:40 +01:00
Ludovic Courtès 6f0856ba80 gnu: freeipmi: Upgrade to 1.3.3.
* gnu/packages/freeipmi.scm (freeipmi): Upgrade to 1.3.3.
2013-11-19 23:23:12 +01:00
Ludovic Courtès 740c24dffc gnu: rcs: Upgrade to 5.9.1.
* gnu/packages/version-control.scm (rcs): Upgrade to 5.9.1.  Add ed as
  an input.
2013-11-19 23:22:03 +01:00
Ludovic Courtès 5ab48b08f0 gnu: lightning: Upgrade to 2.0.2.
* gnu/packages/lightning.scm (lightning): Upgrade to 2.0.2.
2013-11-19 23:20:26 +01:00
Ludovic Courtès 257f56017e gnu: linux-libre: Upgrade to 3.12.
* gnu/packages/linux.scm (linux-libre): Upgrade to 3.12.
2013-11-19 22:39:12 +01:00
Ludovic Courtès 30e457501d gnu: vm: Really create a QCOW2-format image.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Pass "-f
  qcow2" to 'qemu-img create'.
2013-11-19 00:03:29 +01:00
Ludovic Courtès d03bb6532c doc: Link to package-list.html.
* doc/guix.texi (GNU Distribution): Add link to package-list.html.
2013-11-19 00:02:41 +01:00
Ludovic Courtès a2543006f8 list-packages: Produce link to the origin snippet, if any.
* build-aux/list-packages.scm (package->sxml)[patches](snippet-link):
  New procedure.
  Use it to produce a link to the 'origin-snippet', if any.
2013-11-19 00:01:46 +01:00
Ludovic Courtès 0b8749b7bd packages: 'package-field-location' returns a relative file name.
* guix/packages.scm (package-field-location): Set
  %FILE-PORT-NAME-CANONICALIZATION.
* tests/packages.scm ("package-field-location, relative file name"): New
  test.
2013-11-18 23:56:07 +01:00
Ludovic Courtès ac5de156ae guix build: '-e' can be passed a monadic thunk.
* guix/ui.scm (read/eval): New procedure.
  (read/eval-package-expression): Use it.
* guix/scripts/build.scm (derivations-from-package-expressions): Rename to...
  (derivation-from-expression): ... this.  Accept procedures, under the
  assumption that they are monadic thunk.
  (show-help): Adjust accordingly.
  (guix-build): Ditto.
* tests/guix-build.sh: Add test.
* doc/guix.texi (Invoking guix build): Augment description of '-e'.
2013-11-18 23:08:20 +01:00
Ludovic Courtès e900c5031f doc: Mention Linux containers; emphasize reproducible builds.
* doc/guix.texi (Introduction): Use "containers" instead of "chroots".
  (Invoking guix-daemon): Add @cindex entries.  Mention the Linux
  container features.
  (Features): Add sentence on build reproducibility.
2013-11-18 22:07:29 +01:00
Andreas Enge f392980041 gnu: pspp: Add input cairo.
* gnu/packages/maths.scm (pspp): Add cairo and further necessary inputs.
* gnu/packages/patches/pspp-tests.patch: New file, thanks to
  John Darrington <john@darrington.wattle.id.au>.
* gnu-system.am (dist_patch_DATA): Register patch.
2013-11-18 21:12:27 +01:00
Andreas Enge c42a4b76c4 gnu: gettext: Enable "xgettext --language=glade".
* gnu/packages/gettext.scm (gettext): Add input expat, explicitly link with it.
2013-11-18 21:11:49 +01:00
Ludovic Courtès a7bf595fff gnu: gcc: Really always link against libgcc_s.so.
* gnu/packages/gcc.scm (gcc-4.7): Add snippet to add -lgcc_s to the
  "lib" spec.  Remove --as-needed trick from 65d3b7c: it had no effect
  in cases where we have !static-libgcc && !shared-libgcc.
2013-11-18 14:06:47 +01:00
Ludovic Courtès 0129c94832 gnu: gettext: Upgrade to 0.18.3.1.
* gnu/packages/gettext.scm (gettext): Upgrade to 0.18.3.1.
2013-11-18 00:20:56 +01:00
Ludovic Courtès 65d3b7c31d gnu: gcc: Always link against libgcc_s.so.
* gnu/packages/gcc.scm (gcc-4.7)[pre-configure]: Add snippet to #undef
  USE_LD_AS_NEEDED.
2013-11-18 00:09:45 +01:00
Ludovic Courtès 9ca8b5ac55 gnu: tar: Upgrade to 1.27.1.
* gnu/packages/base.scm (tar): Upgrade to 1.27.1.
2013-11-18 00:07:35 +01:00
Ludovic Courtès 13990c7343 gnu: glibc: Really disable 'ldconfig' and /etc/ld.so.cache.
* gnu/packages/base.scm (glibc): Add 'snippet' to set use_ldconfig=no.
  Remove "glibc-no-ld-so-cache.patch"; that patch would still build
  'ldconfig', and ld.so would still contain ld.so.cache-related code,
  and would look for info in /etc/etc/ld.so.cache (sic).
* gnu/packages/patches/glibc-no-ld-so-cache.patch: Remove.
* gnu-system.am (dist_patch_DATA): Adjust accordingly.
2013-11-16 23:14:28 +01:00
Ludovic Courtès 127ed6a9dd tests: Adjust to bootstrap tarball updates.
Reported by Mark H. Weaver <mhw@netris.org>.

* tests/packages.scm ("package-source-derivation, snippet"): Change to
  "guile-2.0.9.tar.xz".
* tests/union.scm ("union-build"): Check or include/c++ being a symlink.
2013-11-16 22:10:03 +01:00
Ludovic Courtès 8db351e338 doc: Improve "Installing Guix from Guix" section.
Reported by Mark H. Weaver <mhw@netris.org>.

* README (Installing Guix from Guix): Explicitly mention $PATH
  separately.  Mention $ACLOCAL_PATH, not $ACLOCAL.  Give the exact
  command to install the dependencies.  Remove mention of
  $GUIX_LD_WRAPPER_ALLOW_IMPURITIES, which is no longer needed.
2013-11-16 21:56:44 +01:00
Ludovic Courtès c6061db21e gnu: cflow: Install Emacs mode.
* gnu/packages/cflow.scm (cflow): Add Emacs as an input.
2013-11-16 21:56:41 +01:00
Ludovic Courtès 0621349858 gnu: Switch to GCC 4.8 as the default compiler.
* build-aux/download.scm (file-name->uri): Update URL to /20131110.
* gnu-system.am (nodist_bootstrap_x86_64_linux_DATA,
  nodist_bootstrap_i686_linux_DATA): Change base name to
  'guile-2.0.9.tar.xz'.
  (gnu/packages/bootstrap/x86_64-linux/guile-2.0.9.tar.xz,
  gnu/packages/bootstrap/i686-linux/guile-2.0.9.tar.xz): New targets.
  (gnu/packages/bootstrap/x86_64-linux/guile-2.0.7.tar.xz,
  gnu/packages/bootstrap/i686-linux/guile-2.0.7.tar.xz): Remove.
  (gnu/packages/bootstrap/mips64el-linux/guile-2.0.9.tar.xz): Update
  hash.
* gnu/packages/base.scm (gcc-boot0): Base upon GCC-4.8.  Enable C++, and
  add a few --disable flags.  Remove MPFR workaround.
  (cross-gcc-wrapper): Base upon GCC-4.8.  Wrap both 'gcc' and 'g++'.
  (libstdc++): New variable.
  (gcc-final): Add it as an input; pass corresponding -I and -L flags.
* gnu/packages/bootstrap.scm (%bootstrap-guile): Always use
  "guile-2.0.9.tar.xz.
  (%bootstrap-coreutils&co): Update hashes.
  (%bootstrap-binutils): Update URL and hashes.
  (%bootstrap-glibc): Likewise.
  (%bootstrap-gcc): Likewise.
* gnu/packages/gcc.scm (gcc-4.7): Add LDFLAGS.
  Add --disable-libstdcxx-pch.
  Modify the GNU_USER*_SPEC macros from gnu-user*.h instead of the raw
  _SPEC macros.
2013-11-16 00:48:31 +01:00
Ludovic Courtès c509bf8c87 substitute-binary: Adjust timeout handling for Guile > 2.0.9.
* guix/scripts/substitute-binary.scm (with-timeout): Update comment to
  mention the fix's commit ID.
  (fetch): In the 'with-timeout' handler, close PORT only one Guile
  versions < 2.0.9.39.  Before that, on Guile >= 2.0.9.39, the HTTP
  client would end up trying to read from a closed file descriptor.
2013-11-14 01:09:07 +01:00
Ludovic Courtès a716e36de9 derivations: Allow 'map-derivations' to replace sources.
* guix/derivations.scm (map-derivation)[input->output-paths]: Allow
  non-derivation inputs.
  Allow replacements to be store files.  Replace in SOURCES too.
* tests/derivations.scm ("map-derivation, sources"): New test.
2013-11-13 11:22:07 +01:00
Ludovic Courtès f80594cc41 packages: Suitably cope with indirect store paths as package sources.
* guix/packages.scm (package-source-derivation): Don't let indirect
  store paths pass through.
* tests/packages.scm ("package-source-derivation, indirect store path"):
  New test.
2013-11-13 00:29:05 +01:00
Ludovic Courtès 9336e5b5e7 store: Make 'direct-store-path?' public.
* guix/store.scm (direct-store-path?): New procedure.
* guix/derivations.scm (derivation)[direct-store-path?]: Remove.
* tests/store.scm ("direct-store-path?"): New test.
2013-11-13 00:29:05 +01:00
Ludovic Courtès e387ab7c10 derivations: Add 'map-derivation'.
* guix/derivations.scm (map-derivation): New procedure.
* tests/derivations.scm ("map-derivation"): New test.
2013-11-13 00:29:05 +01:00
Ludovic Courtès 56b943de6e utils: Add 'string-replace-substring'.
* guix/utils.scm (string-replace-substring): New procedure.  Based on
  code by Mark H. Weaver.
* tests/utils.scm ("string-replace-substring"): New test.
2013-11-13 00:29:05 +01:00
Andreas Enge be0f611208 gnu: Add IceCat.
* gnu/packages/gnuzilla.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2013-11-12 22:17:45 +01:00
Nikita Karetnikov f3463cafce gnu: Add GNU APL.
* gnu/packages/apl.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2013-11-12 01:30:07 +00:00
Ludovic Courtès bf4211523b guix build: Add '--log-file'.
* guix/scripts/build.scm (show-help): Add '--log-file'.
  (%options): Likewise.
  (guix-build): Set %FILE-PORT-NAME-CANONICALIZATION.  Honor '--log-file'.
* tests/guix-build.sh: Add '--log-file' tests.
* doc/guix.texi (Invoking guix build): Document '--log-file'.
2013-11-12 01:06:45 +01:00
Ludovic Courtès eddd4077a5 store: Add 'log-file' procedure.
* guix/store.scm (log-file): New procedure.
* tests/store.scm ("log-file, derivation", "log-file, output file
  name"): New tests.
2013-11-12 01:06:45 +01:00
Andreas Enge 08184ebf16 gnu: Add phonon.
* gnu/packages/kde.scm (phonon): New variable.
2013-11-11 21:56:07 +01:00
Andreas Enge 206a52089a gnu: qt: Enable SIMD instructions available on x86_64.
* gnu/packages/qt.scm (qt, qt-4): Enable mmx, 3dnow, sse and sse2 on x86_64.
2013-11-11 19:16:03 +01:00
Ludovic Courtès a6c116c703 gnu: Add GVPE.
* gnu/packages/gvpe.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2013-11-11 01:28:10 +01:00
Ludovic Courtès d277bdeab9 gnu: Add GNU complexity.
* gnu/packages/complexity.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2013-11-11 00:29:09 +01:00
Ludovic Courtès 9ed08d1fd4 nls: Add Serbian translation.
* po/sr.po: New file.
* po/LINGUAS: Add 'sr'.
2013-11-09 18:00:03 +01:00
Ludovic Courtès 50dc48922c substitute-binary: Increase lookup concurrency to reduce latency.
* guix/scripts/substitute-binary.scm (%lookup-threads): New variable.
  (guix-substitute-binary): Use 'n-par-map' instead of 'par-map' for
  batch 'lookup-narinfo' calls.
2013-11-08 22:47:02 +01:00
Ludovic Courtès 7db9608d52 Merge branch 'master' into core-updates
Conflicts:
	guix/packages.scm
2013-11-08 21:58:09 +01:00
Ludovic Courtès 6a9957545c gnu: lapack: Use origin snippet to remove the non-free files.
* gnu/packages/maths.scm (lapack): Add 'snippet' field with contents of
  former 'remove-non-free-files' phase; remove that phase.
2013-11-07 23:07:45 +01:00
Ludovic Courtès f9cc897105 packages: Add a 'snippet' field to <origin>.
* guix/packages.scm (<origin>): Add 'snippet', 'modules', and
  'imported-modules' fields.
  (patch-and-repack): Make 'inputs' a keyword parameter.  Add 'snippet',
  'modules', and 'imported-modules' parameters.  Accept SOURCE as a raw
  file name.  Insert SNIPPET in BUILDER.  Pass IMPORTED-MODULES to
  'build-expression->derivation'.
  (package-source-derivation): Pass the extra arguments to
  'patch-and-repack'.
* tests/packages.scm ("package-source-derivation, snippet"): New test.
* doc/guix.texi (Defining Packages): Mention the 'patches' and 'snippet'
  fields.
  (Invoking guix build): Tell that --source has patches and snippets
  applied.
  (Software Freedom): Mention packages that contain non-free code.
2013-11-07 22:57:30 +01:00
Ludovic Courtès 18f2887bff doc: Document current security issue with substitutes.
Suggested by Mark H. Weaver <mhw@netris.org>.

* doc/guix.texi (Features): Add note about unauthenticated binaries.
2013-11-07 22:18:24 +01:00
Ludovic Courtès b5385b528c doc: Improve documentation of '--no-substitutes'.
Suggested by Mark H. Weaver <mhw@netris.org>.

* doc/guix.texi (Invoking guix package): Spell out the --no-substitutes
  documentation.
  (Invoking guix build): Use the more complete --no-substitutes
  documentation.
  (Invoking guix-daemon): Explain the interaction with what clients ask
  for.
2013-11-07 22:17:15 +01:00
Nikita Karetnikov da95c8170a gnu: Add LAPACK.
* gnu/packages/maths.scm (lapack): New variable.
2013-11-07 08:20:11 +00:00
Ludovic Courtès 35ef363300 Add indentation rule for 'origin'. 2013-11-07 00:18:20 +01:00
Ludovic Courtès 01e82af55f tests: Fix max-silent-time test.
* tests/derivations.scm ("build-expression->derivation and
  max-silent-time"): Use STORE instead of %STORE.  Change BUILDER to
  succeed by default.  Return #f when no exception is raised.
2013-11-04 23:41:33 +01:00
Ludovic Courtès bde2d9cf8d tests: Add the builder as an input to raw derivations.
* tests/derivations.scm ("build derivation with 1 source",
  "derivation with local file as input",
  "derivation with a fixed-output input",
  "multiple-output derivation",
  "multiple-output derivation, non-alphabetic order",
  "user of multiple-output derivation"): Add %BASH as an input, needed
  in chroot builds.
2013-11-04 23:06:13 +01:00
Mark H Weaver 7a78cc7af2 gnu: mit-krb5: don't assume arguments are evaluated right-to-left.
* gnu/packages/patches/mit-krb5-init-fix.patch: New file.
* gnu/packages/mit-krb5.scm (mit-krb5): Apply patch at the end of the custom
  unpack phase.
* gnu-system.am (dist_patch_DATA): Add patch.
2013-11-04 13:38:06 -05:00
Mark H Weaver 2ebab8e909 Add mips64el-linux to the list of supported systems.
* m4/guix.m4 (GUIX_ASSERT_SUPPORTED_SYSTEM): Add mips64el-linux to the list of
  supported systems.
2013-11-03 23:26:58 -05:00
Mark H Weaver f57ff219ad gnu: add bootstrap support for mips64el-linux using the MIPS N32 ABI.
* .gitignore: Add entry for bootstrap/mips64el-linux/guile-2.0.9.tar.xz.

* gnu-system.am (bootstrap_mips64el_linuxdir,
  dist_bootstrap_mips64el_linux_DATA, nodist_bootstrap_mips64el_linux_DATA):
  New variables.
  (DISTCLEANFILES): Add $(nodist_bootstrap_mips64el_linux_DATA).
  (gnu/packages/bootstrap/mips64el-linux/guile-2.0.9.tar.xz): New target.

* build-aux/download.scm (file-name->uri): Adapt to the newer mips64el-linux
  bootstrap tarballs.

* gnu/packages/bootstrap.scm (%bootstrap-guile, %bootstrap-coreutils&co,
  %bootstrap-binutils, %bootstrap-glibc, %bootstrap-gcc): Adapt to the newer
  mips64el-linux bootstrap tarballs.

* gnu/packages/bootstrap/mips64el-linux/bash:
* gnu/packages/bootstrap/mips64el-linux/mkdir:
* gnu/packages/bootstrap/mips64el-linux/tar:
* gnu/packages/bootstrap/mips64el-linux/xz: New files.
2013-11-03 23:26:53 -05:00
Mark H Weaver c5916538fd gnu: liboop: fix deplibs check method for mips64.
* gnu/packages/patches/liboop-mips64-deplibs-fix.patch: New file.
* gnu/packages/lsh.scm (liboop): Add patch.
* gnu-system.am (dist_patch_DATA): Add patch.
2013-11-03 23:26:42 -05:00
Mark H Weaver fdbd19ea6b gnu: gd: fix deplibs check method for mips64.
* gnu/packages/patches/gd-mips64-deplibs-fix.patch: New file.
* gnu/packages/gd.scm (gd): Add patch.
* gnu-system.am (dist_patch_DATA): Add patch.
2013-11-03 23:26:37 -05:00
Mark H Weaver dd863f1f39 gnu: libmad: Fix MIPS assembler code to work with new GCC.
* gnu/packages/patches/libmad-mips-newgcc.patch: New file.
* gnu/packages/mp3.scm (libmad): Add patch.
* gnu-system.am (dist_patch_DATA): Add patch.
2013-11-03 23:26:32 -05:00
Mark H Weaver 46acd05401 gnu: libtheora: patch ancient config.guess to support mips64.
* gnu/packages/patches/libtheora-config-guess.patch: New file.
* gnu/packages/oggvorbis.scm (libtheora): Add patch.
* gnu-system.am (dist_patch_DATA): Add patch.
2013-11-03 23:26:27 -05:00
Mark H Weaver bcd94e192a gnu: alsa-lib: fix atomic op declarations for MIPS.
* gnu/packages/patches/alsa-lib-mips-atomic-fix.patch: New file.
* gnu/packages/linux.scm (alsa-lib): Add patch.
* gnu-system.am (dist_patch_DATA): Add patch.
2013-11-03 23:26:22 -05:00
Mark H Weaver 1475a351f6 gnu: gdb: patch-makefile-SHELL for all Makefile.in files.
* gnu/packages/gdb.scm (gdb): patch-makefile-SHELL for all Makefile.in files
  after configure.
2013-11-03 23:26:17 -05:00
Mark H Weaver b20441f228 gnu: gdb: Fix opcode table for Loongson fused multiply-add.
* gnu/packages/patches/gdb-loongson-madd-fix.patch: New file.
* gnu/packages/gdb.scm (gdb): Add patch.
* gnu-system.am (dist_patch_DATA): Add patch.
2013-11-03 23:26:12 -05:00
Mark H Weaver 1602fcea18 gnu: libffi: fix handling of uint32_t arguments on MIPS N32.
* gnu/packages/patches/libffi-mips-n32-fix.patch: New file.
* gnu/packages/libffi.scm (libffi): Add patch.
* gnu-system.am (dist_patch_DATA): Add patch.
2013-11-03 23:26:04 -05:00
Mark H Weaver bf2cc1e5d1 gnu: libtool: skip a test that fails on MIPS N32.
* gnu/packages/patches/libtool-skip-tests-for-mips.patch: New file.
* gnu/packages/autotools.scm (libtool): Add patch.
* gnu-system.am (dist_patch_DATA): Add patch.
2013-11-03 23:25:59 -05:00
Mark H Weaver 2c1ceeacdf gnu: binutils: apply fixes and workarounds for Loongson 2F CPUs.
* gnu/packages/patches/binutils-loongson-madd-fix.patch: New file.
* gnu/packages/patches/binutils-loongson-workaround.patch: New file.
* gnu/packages/base.scm (binutils): Add patches.
* gnu-system.am (dist_patch_DATA): Add patches.
2013-11-03 23:25:54 -05:00
Ludovic Courtès b8c3527828 gnu: recutils: Upgrade to 1.6.
* gnu/packages/recutils.scm (recutils): Upgrade to 1.6.  Add cURL and
  libgcrypt as inputs.
2013-11-03 23:24:16 +01:00
Ludovic Courtès 64a967cc9c ui: Make '--version' output GCS-compliant.
* guix/ui.scm (show-version-and-exit): Display copyright year, license,
  and LACK OF WARRANTY.
2013-11-03 23:09:30 +01:00
Ludovic Courtès 69f777d14c gnu: make-bootstrap: Build libc and Guile without a .gnu_debuglink.
* gnu/packages/make-bootstrap.scm (glibc-for-bootstrap, %guile-static):
  Add 'outputs' field.
2013-11-03 22:35:17 +01:00
Ludovic Courtès c9323eac74 gnu: make-bootstrap: Allow bit-reproducibility for 'glibc-stripped'.
* gnu/packages/make-bootstrap.scm (%glibc-stripped): Remove '.install'
  and '..install.cmd' files.
2013-11-02 22:28:30 +01:00
Cyril Roelandt a18e58336c gnu: cmake: Bump to 2.8.12
* gnu/packages/cmake.scm: bump to 2.8.12
2013-11-02 22:17:08 +01:00
Ludovic Courtès 55a5674f21 gnu: make-bootstrap: Add C++ header files to the bootstrap GCC.
* gnu/packages/make-bootstrap.scm (%gcc-stripped): Add $gcc/include/c++.
2013-11-02 15:17:08 +01:00
Ludovic Courtès 08928e5752 gnu: cross-gcc: Fix build of 'gcc-cross-sans-libc'.
* gnu/packages/cross-base.scm (cross-gcc): Add "--disable-libatomic".
2013-11-02 12:58:52 +01:00
Ludovic Courtès 13ed095c50 doc: Document the syntax of the '--remove' argument.
* doc/guix.texi (Invoking guix package): Document the syntax of
  '--remove' patterns.
2013-11-02 00:01:35 +01:00
Ludovic Courtès 45b418d634 guix package: Show the output name of what's being removed.
* guix/scripts/package.scm (show-what-to-remove/install): Show the
  output name of packages being removed.
2013-11-01 23:59:25 +01:00
Ludovic Courtès 1b5ba6b1e9 guix package: Fix indentation of "will be removed" messages.
* guix/scripts/package.scm (show-what-to-remove/install): Remove extra
  indentation from the removal sentences.
2013-11-01 23:21:01 +01:00
Ludovic Courtès a20787706c guix package: Allow removal of a specific package output.
Fixes <http://bugs.gnu.org/15756>.

* guix/profiles.scm (<manifest-pattern>): New record type.
  (remove-manifest-entry): Remove.
  (entry-predicate, manifest-matching-entries): New procedures.
  (manifest-remove): Accept a list of <manifest-pattern>.
  (manifest-installed?): Replace 'name' parameter by 'pattern', a
  <manifest-pattern>.
* guix/scripts/package.scm (options->removable): Return a list of
  <manifest-pattern>.
  (guix-package)[process-action]: Use 'manifest-matching-entries' to
  compute the list of packages to remove.
* tests/profiles.scm: New file.
* Makefile.am (SCM_TESTS): Add it.
2013-11-01 23:21:01 +01:00
Ludovic Courtès 537630c5a7 guix package: Separate '--remove' option processing.
* guix/scripts/package.scm (options->removable): New procedure.
  (guix-package)[process-actions]: Use it.  Rename 'remove*' to 'remove'
  and 'install*' to 'install'.
2013-11-01 23:21:00 +01:00
Ludovic Courtès 2876b98925 ui: Factorize package specification parsing.
* guix/ui.scm (package-specification->name+version+output): New
  procedure.
* guix/scripts/package.scm (specification->package+output): Use it.
* tests/ui.scm ("package-specification->name+version+output"): New test.
2013-11-01 23:21:00 +01:00
Ludovic Courtès cc4ecc2d88 Add (guix profiles).
* guix/scripts/package.scm (show-what-to-remove/install): New procedure,
  moved from...
  (guix-package): ... here.
  (<manifest>, make-manifest, <manifest-entry>,
  profile-manifest, manifest->sexp, sexp->manifest, read-manifest,
  write-manifest, remove-manifest-entry, manifest-remove,
  manifest-installed?, manifest=?, profile-regexp, generation-numbers,
  previous-generation-number, profile-derivation, generation-number,
  generation-file-name, generation-time, lower-input): Move to...
* guix/profiles.scm: ... here.  New file.
* Makefile.am (MODULES): Add it.
2013-11-01 23:21:00 +01:00
Nikita Karetnikov fdd6c72683 gnu: Add GCC front ends for Fortran, Go, Objective C, and Objective C++.
* gnu/packages/gcc.scm (custom-gcc, gfortran-4.8, gccgo-4.8)
  (gcc-objc-4.8, gcc-objc++-4.8): New variables.
2013-11-01 20:50:02 +00:00
Andreas Enge 798e4f42b3 gnu: ffmpeg: Fix typo in configure flags.
* gnu/packages/video.scm (ffmpeg): Add "d" in "3d" in configure flags.
2013-11-01 21:08:26 +01:00
Ludovic Courtès 1670c70a03 gnu: Revert to GCC 4.7 as the default compiler.
GCC 4.8 relies on C++ headers (<cstring>, <iosfwd>, etc.) that are
missing from the current bootstrap GCC.

* gnu/packages/base.scm (gcc-boot0, cross-gcc-wrapper, gcc-final): Base
  on GCC-4.7.  This reverts part of commit 9ae7cee.
2013-11-01 15:31:16 +01:00
Andreas Enge 39efcc9b3a gnu: Add ffmpeg.
* gnu/packages/video.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add module.
2013-11-01 14:01:05 +01:00
Ludovic Courtès 9ae7cee342 gnu: Switch to GCC 4.8 as the default compiler.
* gnu/packages/base.scm (gcc-boot0, cross-gcc-wrapper, gcc-final): Base
  on GCC-4.8.
* gnu/packages/cross-base.scm (cross-gcc): Likewise.
* gnu/packages/make-bootstrap.scm (package-with-relocatable-glibc,
  %gcc-static, %gcc-stripped): Likewise.
2013-11-01 13:04:38 +01:00
Ludovic Courtès 67f6491bce gnu: grep: Update to 2.15.
* gnu/packages/base.scm (grep): Update to 2.15.
2013-11-01 13:01:20 +01:00
Ludovic Courtès ff8061b591 Merge branch 'master' into core-updates 2013-11-01 12:59:31 +01:00
Mark H Weaver b645425f71 gnu: pulseaudio: increase timeout of thread test.
* gnu/packages/patches/pulseaudio-test-timeouts.patch: New file.
* gnu/packages/pulseaudio.scm (pulseaudio): Add patch.
* gnu-system.am (dist_patch_DATA): Add patch.
2013-11-01 12:48:25 +01:00
Ludovic Courtès cdbca518ca union: Do not warn when identical files collide.
* guix/build/union.scm (file=?): New procedure.
  (union-build)[resolve-collision]: Do not warn when identical files
  collide.
2013-10-31 23:38:58 +01:00
Ludovic Courtès 215b643150 gnu: Add bridge-utils.
* gnu/packages/linux.scm (bridge-utils): New variable.
2013-10-31 23:38:58 +01:00
Andreas Enge dce1722739 gnu: libmicrohttpd: Update to 0.9.31.
* gnu/packages/gnunet.scm (libmicrohttpd): Update to 0.9.31,
    synchronise the description with GNU SRC.
2013-10-30 23:12:45 +01:00
Andreas Enge 4e9b38ebf7 gnu: Add gst-plugins-base-0.10.
* gnu/packages/gstreamer.scm (gst-plugins-base-0.10): New variable.
2013-10-30 22:58:39 +01:00
Andreas Enge cedf081abb gnu: gstreamer-0.10: Propagate input libxml2.
* gnu/packages/gstreamer.scm (gstreamer-0.10): Propagate input libxml2.
2013-10-30 22:57:52 +01:00
Ludovic Courtès 477d30d0d8 guix package: Factorize generation file name computation.
* guix/scripts/package.scm (generation-file-name): New procedure.
  Change all occurrences of (format #f "~a-~a-link" profile number) to
  use it.
2013-10-30 22:09:33 +01:00
Ludovic Courtès 1fcc3ba309 guix package: Specify inputs for each manifest entry.
* guix/scripts/package.scm (<manifest-entry>): Add 'inputs' field.
  (manifest=?, lower-input): New procedure.
  (profile-derivation)[builder]: Add #:log-port argument to
  'union-build'.
  [ensure-valid-input]: Remove.
  Add each entry's inputs to the input list.
  (options->installable): Return just the list of entries.
  [package->manifest-entry]: Set 'inputs' field.
  [canonicalize-deps]: Rename to...
  [deduplicate]: ... this.  Remove input fiddling.
  (guix-package)[process-actions]: Use 'manifest=?' to compare the new
  and old manifests.  Pass directly PROF-DRV to 'show-what-to-build'.
  Pass #:print-build-trace #f to 'set-build-options'.
2013-10-30 22:09:33 +01:00
Ludovic Courtès c065c443a0 union: Make the log port a parameter.
* guix/build/union.scm (union-build): Add 'log-port' keyword parameter;
  use it.
2013-10-30 22:09:32 +01:00
Ludovic Courtès d0dc4907d6 derivations: 'derivation-path->output-path' honors the 'output' parameter.
* guix/derivations.scm (derivation-path->output-path): Pass OUTPUT.
* tests/derivations.scm ("multiple-output derivation,
  derivation-path->output-path"): New test.
2013-10-30 22:09:32 +01:00
Ludovic Courtès d595e456c1 guix package: Always use the term "profile", not "user environment".
* guix/scripts/package.scm (%user-environment-directory): Rename to...
  (%user-profile-directory): ... this.  Update users accordingly.
  (profile-derivation): Use the term "profile" instead of "user
  environment", and use "profile" as the derivation name.
2013-10-30 22:09:32 +01:00
Ludovic Courtès f067fc3e77 guix package: Introduce <manifest> and <manifest-entry> types.
* guix/scripts/package.scm (<manifest>, <manifest-entry>): New record
  types.
  (make-manifest, read-manifest, manifest->sexp, sexp->manifest,
  read-manifest, write-manifest, remove-manifest-entry, manifest-remove,
  manifest-installed?): New procedures.
  (profile-derivation): Take a manifest as the second parameter.  Use
  'manifest->sexp'.  Expect <manifest-entry> objects instead of
  "tuples".  Adjust callers accordingly.
  (search-path-environment-variables): Changes 'packages' parameter to
  'entries'.  Rename 'package-in-manifest->package' to
  'manifest-entry->package'; expect <manifest-entry> objects.
  (display-search-paths): Rename 'packages' to 'entries'.
  (options->installable): Change 'installed' to 'manifest'.  Have
  'canonicalize-deps' return name/path tuples instead of raw packages.
  Rename 'package->tuple' to 'package->manifest-entry'.  Use
  <manifest-entry> objects instead of tuples.
  (guix-package)[process-actions]: Likewise.  Rename 'packages' to
  'entries'.
  [process-query]: Use 'manifest-entries' instead of
  'manifest-packages'.
2013-10-30 22:09:32 +01:00
Ludovic Courtès edac884624 guix package: Better separate option processing.
* guix/scripts/package.scm (find-package): Rename to...
  (specification->package+output): ... this.  Rename 'name' parmameter
  to 'spec'.  Return a package and output name instead of a tuple.
  (options->installable): New procedure
  (guix-package)[process-actions]: Use it, and remove corresponding
  code.
2013-10-30 22:09:32 +01:00
Andreas Enge f506ed920c gnu: Add gstreamer-0.10.
* gnu/packages/gstreamer.scm (gstreamer-0.10): New variable.
* gnu/packages/patches/gstreamer-0.10-bison3.patch,
  gnu/packages/patches/gstreamer-0.10-silly-test.patch: New files.
* gnu-system.am (dist_patch_DATA): Add patches.
2013-10-30 22:06:57 +01:00
Andreas Enge 94f48f98f0 gnu: mit-krb5: Update to 1.11.3.
* gnu/packages/mit-krb5.scm (mit-krb5): Update to 1.11.3.
2013-10-29 23:46:10 +01:00
Ludovic Courtès d46d8794a1 guix package: Declutter the entry point.
* guix/scripts/package.scm (newest-available-packages,
  find-best-packages-by-name, find-package, upgradeable?): New
  procedures, moved from...
  (guix-package): ... here.
2013-10-29 22:03:02 +01:00
Mark H Weaver 2a8417ac44 Change indentation rule for 'package' for the common case.
* .dir-locals.el: Change the indentation rule for 'package' to do the right
  thing for packages without an inherit clause.
2013-10-29 12:19:44 -04:00
Ludovic Courtès cb558fcd9c list-runtime-roots: List files referenced by environment variables.
Inspired by <https://github.com/NixOS/nix/compare/772b70952f75...4ddd077bfa9a>.

* nix/scripts/list-runtime-roots.in (%store-directory): New variable.
  (proc-environ-roots): New procedure.
  (<top-level>): Use it.
2013-10-29 00:08:44 +01:00
Ludovic Courtès 72e25e35a5 doc: Augment the "Porting" section.
Reported by Andreas Enge <andreas@enge.fr>.

* doc/guix.texi (Porting): Document needed changes to (gnu packages
  bootstrap) and (gnu packages linux).
2013-10-29 00:08:44 +01:00
Ludovic Courtès 011b18c332 gnu: Add python2-empy.
* gnu/packages/python.scm (python2-empy): New variable.
2013-10-29 00:08:44 +01:00
Ludovic Courtès 7587041028 build-system/{cmake,perl}: Don't use (guix build gnu-build-system).
Previously references to '%standard-phases' in builder-side code would
refer to the wrong one.

* guix/build-system/cmake.scm (cmake-build): Remove (guix build
  gnu-build-system) from the default MODULES value.
* guix/build-system/perl.scm (perl-build): Likewise.
2013-10-29 00:08:44 +01:00
Nikita Karetnikov 3220c2f41e gnu: gcc-4.8: Upgrade to 4.8.2.
* gnu/packages/gcc.scm (gcc-4.8): Upgrade to 4.8.2.
2013-10-28 18:42:09 +00:00
Andreas Enge fdf3cb4cc0 gnu: mesa: Update URI.
* gnu/packages/xorg.scm (mesa): Update URI.
2013-10-26 15:09:42 +02:00
Andreas Enge 5f6265298e gnu: lzip: Update to 1.15.
* gnu/packages/compression.scm (lzip): Update to 1.15.
2013-10-26 15:03:27 +02:00
David Thompson c3c516ea00 gnu: Add libmikmod.
* gnu/packages/sdl.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.

Signed-off-by: Andreas Enge <andreas@enge.fr>
2013-10-26 14:15:45 +02:00
Eric Bavier fa58ca4376 gnu: Add Pem.
* gnu/packages/pem.scm: New file.
 * gnu-system.am (GNU_SYSTEM_MODULES): Add it.

Signed-off-by: Andreas Enge <andreas@enge.fr>
2013-10-26 01:23:00 +02:00
Andreas Enge b357faace7 gnu: Add sharutils.
* gnu/packages/compression.scm (sharutils): New variable.
2013-10-26 00:28:32 +02:00
Andreas Enge 13fbda90d9 gnu: rsync: Update to 3.1.0.
* gnu/packages/rsync.scm (rsync): Update to 3.1.0.
2013-10-25 22:44:51 +02:00
Andreas Enge e50805251a gnu: gmp: Update to 5.1.3.
* gnu/packages/multiprecision.scm (gmp): Update to 5.1.3.
2013-10-24 17:54:16 +02:00
Andreas Enge 89059aa193 gnu: qt: Correct source uri.
* gnu/packages/qt.scm (qt-4): Correct source uri (reported by
    Cyril Roelandt <tipecaml@gmail.com>).
2013-10-23 23:33:36 +02:00
Andreas Enge b92eee75b1 gnu: Add GLPK.
* gnu/packages/maths.scm (glpk): New variable.
2013-10-22 20:24:33 +02:00
Ludovic Courtès d038cac12a gnu: Add GNU Alive.
* gnu/packages/system.scm (alive): New variable.
2013-10-19 00:07:28 +02:00
Ludovic Courtès 02c72d1671 build: Build the bootstrap-graph.{png,eps,pdf} under $(top_srcdir).
Fixes <http://bugs.gnu.org/15640>.
Reported by Eric Bavier <ericbavier@gmail.com>.

* doc.am (EXTRA_DIST): Add doc/images/bootstrap-graph.pdf to the
  distribution.
  (pdf-local, info-local, ps-local): Prepend $(top_srcdir) to the image
  file names.
2013-10-18 22:05:39 +02:00
Ludovic Courtès a433c52593 gnu: dfc: Add missing input.
* gnu/packages/system.scm (dfc): Add 'native-inputs' field.
2013-10-18 00:25:06 +02:00
Ludovic Courtès 93a3d8f609 gnu: glib: Work around test failure in 'gio/tests/network-address.c'.
* gnu/packages/patches/glib-tests-newnet.patch: New file.
* gnu/packages/glib.scm (glib): Use it.
* gnu-system.am (dist_patch_DATA): Add it.
2013-10-17 23:50:32 +02:00
Ludovic Courtès 96e424672a gnu: evince: Set search path for MIME info.
* gnu/packages/gnome.scm (evince): Add #:phases argument.  Remove "perl"
  and "perl-xml-parser" inputs since they are not directly needed; move
  "intltool" to 'native-inputs'.
2013-10-17 23:50:31 +02:00
Ludovic Courtès 9167f8e6f9 gnu: Add shared-mime-info.
* gnu/packages/gnome.scm (shared-mime-info): New variable.
2013-10-17 23:50:31 +02:00
Ludovic Courtès 515e68782f gnu: Add SCons.
* gnu/packages/python.scm (scons): New variable.
2013-10-17 23:50:31 +02:00
Nikita Karetnikov 7df7a74e23 doc: Improve the copyright notice. 2013-10-17 13:21:10 +00:00
Ludovic Courtès ed41d48ef1 gnu: make: Update to 4.0, with Guile support.
* gnu/packages/base.scm (gnu-make): Update to 4.0.  Add Guile as an input.
  (gnu-make-boot0): Patch 'build.sh' so it does not attempt to build 'guile.c'.
  (gnu-make-final): New variable.
  (%final-inputs): Use it.
  (glibc): Add 'glibc-make-4.0.patch'.
* gnu/packages/patches/glibc-make-4.0.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
2013-10-16 17:36:19 +02:00
Ludovic Courtès 63760b5bab gnu: base: Fix circular dependency between %final-outputs and <origin> inputs.
* gnu/packages/base.scm (%final-inputs): Add
  'package-with-bootstrap-guile' to 'finalize'.
2013-10-16 16:15:07 +02:00
Ludovic Courtès f1352766fa utils: 'find-files' always returns a proper list.
Reported at <http://bugs.gnu.org/15608>.

* guix/build/utils.scm (find-files): Change the 'error' procedure to
  return RESULT.  Before we would end up with an improper list.
2013-10-16 15:53:59 +02:00
Ludovic Courtès 8f557fc8b7 gnu: readline: Turn 'patches' into a list.
* gnu/packages/readline.scm (readline): Turn 'patches' into a list.
2013-10-16 15:51:43 +02:00
Andreas Enge 418e82b507 gnu: harfbuzz: Update to 0.9.22.
* gnu/packages/gtk.scm (harfbuzz): Update to 0.9.22; should solve the test
    problems on i686.
2013-10-16 10:44:56 +02:00
Ludovic Courtès eeb70957e8 Update 'AUTHORS'. 2013-10-16 00:13:40 +02:00
Eric Bavier d911258976 gnu: Add autogen package
* gnu/package/autogen.scm: New file
* gnu-system.am: Add it

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-10-16 00:12:27 +02:00
Ludovic Courtès dfb52abbd6 Remove weirdnesses caused by 'letrec*' behavior of record field initializers.
* gnu/packages/bootstrap.scm (package-from-tarball): Remove '*' from
  parameter names.  Adjust accordingly.
* gnu/packages/linux-initrd.scm (expression->initrd): Use 'name'
  directly, removing the 'name*' alias.
* gnu/packages/linux.scm (linux-libre-headers, linux-libre): Rename
  'version*' to 'version'.
2013-10-15 23:42:58 +02:00
Ludovic Courtès 59fbeb8cae records: define-record-type*: Field bindings are bound with 'let*'.
* guix/records.scm (define-record-type*): Wrap field bindings in a
  'let*', not in a 'letrec*', which turned out to be pointlessly
  inconvenient.
* tests/records.scm: Adjust test names accordingly.
2013-10-15 23:31:22 +02:00
Ludovic Courtès 70a9c72028 build: Add 'clean-go' target.
* Makefile.am (clean-go): New phony target.
2013-10-15 23:25:08 +02:00
Ludovic Courtès b2ba65c897 guix package: '--search' matches against package names.
* guix/scripts/package.scm (find-packages-by-description): Return
  packages whose name matches RX.
2013-10-15 22:59:50 +02:00
Ludovic Courtès 3c1d9799b8 Thank Jeffrin and David. 2013-10-14 23:18:54 +02:00
David Thompson 15e82fb2c0 gnu: Add libtheora.
* gnu/packages/oggvorbis.scm (libtheora): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-10-14 23:17:38 +02:00
Ludovic Courtès 749b90a519 gnu: subversion, cmake: Clean up descriptions.
* gnu/packages/cmake.scm (cmake): Simplify the synopsis.
* gnu/packages/version-control.scm (subversion): Remove "open-source"
  from the description.
2013-10-14 09:48:52 +02:00
Ludovic Courtès c1354b90e9 gnu: Add libgnome-keyring and Evince.
* gnu/packages/gnome.scm (libgnome-keyring, evince): New variables.
2013-10-13 22:50:11 +02:00
Ludovic Courtès 8db824ba31 gnu: poppler: Build the poppler-glib bindings.
* gnu/packages/pdf.scm (poppler): Add Cairo and GLib as inputs.
2013-10-13 22:50:11 +02:00
Ludovic Courtès cc20a22a09 gnu: Add dogtail.
* gnu/packages/python.scm (python2-dogtail): New variable.
2013-10-13 22:50:11 +02:00
Ludovic Courtès 178f77b2d2 pull: Compile modules correctly regardless of the compilation order.
* guix/scripts/pull.scm (unpack)[builder]: Work around
  <http://bugs.gnu.org/15602>.
2013-10-13 22:50:11 +02:00
Andreas Enge 973d9f1d1c gnu: kde: Add module and automoc4 package.
* gnu/packages/kde.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2013-10-13 18:18:57 +02:00
Andreas Enge e78fd4ca63 guix: Make cmake build system aware of usual paths.
*  guix/build/cmake-build-system.scm (configure): Set CMAKE_LIBRARY_PATH to
     LIBRARY_PATH and CMAKE_INCLUDE_PATH to CPATH.
2013-10-13 18:02:49 +02:00
Andreas Enge 6eac909b45 gnu: cmake: Update patch to work with new system.
* gnu/packages/patches/cmake-fix-tests.patch: Update to work with -p1.
* gnu/packages/cmake.scm (cmake): Drop patch flag -p0.
2013-10-13 17:00:18 +02:00
Andreas Enge 487da56570 gnu: gsl: Update to 1.16.
* gnu/packages/maths.scm (gsl): Update to 1.16, disable parallel tests
    leading to a failure in vector.
2013-10-13 16:26:12 +02:00
Andreas Enge a58a7c926b gnu: gtk+: Update to 3.10.1.
* gnu/packages/gtk.scm (gtk+): Update to 3.10.1, drop no longer needed
    configure flag.
2013-10-13 13:03:09 +02:00
Ludovic Courtès 52af657aee pull: Simplify the builder.
* guix/scripts/pull.scm (unpack)[builder]: Use 'copy-recursively' and
  'copy-file' instead of 'file-system-fold'.
2013-10-13 01:14:21 +02:00
Ludovic Courtès ab5d72ad2b doc: Document "guix pull --url".
* doc/guix.texi (Invoking guix pull): Add --url.
2013-10-13 01:14:21 +02:00
Andreas Enge 8ab00475fb gnu: qt: Add patch to distribution.
* gnu-system.am (dist_patch_DATA): Add qt patch.
2013-10-12 23:34:22 +02:00
Ludovic Courtès b646c3dd37 gnu: qemu-with-multiple-smb-shares: Fix typo.
* gnu/packages/qemu.scm (qemu/smb-shares): Turn 'patches' into a list.
2013-10-12 22:29:32 +02:00
Ludovic Courtès b421cebd6a build-system/perl: Lazily resolve (gnu packages perl).
* guix/build-system/perl.scm (default-perl): New procedure.
  (perl-build): Use it.
2013-10-12 22:29:32 +02:00
Ludovic Courtès 0ad7da1e90 pull: Add '--url' option.
* guix/scripts/pull.scm (%default-options): Add 'tarball-url' pair.
  (%options, show-help): Add '--url'.
  (guix-pull): Honor it.
2013-10-12 22:29:32 +02:00
Ludovic Courtès d8907ac43f download: Support 'file://' URLs.
* guix/download.scm (download-to-store): When URL has a 'file' scheme or
  no scheme, use 'add-to-store' directly.
2013-10-12 22:29:31 +02:00
Ludovic Courtès 39e9f95d05 guix: Add missing call to 'bindtextdomain'.
* scripts/guix.in (config-lookup): Add "localedir" entry.
  (run-guix-main): Add call to 'bindtextdomain'.
* guix/ui.scm (initialize-guix): Use %GETTEXT-DOMAIN instead of a
  literal.
2013-10-12 22:29:31 +02:00
Andreas Enge f854a8c133 gnu: Add gp2c.
* gnu/packages/algebra.scm (gp2c): New variable.
2013-10-12 19:46:14 +02:00
Andreas Enge 1e9ed0e3dc gnu: Add Qt 4.8.5.
* gnu/packages/qt.scm (qt-4): New variable.
* gnu/packages/patches/qt4-tests.patch: New file, patch dropping tests
    requiring a running X server.
2013-10-12 14:50:14 +02:00
Arne Babenhauserheide 5151c2e1f4 gnu: Add Mercurial.
* gnu/packages/version-control.scm (mercurial): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-10-11 22:18:47 +02:00
Ludovic Courtès 1a75f8d939 gnu-maintenance: Adjust URL of package description file.
* guix/gnu-maintenance.scm (%package-description-url): Adjust to the
  new URL.
2013-10-11 22:18:47 +02:00
Nikita Karetnikov f349fa02de gnu: Add GNU acct.
* gnu/packages/acct.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2013-10-11 12:18:28 +00:00
Cyril Roelandt 9fb0bc1572 gnu: Valgrind: make it work with glibc 2.18.
* gnu/packages/patches/valgrind-glibc.patch: update it.
2013-10-11 00:22:57 +02:00
Ludovic Courtès 7e2b10a53f build-system/{gnu,cmake}: Remove #:patches and #:patch-flags parameters.
* guix/build/gnu-build-system.scm (patch): Remove.
  (%standard-phases): Remove 'patch'.
* guix/build-system/gnu.scm (gnu-build, gnu-cross-build): Remove
  #:patches and #:patch-flags parameters.
* guix/build-system/cmake.scm (cmake-build): Likewise.
* guix/build-system/python.scm (package-with-explicit-python): Update
  comment.
2013-10-10 23:15:57 +02:00
Ludovic Courtès de80b5045b gnu: Use the 'patches' field of <origin>.
* gnu/packages/autotools.scm (libtool): Add 'patches' field to the
  origin.  Remove 'inputs' field.
* gnu/packages/base.scm (findutils, gnu-make, binutils, glibc):
  Likewise.
* gnu/packages/m4.scm (m4): Likewise.
* gnu/packages/perl.scm (perl): Likewise.
* gnu/packages/readline.scm (readline): Likewise.
2013-10-10 23:05:28 +02:00
Ludovic Courtès 5fbeb4e6e1 gnu: bootstrap: Use the bootstrap tools for <origin> patching.
* gnu/packages/bootstrap.scm (bootstrap-origin): Override the
  'patch-guile' and 'patch-inputs' fields of SOURCE.
2013-10-10 23:02:33 +02:00
Ludovic Courtès 1d9bc45925 packages: The 'patch-guile' field of <origin> is now a package.
* guix/packages.scm (default-guile): Return a package instead of a
  derivation.
  (package-source-derivation): Adjust accordingly.
2013-10-10 23:00:47 +02:00
Ludovic Courtès cdecf77501 gnu: tar: Update to 1.17.
* gnu/packages/base.scm (tar): Update to 1.17.  Remove 'arguments' and
  'inputs'.
* gnu/packages/patches/tar-gets-undeclared.patch: Remove.
* gnu-system.am (dist_patch_DATA): Remove 'tar-gets-undeclared.patch'.
2013-10-10 22:16:58 +02:00
Ludovic Courtès fb6c2fa82e gnu: linux-libre-headers: Support cross-compilation.
* gnu/packages/linux.scm (linux-libre-headers):
  When (%current-target-system) is true, pass it as the argument to
  'build-phase'.  This fixes cross-compilation.
  Reported by Mark H. Weaver <mhw@netris.org>.
2013-10-10 21:43:14 +02:00
Ludovic Courtès b49632e793 daemon: Set the umask to 022 when starting.
* nix/nix-daemon/guix-daemon.cc (main): Add 'umask' call.
* test-env.in: Remove use of 'umask'.
2013-10-10 21:43:14 +02:00
Ludovic Courtès 66fb2d23a3 gnu: Add pavucontrol.
* gnu/packages/pulseaudio.scm (pavucontrol): New variable.
2013-10-10 21:43:14 +02:00
Andreas Enge ef0cf53e3f gnu: qt: Propagate input mesa.
* gnu/packages/qt.scm (qt): Propagate input mesa.
2013-10-10 20:54:25 +02:00
Andreas Enge 1ea44d1128 gnu: qt: Do not use special SSE etc. instructions.
* gnu/packages/qt.scm (qt): Add configure flags to disable machine specific
    instructions.
2013-10-10 20:04:53 +02:00
Andreas Enge 39fa8f6c73 gnu: qt: Add input pulseaudio.
* gnu/packages/qt.scm (qt): Add input pulseaudio.
2013-10-10 14:35:55 +02:00
Ludovic Courtès c5cc50061f gnu: Add Pangomm, ATKmm, and GTKmm.
* gnu/packages/gtk.scm (atk)[synopsis]: Fix typo.
  (pangomm, atkmm, gtkmm): New variables.
2013-10-09 23:32:27 +02:00
Ludovic Courtès d4f1ce4da0 list-packages: Show a list of patches for each package.
* build-aux/list-packages.scm (list-join): New procedure.
  (package->sxml)[patch-url]: New procedure.
  Use it.
2013-10-09 21:52:22 +02:00
Ludovic Courtès 4e45e35266 snix: Prefer descriptions from the Womb rather than from Nixpkgs.
* guix/snix.scm (snix-derivation->guix-package): Use
  'gnu-package-doc-description' as the description for GNU packages.
2013-10-09 16:18:23 +02:00
Ludovic Courtès a22dc0c49a Synchronize package descriptions with the Womb.
* gnu/packages/algebra.scm,
  gnu/packages/aspell.scm,
  gnu/packages/autotools.scm,
  gnu/packages/base.scm,
  gnu/packages/bash.scm,
  gnu/packages/bison.scm,
  gnu/packages/cdrom.scm,
  gnu/packages/cflow.scm,
  gnu/packages/compression.scm,
  gnu/packages/cpio.scm,
  gnu/packages/cppi.scm,
  gnu/packages/ddrescue.scm,
  gnu/packages/dejagnu.scm,
  gnu/packages/ed.scm,
  gnu/packages/emacs.scm,
  gnu/packages/fdisk.scm,
  gnu/packages/freeipmi.scm,
  gnu/packages/gawk.scm,
  gnu/packages/gcal.scm,
  gnu/packages/gcc.scm,
  gnu/packages/gdb.scm,
  gnu/packages/gdbm.scm,
  gnu/packages/gettext.scm,
  gnu/packages/ghostscript.scm,
  gnu/packages/global.scm,
  gnu/packages/gnunet.scm,
  gnu/packages/gnupg.scm,
  gnu/packages/gnutls.scm,
  gnu/packages/gperf.scm,
  gnu/packages/gprolog.scm,
  gnu/packages/groff.scm,
  gnu/packages/grub.scm,
  gnu/packages/gsasl.scm,
  gnu/packages/guile.scm,
  gnu/packages/gv.scm,
  gnu/packages/help2man.scm,
  gnu/packages/idutils.scm,
  gnu/packages/indent.scm,
  gnu/packages/less.scm,
  gnu/packages/libidn.scm,
  gnu/packages/libsigsegv.scm,
  gnu/packages/libunistring.scm,
  gnu/packages/lightning.scm,
  gnu/packages/linux.scm,
  gnu/packages/lsh.scm,
  gnu/packages/m4.scm,
  gnu/packages/mail.scm,
  gnu/packages/maths.scm,
  gnu/packages/multiprecision.scm,
  gnu/packages/nano.scm,
  gnu/packages/ncurses.scm,
  gnu/packages/nettle.scm,
  gnu/packages/ocrad.scm,
  gnu/packages/oggvorbis.scm,
  gnu/packages/parted.scm,
  gnu/packages/plotutils.scm,
  gnu/packages/pth.scm,
  gnu/packages/readline.scm,
  gnu/packages/recutils.scm,
  gnu/packages/rush.scm,
  gnu/packages/scheme.scm,
  gnu/packages/screen.scm,
  gnu/packages/shishi.scm,
  gnu/packages/smalltalk.scm,
  gnu/packages/system.scm,
  gnu/packages/texinfo.scm,
  gnu/packages/time.scm,
  gnu/packages/unrtf.scm,
  gnu/packages/version-control.scm,
  gnu/packages/wdiff.scm,
  gnu/packages/wget.scm,
  gnu/packages/which.scm,
  gnu/packages/xnee.scm,
  gnu/packages/zile.scm: Change value of the 'description' field to that
  of the Womb.
2013-10-09 16:14:23 +02:00
Ludovic Courtès 668d48a684 build: 'sync-descriptions' now compares GNU package descriptions.
* build-aux/sync-synopses.scm: Rename to...
* build-aux/sync-descriptions.scm: ... this.  Compare the value of
  'gnu-package-doc-description' and 'package-description' and report any
  mismatch.
* Makefile.am (EXTRA_DIST): Adjust accordingly.
  (sync-synopses): Rename to...
  (sync-descriptions): ... this.
2013-10-09 16:13:02 +02:00
Ludovic Courtès 129f9e1173 gnu-maintenance: Get descriptions from 'gnumaint/pkgdescr.txt'.
* guix/gnu-maintenance.scm (%gnumaint-base-url): New variable.
  (%package-list-url): Use it.
  (%gsrc-package-list-url): Remove.
  (%package-description-url): New variable.
  (official-gnu-packages): Change to use %PACKAGE-DESCRIPTION-URL
  instead of %GSRC-PACKAGE-LIST-URL.  Adjust recutils field names
  accordingly.
2013-10-09 13:00:00 +02:00
Ludovic Courtès 470d08ffcc Update 'TODO'. 2013-10-09 00:12:46 +02:00
Ludovic Courtès 01eafd38fb gnu: Use the 'patches' field of <origin>.
* gnu/packages/apr.scm,
  gnu/packages/autotools.scm,
  gnu/packages/avahi.scm,
  gnu/packages/cdrom.scm,
  gnu/packages/cmake.scm,
  gnu/packages/cpio.scm,
  gnu/packages/cross-base.scm,
  gnu/packages/emacs.scm,
  gnu/packages/flex.scm,
  gnu/packages/fontutils.scm,
  gnu/packages/glib.scm,
  gnu/packages/grub.scm,
  gnu/packages/guile.scm,
  gnu/packages/idutils.scm,
  gnu/packages/libevent.scm,
  gnu/packages/linux.scm,
  gnu/packages/mail.scm,
  gnu/packages/make-bootstrap.scm,
  gnu/packages/mp3.scm,
  gnu/packages/oggvorbis.scm,
  gnu/packages/pdf.scm,
  gnu/packages/plotutils.scm,
  gnu/packages/qemu.scm,
  gnu/packages/recutils.scm,
  gnu/packages/rush.scm,
  gnu/packages/scheme.scm,
  gnu/packages/system.scm,
  gnu/packages/tcsh.scm,
  gnu/packages/valgrind.scm,
  gnu/packages/vpn.scm,
  gnu/packages/w3m: Use the 'patches' field of <origin> instead of
  adding a patch as input plus using #:patches.
2013-10-09 00:11:34 +02:00
Ludovic Courtès ac10e0e17e packages: Add 'patches' and related fields to <origin>.
See <https://lists.gnu.org/archive/html/guix-devel/2013-09/msg00137.html>
for the rationale.

* guix/packages.scm (<origin>)[patches, patch-flags, patch-inputs,
  patch-guile]: New fields.
  (%standard-patch-inputs, default-guile, patch-and-repack): New
  procedures.
  (package-source-derivation): When 'patches' is non-empty, call
  'patch-and-repack'.
* guix/utils.scm (file-sans-extension): New procedure.
2013-10-09 00:11:34 +02:00
Andreas Enge b332e3664e gnu: Add Qt 5.1.1.
* gnu/packages/qt.scm (qt): New variable.
2013-10-08 20:49:58 +02:00
Ludovic Courtès 6666350320 gnu: Add Cairomm.
* gnu/packages/gtk.scm (cairomm): New variable.
2013-10-07 23:45:55 +02:00
Ludovic Courtès dd8abc295f Update 'AUTHORS'.
* AUTHORS: Add Alex, Joshua, and Aljosha.
2013-10-06 22:57:06 +02:00
Ludovic Courtès 5d388c7c3f Augment 'TODO'. 2013-10-06 22:55:36 +02:00
Ludovic Courtès 17b293a09c gnu: Add alsa-utils.
* gnu/packages/linux.scm (alsa-utils): New variable.
2013-10-06 22:36:43 +02:00
Ludovic Courtès ae0c12023d gnu: xmlto: Keep references to libxml2, libxslt, and util-linux programs.
* gnu/packages/xml.scm (xmlto): Add 'arguments' field.
  [inputs]: Add libxml2 and libxslt.
2013-10-06 22:36:43 +02:00
Ludovic Courtès 74067e1aeb gnu: Gracefully handle circular dependencies between 'base' and 'linux'.
* gnu/packages/base.scm (linux-libre-headers-boot0): Turn into a thunk.
  User updated.
2013-10-06 22:36:43 +02:00
Andreas Enge 9a6a9dae6f gnu: pari-gp: Update to 2.5.5.
* gnu/packages/algebra.scm (pari-gp): Update to 2.5.5.
2013-10-06 15:40:37 +02:00
Andreas Enge 524e1df65d gnu: mutt: Add input gpgme.
* gnu/packages/mail.scm (mutt): Add input gpgme.
2013-10-06 13:31:02 +02:00
Andreas Enge 09d5c1661c gnu: Add gpgme.
* gnu/packages/gnupg.scm (gpgme): New variable.
2013-10-06 12:16:30 +02:00
Andreas Enge a2270ce260 gnu: icu4c: Patch RUNPATH of libraries.
* gnu/packages/icu4c.scm (icu4c): Elf-patch RUNPATH of libraries, for instance
    of libicuuc.so.
2013-10-06 11:54:46 +02:00
Andreas Enge 43824910f2 gnu: cdparanoia: Fix links of internal libraries into binary.
* gnu/packages/cdrom.scm (cdparanoia): Use patchelf to link internal libraries
    into binary.
2013-10-06 10:01:02 +02:00
Ludovic Courtès a5a7d374a1 gnu: Add libsigc++ and glibmm.
* gnu/packages/glib.scm (libsigc++, glibmm): New variable.
2013-10-06 00:24:06 +02:00
Ludovic Courtès 6ac6a6b99e gnu: gobject-introspection: Export via #:export.
* gnu/packages/glib.scm: Export 'gobject-instrospection' via the
  #:export clause.
2013-10-05 23:45:35 +02:00
Joshua S. Grant daca86660f gnu: Add freeglut, glu, and FTGL.
* gnu/packages/gl.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-10-05 23:21:57 +02:00
Ludovic Courtès 5ccca0044e gnu: ao: Build PulseAudio back-end.
* gnu/packages/oggvorbis.scm (ao): Add PulseAudio as an input.
2013-10-05 17:14:29 +02:00
Ludovic Courtès cfc8261c72 gnu: oggvorbis: Use #:export clause.
* gnu/packages/oggvorbis.scm: Use #:export clause instead of
  'define-public'.
2013-10-05 17:03:48 +02:00
Ludovic Courtès 09767fb5d3 gnu: pulseaudio: Add dependency on libcap.
* gnu/packages/pulseaudio.scm (pulseaudio): Add dependency on libcap.
2013-10-05 16:52:20 +02:00
Ludovic Courtès c762e82e5d gnu: Add libcap.
* gnu/packages/linux.scm (libcap): New variable.
2013-10-05 16:47:12 +02:00
Ludovic Courtès e0029b745a download: Add Debian mirrors.
* guix/download.scm (%mirrors)[debian]: New set of mirrors.
2013-10-05 16:45:39 +02:00
Ludovic Courtès de73a8781e gnu: gnupg: Upgrade to 2.0.22.
* gnu/packages/gnupg.scm (gnupg): Update to 2.0.22. This release fixes
  security issue CVE-2013-4402 in the OpenPGP packet parser.
2013-10-05 16:02:09 +02:00
Ludovic Courtès 37bfb4488d gnu: Add PulseAudio and related libraries.
* gnu/packages/pulseaudio.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2013-10-04 22:46:09 +02:00
Ludovic Courtès 37e6cdcdd7 gnu: Add FFTW.
* gnu/packages/algebra.scm (fftw): New variable.
2013-10-04 22:46:09 +02:00
Andreas Enge bd677c2dba gnu: Add libxkbcommon.
* gnu/packages/qt.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2013-10-04 19:10:29 +02:00
Andreas Enge 1fd96c6a94 gnu: xorg: Add xcb-util-renderutil.
* gnu/packages/xorg.scm (xcb-util-renderutil): New variable.
2013-10-04 00:36:50 +02:00
Andreas Enge f5bf403c72 gnu: xorg: Add xcb-util-keysyms.
* gnu/packages/xorg.scm (xcb-util-keysyms): New variable.
2013-10-04 00:17:07 +02:00
Andreas Enge dfba405510 gnu: xorg: Add xcb-util-image.
* gnu/packages/xorg.scm (xcb-util-image): New variable.
2013-10-04 00:11:06 +02:00
Andreas Enge 458b2a7658 gnu: xorg: Add xcb-util.
* gnu/packages/xorg.scm (xcb-util): New variable.
* gnu/packages/xorg.scm (xcb-util-wm): Expand the description.
2013-10-04 00:02:02 +02:00
Andreas Enge 6ff104d537 gnu: xorg: Add xcb-util-wm.
* gnu/packages/xorg.scm (xcb-util-wm): New variable.
2013-10-03 23:25:04 +02:00
Ludovic Courtès 94c4a58a0a gnu: Add Netcat.
* gnu/packages/system.scm (netcat): New variable.
2013-10-03 23:12:20 +02:00
Ludovic Courtès aeb7ec5c9a monads: Allow resolution of a monad's bind/return at expansion time.
* guix/monads.scm (<monad>): Turn in a raw SRFI-9 record type.
  (define-monad): New macro.
  (with-monad): Add a case for when MONAD is a macro.
  (identity-return, identity-bind, store-return, store-bind): Inline.
  (%identity-monad, %store-monad): Use 'define-monad'.
* tests/monads.scm ("monad?"): New test.
2013-10-03 23:12:20 +02:00
Ludovic Courtès d9f0a23704 gnu: vm: Rewrite helper functions as monadic functions.
* gnu/system/dmd.scm (host-name-service, nscd-service, mingetty-service,
  syslog-service, guix-service, static-networking-service): Rewrite as
  monadic functions.
  (dmd-configuration-file): Use 'text-file' instead of
  'add-text-to-store'.
* gnu/system/grub.scm (grub-configuration-file): Rewrite as a monadic
  function.
* gnu/system/linux.scm (pam-services->directory): Likewise.
* gnu/system/shadow.scm (group-file, passwd-file, guix-build-accounts):
  Likewise.
* gnu/system/vm.scm (expression->derivation-in-linux-vm, qemu-image,
  union, system-qemu-image): Likewise.
2013-10-03 23:12:20 +02:00
Ludovic Courtès b860f38244 Add (guix monads).
* guix/monads.scm: New file.
* tests/monads.scm: New file.
* Makefile.am (MODULES): Add guix/monads.scm.
  (SCM_TESTS): Add tests/monads.scm.
* doc/guix.texi (The Store Monad): New node.
  (The Store): Reference it.
2013-10-03 23:12:20 +02:00
Andreas Enge c8957c77d6 gnu: libxcb: Enable xcb-xkb.
* gnu/packages/xorg.scm (libxcb): Add configure flag "--enable-xkb".
2013-10-03 22:46:54 +02:00
Andreas Enge 85f5dc1952 gnu: gnome: Add brasero.
* gnu/packages/gnome.scm (brasero): New variable; not totally usable due to
    lacking inputs.
2013-10-03 14:51:49 +02:00
Andreas Enge bef4dd92e4 gnu: Add hicolor-icon-theme.
* gnu/packages/gnome.scm (hicolor-icon-theme): New variable.
2013-10-02 22:44:02 +02:00
Andreas Enge 7d3f36518d gnu: gnome: Add gnome-icon-theme.
* gnu/packages/gnome.scm (gnome-icon-theme): New variable.
2013-10-02 22:22:21 +02:00
Andreas Enge 27477d2de0 gnu: Add icon-naming-utils.
* gnu/packages/gnome.scm (icon-naming-utils): New variable.
2013-10-02 22:15:00 +02:00
Andreas Enge 535dc6cf95 gnu: Add perl-xml-simple.
* gnu/packages/xml.scm (perl-xml-simple): New variable.
2013-10-02 21:46:44 +02:00
Andreas Enge 22e32e6938 gnu: gnome: Add gsettings-desktop-schemas.
* gnu/packages/gnome.scm (gsettings-desktop-schemas): New variable.
2013-10-02 19:44:55 +02:00
Andreas Enge 1369442be9 gnu: xnee: Drop input gtk+.
* gnu/packages/xnee.scm (xnee): Drop unused input gtk+.
2013-10-02 15:21:17 +02:00
Andreas Enge f922fc4280 gnu: itstool: Really push the modification announced in 9000d556.
* gnu/packages/glib.scm (itstool): Do as announced in 9000d556.
2013-10-02 14:33:48 +02:00
Andreas Enge 9000d5567c gnu: itstool: Add propagated inputs python-2 and libxml2.
* gnu/packages/glib.scm (itstool): Add propagated input python-2; it is needed
    to rewrite the shebang in the output python script and must be propagated
    so that PYTHONPATH gets set when using itstool; and libxml2, imported as a
    module by the script.
2013-10-02 14:19:44 +02:00
Andreas Enge 90ed6291df gnu: Add libcanberra.
* gnu/packages/libcanberra.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2013-10-02 13:39:17 +02:00
Andreas Enge bad312e37d gnu: libvorbis: Propagate input libogg.
* gnu/packages/oggvorbis.scm (libvorbis): Propagate input libogg, as
    stipulated by the pkg-config files.
2013-10-02 13:34:03 +02:00
Andreas Enge d9c1a22b12 gnu: gnome: Add libnotify.
* gnu/packages/gnome.scm (libnotify): New variable.
2013-10-02 13:19:21 +02:00
Andreas Enge afc75310d7 gnu: racket: Revert input from gtk+-3 to gtk+-2.
* gnu/packages/scheme.scm (racket): Revert input from gtk+-3 to gtk+-2.
2013-10-02 13:03:29 +02:00
Andreas Enge 0e11254000 gnu: gtk+: Propagate inputs.
* gnu/packages/gtk.scm (gtk+): Propagate inputs at-spi2-atk, libxi and
    libxinerama.
2013-10-01 23:00:03 +02:00
Andreas Enge 8b0275b644 gnu: Revert inputs from gtk+-3 to gtk+-2.
* gnu/packages/cdrom.scm (dvdisaster): Replace input gtk+ by gtk+-2.
* gnu/packages/emacs.scm (emacs): Replace input gtk+ by gtk+-2.
* gnu/packages/geeqie.scm (geeqie): Replace input gtk+ by gtk+-2.
* gnu/packages/gkrellm.scm (gkrellm): Replace input gtk+ by gtk+-2.
* gnu/packages/mp3.scm (ripperx): Replace input gtk+ by gtk+-2.
* gnu/packages/scheme.scm: Drop duplicate inclusion of module gtk.
2013-10-01 21:27:26 +02:00
Andreas Enge 1c8362a89e gnu: gtk+-2: Update to 2.24.21.
* gnu/packages/gtk.scm (gtk+-2): Update to 2.24.21, add inputs perl and
    python.
2013-10-01 20:25:30 +02:00
Andreas Enge 8b79a5472d gnu: Add Gtk+ 3.
* gnu/packages/gtk.scm (gtk+): Switch to version 3.10.0.
* gnu/packages/gtk.scm (gtk+-2): New name for version 2.24.20.
2013-10-01 19:46:45 +02:00
Andreas Enge fca300c8ea gnu: Drop gtk+-3, erroneously pushed in the previous commit.
* gnu/packages/gtk.scm (gtk+-3): Delete variable.
2013-10-01 00:29:42 +02:00
Andreas Enge 5fda4784f8 gnu: Add at-spi2-atk.
* gnu/packages/gtk.scm (at-spi2-atk): New variable.
2013-10-01 00:26:54 +02:00
Andreas Enge 3b8e434794 gnu: atk: Update to 2.10.0.
* gnu/packages/gtk.scm (atk): Update to 2.10.0.
2013-10-01 00:23:43 +02:00
Andreas Enge f3fb92e555 gnu: Add at-spi2-core.
* gnu/packages/gtk.scm (at-spi2-core): New variable.
2013-10-01 00:08:45 +02:00
Andreas Enge a459697e0e gnu: libxi: Propagate inputs inputproto and libx11.
* gnu/packages/xorg.scm (libxi): Propagate inputs inputproto and libx11,
    as stipulated by xi.pc.
2013-09-30 23:35:01 +02:00
Andreas Enge d274f499a3 gnu: glib: Update to 2.38.0.
* gnu/packages/glib.scm (glib): Update to 2.38.0 and drop rewriting of GTESTER.
* gnu/packages/patches/glib-tests-homedir.patch: Update patch for 2.38.0.
* gnu/packages/patches/glib-tests-desktop.patch: Update patch for 2.38.0 and
    drop test dbus-appinfo.
2013-09-30 22:19:35 +02:00
Cyril Roelandt 9ceb630c58 gnu: Add gobject-introspection.
* gnu/packages/glib.scm (gobject-introspection): New variable.
2013-09-29 23:22:42 +02:00
Ludovic Courtès ecfb69938a gnu: git: Add graphical tools to the "gui" output.
* gnu/packages/version-control.scm (git): Add "gui" output.  Add Tcl/Tk
  as inputs.  Add #:configure-flags.  Augment 'split' phase to handle
  graphical user interfaces.
2013-09-29 21:55:41 +02:00
Ludovic Courtès 0a5a1db2d4 gnu: git: Do not retain reference from "out" to Subversion.
* gnu/packages/version-control.scm (git): Wrap 'git-svn', not 'git', for
  PERL5LIB and LD_LIBRARY_PATH.
2013-09-29 21:18:53 +02:00
Aljosha Papsch 29a2ccd384 Add httpd
* gnu/packages/web.scm (httpd): New variable
* gnu-system.am (GNU_SYSTEM_MODULES): Add it

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-09-29 21:04:59 +02:00
Ludovic Courtès ab4fab1938 gnu: bzip2: Allow cross-compilation.
Reported by Nikita Karetnikov <nikita@karetnikov.org>.

* gnu/packages/compression.scm (bzip2): Add 'set-cross-environment'
  phase for cross-compilation.
2013-09-29 17:30:48 +02:00
Ludovic Courtès ed5f49ff0c gnu: git: Add "svn" output for 'git-svn'.
* gnu/packages/version-control.scm (git): Add SUBVERSION as an input.
  Add 'split' phase.
2013-09-29 17:30:41 +02:00
Ludovic Courtès 8b2fe7853d gnu: subversion: Install Perl bindings.
* gnu/packages/version-control.scm (subversion): Add
  'install-perl-bindings' phase.
2013-09-29 17:30:30 +02:00
Ludovic Courtès 832e64bdda gnu: Add SWIG.
* gnu/packages/swig.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2013-09-29 17:30:24 +02:00
Ludovic Courtès 7dac2f2e3e gnu: libmicrohttpd: Update to 0.9.30.
* gnu/packages/gnunet.scm (libmicrohttpd): Update to 0.9.30.
2013-09-29 14:46:20 +02:00
Ludovic Courtès 2aa76ee14a gnu: flex: Use Bison 2.7 for tests.
* gnu/packages/bison.scm (bison): Move FLEX to 'inputs', and remove the
  hack that turned off its test suite.
* gnu/packages/flex.scm (flex): Add 'bison-for-tests' in 'inputs', and
  use that to run the tests.
2013-09-29 12:44:25 +02:00
Ludovic Courtès 9546640ecc Update 'pt_BR.po'. 2013-09-29 11:29:27 +02:00
Ludovic Courtès 02d8d9c887 gnu: Add Skribilo.
* gnu/packages/skribilo.scm (skribilo): New variable.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2013-09-28 22:43:48 +02:00
Ludovic Courtès 8e70e6d276 gnu: Add Guile-Cairo.
* gnu/packages/gtk.scm (guile-cairo): New variable.
2013-09-28 21:42:02 +02:00
Ludovic Courtès e0d2d05284 gnu: xorriso: Update to 1.3.2.
* gnu/packages/cdrom.scm (xorriso): Update to 1.3.2.
2013-09-28 16:36:39 +02:00
Ludovic Courtès 34d02e6d11 gnu: lightning: Update to 2.0.1.
* gnu/packages/lightning.scm (lightning): Update to 2.0.1.
2013-09-28 16:35:11 +02:00
Ludovic Courtès 8c9a63f1ad gnu: freeipmi: Update to 1.3.2.
* gnu/packages/freeipmi.scm (freeipmi): Update to 1.3.2.
2013-09-28 16:30:20 +02:00
Ludovic Courtès dc26f0c9ce gnu: gdb: Update to 7.6.1.
* gnu/packages/gdb.scm (gdb): Update to 7.6.1.
2013-09-28 16:29:52 +02:00
Ludovic Courtès 55f0336630 gnu: bison: Update to 3.0.
* gnu/packages/bison.scm (bison): Update to 3.0.  Make Perl a native
  input.  Add a variant of Flex as a native input.  Use #:export instead
  of 'define-public'.
* gnu/packages/flex.scm (flex): Use #:export instead of 'define-public'.
2013-09-27 22:06:38 +02:00
Ludovic Courtès d6f10ca3fe gnu: units: Update to 2.02.
* gnu/packages/maths.scm (units): Update to 2.02.
2013-09-27 22:05:08 +02:00
Ludovic Courtès b16b7a0666 gnu: texinfo: Update to 5.2.
* gnu/packages/texinfo.scm (texinfo): Update to 5.2.
2013-09-27 22:02:50 +02:00
Ludovic Courtès 09d80ed583 gnu: global: Update to 6.2.9.
* gnu/packages/global.scm (global): Update to 6.2.9.
2013-09-27 22:00:30 +02:00
Ludovic Courtès 07ef14afc9 build: Bump version to 0.5.
* configure.ac: Switch to 0.5.
2013-09-27 21:10:20 +02:00
Ludovic Courtès f887601ac8 gnu: guix: Update to 0.4.
* gnu/packages/package-management.scm (guix): Update to 0.4.
  (guix-0.4): Remove.
* gnu/system/vm.scm (qemu-image, system-qemu-image): Use GUIX instead of
  GUIX-0.4.
2013-09-27 21:09:02 +02:00
Ludovic Courtès 867e3c5553 gnu: vm: Remove erroneous store reference.
* gnu/system/vm.scm (system-qemu-image): Remove reference from BOOT to
  MINGETTY since MINGETTY may not be valid yet.
2013-09-27 21:06:35 +02:00
Ludovic Courtès 81bb9b6665 Update '.po' files. 2013-09-27 14:32:16 +02:00
Ludovic Courtès 9f84f12fde gnu: vm: Add more packages to the profile.
* gnu/system/vm.scm (system-qemu-image): Add grep, sed, and Findutils to
  the profile.
2013-09-27 13:50:15 +02:00
Nikita Karetnikov ba7ea5ce33 doc: Fix typos.
* doc/guix.texi: Fix typos.
2013-09-27 08:22:02 +00:00
Ludovic Courtès bb5f01c55d Update 'NEWS'. 2013-09-27 08:44:55 +02:00
Ludovic Courtès 5c413a9cbc gnu: module-init-tools: Remove reference to unavailable man page tarball.
Fixes <http://bugs.gnu.org/15187>.
Reported by Mark H. Weaver <mhw@netris.org>.

* gnu/packages/linux.scm (module-init-tools): Remove reference to
  Gentoo's pre-built man pages and 'unpack-man-pages' phase.  Add
  'fake-docbook' phases.
2013-09-27 08:41:19 +02:00
Ludovic Courtès 6bf3e5f72d Update 'NEWS'. 2013-09-27 01:50:59 +02:00
Ludovic Courtès f312d5430e gnu: guix: Remove warning about 0.4 hack.
* gnu/packages/package-management.scm (guix-0.4): Remove warning.
2013-09-27 01:39:52 +02:00
Ludovic Courtès 2442257f2d Merge branch 'core-updates' 2013-09-27 01:30:57 +02:00
Ludovic Courtès 1bb9900a2a doc: Link from "guix gc" to '--delete-generations'.
* doc/guix.texi (Invoking guix package): Mention that deleting
  generations prevents roll-back.
  (Invoking guix gc): Link to '--delete-generations'.
2013-09-27 01:26:26 +02:00
Ludovic Courtès d7ddb257c9 guix package: '--delete-generations' deletes generations older than specified.
* guix/scripts/package.scm (matching-generations): Add
  'duration-relation' keyword parameter.
  (guix-package)[process-action](delete-generations): Pass
  #:duration-relation >.
* tests/guix-package.sh: Add test.
* doc/guix.texi (Invoking guix package): Clarify the meaning of
  durations for '--list-durations' and '--delete-durations'.
2013-09-27 01:23:59 +02:00
Ludovic Courtès 03f4ef28b1 tests: Fix typo.
* tests/guix-package.sh: Add missing "-p" option.
2013-09-27 01:07:37 +02:00
Ludovic Courtès 5b16ff0985 gnu: vm: Add a few packages to the default profile.
* gnu/system/vm.scm (system-qemu-image): Add procps, psmisc, and Zile to
  the default profile.  Increase the image size to 550 MiB.
2013-09-27 00:46:18 +02:00
Ludovic Courtès 87eb734d38 gnu: dmd: Make the 'networking' service slightly more robust.
* gnu/system/dmd.scm (static-networking-service)[start]: Sleep before
  running 'route', to leave time for the interface to come up.
  [stop]: Run "route del -net default".
2013-09-27 00:46:18 +02:00
Ludovic Courtès 17886b3022 gnu: vm: Set the right permissions and ownership on directories.
* gnu/system/vm.scm (qemu-image): Change the store's mode to #o1775.
  Support 'populate' clauses that specify a UID and GID.
  (system-qemu-image): Make sure /nix/store has owner 'root' and group
  'guixbuild'.  Set the right owner for /home/guest.  Create
  /var/nix/profiles/per-user/{root,guest}.
2013-09-27 00:46:18 +02:00
Ludovic Courtès fbd1c3e95b gnu: linux-initrd: Mount /tmp as a tmpfs.
* gnu/packages/linux-initrd.scm (gnu-system-initrd): Make sure /root/tmp
  exists; mount it as a tmpfs.
2013-09-27 00:46:17 +02:00
Ludovic Courtès d0c66871b1 gnu: vm: Add build users.
* gnu/system/shadow.scm (guix-build-accounts): New procedure.
* gnu/system/vm.scm (system-qemu-image): Use it.  Add the "guixbuild"
  group.
* gnu/system/dmd.scm (guix-service): Add 'builder-group' parameter.
  Pass 'guix-daemon' the '--build-users-group' option.
2013-09-27 00:46:17 +02:00
Ludovic Courtès 3abf9b440b gnu: vm: Add /etc/{services,protocols,rpc} to the image.
* gnu/system/vm.scm (system-qemu-image): Link
  /etc/{services,protocols,rpc}.  Add net-base as an input.
2013-09-27 00:46:17 +02:00
Ludovic Courtès dadee6cd6e Run 'guix' with '--no-auto-compile'.
* scripts/guix.in: Change '-s' to '--no-auto-compile'.  This avoids
  annoying messages about auto-compilation, and avoids permission denied
  issues when running without write access in the usual places.
2013-09-27 00:46:17 +02:00
Ludovic Courtès 8bc755c08c gnu: vm: Add a 'guest' account.
* gnu/system/vm.scm (system-qemu-image): Add a "guest" user and a
  "users" user group.  Make /home/guest.  Add /etc/group.  Update
  /etc/issue to mention it.
2013-09-27 00:46:17 +02:00
Ludovic Courtès 16a0e9dc34 gnu: shadow: Add record type for user groups.
* gnu/system/shadow.scm (<user-group>): New record type.
  (group-file): New procedure.
* gnu/system/vm.scm (system-qemu-image): Use it.
2013-09-27 00:46:17 +02:00
Ludovic Courtès bacadb026c gnu: shadow: Add record type for user accounts.
* gnu/system/shadow.scm (<user-account>): New record type.
  (passwd-file): Use it.
* gnu/system/vm.scm (system-qemu-image): Adjust accordingly.
2013-09-27 00:46:17 +02:00
Ludovic Courtès c773aba870 gnu: Add net-base.
* gnu/packages/system.scm (net-base): New variable.
2013-09-27 00:46:17 +02:00
Ludovic Courtès 03761a4465 build-system/trivial: Take the 'source' field into account.
* guix/build-system/trivial.scm (trivial-build): When SOURCE is true,
  add it to INPUTS.
  (trivial-cross-build): Likewise.
* tests/packages.scm ("trivial with source"): New test.
2013-09-27 00:46:17 +02:00
Ludovic Courtès 59c5c4dee1 gnu: vm: Set the default networking route.
* gnu/system/dmd.scm (static-networking-service): Add #:gateway
  parameter and honor it.
* gnu/system/vm.scm (system-qemu-image): Pass #:gateway to
  'static-networking-service'.
2013-09-27 00:46:17 +02:00
Ludovic Courtès 85e0dc6a6b gnu: Add net-tools.
* gnu/packages/linux.scm (net-tools): New variable.
2013-09-27 00:46:16 +02:00
Ludovic Courtès d08213980c gnu: dmd: Download from alpha.gnu.org.
* gnu/packages/system.scm (dmd): Use the alpha.gnu.org URL.
2013-09-27 00:46:16 +02:00
Andreas Enge b2f0005aad gnu: harfbuzz: Update to 0.9.21.
* gnu/packages/gtk.scm (harfbuzz): Update to 0.9.21.
2013-09-26 18:44:31 +02:00
Andreas Enge c1cab15a54 gnu: Add dvdisaster.
* gnu/packages/cdrom.scm (dvdisaster): New variable.
2013-09-26 18:26:44 +02:00
Nikita Karetnikov b7884ca3ca guix package: Add '--delete-generations'.
* guix/scripts/package.scm (switch-to-previous-generation): New function.
  (roll-back): Use the new function instead of 'switch-link'.
  (show-help): Add '--delete-generations'.
  (%options): Likewise.
  (guix-package)[process-actions]: Add 'current-generation-number',
  'display-and-delete', and 'delete-generation'.  Add support for
  '--delete-generations', and reindent the code.
* tests/guix-package.sh: Test '--delete-generations'.
* doc/guix.texi (Invoking guix-package): Document '--delete-generations'.
2013-09-26 15:41:43 +00:00
Nikita Karetnikov 64d2e973fb guix package: Add 'link-to-empty-profile'.
* guix/scripts/package.scm (link-to-empty-profile): New function.
  (roll-back): Use it.
2013-09-26 15:41:43 +00:00
Nikita Karetnikov 4658b2c47b guix package: Exit with 0 when there is nothing to list.
* guix/scripts/package.scm (guix-package)[process-query]: Exit with 0
  when there are no generations containing packages or no profiles.
2013-09-26 15:41:43 +00:00
Andreas Enge c9cb0825c9 gnu: xf86-input-joystick: Fix installation path.
* gnu/packages/xorg.scm (xf86-input-joystick): Fix installation path.
2013-09-26 17:33:33 +02:00
Andreas Enge 36c0d43000 gnu: xf86-input-vmmouse: Fix installation path.
* gnu/packages/xorg.scm (xf86-input-vmmouse): Fix installation path.
2013-09-26 16:29:28 +02:00
Andreas Enge de9c504697 gnu: xf86-input-synaptics: Fix installation paths.
* gnu/packages/xorg.scm (xf86-input-synaptics): Fix installation paths.
2013-09-26 16:23:36 +02:00
Ludovic Courtès 7facbf2b58 Merge branch 'master' into core-updates 2013-09-26 00:20:11 +02:00
Ludovic Courtès 834b5c8076 gnu: zile: Fix references to /bin/sh.
* gnu/packages/zile.scm (zile): Add 'patch-/bin/sh' phase.  Move Perl
  and help2man to 'native-inputs'.
2013-09-26 00:15:51 +02:00
Ludovic Courtès 349746dfcd gnu: vm: Add nscd service.
* gnu/system/dmd.scm (nscd-service): New procedure.
* gnu/system/vm.scm (system-qemu-image): Use it.  Make /var/run/nscd.
2013-09-26 00:07:42 +02:00
Ludovic Courtès de8bcdaeb5 packages: Make the 'output' parameter of 'package-output' optional.
* guix/packages.scm (package-output): Make the 'output' parameter
  optional.
2013-09-25 23:26:42 +02:00
Ludovic Courtès f83e943fe7 gnu: vm: Add 'networking' service.
* gnu/system/vm.scm (system-qemu-image): Use
  'static-networking-service'.  Add /etc/resolv.conf.  Add Inetutils to
  the profile.
* gnu/system/dmd.scm (static-networking-service): New procedure.
2013-09-25 23:26:08 +02:00
Ludovic Courtès 27cab84c6d gnu: vm: Register the profile as a GC root.
* gnu/system/vm.scm (system-qemu-image): Register PROFILE as a GC root.
2013-09-25 23:05:33 +02:00
Ludovic Courtès ba47851fac gnu: vm: Add 'host-name' service.
* gnu/system/dmd.scm (host-name-service): New procedure.
  (mingetty-service): Require the 'host-name' service.
* gnu/system/vm.scm (system-qemu-image): Add the 'host-name' service.
  Set PS1 in /etc/bashrc to something sensible.
2013-09-25 21:49:22 +02:00
Ludovic Courtès 43a2779876 gnu: vm: Add /etc/issue and a motd.
* gnu/system/vm.scm (system-qemu-image): Build a 'motd' and an 'issue'
  file.  Pass 'unix-pam-service' that motd.  Have /etc/issue point to
  the 'issue' file.
2013-09-25 21:47:10 +02:00
Ludovic Courtès d09cb44967 Update 'eo.po'. 2013-09-25 21:25:47 +02:00
Ludovic Courtès d5d0f286a2 gnu: vm: Change #:populate to a list of directives.
* gnu/system/vm.scm (qemu-image): Change 'populate' parameter to be a
  list of directives.
  (system-qemu-image): Adjust accordingly.
2013-09-25 18:58:25 +02:00
Ludovic Courtès 25eb16bf3b gnu: vm: Add more ttys.
* gnu/system/vm.scm (system-qemu-image): Add more ttys.
2013-09-25 18:58:25 +02:00
Ludovic Courtès 65d195e140 gnu: vm: Change GRUB label.
* gnu/system/vm.scm (system-qemu-image): Change GRUB label.
2013-09-25 18:58:25 +02:00
Ludovic Courtès 0b86a82dc7 gnu: vm: Make a union of the visible packages; add /etc/profile.
* gnu/system/vm.scm (qemu-image): Add Guix as an input when
  INITIALIZE-STORE?.
  (union): New procedure.
  (system-qemu-image): Use it.  Build /etc/profile.  Pass PROFILE among
  #:inputs-to-copy instead of listing all the individual profiles.
  Remove explicit 'build-derivations' call.
2013-09-25 18:58:25 +02:00
Ludovic Courtès 37c58656eb gnu: vm: Support derivation objects as inputs.
* gnu/system/vm.scm (expression->derivation-in-linux-vm)[input-alist]:
  Add case for derivation? objects.
  Same for #:inputs values.
  (qemu-image)[input->name+derivation]: Likewise.
2013-09-25 18:58:25 +02:00
Ludovic Courtès 8f37bf6200 Update 'NEWS'. 2013-09-25 18:58:25 +02:00
Nikita Karetnikov 9ac9360d6e guix package: Show which generation is the current one.
* guix/scripts/package.scm (guix-package)[process-query]: Show that a
  generation is the current one if the profile points to it.
* tests/guix-package.sh: Test it.
2013-09-25 16:10:40 +00:00
Nikita Karetnikov aad5af9f40 tests: Use 'test -z' to check that a string equals zero. 2013-09-25 16:09:50 +00:00
Nikita Karetnikov 4b2bc804d8 guix package: Do not list the zeroth generation.
* guix/scripts/package.scm (guix-package)[process-query]: Change
  'list-generation' to not list the zeroth generation.
* tests/guix-package.sh: Test it.
* doc/guix.texi (Invoking guix package): Document it, and use the
  right term when talking about generations.
2013-09-25 16:08:39 +00:00
Nikita Karetnikov 0ab212b946 guix package: Exit with 1 when a generation cannot be listed.
* guix/scripts/package.scm (guix-package)[process-query]: Exit with 1
  when a generation does not exist or the profile points to the zeroth
  generation.
* tests/guix-package.sh: Test the former case.
2013-09-25 16:07:50 +00:00
Andreas Enge 98fbd7ceeb gnu: libksba: Update to 1.3.0.
* gnu/packages/gnupg.scm (libksba): Update to 1.3.0.
2013-09-25 13:46:34 +02:00
Andreas Enge 24f3e788d0 gnu: libgcrypt: Update to 1.5.3
* gnu/packages/gnupg.scm (libgcrypt): Update to 1.5.3.
2013-09-25 13:43:20 +02:00
Andreas Enge f1be806183 gnu: gnupg: Update to 2.0.21.
* gnu/packages/gnupg.scm (gnupg): Update to 2.0.21.
2013-09-25 11:52:33 +02:00
Andreas Enge 78c7e3449f gnu: pspp: Update to 0.8.1.
* gnu/packages/maths.scm (pspp): Update to 0.8.1.
2013-09-25 11:08:16 +02:00
Andreas Enge b972db7275 gnu: fontconfig: Add and register gs-fonts.
* gnu/packages/fontutils.scm (fontconfig): Add gs-fonts as an input and
    register it in the configuration file; so any porgram using fontconfig
    should at least have the gs-fonts at its disposal.
2013-09-25 09:48:13 +02:00
Ludovic Courtès 1fa49a2c46 gnu: m4: Upgrade to 1.4.17.
* gnu/packages/m4.scm (m4): Upgrade to 1.4.17.  Remove
  'm4-s_isdir.patch' and 'm4-gets-undeclared.patch'.
* gnu/packages/patches/m4-s_isdir.patch: Remove.
* gnu-system.am (dist_patch_DATA): Adjust accordingly.
2013-09-25 00:39:19 +02:00
Ludovic Courtès f1dfb7c47c gnu: guix: Rework 0.4 hack to gracefully handle lack of tarball.
* gnu/packages/package-management.scm (guix-0.4): Fall back to the
  source of GIUX when the tarball doesn't exist.
2013-09-25 00:13:06 +02:00
Ludovic Courtès 9fcc355529 gnu: vm: Add a service for the Guix daemon.
* gnu/system/dmd.scm (guix-service): New procedure.
* gnu/system/vm.scm (system-qemu-image): Use it.
2013-09-24 23:40:50 +02:00
Ludovic Courtès 30f25b033c gnu: vm: Initialize the image's store.
* gnu/system/vm.scm (qemu-image): Add 'initialize-store?' keyword
  parameter.  Use 'guix-register' when INITIALIZE-STORE? is true.
  (system-qemu-image): Pass #:initialize-store? #t.
2013-09-24 23:40:50 +02:00
Ludovic Courtès 2d195e6775 gnu: guix: Set $localstatedir; add gzip as input.
* gnu/packages/package-management.scm (guix): Add "--localstatedir=/var".
  Add GZIP as an explicit input, to avoid referring to the final gzip.
2013-09-24 23:40:50 +02:00
Ludovic Courtès 923206f79b guix-register: Allow the initial directory creation to proceed.
This fixes a bug whereby 'guix-register' would bail out when trying to
create NIX_STORE_DIR/.links when NIX_STORE_DIR is read-only.

* nix/guix-register/guix-register.cc (parse_opt): Initialize
  'settings.nixStore' to PREFIX + NIX_STORE_DIR.
  (main): Change 'settings.nixStore' once the 'LocalStore' has been
  instantiated.
2013-09-24 23:40:49 +02:00
Ludovic Courtès 9d3c4daed3 gnu: racket: Add dependency on GTK+.
* gnu/packages/scheme.scm (racket): Add dependency on GTK+ and
  gdk-pixbuf.
2013-09-24 23:40:49 +02:00
Andreas Enge 2365338b18 gnu: xorg: Fix xorg-server.
* gnu/packages/xorg.scm (xkbcomp-intermediate): New variable, serves as
    input to xkeyboard-config.
* gnu/packages/xorg.scm (xkeyboard-config): Add input xkbcomp-intermediate.
* gnu/packages/xorg.scm (xkbcomp): Add input xkeyboard-config.
* gnu/packages/xorg.scm (xorg-server): Adapt xkb paths and replace references
    to /bin/sh (with Ludovic Courtès <ludo@gnu.org>).
2013-09-24 21:56:33 +02:00
Ludovic Courtès caf96debc2 guix-register: Expect closures to refer to the original store.
* nix/guix-register/guix-register.cc (prefix): New variable.
  (parse_opt): Use it.
  (register_validity): Change 'info.path' to the final store name.
  Hash the final under its real path.
* tests/guix-register.sh: Adjust the contents of $closure accordingly.
  Rename 'NIX_LOCALSTATE_DIR' to 'NIX_STATE_DIR'.  Don't try to call
  'valid-path?'.  Add test using 'sqlite3'.
2013-09-23 23:56:35 +02:00
Alex Sassmannshausen a4141d6d53 list-packages: Progressive Enhancement approach to JS.
* build-aux/list-packages.scm (package->sxml): Add parameters previous,
  description-ids and remaining, update docstring accordingly. Introduce logic
  for fold-values process.
  (insert-tr): Moved sxml package table-row generation to new function; remove
  <a> elements and JS function calls. These are created through JS
  (prep_pkg_descs). Add insert-js-call for every 15th package, and the last.
  (insert-js-call): New function.
  (packages->sxml): Change map to fold values; add init params.
  (insert-js): show_hide: add compatibility check, introduce, use thingLink
               prep: new JS function.
               bulk_show_hide: new JS function.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-09-23 17:49:39 +02:00
Andreas Enge 4fd6bf5337 gnu: mutt: Add SASL for authenticated SMTP.
* gnu/packages/mail.scm (mutt): Add input cyrus-sasl.
2013-09-23 12:50:59 +02:00
Ludovic Courtès 5608847c6f Merge branch 'master' into core-updates 2013-09-23 00:35:17 +02:00
Ludovic Courtès f59e9eaac8 build: check-available-binaries: Adjust to derivation API change.
* build-aux/check-available-binaries.scm: Use 'derivation->output-path'
  instead of 'derivation-path->output-path'.
2013-09-23 00:33:50 +02:00
Ludovic Courtès 48e488eb2c nar: Fix file descriptor leak when writing a Nar.
* guix/nar.scm (write-contents)[call-with-binary-input-file]: Always
  close PORT.
2013-09-23 00:33:50 +02:00
Ludovic Courtès f566d765a1 doc: Document '--list-generations' among the query options.
* doc/guix.texi (Invoking guix package): Move '--list-generations' below
  "In addition to these actions".
2013-09-23 00:33:50 +02:00
Ludovic Courtès bd9bde1cba guix package: Show most recently installed packages last.
Suggested by Andreas Enge <andreas@enge.fr>.

* guix/scripts/package.scm (guix-package)[list-generations,
  list-installed]: Reverse the result of 'manifest-packages'.
* doc/guix.texi (Invoking guix package): Document the order of packages
  for '--list-generations' and '--list-installed'.
2013-09-23 00:33:50 +02:00
Ludovic Courtès a7a4e6a4f7 Add 'guix-register'.
* nix/guix-register/guix-register.cc, tests/guix-register.sh: New
  files.
* Makefile.am (SH_TESTS)[BUILD_DAEMON]: Add tests/guix-register.sh.
* daemon.am (sbin_PROGRAMS, guix_register_SOURCES,
  guix_register_CPPFLAGS, guix_register_LDADD): New variables.
* test-env.in: Export 'storedir', 'prefix', 'datarootdir', 'datadir',
  and 'localstatedir'.
2013-09-23 00:33:50 +02:00
Ludovic Courtès 996ed6acd5 build: Build the daemon with -Wall.
* daemon.am (AM_CXXFLAGS): New variable.
2013-09-23 00:33:50 +02:00
Andreas Enge 13f04f48d0 gnu: Add mutt.
* gnu/packages/mail.scm (mutt): New variable.
2013-09-22 22:30:18 +02:00
Andreas Enge d983a14f81 gnu: Add fetchmail.
* gnu/packages/mail.scm (fetchmail): New variable.
2013-09-22 21:56:36 +02:00
Andreas Enge 1fdd3ee2a6 gnu: Rename module mailutils to mail.
* gnu/packages/mail.scm: Rename from gnu/packages/mailutils.scm.
* gnu-system.am: Rename the module.
2013-09-22 21:01:40 +02:00
Andreas Enge 995b726131 gnu: Add gnome-doc-utils.
* gnu/packages/gnome.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add module.
2013-09-22 17:53:01 +02:00
Andreas Enge 477c91ce73 gnu: Add gst-plugins-base.
* gnu/packages/gstreamer.scm (gst-plugins-base): New variable.
2013-09-22 17:25:12 +02:00
Andreas Enge 144f9f251d gnu: gstreamer: Depend on python-wrapper.
* gnu/packages/gstreamer.scm (gstreamer): Replace input python by
    python-wrapper.
2013-09-22 16:41:29 +02:00
Andreas Enge 22885fb845 gnu: Add gstreamer.
* gnu/packages/gstreamer.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add module.
2013-09-22 16:22:00 +02:00
Andreas Enge 93be8dc4c9 gnu: xcursor-themes: Install data into package output directory.
* gnu/packages/xorg.scm (xcursor-themes): Install icons into output directory
    instead of libxcursor.
2013-09-22 11:16:08 +02:00
Andreas Enge 421a80a2b2 gnu: Add python2-pyicu.
* gnu/packages/python.scm (python2-pyicu): New variable.
2013-09-22 09:44:49 +02:00
Ludovic Courtès 99882c613c guix package: Sort the list of generation numbers in '--list-generations'.
* guix/scripts/package.scm (generation-numbers): Sort the result.
2013-09-21 22:35:14 +02:00
Ludovic Courtès 4d497632ce guix package: Internationalize "Generation" string.
* guix/scripts/package.scm (guix-package): Internationalize generation
  listing.
2013-09-21 22:32:20 +02:00
Ludovic Courtès 35aee909f7 Thank Cyrill. 2013-09-21 22:16:26 +02:00
Ludovic Courtès 3b627eac48 pull: Adjust to 'derivation' API change.
Fixes <http://bugs.gnu.org/15428>.
Reported by Cyrill Schenkel <cyrill.schenkel@gmail.com>.

* guix/scripts/pull.scm (guix-pull): 'unpack' returns a single value.
2013-09-21 22:16:26 +02:00
Andreas Enge 0352532e6a gnu: Add python-simplejson, python2-simplejson.
* gnu/packages/python.scm (python-simplejson, python2-simplejson):
    New variables.
2013-09-21 21:14:19 +02:00
Ludovic Courtès ed0cdf837d gnu: python2-pysqlite: Fix 'license'.
* gnu/packages/python.scm (python2-pysqlite): Refer to (@ (guix
  licenses) zlib), not to the same-named package.
2013-09-21 01:59:46 +02:00
Ludovic Courtès 4646e30a7a gnu: QEMU images boots into dmd.
* gnu/system/dmd.scm: New file.
* gnu/system/vm.scm (system-qemu-image): Define dmd services.
  [populate]: Make var/log and etc/group.
  [boot]: Execute dmd directly.
  Add dmd and etc-group as inputs; add the inputs of dmd services.
* gnu-system.am (GNU_SYSTEM_MODULES): Add gnu/system/dmd.scm.
2013-09-21 01:09:06 +02:00
Ludovic Courtès f15164e791 gnu: Add GNU dmd.
* gnu/packages/system.scm (dmd): New variable.
2013-09-21 01:09:06 +02:00
Nikita Karetnikov 2cd09108c9 guix package: Add '--list-generations'.
* guix/scripts/package.scm: Import (srfi srfi-19).
  (generation-time, matching-generations): New functions.
  (show-help): Add '--list-generations'.
  (%options): Likewise.
  (guix-package)[process-query]: Add support for '--list-generations'.
* guix/ui.scm: Import (srfi srfi-19) and (ice-9 regex).
  (string->generations, string->duration): New functions.
* tests/guix-package.sh: Test '--list-generations'.
* tests/ui.scm: Import (srfi srfi-19).
  Test 'string->generations' and 'string->duration'.
* doc/guix.texi (Invoking guix-package): Document '--list-generations'.
2013-09-19 11:22:31 +00:00
Andreas Enge 0c456db45b gnu: isl: Update urls.
* gnu/packages/gcc.scm (isl): Update source and home page url.
2013-09-19 09:14:23 +02:00
Ludovic Courtès 72d9148fbf hydra: Pass the directory name of the Nix checkout.
* build-aux/hydra/guix.scm (hydra-jobs): Extract the 'file-name' item
  from NIX-CHECKOUT, and pass that to 'tarball-package'.
2013-09-18 23:07:45 +02:00
Ludovic Courtès 1210c32ecc hydra: Fix typo.
* build-aux/hydra/guix.scm (tarball-package): Unquote 'nix-checkout'.
2013-09-18 20:58:49 +02:00
Ludovic Courtès 97d010b7f8 hydra: Add missing import.
* build-aux/hydra/gnu-system.scm, build-aux/hydra/guix.scm: Use (guix
  derivations).
2013-09-18 20:49:47 +02:00
Ludovic Courtès 3301f17970 hydra: Return the .drv file names, not the <derivation> objects.
* build-aux/hydra/gnu-system.scm (package->alist): Call
  'derivation-file-name' on the result of 'package-derivation'.
* build-aux/hydra/guix.scm (package->alist): Likewise.
2013-09-18 19:37:50 +02:00
Ludovic Courtès 37c0ce3d27 hydra: Point the Git submodule to our local copy.
* build-aux/hydra/guix.scm (tarball-package): Add 'nix-checkout'
  parameter.  Replace 'patch-bootstrap-script' phase by
  'set-nix-module'.
  (hydra-jobs): Get the 'nix' value from ARGUMENTS, and pass it to
  'tarball-package'.
2013-09-18 19:00:13 +02:00
Ludovic Courtès 59688fc4b5 derivations: 'derivation' and related procedures return a single value.
* guix/derivations.scm (derivation->output-path,
  derivation->output-paths): New procedures.
  (derivation-path->output-path): Use 'derivation->output-path'.
  (derivation-path->output-paths): Use 'derivation->output-paths'.
  (derivation): Accept 'derivation?' objects as inputs.  Return a single
  value.
  (build-derivations): New procedure.
  (compiled-modules): Use 'derivation->output-paths'.
  (build-expression->derivation)[source-path]: Add case for when the
  input matches 'derivation?'.
  [prologue]: Accept 'derivation?' objects in INPUTS.
  [mod-dir, go-dir]: Use 'derivation->output-path'.
* guix/download.scm (url-fetch): Adjust to the single-value return.
* guix/packages.scm (package-output): Use 'derivation->output-path'.
* guix/scripts/build.scm (guix-build): When the argument is
  'derivation-path?', pass it through 'read-derivation'.
  Use 'derivation-file-name' to print out the .drv file names, and to
  register them.  Use 'derivation->output-path' instead of
  'derivation-path->output-path'.
* guix/scripts/package.scm (roll-back): Adjust to the single-value
  return.
  (guix-package): Use 'derivation->output-path'.
* guix/ui.scm (show-what-to-build): Adjust to deal with 'derivation?'
  objects instead of .drv file names.
* gnu/system/grub.scm (grub-configuration-file): Use
  'derivation->output-path' instead of 'derivation-path->output-path'.
* gnu/system/vm.scm (qemu-image, system-qemu-image): Likewise.
* tests/builders.scm, tests/derivations.scm, tests/packages.scm,
  tests/store.scm, tests/union.scm: Adjust to the new calling
  convention.
* doc/guix.texi (Defining Packages, The Store, Derivations): Adjust
  accordingly.
2013-09-18 18:49:53 +02:00
Ludovic Courtès 81b66f8567 tests: Clarify filtering of the "debug" output.
* tests/guix-package.sh: Clearly filter out the "debug" output of
  'gnu-make-boot0'.
2013-09-18 16:42:51 +02:00
Ludovic Courtès 07c86312ca derivations: Add a nicer printer.
* guix/derivations.scm (<derivation>): Add a printer.
2013-09-18 11:10:02 +02:00
Ludovic Courtès 6a446d5680 derivations: Keep the .drv file name in <derivation> objects.
* guix/derivations.scm (<derivation>): Add 'file-name' field.
  (%read-derivation): Use (port-filename DRV-PORT) as the file name for
  the result.
  (derivation): Set the 'file-name' field in the result.
* tests/derivations.scm ("build derivation with 1 source"): Assert that
  'derivation-file-name' returns the right thing.
2013-09-17 23:02:13 +02:00
Ludovic Courtès 803704418c gnu: dbus: Add dependency on libX11.
* gnu/packages/glib.scm: Use #:export instead of 'define-public'.
  (dbus): Add LIBX11 as an input.
2013-09-16 21:39:07 +02:00
Ludovic Courtès 692b93408f gnu: glibc: Fix 'ldd' on x86_64.
Reported by Cyril Roelandt at
<https://lists.gnu.org/archive/html/guix-devel/2013-09/msg00136.html>.

* gnu/packages/patches/glibc-ldd-x86_64.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/base.scm (glibc): Use it.
2013-09-15 23:37:32 +02:00
Ludovic Courtès 66018f1c33 utils: 'find-files' returns a sorted list.
* guix/build/utils.scm (find-files): Sort the result lexicographically.
* guix/scripts/pull.scm (unpack): Don't sort the result of 'find-files'.
2013-09-15 23:21:30 +02:00
Andreas Enge aae4ead814 Merge branch 'python' 2013-09-14 10:45:01 +02:00
Ludovic Courtès 29479de565 substitute-binary: Add '--help'.
Reported by Nikita Karetnikov <nikita@karetnikov.org>.

* guix/scripts/substitute-binary.scm (show-help): New procedure.
  (guix-substitute-binary): Add '--help'.
2013-09-13 23:42:36 +02:00
Ludovic Courtès 0cb9b45674 gnu: gnutls: Upgrade to 3.2.4.
* gnu/packages/gnutls.scm (gnutls): Update to 3.2.4; remove 'arguments'
  field, remove "patch/fix-tests" from the inputs.
* gnu/packages/patches/gnutls-fix-tests-on-32-bits-system.patch: Remove.
* gnu-system.am (dist_patch_DATA): Adjust accordingly.
2013-09-13 16:26:59 +02:00
Andreas Enge 2875caf5b5 gnu: Add python2-mechanize.
* gnu/packages/python.scm (python2-mechanize): New variable.
2013-09-13 14:25:53 +02:00
Nikita Karetnikov 1b0a8212d1 guix package: Rename generation-related procedures.
* guix/scripts/package.scm (profile-numbers): Rename to 'generation-numbers'.
  (previous-profile-number): Rename to 'previous-generation-number'.
  (profile-number): Rename to 'generation-number'.
  (roll-back): Rename 'previous-profile' to 'previous-generation'.
2013-09-13 07:07:01 +00:00
Andreas Enge 1d08c01fcf gnu: Add python2-sqlite.
* gnu/packages/python.scm (python2-sqlite): New variable.
2013-09-12 15:31:45 +02:00
Ludovic Courtès 7763c538ad Thank Matthias and Yutaka. 2013-09-12 14:11:15 +02:00
Ludovic Courtès ea16738085 daemon: Use 'int' instead of the internal 'gcry_md_algo_t' type.
Fixes compilation with the forthcoming libgcrypt 1.6.x.
Reported by Matthias Wachs <wachs@net.in.tum.de>
and NIIBE Yutaka <gniibe@fsij.org>.

* nix/libutil/gcrypt-hash.cc (guix_hash_init, guix_hash_final): Use
  'int' as the type of the 'algo' parameter.
* nix/libutil/gcrypt-hash.hh: Update declarations accordingly.
2013-09-12 14:09:29 +02:00
Ludovic Courtès 8eaa8a3bf0 gnu: avahi, dbus: Use /var as $localstatedir.
* gnu/packages/avahi.scm (avahi): Pass '--localstatedir'; add
  'patch/localstatedir'.
* gnu/packages/glib.scm (dbus): Pass '--localstatedir' and
  '--with-session-socket-dir'; add 'patch/localstatedir'.
* gnu/packages/patches/avahi-localstatedir.patch,
  gnu/packages/patches/dbus-localstatedir.patch: New files.
* gnu-system.am (dist_patch_DATA): Add them.
2013-09-11 23:37:57 +02:00
Andreas Enge e1804763d0 gnu: Update python-babel, python2-babel to 1.3.
* gnu/packages/python.scm (python-babel, python2-babel): Update to 1.3.
2013-09-11 22:56:52 +02:00
Ludovic Courtès 0ded70f37d gnu: Move helper code to (gnu system …) modules.
* gnu/packages/grub.scm (<menu-entry>, grub-configuration-file): Move
  to...
* gnu/system/grub.scm: ... here.  New file.
* gnu/packages/linux.scm (<pam-service>, <pam-entry>,
  pam-service->configuration, pam-service->directory,
  %pam-other-services, unix-pam-service): Move to...
* gnu/system/linux.scm: ... here.  New file.
* gnu/system/vm.scm (passwd-file): Move to...
* gnu/system/shadow.scm: ... here.  New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add
  gnu/system/{grub,linux,shadow}.scm.
2013-09-11 22:36:50 +02:00
Ludovic Courtès aedb72fbe0 gnu: vm: Remove potluck hacks.
* gnu/system/vm.scm (example1): Remove.
  (example2): Rename to...
  (system-qemu-image): ... this.  Add 'store' parameter, and remove call
  to 'open-connection'.
2013-09-11 20:27:36 +02:00
Andreas Enge fc50e9c694 gnu: Add python-dateutil, python2-dateutil.
* gnu/packages/python.scm (python-dateutil, python2-dateutil): New variables.
2013-09-11 15:51:13 +02:00
Andreas Enge 824af8cadc guix: python: Create module installation path and add it to PYTHONPATH during
the installation phase.

* guix/build/python-build-system.scm (get-python-version): New procedure.
* guix/build/python-build-system.scm (install): Create and add path.
* gnu/packages/python.scm (python-setuptools): Drop path creation code.
2013-09-11 15:47:34 +02:00
Ludovic Courtès a843fe2222 gnu: vm: Setup PAM.
* gnu/system/vm.scm (example2): Use 'pam-services->directory'.  Change
  POPULATE to create /etc/pam.d, /etc/login.defs, and /var/run.  Change
  BOOT to spawn syslogd; boot to Bash.  Add inputs.
2013-09-11 01:07:50 +02:00
Ludovic Courtès 3b07625ad6 gnu: vm: Create shadow files with the right format.
* gnu/system/vm.scm (passwd-file): When SHADOW? is true, use the right
  shadow(5) format.  Always add a trailing newline.
2013-09-11 01:07:50 +02:00
Ludovic Courtès 37c825eb79 linux-initrd: Create /dev/klog and /dev/kmsg.
* guix/build/linux-initrd.scm (make-essential-device-nodes): Make
  /dev/klog and /dev/kmsg.
2013-09-11 01:07:50 +02:00
Ludovic Courtès e0ba5fe5ab gnu: linux-initrd: Fix typo.
* gnu/packages/linux-initrd.scm (gnu-system-initrd): Add missing
  argument to 'format' call.
2013-09-11 01:07:50 +02:00
Ludovic Courtès c84d0eca05 gnu: linux-pam: Add declarative PAM service interface.
* gnu/packages/linux.scm (<pam-service>, <pam-entry>): New record
  types.
  (pam-service->configuration, pam-services->directory,
  unix-pam-service): New procedures.
  (%pam-other-services): New variable.
2013-09-11 01:07:50 +02:00
Ludovic Courtès cfbf916045 store: The 'references' parameter of 'add-text-to-store' is now optional.
* guix/store.scm (add-text-to-store): Make 'references' optional.
* tests/store.scm ("dead-paths", "references"): Use 'add-text-to-store'
  with no optional argument.
* doc/guix.texi (The Store): Adjust accordingly.
2013-09-11 01:07:49 +02:00
Andreas Enge 73adf22037 gnu: Add python-setuptools, python2-setuptools.
* gnu/packages/python.scm (python-setuptools, python2-setuptools):
    New variables.
2013-09-10 21:08:12 +02:00
Andreas Enge e1a264f6fa guix: python: Do not import %standard-phases from gnu-build-system.
* guix/build-system/python.scm (python-build): Drop module gnu-build-system.
    Thanks to Ludovic Courtès <ludo@gnu.org>.
2013-09-10 20:32:50 +02:00
Andreas Enge 590a4904d2 gnu: isl: Update urls.
* gnu/packages/gcc.scm (isl): Update source and home page url.
2013-09-10 19:05:43 +02:00
Andreas Enge 1d1f939798 guix: python: Add parameter #:phases to build system.
* guix/build-system/python.scm (python-build): Use parameter #:phases.
2013-09-10 11:58:02 +02:00
Ludovic Courtès d34c0ac6e9 gnu: vm: Copy /etc/shadow to the guest.
* gnu/system/vm.scm (example2): Add SHADOW to #:inputs-to-copy.
2013-09-09 21:52:14 +02:00
Ludovic Courtès 98aeb06b41 gnu: vm: Create valid /etc/shadow and /etc/passwd.
* gnu/system/vm.scm (/etc/passwd): Rename to...
  (passwd-file): ... this. Add 'shadow?' keyword parameter.  Change
  format of ACCOUNTS, and fix CONTENTS.
  (example2): Adjust accordingly.  Create both /etc/shadow and
  /etc/passwd, the latter being used by getpwnam(3) & co. when nscd is
  not running.
2013-09-08 23:52:03 +02:00
Ludovic Courtès 8ab73e91d6 gnu: vm: Clear timestamps on the imported files, like in the store.
* gnu/system/vm.scm (qemu-image): Clear timestamps on the copied files.
2013-09-08 23:30:12 +02:00
Andreas Enge 11bb85a10d guix: python: Add package-with-python2, a procedure rewriting a package
to compile with Python 2 instead of the default Python 3.

* guix/build-system/python.scm (default-python2, package-with-explicit-python,
    package-with-python2): New procedures.
* guix/build-system/python.scm (python2-pytz, python2-babel): Use
    package-with-python2.
2013-09-08 16:57:37 +02:00
Ludovic Courtès 8ce3104e0e Merge branch 'master' into core-updates 2013-09-08 12:11:32 +02:00
Ludovic Courtès 6bf25b7b05 hydra: Support a 'subset' argument.
* build-aux/hydra/gnu-system.scm (%core-packages): New variable.
  (%packages-to-cross-build): Make an alias for %CORE-PACKAGES.
  (hydra-jobs): Check for the 'subset' argument, and honor it for values
  "all" and "core".
2013-09-08 12:10:25 +02:00
Ludovic Courtès 3409bc0188 gnu: glibc: Upgrade to 2.18.
* gnu/packages/base.scm (glibc): Upgrade to 2.18.
2013-09-08 12:01:33 +02:00
Ludovic Courtès e7b385008c gnu: linux-libre: Upgrade to 3.11.
* gnu/packages/linux.scm (linux-libre): Upgrade to 3.11.  Add bc as an
  input.
2013-09-08 01:30:54 +02:00
Ludovic Courtès 0e2ddecd8e gnu: grub: Add support for building configuration files.
* gnu/packages/grub.scm (<menu-entry>): New record type.
  (grub-configuration-file): New procedure.
* gnu/system/vm.scm (qemu-image): Remove parameters 'linux',
  'linux-arguments', and 'initrd'.  Add 'grub-configuration' parameter.
  Honor them, and remove grub.cfg generation code accordingly.
  (example2): Use `grub-configuration-file', and adjust accordingly.
2013-09-07 17:23:23 +02:00
Ludovic Courtès 2df74ac117 doc: Add "Data Types and Pattern Matching" to the Coding Style.
* HACKING (Data Types and Pattern Matching): New section.
2013-09-07 15:51:29 +02:00
Nikita Karetnikov a129e0d877 gnu: Add the 'license:' prefix.
* gnu/packages/glib.scm (itstool): Change 'gpl3+' to 'license:gpl3+'.
2013-09-07 07:47:24 +00:00
Cyril Roelandt 20a26ff546 gnu: Add itstool.
* gnu/packages/glib.scm (itstool): New variable.
2013-09-06 20:59:55 +02:00
Ludovic Courtès 785859d306 gnu: vm: Add /etc/shadow in the QEMU image.
* gnu/system/vm.scm (qemu-image): Add 'populate' keyword parameter and
  honor it; make it an input.
  (/etc/shadow): New procedure.
  (example2): Call it; build 'populate' script, and pass it to
  'qemu-image'.
2013-09-05 23:57:40 +02:00
Ludovic Courtès 002e5ba887 gnu: vm: Remove unused 'qemu-image' argument.
* gnu/system/vm.scm (qemu-image): Remove 'boot-expression' parameter,
  superseded by 'linux-arguments'.
2013-09-05 22:14:21 +02:00
Andreas Enge b191f88ee3 guix: python: Add build phase and factor out calls to setup.py.
* guix/build/python-build-system.scm (call-setuppy): New procedure.
* guix/build/python-build-system.scm (build): New procedure.
* guix/build/python-build-system.scm (check, install): Use call-setuppy.
* guix/build/python-build-system.scm (%standard-phases): Add call to build.
2013-09-05 20:25:08 +02:00
Andreas Enge 49b90a7539 gnu: python: Disable tests in python2-pytz and python2-babel.
* gnu/packages/python.scm (python2-pytz, python2-babel): Disable tests.
2013-09-05 19:07:28 +02:00
Andreas Enge 8498b8cfac gnu: python: Disable tests in pytz and babel.
* gnu/packages/python.scm (python-pytz, python-babel): Disable tests.
2013-09-05 18:55:27 +02:00
Andreas Enge 7b96bf82da gnu: python: Honour #:tests? and #:test-target in build system.
* guix/build/python-build-system.scm (check): Use named parameters tests?
    and test-target (default now: "test" instead of "check").
2013-09-05 18:43:18 +02:00
Andreas Enge d1f30e9943 gnu: git: Switch back to Python 2.
* gnu/packages/version-control.scm (git): Switch back to Python 2.
2013-09-05 18:13:23 +02:00
Ludovic Courtès 1b89a66e1b gnu: vm: First stab at building a populated QEMU image.
* gnu/packages/linux-initrd.scm (gnu-system-initrd): New variable.
* gnu/system/vm.scm (qemu-image): Add #:linux-arguments parameter.
  [input->name+derivation]: Add case for 'store-path?' items.
  Remove LOADER from `inputs'.
2013-09-05 00:46:09 +02:00
Ludovic Courtès 29804e6eb2 gnu: linux-initrd: Fix creation of /dev/tty nodes.
* guix/build/linux-initrd.scm (make-essential-device-nodes): Make
  /dev/tty.  Change from 'block-special' to 'char-special' for /dev/tty*
  nodes.
2013-09-05 00:46:09 +02:00
Ludovic Courtès 7c1d8146a7 gnu: vm: 'qemu-image' populates /dev on the target root file system.
* gnu/system/vm.scm (qemu-image): Use (guix build linux-initrd).  Remove
  'mknod' calls; use 'make-essential-device-nodes' to populate /dev on
  the target image.
* gnu/packages/linux-initrd.scm (qemu-initrd): When /root/dev exists,
  don't call 'make-essential-device-nodes'.
2013-09-05 00:46:09 +02:00
Andreas Enge 89114f39e4 gnu: python: Implement the python naming scheme for pytz and babel.
* gnu/packages/python.scm (pytz): Rename this ...
* gnu/packages/python.scm (python-pytz): ... to this
* gnu/packages/python.scm (python2-pytz): New variable, input python-2.
* gnu/packages/python.scm (babel): Rename this ...
* gnu/packages/python.scm (python-babel): ... to this
* gnu/packages/python.scm (python2-babel): New variable, input python-2.
2013-09-04 22:12:33 +02:00
Andreas Enge aa9e22efa3 gnu: subversion: Switch back to Python 2.
* gnu/packages/version-control.scm (subversion): Switch back to Python 2.
2013-09-04 19:17:19 +02:00
Andreas Enge 66ed0c3146 gnu: qemu: Switch back to Python 2.
* gnu/packages/qemu.scm (qemu): Switch back to Python 2.
2013-09-04 19:13:41 +02:00
Andreas Enge 78fed0648f gnu: texlive: Switch back to Python 2.
* gnu/packages/texlive.scm (texlive): Switch back to Python 2.
2013-09-04 19:09:39 +02:00
Andreas Enge 9bee5d6c18 gnu: rubber: Switch back to Python 2.
* gnu/packages/texlive.scm (rubber): Switch back to Python 2.
2013-09-04 19:06:51 +02:00
Andreas Enge 98e4829c4b gnu: mesa: Switch back to Python 2.
* gnu/packages/xorg.scm (mesa): Switch back to Python 2.
2013-09-04 19:03:14 +02:00
Andreas Enge f82cfaac71 gnu: libxml2: Switch back to Python 2.
* gnu/packages/xml.scm (libxml2): Switch back to Python 2.
2013-09-04 18:54:53 +02:00
Andreas Enge 91da9ab009 gnu: zziplib: Switch back to Python 2.
* gnu/packages/zip.scm (zziplib): Switch back to Python 2.
2013-09-04 18:40:54 +02:00
Andreas Enge 1611eccd10 gnu: bazaar: Switch back to Python 2.
* gnu/packages/version-control.scm (bazaar): Switch back to Python 2.
2013-09-04 18:35:49 +02:00
Andreas Enge 3df47231e6 guix: python: Switch to python-wrapper as the default version for the python
build system (switches to Python 3) and compute python-version instead of
  passing it as a parameter.

* guix/build-system/python.scm (default-python): Switch to python-wrapper.
* guix/build-system/python.scm (python-build): Drop parameter #:python-version.
* guix/build/python-build-system.scm (wrap): Compute python version from input.
2013-09-04 18:07:55 +02:00
Andreas Enge e911470857 gnu: xorg: Update comment for mesa.
* gnu/packages/xorg.scm (mesa): New compilation trial with 9.2.
2013-09-04 18:02:58 +02:00
Andreas Enge 6c76c45145 gnu: libdrm: Update to 2.4.46.
* gnu/packages/xorg.scm (libdrm): Update to 2.4.46.
2013-09-04 11:16:22 +02:00
Ludovic Courtès 0280ef2203 hydra: Add Graphviz as an input to the "tarball" job.
* build-aux/hydra/guix.scm (tarball-package): Add GRAPHVIZ to
  `native-inputs'.
2013-09-03 22:21:48 +02:00
Andreas Enge ee3e314bb7 gnu: python: Replace input python by python-wrapper.
* gnu/packages/{gdb.scm (gdb), cryptsetup.scm (cryptsetup),
  ghostscript.scm (ghostscript), glib.scm (glib), gnupg.scm (pius),
  gtk.scm (cairo, harfbuzz), libevent.scm (libevent), netpbm.scm (netpbm),
  oggvorbis.scm (libkate), qemu.scm (qemu), samba.scm (samba),
  texlive.scm (rubber, texlive), version-control.scm (subversion),
  xml.scm (libxml2, libxslt), xorg.scm (libxcb, mesa, xcb-proto, xorg-server),
  yasm.scm (yasm), zip.scm (zziplib)}:
  Replace input python by python-wrapper.
2013-09-03 22:18:39 +02:00
Ludovic Courtès 7eed1d0438 hydra: Add Git as an input to the "tarball" job.
* build-aux/hydra/guix.scm (tarball-package): Add `native-inputs' field.
2013-09-03 22:07:21 +02:00
Andreas Enge 898238b9f5 gnu: python: Add package python-wrapper.
* gnu/packages/python.scm (python-wrapper): New variable.
2013-09-03 21:27:40 +02:00
Ludovic Courtès bda44eed93 pull: Compile files in the lexicographic order.
* guix/scripts/pull.scm (unpack): Print the name of the file being
  compiled.  Sort the names of files to compile.
2013-09-03 10:48:52 +02:00
Ludovic Courtès 8badfc5558 build-system/cmake: Fix typo.
* guix/build-system/cmake.scm (default-cmake): Add missing quote.
2013-09-03 10:20:59 +02:00
Ludovic Courtès 0a2873e515 build-system/gnu: Delay resolution of (@ (gnu packages cmake) cmake).
* guix/build-system/cmake.scm (default-cmake): New procedure.
  (cmake-build): Use it.
2013-09-03 10:18:38 +02:00
Ludovic Courtès 00554b2a0f substitute-binary: Show the Nar size, when available.
* guix/scripts/substitute-binary.scm (guix-substitute-binary)["--substitute"]:
  Show the Nar size, when available.
* guix/ui.scm (show-what-to-build): Add 'TODO'.
2013-09-02 23:33:13 +02:00
Ludovic Courtès 43dd92024a union: Don't traverse sub-directories only found in one element of the union.
This significantly reduces I/O when building profiles, especially with
lots of package-specific sub-directories (such as 'share/emacs/24.3',
'texmf', etc.)

* guix/build/union.scm (union-build)[file-tree](others-have-it?): New
  procedure.  Use it in the 'enter?' parameter of 'file-system-fold';
  change 'skip' parameter accordingly.
* tests/union.scm ("union-build"): Ensure that 'include' is a symlink
  and 'bin' is a directory.
2013-09-02 23:04:25 +02:00
Ludovic Courtès 165fd9d5e6 gnu: lzo: Build the shared library.
* gnu/packages/compression.scm (lzo): Build the shared library.
2013-09-02 23:04:25 +02:00
Andreas Enge b24d1cfc85 gnu: python: Revert 77c7f8f4 and make Python 3 the default.
* gnu/packages/python.scm (python-3): Rename this to...
* gnu/packages/python.scm (python): ...this, rename this to...
* gnu/packages/python.scm (python-2): ...this.
2013-09-02 21:48:50 +02:00
Cyril Roelandt fbc1a58f40 gnu: Add dfc.
* gnu/packages/system.scm (dfc): New variable.
2013-09-02 19:47:36 +02:00
Cyril Roelandt 340c7033a8 gnu: Add htop.
* gnu/packages/system.scm (htop): New variable.
2013-09-02 19:47:36 +02:00
Ludovic Courtès 1e151896d4 gnu: Add mingetty.
* gnu/packages/system.scm (mingetty): New variable.
2013-09-02 00:20:14 +02:00
Ludovic Courtès bf8e7fc502 store: Add a printer for <nix-server>.
* guix/store.scm (<nix-server>): Set a printer.
2013-09-02 00:20:14 +02:00
Ludovic Courtès d91712ee89 gnu: linux-initrd: Factorize device node creation.
* guix/build/linux-initrd.scm (make-essential-device-nodes): New
  procedure.
* gnu/packages/linux-initrd.scm (qemu-initrd): Use it.
2013-09-02 00:20:14 +02:00
Andreas Enge d9ff410fb2 gnu: Add git.
* gnu/packages/version-control.scm (git): New variable.
2013-09-01 21:56:57 +02:00
Andreas Enge c3f3e150c4 gnu: cairo: Update to 1.12.16.
* gnu/packages/gtk.scm (cairo): Update to 1.12.16.
2013-09-01 18:21:08 +02:00
Andreas Enge abac80c0fd gnu: Update harfbuzz to 0.9.20.
* gnu/packages/gtk.scm (harfbuzz): Update to 0.9.20.
2013-09-01 18:13:48 +02:00
Andreas Enge 77c7f8f41b gnu: python: Temporarily make python 2 the default.
* gnu/packages/python.scm (python-2): Rename this to...
* gnu/packages/python.scm (python): ...this, rename this to...
* gnu/packages/python.scm (python-3): ...this. Reverts to version 2 as the
  default input for packages requiring Python.
2013-09-01 17:46:49 +02:00
Ludovic Courtès 93d44bd8de gnu: vm: `qemu-image' can copy store closures into the target image.
* gnu/system/vm.scm (qemu-image): Add #:inputs-to-copy and
  #:boot-expression parameters.  Honor them.  Append INPUTS-TO-COPY to
  the #:inputs argument for `expression->derivation-in-linux-vm'.
  (example2): Add #:boot-expression and #:inputs-to-copy arguments.
2013-08-31 23:02:18 +02:00
Ludovic Courtès 4c0f0673b2 gnu: `expression->derivation-in-linux-vm' accepts files as inputs.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Accept items
  in INPUTS that refer to a file instead of a package.
2013-08-31 23:02:18 +02:00
Ludovic Courtès ca85d7bcc6 gnu: `expression->derivation-in-linux-vm' export references graphs.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Add
  #:reference-graphs parameter.  Honor it.  Delete duplicates in
  #:modules argument.
2013-08-31 23:02:18 +02:00
Ludovic Courtès b48d21b246 gnu: linux-initrd: Make device nodes for QEMU's hard disk.
* gnu/packages/linux-initrd.scm (qemu-initrd): Make /dev/vda*.
2013-08-31 23:02:18 +02:00
Ludovic Courtès 89bf140b10 gnu: linux-initrd: Make Guile modules accessible in the chroot.
* gnu/packages/linux-initrd.scm (qemu-initrd): Add (guix build utils) to
  #:modules, and use it.  Copy .scm and .go files to /root.
* guix/build/linux-initrd.scm (bind-mount): New procedure.
2013-08-31 23:02:18 +02:00
Andreas Enge 1aebc0cb2c gnu: python: Adapt native-search-paths for Python 3.3.
* gnu/packages/python.scm (python): Modify native-search-paths.
2013-08-31 18:43:17 +02:00
Andreas Enge f26a77ffbc gnu: Add Python 3.
*  gnu/packages/python.scm (python-2): Rename from python for version 2.
*  gnu/packages/python.scm (python): New variable for version 3.
2013-08-31 14:52:24 +02:00
Andreas Enge 91dcbafab9 gnu: Add yasm.
* gnu/packages/yasm.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add module.
2013-08-31 14:12:24 +02:00
Andreas Enge 37f9ff639e gnu: Add xmlto.
* gnu/packages/xml.scm (xmlto): New variable.
2013-08-31 13:47:46 +02:00
Andreas Enge 24b5c463f3 gnu: Add dbus-glib.
* gnu/packages/glib.scm (dbus-glib): New variable.
2013-08-31 12:46:08 +02:00
Andreas Enge d9c4b6e944 gnu: pari-gp: Update to 2.5.4.
* gnu/packages/algebra.scm (pari-gp): Update to 2.5.4.
2013-08-31 12:20:55 +02:00
Andreas Enge 71e0f28856 gnu: gsl: Disable numerically unstable test on i686.
* gnu/packages/maths.scm (gsl): Disable test.
2013-08-31 12:18:53 +02:00
Andreas Enge c8c871d184 doc: Stylistic changes to "Packaging Guidelines" 2013-08-31 00:02:00 +02:00
Ludovic Courtès 1a2e649561 doc: Add note about .dir-locals.el.
* HACKING (Coding Style): Mention special indentation rules and
  .dir-locals.el.
2013-08-30 23:53:13 +02:00
Ludovic Courtès e1c5a8357a doc: Add a "Coding Style" section in 'HACKING'.
* HACKING (Coding Style): New section.
2013-08-30 23:47:23 +02:00
Ludovic Courtès 67b1dd8dea doc: Remove "Adding new packages" from `HACKING'.
* HACKING (Adding new packages): Remove since it's now in the manual.
2013-08-30 23:47:22 +02:00
Nikita Karetnikov a827c623ca doc: Remove an extra space after @ref. 2013-08-30 16:35:32 +00:00
Ludovic Courtès ffc1074f86 gnu: hop: Allow compilation with Bigloo 4.0b.
Fixes <http://bugs.gnu.org/15194>.
Reported by Mark H Weaver <mhw@netris.org>.

* gnu/packages/patches/hop-bigloo-4.0b.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/scheme.scm (hop): Use it.
2013-08-30 14:18:51 +02:00
Andreas Enge 46cb9da285 doc: Add duplicate copyright notice again.
* doc/guix.texi: Add second copyright notice again inside @ifinfo, needed
  since the first one does not appear in the info output.
  Partially undoes commit da7cabd.
2013-08-29 22:36:23 +02:00
Ludovic Courtès 29f66ddd7b doc: Fix the image size in PDF/PS/DVI output.
* doc/guix.texi (Bootstrapping): Specify an image width for the TeX
  output.  Before that, the image would be much wider than the US Letter
  page width.
2013-08-29 21:58:53 +02:00
Ludovic Courtès 54461ce7eb build: Have `pdf' depend on the PDF image.
* doc.am (DOT_OPTIONS): Remove `-Tpng'.
  (.dot.pdf): New rule.
  (pdf-local): Depend on the .pdf.
2013-08-29 21:58:53 +02:00
Ludovic Courtès cb9e50f618 build: Use missing' for dot'.
* configure.ac: Substitute `DOT'.
* doc.am (.dot.png, .dot.eps): Use $(DOT).
2013-08-29 21:58:53 +02:00
Ludovic Courtès a9424c0887 build: Build docs from the top-level Makefile.
This undoes commit 575ed8d ("doc: Create own Makefile.am in subdirectory."),
and fixes a bug whereby "make pdf" or "make ps" wouldn't do anything.

* doc/Makefile.am: Remove.
* doc.am: New file.  Use `-local' rules to build the image.
* Makefile.am: Include it.
* configure.ac: Use `-Woverride' to avoid undesired overridding of
  Automake rules.
2013-08-29 21:58:52 +02:00
Andreas Enge 88bd1804a2 gnu: gsl: Move from module algebra to maths.
* gnu/packages/algebra.scm (gsl): Move variable from here...
* gnu/packages/maths.scm (gsl): ...to here.
2013-08-29 15:42:52 +02:00
Ludovic Courtès 88840f0246 gnu: linux-initrd: Add (guix build linux-initrd) and use it.
* gnu/packages/linux-initrd.scm (qemu-initrd): Add #:modules argument.
  Factorize and move some of the code to...
* guix/build/linux-initrd.scm: ... here.  New file.
* Makefile.am (MODULES): Add it.
2013-08-29 00:05:03 +02:00
Ludovic Courtès e47185a4a7 gnu: make-bootstrap: Remove the `debug' output from the static Coreutils.
* gnu/packages/make-bootstrap.scm (%static-inputs)[coreutils]: Add
  `outputs' field.
2013-08-29 00:05:03 +02:00
Ludovic Courtès f989fa392f gnu: linux-initrd: Allow Guile modules to be embedded in the initrd.
* gnu/packages/linux-initrd.scm (raw-build-system): New macro.
  (module-package, compiled-module-package): New procedures.
  (expression->initrd): Add `modules' keyword parameter.
  Add "modules" and "modules/compiled" inputs; copy them onto the
  initrd.
* guix/derivations.scm (imported-modules, compiled-modules): Publicize.
2013-08-29 00:05:03 +02:00
Andreas Enge f02b5474f1 gnu: imagemagick: Update to 6.8.6-9.
* gnu/packages/imagemagick.scm (imagemagick): Update to 6.8.6-9.
2013-08-28 23:33:24 +02:00
Andreas Enge ee85f3dbe9 doc: Add package guidelines for names and numbers.
* doc/guix.texi: Three new subsections.
2013-08-28 22:51:20 +02:00
Andreas Enge da7cabd46b doc: Shuffle some text around.
* doc/guix.texi: Drop duplicate copyright notice, start section
    "Packaging Guidelines" with existant text.
2013-08-28 22:04:52 +02:00
Andreas Enge 575ed8d5b3 doc: Create own Makefile.am in subdirectory.
* doc/Makefile.am: New file.
* Makefile.am: Reference subdirectory doc.
2013-08-28 21:44:14 +02:00
Alex Sassmannshausen 3d1b29a5c5 list-packages: Tidy CSS in preparation for split into external file.
* build-aux/list-packages.scm (insert-css): Tidy CSS alignment etc.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-08-28 14:18:29 +02:00
Ludovic Courtès 2455085a1e vm: Use more keyword parameters for `expression->derivation-in-linux-vm'.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Turn `system'
  and `inputs' into keyword parameters.
  (qemu-image, example1): Adjust accordingly.
2013-08-28 00:55:40 +02:00
Ludovic Courtès 858e92823f derivations: Rename #:dependency-graphs to #:references-graphs.
* guix/derivations.scm (derivation, build-expression->derivation):
  Rename #:dependency-graphs to #:references-graphs, for consistency in
  the terminology.
* tests/derivations.scm: Adjust accordingly.
2013-08-28 00:55:40 +02:00
Andreas Enge af807dea7f gnu: Update python to 2.7.5.
* gnu/packages/python.scm (python): Update to 2.7.5.
2013-08-27 10:49:43 +02:00
Ludovic Courtès 2d2ad98910 doc: Change `HACKING' to refer to guix-devel@gnu.org.
Reported by Alex Sassmannshausen <alex.sassmannshausen@gmail.com>.

* HACKING: Replace "bug-guix" by "guix-devel".
2013-08-26 22:23:53 +02:00
Ludovic Courtès 9c629a27a4 derivations: Add #:dependency-graphs to `build-expression->derivation'.
* guix/derivations.scm (build-expression->derivation): Add
  #:dependency-graphs keyword argument.  Pass it to `derivation'.
* tests/derivations.scm ("build-expression->derivation with
  #:dependency-graphs"): New test.
* doc/guix.texi (Derivations): Update `build-expression->derivation'
  description.
2013-08-26 22:20:58 +02:00
Ludovic Courtès 5b0c9d1635 derivations: Add #:dependency-graphs `derivation' parameter.
* guix/derivations.scm (derivation): Add `dependency-graphs' keyword
  parameter; honor it.
* tests/derivations.scm (bootstrap-binary): New procedure.
  (%bash): Use it.
  (%mkdir): New variable.
  (directory-contents): Add `slurp' optional parameter.
  ("derivation with #:dependency-graphs"): New test.
* doc/guix.texi (Derivations): Update accordingly.
2013-08-26 22:20:53 +02:00
Ludovic Courtès a987d2c025 derivations: Move 3 positional parameters into keyword parameters.
* guix/derivations.scm (derivation): Turn `system', `env-vars', and
  `inputs' into keyword parameters.
  (build-expression->derivation): Adjust accordingly.
* gnu/packages/bootstrap.scm (%bootstrap-guile): Likewise.
* tests/derivations.scm, tests/store.scm: Likewise.
* doc/guix.texi (Derivations): Likewise.
2013-08-26 22:20:27 +02:00
Ludovic Courtès 3e9066fcfc gnu: Add Guile-Lib.
* gnu/packages/guile.scm (guile-lib): New variable.
2013-08-26 16:04:15 +02:00
Ludovic Courtès 5d9cd70721 download: Add kernel.org mirrors.
Fixes <http://bugs.gnu.org/15182>.
Reported by Mark H Weaver <mhw@netris.org>.

* guix/download.scm (%mirrors)[kernel.org]: Add ftp.be.debian.org and
  mirror.linux.org.au.
2013-08-25 20:49:03 +02:00
Ludovic Courtès ef4eca529b hydra: Comment out all Git invocations in `bootstrap'.
* build-aux/hydra/guix.scm (tarball-package): Comment out all `git'
  invocations.
2013-08-25 20:37:59 +02:00
Ludovic Courtès d29aa3b5a3 hydra: Add missing import.
* build-aux/hydra/guix.scm: Use (srfi srfi-26).
2013-08-25 18:58:15 +02:00
Ludovic Courtès ef0677faa1 hydra: Add missing import.
* build-aux/hydra/guix.scm: Use (srfi srfi-26).
2013-08-25 17:53:49 +02:00
Ludovic Courtès 6ad507ae54 hydra: Return a symbol/thunk pair.
* build-aux/hydra/guix.scm (hydra-jobs): Return a symbol/thunk pair.
2013-08-25 16:48:10 +02:00
Ludovic Courtès 9eed6f9b88 gnu: pius: Use the right `gpg' binary.
* gnu/packages/gnupg.scm (pius): Add GnuPG as an input.  Patch the
  installed binaries to refer to the right GnuPG executable.  Fix
  synopsis.
2013-08-25 16:47:20 +02:00
Ludovic Courtès f29f066439 hydra: Extract the actual file name from the Guix checkout.
* build-aux/hydra/guix.scm (hydra-jobs): Extract the `file-name' part of
  CHECKOUT.
2013-08-24 18:24:17 +02:00
Ludovic Courtès 59e6ae6cf1 hydra: Add job to run "make distcheck" on Guix.
* build-aux/hydra/guix.scm: New file.
* Makefile.am (EXTRA_DIST): Add it.
2013-08-24 17:30:32 +02:00
Ludovic Courtès bbe8d8f028 gnu: Add Guix.
* gnu/packages/package-management.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2013-08-24 17:30:31 +02:00
Ludovic Courtès fe12c3458c build-system/gnu: Add `dist-package'.
* guix/build/gnu-dist.scm: New file.
* Makefile.am (MODULES): Add it.
* guix/build-system/gnu.scm (%default-modules): New variable.
  (gnu-build): Use it.
  (dist-package): New procedure.
2013-08-24 17:30:31 +02:00
Ludovic Courtès 7357138bba packages: Allow file names as package sources.
* guix/packages.scm (package-source-derivation): Add cases for SOURCE as
  a store path or user file.
* tests/packages.scm ("package-source-derivation, file",
  "package-source-derivation, store path"): New tests.
2013-08-24 17:30:31 +02:00
Ludovic Courtès b095792f9b doc: Mention what's in the chroot, and add a caveat about /dev/shm.
* doc/guix.texi (Setting Up the Daemon): Document the default content of
  the chroot, and the /dev/shm caveat.
2013-08-24 17:30:31 +02:00
Andreas Enge c9dfa3c721 gnu: Add pspp.
* gnu/packages/maths.scm (pspp): New variable.
* THANKS: Thank John Darrington for help with debugging.
2013-08-24 15:11:02 +02:00
Andreas Enge 88065ec247 gnu: Add libmicrohttpd.
* gnu/packages/gnunet.scm (libmicrohttpd): New variable.
2013-08-24 11:40:57 +02:00
Andreas Enge 8f8b24512a gnu: Add units.
* gnu/packages/maths.scm: New module.
* gnu-system.am (GNU_SYSTEM_MODULES): Add module.
2013-08-24 10:51:56 +02:00
Andreas Enge eb4b2ab6a8 gnu: Add libextractor.
* gnu/packages/gnunet.scm: New module.
* gnu-system.am (GNU_SYSTEM_MODULES): Add module.
* THANKS: Thank Christian Grothoff for help with debugging.
2013-08-24 10:41:07 +02:00
Andreas Enge 212525967e gnu: Add gkrellm.
* gnu/packages/gkrellm.scm: New module.
* gnu/packages/gnu-system.am (GNU_SYSTEM_MODULES): Add module.
2013-08-24 10:25:18 +02:00
Ludovic Courtès e78a0ae514 gnu: Add Valgrind.
* gnu/packages/valgrind.scm, gnu/packages/patches/valgrind-glibc.patch:
  New files.
* gnu-system.am (GNU_SYSTEM_MODULES): Add valgrind.scm.
  (dist_patch_DATA): Add valgrind-glibc.patch.
2013-08-24 10:21:14 +02:00
Ludovic Courtès 39b0484582 gnu: Add GNU lightning.
* gnu/packages/lightning.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2013-08-24 10:04:43 +02:00
Ludovic Courtès 853726dd36 gnu: tzdata: Fix hash of tzcode tarball.
Fixes <http://bugs.gnu.org/15153>.

* gnu/packages/base.scm (tzdata): Update tzcode hash, which was modified
  upstream.
2013-08-23 16:02:28 +02:00
Ludovic Courtès 7db3ff4a29 utils: Add `guile-version>?', and use it.
This fixes Guile version comparisons when (version) has a
vendor-specific suffix.

Reported by Andreas Enge <andreas@enge.fr>.

* guix/utils.scm (guile-version>?): New procedure.
* tests/utils.scm ("guile-version>? 1.8", "guile-version>? 10.5"): New
  tests.
* guix/scripts/substitute-binary.scm (fetch, progress-report-port): Use
  `guile-version>?' instead of `version>?'.
* guix/http-client.scm (when-guile<=2.0.5, http-fetch): Likewise.
2013-08-23 15:51:36 +02:00
Ludovic Courtès baed8816fc gnu: Have `qemu-image' explicitly reboot when done.
* gnu/system/vm.scm (qemu-image): Call `reboot' when we're done.  Change
  `menuentry' title.
2013-08-23 15:11:35 +02:00
Ludovic Courtès 290d437097 Add TODO item. 2013-08-23 11:37:10 +02:00
Ludovic Courtès b6952cad8d substitute-binary: Try hard to avoid port buffering.
* guix/scripts/substitute-binary.scm (fetch): In the `file' case, open
  with the `b' flag, so that the coding cookie reading thing doesn't
  lead to buffering some of the data (on 2.0.5).
* tests/utils.scm ("filtered-port, file"): Open with `r0b'.  Fixes a
  test failure with Guile 2.0.5 whereby the first byte of FILE would be
  missing from DECOMPRESSED.
2013-08-22 17:14:20 +02:00
Ludovic Courtès 3f69e393d3 gnu: guile-ncurses: Install modules under .../site/2.0.
* gnu/packages/guile.scm (guile-ncurses): Append /2.0 to `guilesitedir'.
2013-08-21 19:06:55 +02:00
Andreas Enge 911b1b9cb6 gnu: indent: Cosmetic change.
* gnu/packages/indent.scm (indent): Use #:renamer on licenses to be better
    suited as an example for packaging.
2013-08-21 12:05:18 +02:00
Ludovic Courtès 75ca2f4f47 gnu: make-bootstrap: Add a couple of synopses.
* gnu/packages/make-bootstrap.scm (%guile-static,
  %guile-static-stripped): Add synopsis.
2013-08-21 11:44:16 +02:00
Ludovic Courtès 3e8f16ba91 gnu: guile-static-stripped: Make sure the resulting binary works.
* gnu/packages/make-bootstrap.scm (%guile-static-stripped): When
  compiling natively, make sure the final binary works.
2013-08-21 11:38:51 +02:00
Ludovic Courtès 682cb00461 gnu: guile-static: Add missing hunk in guile-default-utf8.patch.
Before that, the ‘guile’ binary from ‘guile-static-stripped’ would abort
as it tries and fails to open an iconv descriptor for ISO-8859-1.

* gnu/packages/patches/guile-default-utf8.patch: Add missing hunk for
  Guile 2.0.9.
2013-08-21 11:33:27 +02:00
Ludovic Courtès db90b40dfd substitute-binary: Don't pretend to report download progress on Guile 2.0.5.
* guix/scripts/substitute-binary.scm (progress-report-port): On Guile
  2.0.5, return PORT directly and emit a warning.
2013-08-21 02:19:36 +02:00
Ludovic Courtès 6facbc7590 gnu: grub: Use older QEMU to run the test suite.
Fixes build failure <http://hydra.gnu.org/build/16064>.

* gnu/packages/grub.scm (qemu-for-tests): New variable.
  (grub): Use it.
2013-08-21 02:19:36 +02:00
Ludovic Courtès bbc08c7940 gnu: qemu: Install the Info manuals.
* gnu/packages/qemu.scm (qemu): Add `install-info' phase.  Add Texinfo
  as an input.
2013-08-21 02:19:36 +02:00
Andreas Enge 86f1537d3f gnu: Move non-X11 fonts from module xorg to fonts.
* gnu/packages/fonts.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add module fonts.
* gnu/packages/xorg.scm (font-bitstream-vera-ttf): Move this...
* gnu/packages/fonts.scm (ttf-bitstream-vera): ...to this.
* gnu/packages/xorg.scm (freefont-ttf): Move this...
* gnu/packages/fonts.scm (freefont-ttf): ...to this.
2013-08-20 15:03:10 +02:00
Andreas Enge 124b7f1e0f gnu: xorg: Shorten commented out packages.
* gnu/packages/xorg.scm: Shorten package definitions that are already
    commented out, keeping only the reason for not including them.
2013-08-20 14:35:38 +02:00
Andreas Enge 45f0ae8229 gnu: xorg: Remove non-free font font-bh-ttf/font-luxi-ttf.
* gnu/packages/xorg.scm (font-luxi-ttf): Comment out variable.
2013-08-20 14:27:43 +02:00
Ludovic Courtès 5aa601a37b gnu: glib: Add `file' as a propagated input.
* gnu/packages/glib.scm (intltool): Add FILE as an input.
2013-08-20 00:57:25 +02:00
Ludovic Courtès 7dca30734e gnu: Add exiv2 and Geeqie.
* gnu/packages/geeqie.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2013-08-20 00:57:25 +02:00
Ludovic Courtès e858326a0f gnu: bigloo: Update to 4.0b.
* gnu/packages/scheme.scm (bigloo): Update to 4.0b.  Patch the
  `configure-gc' scripts.  Remove `patch-absolute-file-names' phase.
* gnu/packages/patches/bigloo-gc-shebangs.patch: Adjust to new version.
2013-08-20 00:57:24 +02:00
Cyril Roelandt ba95e7028f list-packages: properly specify the size of images.
* build-aux/list-packages.scm (package->sxml, packages->sxml): specify the size
  of images in pixels (see
  http://www.w3.org/TR/html5/embedded-content-0.html#attr-dim-height)
2013-08-19 01:29:56 +02:00
Ludovic Courtès f99f6fd6fa gnu: Add GNU Ocrad.
* gnu/packages/ocrad.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2013-08-19 00:52:49 +02:00
Ludovic Courtès 482f8a07e3 gnu: freefont: Synchronize synopsis.
* gnu/packages/xorg.scm (freefont-ttf): Synchronize synopsis with the
  Womb.
2013-08-19 00:52:20 +02:00
Alex Sassmannshausen b866e4b379 list-packages: Add missing closing </div> after footer include.
* build-aux/list-packages.scm (list-packages): Add missing closing </div>
  after footer include.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-08-19 00:28:17 +02:00
Cyril Roelandt 251fbfddb7 list-packages: Remove a useless "colspan" attribute.
* build-aux/list-packages.scm (package->sxml): remove a useless "colspan"
  attribute.
2013-08-17 23:08:31 +02:00
Cyril Roelandt 0e5b0f78f6 list-packages: Add an "alt" attribute for the logos.
* build-aux/list-packages.scm (package->sxml): add an alternative text for the
  logos of the packages.
2013-08-17 20:05:48 +02:00
Ludovic Courtès 9a9e72d5ad gnu: Add Shadow.
* gnu/packages/system.scm (shadow): New variable.
2013-08-17 15:46:46 +02:00
Ludovic Courtès c134056a9b gnu: linux-pam: Install headers under $includedir/security.
* gnu/packages/linux.scm (linux-pam): Add `--includedir' configure flag.
2013-08-17 15:44:43 +02:00
Ludovic Courtès 10d3ab1073 gnu: Add GNU Freefont.
* gnu/packages/xorg.scm (freefont-ttf): New variable.
2013-08-17 00:07:40 +02:00
Ludovic Courtès 50731c51a4 gnu: Remove QEMU-KVM, which is no longer needed.
* gnu/packages/qemu.scm (qemu-kvm): Remove.
  (qemu): Incorporate parts of QEMU-KVM that used to be inherited.
  (qemu-kvm/smb-shares): Rename to...
  (qemu/smb-shares): ... this.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Adjust
  accordingly.
2013-08-16 23:55:51 +02:00
Ludovic Courtès e928da09c9 gnu: Add Bitstream Vera.
* gnu/packages/xorg.scm (font-bitstream-vera-ttf): New variable.
2013-08-15 23:51:52 +02:00
Ludovic Courtès 3b4f21bd1b gnu: Correct name and description of the Luxi font package.
* gnu/packages/xorg.scm (font-bitstream-type1): Rename to...
  (font-luxi-ttf): ... this.  Change name to "font-luxi-ttf".  Adjust
  synopsis and description.
2013-08-15 23:51:52 +02:00
Cyril Roelandt e12b3eb93e Make "guix -h" work as "guix --help".
* guix/ui.scm (guix-main): have the same behaviour for the "-h" and "--help"
  options.
2013-08-15 21:03:32 +02:00
Cyril Roelandt 1b50671ee1 list-packages: remove useless "language" attribute of "script" element
See http://www.w3.org/TR/html5-diff/#changed-attributes for more information.

* build-aux/list-packages.html (insert-js): remove "language" attribute, useless for the
  "script" element.
2013-08-15 19:30:21 +02:00
Cyril Roelandt 2ad6bfaba8 list-packages: remove deprecated "height" attribute on "td" element.
See http://www.w3.org/TR/html5-diff/#obsolete-attributes for more information.

* build-aux/list-packages.html(package-sxml)[description-id]: remove "height"
  attribute for "td" elements.
2013-08-15 17:19:34 +02:00
Alex Sassmannshausen 0938cd2731 list-packages: Tidying and refactoring in preparation for substantive changes.
* build-aux/list-packages.scm (package->sxml)[license, status]: Add
  title for <a> element.
  Add alt and title for gnu-logo <img> element.  Add title to package
  website <a> element.
  (packages->sxml): Wrap <div id="intro"> intro paragraph in <p> element.
  Add table header row to <table id="packages">
  Add <a> back to top of the page beneath table.
  (insert-css, insert-js): New procedures.
  (list-packages): Move JavaScript to 'insert-js', and CSS to 'insert-css'.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-08-15 16:42:29 +02:00
Alex Sassmannshausen 8bdf5241dc list-packages: Centralise CSS styling in <head>.
* build-aux/list-packages.scm (package-logo): Assign class of
  'package-description' to package synopsis div; 'package-logo'.  Move inline
  CSS where possible.
  (packages->sxml): Assign id of 'intro' to intro div, 'packages' to the
  table. Move inline CSS.
  (list-packages): Create new <style> section, containing all inline CSS.
  Move JavaScript <script> section to above banner include to place it in
  <head>.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2013-08-15 16:32:58 +02:00
Ludovic Courtès 1af63b797c Update `eo.po'. 2013-08-15 11:46:42 +02:00
Andreas Enge 25352fe106 gnu: Add ripperX.
* gnu/packages/mp3.scm (ripperx): New variable.
* gnu/packages/patches/ripperx-libm.patch: New file.
* gnu-system.am (dist_patch_DATA): Add patch.
2013-08-07 19:13:46 +02:00
Andreas Enge 6bfc16d93c gnu: Add cdparanoia.
* gnu/packages/cdrom.scm (cdparanoia): New variable.
* gnu/packages/patches/cdparanoia-fpic.patch: New file.
* gnu-system.am: Add patch.
2013-08-07 19:02:56 +02:00
Andreas Enge 2ae92cbcc1 gnu: Add lame.
* gnu/packages/mp3.scm (lame): New variable.
2013-08-07 18:07:21 +02:00
Andreas Enge fd89b36b5b gnu: texlive: Update to 2013.
* gnu/packages/texlive.scm (texlive): Update to 2013.
2013-08-07 15:57:14 +02:00
Andreas Enge 755693a42d gnu: xorg: Install fonts into package output instead of into font-util.
* gnu/packages/xorg.scm (font-adobe100dpi, font-adobe75dpi, font-misc-misc,
    font-schumacher-misc): Add configure flag to modify FONTROOTDIR.
2013-08-06 20:53:12 +02:00
Andreas Enge 9c2ecede41 gnu: fontconfig: Update to 2.10.93.
* gnu/packages/fontutils.scm (fontconfig): Update to 2.10.93.
2013-08-05 23:15:25 +02:00
Andreas Enge 2e77dc3027 gnu: harfbuzz: Update to 0.9.19.
* gnu/packages/gtk.scm (harfbuzz): Update to 0.9.19.
2013-08-05 23:08:50 +02:00
Andreas Enge 9c68798d98 gnu: mpfrcx: Update to 0.4.2.
* gnu/packages/algebra.scm (mpfrcx): Update to 0.4.2.
2013-08-05 22:14:44 +02:00
Andreas Enge 5a15ed5098 gnu: fplll: Update to 4.0.4.
* gnu/packages/algebra.scm (fplll): Update to 4.0.4.
2013-08-05 22:11:27 +02:00
Andreas Enge 7abe196529 gnu: emacs: Use gtk+.
* gnu/packages/emacs.scm (emacs): Enable input gtk+ instead of libXaw.
2013-08-05 21:59:56 +02:00
Andreas Enge 0ceea4f3ed gnu: fontconfig: Look for fonts in user profile.
* gnu/packages/fontutils.scm (fontconfig): Add configure flag.
2013-08-05 21:59:49 +02:00
Andreas Enge 0327ced235 gnu: gtk+: Synchronise description with GSRC.
* gnu/packages/gtk.scm (gtk+): Modify description.
2013-08-05 19:55:01 +02:00
Andreas Enge 2b24faa295 gnu: Rename "libapr" to "apr" and "libaprutil" to "apr-util".
* gnu/packages/apr.scm: Rename file from libapr.scm.
* gnu/packages/patches/apr-skip-getservbyname-test.patch: Rename file
    from libapr-skip-getservbyname-test.patch.
* gnu-system.am (GNU_SYSTEM_MODULES): Rename module libapr to apr.
* gnu-system.am (dist_patch_DATA): Rename patch file.
* gnu/packages/apr.scm (apr): Rename from libapr.
* gnu/packages/apr.scm (apr-util): Rename from libaprutil, change
    input name.
* gnu/packages/version-control.scm (subversion): Change input name.
2013-08-05 15:12:50 +02:00
Ludovic Courtès 75c6fd43ed gnu: Add Xnee.
* gnu/packages/xnee.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2013-07-20 00:50:35 +02:00
Ludovic Courtès 7c80a8b618 gnu: ddrescue: Update to 1.17.
* gnu/packages/ddrescue.scm (ddrescue): Update to 1.17.  Add lzip as a
  native input.
2013-07-20 00:32:16 +02:00
Ludovic Courtès 0f323dad0e gnu: Add lzip.
* gnu/packages/compression.scm (lzip): New variable.
2013-07-20 00:24:17 +02:00
Ludovic Courtès 3dfd7cef0d Update `TODO'. 2013-07-19 23:22:59 +02:00
Ludovic Courtès 044498a0b9 build: Bump version to 0.4.
* configure.ac: Switch to 0.4.
2013-07-19 00:08:24 +02:00
Ludovic Courtès 8b2d9e5d44 doc: Improve build instructions in README and HACKING.
* README (Requirements): Remove Nixpkgs.  Remove mentions of building
  from Git.
  (Installation): Refer to the manual.
* HACKING: List requirements for when building from Git.
  Remove the `dot: Command not found' error.
2013-07-19 00:07:03 +02:00
590 changed files with 126310 additions and 12270 deletions
+43 -4
View File
@@ -1,22 +1,61 @@
;; Per-directory local variables for GNU Emacs 23 and later.
((nil . ((fill-column . 78)
(tab-width . 8)))
((nil
. ((fill-column . 78)
(tab-width . 8)
;; For use with 'bug-reference-prog-mode'.
(bug-reference-url-format . "http://bugs.gnu.org/%s")
(bug-reference-bug-regexp
. "<https?://\\(debbugs\\|bugs\\)\\.gnu\\.org/\\([0-9]+\\)>")))
(c-mode . ((c-file-style . "gnu")))
(scheme-mode
.
((indent-tabs-mode . nil)
(eval . (put 'eval-when 'scheme-indent-function 1))
(eval . (put 'test-assert 'scheme-indent-function 1))
(eval . (put 'test-equal 'scheme-indent-function 1))
(eval . (put 'test-eq 'scheme-indent-function 1))
(eval . (put 'call-with-input-string 'scheme-indent-function 1))
(eval . (put 'guard 'scheme-indent-function 1))
(eval . (put 'lambda* 'scheme-indent-function 1))
(eval . (put 'substitute* 'scheme-indent-function 1))
(eval . (put 'with-directory-excursion 'scheme-indent-function 1))
(eval . (put 'package 'scheme-indent-function 1))
(eval . (put 'package 'scheme-indent-function 0))
(eval . (put 'origin 'scheme-indent-function 0))
(eval . (put 'build-system 'scheme-indent-function 0))
(eval . (put 'bag 'scheme-indent-function 0))
(eval . (put 'graft 'scheme-indent-function 0))
(eval . (put 'operating-system 'scheme-indent-function 0))
(eval . (put 'file-system 'scheme-indent-function 0))
(eval . (put 'manifest-entry 'scheme-indent-function 0))
(eval . (put 'manifest-pattern 'scheme-indent-function 0))
(eval . (put 'substitute-keyword-arguments 'scheme-indent-function 1))
(eval . (put 'with-store 'scheme-indent-function 1))
(eval . (put 'with-error-handling 'scheme-indent-function 0))
(eval . (put 'with-mutex 'scheme-indent-function 1))))
(eval . (put 'with-mutex 'scheme-indent-function 1))
(eval . (put 'with-atomic-file-output 'scheme-indent-function 1))
(eval . (put 'call-with-compressed-output-port 'scheme-indent-function 2))
(eval . (put 'call-with-decompressed-port 'scheme-indent-function 2))
(eval . (put 'signature-case 'scheme-indent-function 1))
(eval . (put 'emacs-batch-eval 'scheme-indent-function 0))
(eval . (put 'emacs-batch-edit-file 'scheme-indent-function 1))
(eval . (put 'emacs-substitute-sexps 'scheme-indent-function 1))
(eval . (put 'emacs-substitute-variables 'scheme-indent-function 1))
(eval . (put 'syntax-parameterize 'scheme-indent-function 1))
(eval . (put 'with-monad 'scheme-indent-function 1))
(eval . (put 'mbegin 'scheme-indent-function 1))
(eval . (put 'mlet* 'scheme-indent-function 2))
(eval . (put 'mlet 'scheme-indent-function 2))
(eval . (put 'run-with-store 'scheme-indent-function 1))
;; Recognize '~', '+', and '$', as used for gexps, as quotation symbols.
;; This notably allows '(' in Paredit to not insert a space when the
;; preceding symbol is one of these.
(eval . (modify-syntax-entry ?~ "'"))
(eval . (modify-syntax-entry ?$ "'"))
(eval . (modify-syntax-entry ?+ "'"))))
(emacs-lisp-mode . ((indent-tabs-mode . nil)))
(texinfo-mode . ((indent-tabs-mode . nil)
(fill-column . 72))))
+49 -15
View File
@@ -22,19 +22,40 @@ config.cache
/m4/nls.m4
/m4/po.m4
/m4/progtest.m4
/po/ChangeLog
/po/Makefile.in.in
/po/Makevars.template
/po/POTFILES
/po/Rules-quot
/po/boldquot.sed
/po/en@boldquot.header
/po/en@quot.header
/po/insert-header.sin
/po/quot.sed
/po/remove-potcdate.sin
/po/stamp-po
/po/guix.pot
/po/guix/ChangeLog
/po/guix/Makefile.in.in
/po/guix/Makevars.template
/po/guix/POTFILES
/po/guix/Rules-quot
/po/guix/boldquot.sed
/po/guix/en@boldquot.*
/po/guix/en@quot.*
/po/guix/insert-header.sin
/po/guix/*.insert-header
/po/guix/quot.sed
/po/guix/remove-potcdate.sed
/po/guix/remove-potcdate.sin
/po/guix/stamp-po
/po/guix/guix.pot
/po/guix/*.mo
/po/guix/*.gmo
/po/packages/ChangeLog
/po/packages/Makefile.in.in
/po/packages/Makevars.template
/po/packages/POTFILES
/po/packages/Rules-quot
/po/packages/boldquot.sed
/po/packages/en@boldquot.*
/po/packages/en@quot.*
/po/packages/insert-header.sin
/po/packages/*.insert-header
/po/packages/quot.sed
/po/packages/remove-potcdate.sed
/po/packages/remove-potcdate.sin
/po/packages/stamp-po
/po/packages/guix-packages.pot
/po/packages/*.mo
/po/packages/*.gmo
/tests/*.trs
/INSTALL
/m4/*
@@ -44,8 +65,9 @@ config.cache
/doc/guix.pdf
/doc/stamp-vti
/doc/version.texi
/gnu/packages/bootstrap/x86_64-linux/guile-2.0.7.tar.xz
/gnu/packages/bootstrap/i686-linux/guile-2.0.7.tar.xz
/gnu/packages/bootstrap/x86_64-linux/guile-2.0.9.tar.xz
/gnu/packages/bootstrap/i686-linux/guile-2.0.9.tar.xz
/gnu/packages/bootstrap/mips64el-linux/guile-2.0.9.tar.xz
/guix/config.scm
/nix/nix-daemon/nix-daemon.cc
/nix/config.h
@@ -76,3 +98,15 @@ stamp-h[0-9]
/nix/scripts/substitute-binary
/doc/images/bootstrap-graph.png
/doc/images/bootstrap-graph.eps
/guix-register
GPATH
GRTAGS
GTAGS
/nix-setuid-helper
/nix/scripts/guix-authenticate
/nix/scripts/offload
/emacs/Makefile.in
/emacs/Makefile
/emacs/guix-autoloads.el
/emacs/guix-helper.scm
/emacs/guix-init.el
+1 -1
View File
@@ -1,3 +1,3 @@
[submodule "nix-upstream"]
path = nix-upstream
url = http://github.com/NixOS/nix.git
url = https://github.com/NixOS/nix.git
+22 -6
View File
@@ -5,11 +5,27 @@ build daemon whose code comes from Nix (see the manual for details.)
Nix was initially written by Eelco Dolstra; other people have been
contributing to it. See `nix/AUTHORS' for details.
GNU Guix was initiated by Ludovic Courtès <ludo@gnu.org>, but it would
not be what it is without the contributions of the following people (in
The fine people listed below have contributed code to GNU Guix (in
alphabetical order):
Andreas Enge <andreas@enge.fr>
Nikita Karetnikov <nikita@karetnikov.org>
Cyril Roelandt <tipecaml@gmail.com>
Mark H. Weaver <mhw@netris.org>
Eric Bavier <bavier@member.fsf.org>
Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>
Federico Beffa <beffa@fbengineering.ch>
Marek Benc <merkur32@gmail.com>
Sou Bunnbu (宋文武) <iyzsong@gmail.com>
Ludovic Courtès <ludo@gnu.org>
John Darrington <jmd@gnu.org>
Andreas Enge <andreas@enge.fr>
Alírio Eyng <alirioeyng@gmail.com>
Joshua Grant <tadni@riseup.net>
Raimon Grau <raimonster@gmail.com>
Nikita Karetnikov <nikita@karetnikov.org>
Aljosha Papsch <misc@rpapsch.de>
Manolis Ragkousis <manolis837@gmail.com>
Cyril Roelandt <tipecaml@gmail.com>
Alex Sassmannshausen <alex.sassmannshausen@gmail.com>
Cyrill Schenkel <cyrill.schenkel@gmail.com>
Jason Self <j@jxself.org>
Sree Harsha Totakura <sreeharsha@totakura.in>
David Thompson <dthompson2@worcester.edu>
Mark H. Weaver <mhw@netris.org>
+88 -63
View File
@@ -2,8 +2,9 @@
#+TITLE: Hacking GNU Guix and Its Incredible Distro
Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
Copyright © 2014 Pierre-Antoine Rault <par@rigelk.eu>
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
@@ -12,16 +13,27 @@ Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
* Building from Git
First, make sure that Autoconf (>= 2.69), Automake, and pkg-config are
installed. Run ./bootstrap that, among other things, invokes git submodule
update, or you might get the following error
When building Guix from a checkout, the following packages are required in
addition to those mentioned in the installation instructions:
- [[http://www.gnu.org/software/autoconf/][GNU Autoconf]]
- [[http://www.gnu.org/software/automake/][GNU Automake]]
- [[http://www.gnu.org/software/gettext/][GNU Gettext]]
- [[http://www.graphviz.org/][Graphviz]]
Run ./bootstrap to download the Nix daemon source code and to generate the
build system infrastructure using autoconf. It reports an error if an
inappropriate version of the above packages is being used.
The bootstrap script, among other things, invokes git submodule update; if
you didnt run it, you may get the following error:
make: *** No rule to make target `nix/libstore/schema.sql', needed by
`nix/libstore/schema.sql.hh'
Then, as always, run ./configure. If you get an error like this one
If you get an error like this one:
./configure: line 6755: `PKG_CHECK_MODULES(GUILE, guile-2.0 >= 2.0.5)'
configure.ac:46: error: possibly undefined macro: PKG_CHECK_MODULES
it probably means that Autoconf couldnt find pkg.m4, which is provided by
pkg-config. Make sure that pkg.m4 is available. For instance, if you
@@ -32,17 +44,11 @@ installed Automake in /usr/local, it wouldnt look for .m4 files i
See “info '(automake) Macro Search Path'” for more information.
After that you should proceed with make. You might also get this error
/bin/bash: dot: command not found
make[2]: *** [doc/images/bootstrap-graph.png] Error 127
This one is easy to handle; just install Graphviz. It is not listed as a
requirement because the resulting images should come with a tarball.
Then, run ./configure as usual.
Finally, you have to invoke make check to run tests. If anything fails,
take a look at “info '(guix) Installation'” or send a message to
<bug-guix@gnu.org>.
<guix-devel@gnu.org>.
* Running Guix before it is installed
@@ -75,78 +81,97 @@ addition to that, you must not miss [[http://www.emacswiki.org/emacs/ParEdit][Pa
directly operate on the syntax tree, such as raising an s-expression or
wrapping it, swallowing or rejecting the following s-expression, etc.
* Adding new packages
Package recipes in Guix look like this:
#+BEGIN_SRC scheme
(package
(name "nettle")
(version "2.5")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/nettle/nettle-"
version ".tar.gz"))
(sha256
(base32
"0wicr7amx01l03rm0pzgr1qvw3f9blaw17vjsy1301dh13ll58aa"))))
(build-system gnu-build-system)
(inputs `(("m4" ,m4)))
(propagated-inputs `(("gmp" ,gmp)))
(home-page
"http://www.lysator.liu.se/~nisse/nettle/")
(synopsis "GNU Nettle, a cryptographic library")
(description
"Nettle is a cryptographic library...")
(license gpl2+))
#+END_SRC
Such a recipe can be written by hand, and then tested by running
./pre-inst-env guix build nettle.
When writing the recipe, the base32-encoded SHA256 hash of the source
code tarball, which can be seen in the example above, can be obtained by
running:
guix download http://ftp.gnu.org/gnu/nettle/nettle-2.5.tar.gz
Alternatively, it is possible to semi-automatically import recipes from
the [[http://nixos.org/nixpkgs/][Nixpkgs]] software distribution using this command:
guix import /path/to/nixpkgs/checkout nettle
The command automatically fetches and converts to Guix the “Nix
expression” of Nettle.
* Submitting Patches
Development is done using the Git distributed version control system. Thus,
access to the repository is not strictly necessary. We welcome contributions
in the form of patches as produced by git format-patch sent to
bug-guix@gnu.org. Please write commit logs in the [[http://www.gnu.org/prep/standards/html_node/Change-Logs.html#Change-Logs][GNU ChangeLog format]].
guix-devel@gnu.org. Please write commit logs in the [[http://www.gnu.org/prep/standards/html_node/Change-Logs.html#Change-Logs][GNU ChangeLog
format]]; you can check the commit history for examples.
Before submitting a patch that adds or modifies a package definition, please
run guix lint PACKAGE, where PACKAGE is the name of the new or modified
package, and fix any errors it reports. In addition, please make sure the
package builds on your platform, using guix build. You may also want to
check that dependent package (if applicable) are not affected by the change;
guix refresh --list-dependent PACKAGE will help you do that.
When posting a patch to the mailing list, use "[PATCH] ..." as a subject. You
may use your email client or the git send-mail command.
As you become a regular contributor, you may find it convenient to have write
access to the repository (see below.)
* Coding Style
In general our code follows the [[info:standards][GNU Coding Standards]] (GCS). However, the GCS
do not say much about Scheme, so here are some additional rules.
** Programming Paradigm
Scheme code in Guix is written in a purely functional style. One exception is
code that involves input/output, and procedures that implement low-level
concepts, such as the memoize procedure.
** Modules
Guile modules that are meant to be used on the builder side must live in the
(guix build …) name space. They must not refer to other Guix or GNU modules.
However, it is OK for a “host-side” module to use a build-side module.
Modules that deal with the broader GNU system should be in the (gnu …) name
space rather than (guix …).
** Data Types and Pattern Matching
The tendency in classical Lisp is to use lists to represent everything, and
then to browse them “by hand” using car, cdr, cadr, and co. There are
several problems with that style, notably the fact that it is hard to read,
error-prone, and a hindrance to proper type error reports.
Guix code should define appropriate data types (for instance, using
define-record-type*) rather than abuse lists. In addition, it should use
pattern matching, via Guiles (ice-9 match) module, especially when matching
lists.
** Formatting Code
When writing Scheme code, we follow common wisdom among Scheme programmers.
In general, we follow the [[http://mumble.net/~campbell/scheme/style.txt][Riastradh's Lisp Style Rules]]. This document happens
to describe the conventions mostly used in Guiles code too. It is very
thoughtful and well written, so please do read it.
Some special forms introduced in Guix, such as the substitute* macro, have
special indentation rules. These are defined in the .dir-locals.el file,
which Emacs automatically uses. If you do not use Emacs, please make sure to
let your editor know the rules.
We require all top-level procedures to carry a docstring. This requirement
can be relaxed for simple private procedures in the (guix build …) name space,
though.
Procedures should not have more than four positional parameters. Use keyword
parameters for procedures that take more than four parameters.
* Commit Access
For frequent contributors, having write access to the repository is
convenient. When you deem it necessary, feel free to ask for it on the
mailing list. When you get commit access, please make sure to follow the
policy below (discussions of the policy can take place on bug-guix@gnu.org.)
policy below (discussions of the policy can take place on guix-devel@gnu.org.)
Non-trivial patches should always be posted to bug-guix@gnu.org (trivial
Non-trivial patches should always be posted to guix-devel@gnu.org (trivial
patches include fixing typos, etc.)
For patches that just add a new package, and a simple one, its OK to commit,
if youre confident (which means you successfully built it in a chroot setup,
and have done a reasonable copyright and license auditing.) Likewise for
package upgrades. We have a mailing list for commit notifications
package upgrades, except upgrades that trigger a lot of rebuilds (for example,
upgrading GnuTLS or GLib.) We have a mailing list for commit notifications
(guix-commits@gnu.org), so people can notice. Before pushing your changes,
make sure to run git pull --rebase.
For anything else, please post to bug-guix@gnu.org and leave time for a
For anything else, please post to guix-devel@gnu.org and leave time for a
review, without committing anything. If you didnt receive any reply
after two weeks, and if youre confident, its OK to commit.
+173 -87
View File
@@ -1,5 +1,5 @@
# GNU Guix --- Functional package management for GNU
# Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2013 Andreas Enge <andreas@enge.fr>
#
# This file is part of GNU Guix.
@@ -27,57 +27,106 @@ nodist_noinst_SCRIPTS = \
include gnu-system.am
MODULES = \
guix/scripts/build.scm \
guix/base32.scm \
guix/base64.scm \
guix/records.scm \
guix/hash.scm \
guix/pk-crypto.scm \
guix/pki.scm \
guix/utils.scm \
guix/download.scm \
guix/git-download.scm \
guix/monads.scm \
guix/monad-repl.scm \
guix/gexp.scm \
guix/profiles.scm \
guix/serialization.scm \
guix/nar.scm \
guix/derivations.scm \
guix/gnu-maintenance.scm \
guix/licenses.scm \
guix/build-system.scm \
guix/build-system/cmake.scm \
guix/build-system/glib-or-gtk.scm \
guix/build-system/gnu.scm \
guix/build-system/perl.scm \
guix/build-system/python.scm \
guix/build-system/ruby.scm \
guix/build-system/trivial.scm \
guix/ftp-client.scm \
guix/http-client.scm \
guix/gnupg.scm \
guix/store.scm \
guix/svn-download.scm \
guix/ui.scm \
guix/build/download.scm \
guix/build/cmake-build-system.scm \
guix/build/git.scm \
guix/build/glib-or-gtk-build-system.scm \
guix/build/gnu-build-system.scm \
guix/build/gnu-dist.scm \
guix/build/perl-build-system.scm \
guix/build/python-build-system.scm \
guix/build/ruby-build-system.scm \
guix/build/store-copy.scm \
guix/build/utils.scm \
guix/build/union.scm \
guix/build/pull.scm \
guix/build/rpath.scm \
guix/build/svn.scm \
guix/build/syscalls.scm \
guix/build/emacs-utils.scm \
guix/build/graft.scm \
guix/packages.scm \
guix/import/utils.scm \
guix/import/gnu.scm \
guix/import/snix.scm \
guix/scripts/download.scm \
guix/scripts/build.scm \
guix/scripts/archive.scm \
guix/scripts/import.scm \
guix/scripts/package.scm \
guix/scripts/gc.scm \
guix/scripts/hash.scm \
guix/scripts/pull.scm \
guix/scripts/substitute-binary.scm \
guix/scripts/authenticate.scm \
guix/scripts/refresh.scm \
guix/base32.scm \
guix/records.scm \
guix/hash.scm \
guix/utils.scm \
guix/serialization.scm \
guix/nar.scm \
guix/derivations.scm \
guix/download.scm \
guix/gnu-maintenance.scm \
guix/licenses.scm \
guix/build-system.scm \
guix/build-system/cmake.scm \
guix/build-system/gnu.scm \
guix/build-system/perl.scm \
guix/build-system/python.scm \
guix/build-system/trivial.scm \
guix/ftp-client.scm \
guix/http-client.scm \
guix/gnupg.scm \
guix/store.scm \
guix/ui.scm \
guix/build/download.scm \
guix/build/cmake-build-system.scm \
guix/build/gnu-build-system.scm \
guix/build/perl-build-system.scm \
guix/build/python-build-system.scm \
guix/build/utils.scm \
guix/build/union.scm \
guix/build/rpath.scm \
guix/packages.scm \
guix/snix.scm \
guix/scripts/system.scm \
guix/scripts/lint.scm \
guix/scripts/import/gnu.scm \
guix/scripts/import/nix.scm \
guix/scripts/environment.scm \
guix.scm \
$(GNU_SYSTEM_MODULES)
if BUILD_DAEMON_OFFLOAD
MODULES += \
guix/scripts/offload.scm
endif BUILD_DAEMON_OFFLOAD
# Internal module with test suite support.
dist_noinst_DATA = guix/tests.scm
# Because of the autoload hack in (guix build download), we must build it
# first to avoid errors on systems where (gnutls) is unavailable.
guix/scripts/download.go: guix/build/download.go
guix/download.go: guix/build/download.go
# Linux-Libre configurations.
KCONFIGS = \
gnu/packages/linux-libre-i686.conf \
gnu/packages/linux-libre-x86_64.conf
GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go
# Templates, examples.
EXAMPLES = \
gnu/system/os-config.tmpl
nobase_dist_guilemodule_DATA = $(MODULES)
GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go guix/tests.go
nobase_dist_guilemodule_DATA = $(MODULES) $(KCONFIGS) $(EXAMPLES)
nobase_nodist_guilemodule_DATA = $(GOBJECTS) guix/config.scm
# Do we need to provide our own non-broken (srfi srfi-37) module?
@@ -92,10 +141,18 @@ srfi/srfi-37.scm: srfi/srfi-37.scm.in
endif INSTALL_SRFI_37
# Handy way to remove the .go files without removing all the rest.
clean-go:
-$(RM) -f $(GOBJECTS)
SCM_TESTS = \
tests/base32.scm \
tests/base64.scm \
tests/hash.scm \
tests/pk-crypto.scm \
tests/pki.scm \
tests/substitute-binary.scm \
tests/builders.scm \
tests/derivations.scm \
tests/ui.scm \
@@ -105,15 +162,41 @@ SCM_TESTS = \
tests/packages.scm \
tests/snix.scm \
tests/store.scm \
tests/monads.scm \
tests/gexp.scm \
tests/nar.scm \
tests/union.scm
tests/union.scm \
tests/profiles.scm \
tests/syscalls.scm \
tests/lint.scm
if HAVE_GUILE_JSON
MODULES += \
guix/import/pypi.scm \
guix/scripts/import/pypi.scm
SCM_TESTS += tests/pypi.scm
endif
SH_TESTS = \
tests/guix-build.sh \
tests/guix-download.sh \
tests/guix-gc.sh \
tests/guix-hash.sh \
tests/guix-package.sh
tests/guix-package.sh \
tests/guix-system.sh \
tests/guix-archive.sh \
tests/guix-authenticate.sh \
tests/guix-lint.sh
if BUILD_DAEMON
SH_TESTS += tests/guix-register.sh
endif BUILD_DAEMON
TESTS = $(SCM_TESTS) $(SH_TESTS)
@@ -134,26 +217,42 @@ tests/guix-gc.log: \
$(patsubst %.sh,%.log,$(filter-out tests/guix-gc.sh,$(SH_TESTS))) \
$(SCM_TESTS:%.scm=%.log)
# Public key used to sign substitutes from hydra.gnu.org.
dist_pkgdata_DATA = hydra.gnu.org.pub
EXTRA_DIST = \
HACKING \
ROADMAP \
TODO \
.dir-locals.el \
build-aux/hydra/gnu-system.scm \
build-aux/check-available-binaries.scm \
build-aux/download.scm \
build-aux/list-packages.scm \
build-aux/sync-synopses.scm \
srfi/srfi-37.scm.in \
srfi/srfi-64.scm \
srfi/srfi-64.upstream.scm \
tests/test.drv \
build-aux/config.rpath \
bootstrap \
release.nix \
EXTRA_DIST = \
HACKING \
ROADMAP \
TODO \
.dir-locals.el \
build-aux/build-self.scm \
build-aux/hydra/gnu-system.scm \
build-aux/hydra/demo-os.scm \
build-aux/hydra/guix.scm \
build-aux/check-available-binaries.scm \
build-aux/check-final-inputs-self-contained.scm \
build-aux/download.scm \
build-aux/list-packages.scm \
build-aux/sync-descriptions.scm \
srfi/srfi-37.scm.in \
srfi/srfi-64.scm \
srfi/srfi-64.upstream.scm \
tests/test.drv \
tests/signing-key.pub \
tests/signing-key.sec \
build-aux/config.rpath \
bootstrap \
release.nix \
$(TESTS)
if !BUILD_DAEMON_OFFLOAD
EXTRA_DIST += \
guix/scripts/offload.scm
endif !BUILD_DAEMON_OFFLOAD
CLEANFILES = \
$(GOBJECTS) \
$(SCM_TESTS:tests/%.scm=%.log)
@@ -183,34 +282,10 @@ SUFFIXES = .go
guix_install_go_files = install-nobase_nodist_guilemoduleDATA
$(guix_install_go_files): install-nobase_dist_guilemoduleDATA
SUBDIRS = po
SUBDIRS = po/guix po/packages
BUILT_SOURCES =
info_TEXINFOS = doc/guix.texi
EXTRA_DIST += \
doc/fdl-1.3.texi \
doc/images/bootstrap-graph.dot \
doc/images/bootstrap-graph.eps
infoimagedir = $(infodir)/images
dist_infoimage_DATA = doc/images/bootstrap-graph.png
# Try hard to obtain an image size and aspect that's reasonable for inclusion
# in an Info or PDF document.
DOT_OPTIONS = \
-Tpng -Gratio=.9 -Gnodesep=.005 -Granksep=.00005 \
-Nfontsize=9 -Nheight=.1 -Nwidth=.1
.dot.png:
dot -Tpng $(DOT_OPTIONS) < "$<" > "$@.tmp"
mv "$@.tmp" "$@"
.dot.eps:
dot -Teps $(DOT_OPTIONS) < "$<" > "$@.tmp"
mv "$@.tmp" "$@"
doc/guix.pdf: doc/images/bootstrap-graph.png
doc/guix.info: doc/images/bootstrap-graph.png
doc/guix.ps: doc/images/bootstrap-graph.eps
include doc.am
if BUILD_DAEMON
@@ -221,15 +296,20 @@ endif BUILD_DAEMON
ACLOCAL_AMFLAGS = -I m4
AM_DISTCHECK_CONFIGURE_FLAGS = \
--with-libgcrypt-prefix="$(LIBGCRYPT_PREFIX)" \
--with-libgcrypt-libdir="$(LIBGCRYPT_LIBDIR)" \
--with-nix-prefix="$(NIX_PREFIX)" \
--enable-daemon
dist-hook: sync-synopses gen-ChangeLog assert-no-store-file-names
distcheck-hook: assert-binaries-available
dist_emacsui_DATA = emacs/guix-main.scm
nodist_emacsui_DATA = emacs/guix-helper.scm
include emacs.am
sync-synopses:
dist-hook: sync-descriptions gen-ChangeLog assert-no-store-file-names
distcheck-hook: assert-binaries-available assert-final-inputs-self-contained
sync-descriptions:
-$(top_builddir)/pre-inst-env $(GUILE) \
$(top_srcdir)/build-aux/sync-synopses.scm
$(top_srcdir)/build-aux/sync-descriptions.scm
gen-ChangeLog:
if test -d .git; then \
@@ -239,7 +319,7 @@ gen-ChangeLog:
mv $(distdir)/cl-t $(distdir)/ChangeLog; \
fi
# Make sure we're not shipping a file that embeds a local /nix/store file name.
# Make sure we're not shipping a file that embeds a local /gnu/store file name.
assert-no-store-file-names:
if grep -r --exclude=*.texi --exclude=*.info \
"$(storedir)/[a-z0-9]{32}-" $(distdir) ; \
@@ -253,5 +333,11 @@ assert-binaries-available:
$(top_builddir)/pre-inst-env "$(GUILE)" \
"$(top_srcdir)/build-aux/check-available-binaries.scm"
.PHONY: sync-synopses gen-ChangeLog
# Make sure the final inputs don't refer to bootstrap tools.
assert-final-inputs-self-contained:
$(top_builddir)/pre-inst-env "$(GUILE)" \
"$(top_srcdir)/build-aux/check-final-inputs-self-contained.scm"
.PHONY: sync-descriptions gen-ChangeLog clean-go
.PHONY: assert-no-store-file-names assert-binaries-available
.PHONY: assert-final-inputs-self-contained
+656 -1
View File
@@ -2,7 +2,7 @@
#+TITLE: Guix NEWS history of user-visible changes
#+STARTUP: content hidestars
Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
@@ -10,6 +10,661 @@ Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
Please send Guix bug reports to bug-guix@gnu.org.
* Changes in 0.8 (since 0.7)
** Package management
*** New visual user interface in Emacs
See “Emacs Interface” in the manual.
*** New guix environment command to produce development environment
See “Invoking guix environment” in the manual.
*** The guix import command has been extended and documented
It can now import packages from pypi.python.org and from GNU.
See “Invoking guix import” in the manual.
*** New guix lint command, for use by Guix developers
See “Invoking guix lint” in the manual.
*** Packages can now be “grafted” with replacements of their dependencies
See “Security Updates” in the manual.
*** The distribution can be extended with --load-path or $GUIX_PACKAGE_PATH
This allows users to maintain their own package definitions, and make them
visible to the various user interfaces. See “Package Modules” in the manual.
*** guix package better reports package upgrades
*** guix package has a new --switch-generation option
See “Invoking guix package” in the manual.
*** guix-daemon has a new --substitute-urls option
See “Invoking guix-daemon” in the manual.
** Distribution
*** The stand-alone operating system now supports Linux mapped devices
See “Mapped Devices” in the manual.
*** New fields in operating-system declarations, better documentation
New fields include hosts-file, mapped-devices, and swap-devices.
See “operating-system Reference” in the manual.
*** New services: dhcp-client-service, bitlbee-service, ntp-service
See “Services” in the manual.
*** Free firmware can be loaded
This notably enables support for some Atheros-based WiFi devices (ath9k-htc.)
See “operating-system Reference” in the manual.
*** grub-configuration declarations can now specify a theme
See “GRUB Configuration” in the manual.
*** The base-initrd now has a different signature
Existing uses in operating-system declarations need to be updated. See
“Initial RAM Disk” in the manual for details.
*** eudev is now used by default, instead of an old udev release
*** guix system vm has a new --full-boot option
See “Invoking guix system” in the manual.
*** The file command is now part of the package build environment
Autoconf-generated configure scripts for packages using Libtool use file
to determine the target ABI, notably on MIPS, hence this change.
*** 162 new packages
abiword, acpica, adns, arb, ath9k-htc-firmware, atlas, avrdude, cppunit,
dblatex, detox, dfu-programmer, dionysus, direvent, dmidecode, dri3proto,
emacs-no-x-toolkit, emacs-w3m, emacs-wget, enchant, eudev, feh, flashrom,
flint, fontforge, freedink, freeimage, fribidi,
gcc-cross-sans-libc-xtensa-elf, giblib, gnome-themes-standard, gpsbabel,
gpscorrelate, graphite2, gtypist, guile-charting, guile-sdl, imake, imlib2,
irrlicht, jbig2dec, libpsl, libspiro, libuninameslist, libwmf, lm-sensors,
magit, minetest, miscfiles, mozjs, mupdf, nix, nspr, nss-mdns, ntp, nvi, opam,
openal, openjpeg, opus-tools, orpheus, ots, oxygen-icons, paredit, perf,
perl-archive-zip, perl-dbd-sqlite, perl-dbi, perl-image-exiftool,
perl-io-socket-ssl, perl-net-ssleay, perl-www-curl, perl-zip, polkit,
polkit-qt, postgresql, potrace, presentproto, python-certifi, python-coverage,
python-cython, python-discover, python-docutils, python-exif-read,
python-extras, python-fixtures, python-itsdangerous, python-jinja2,
python-jsonschema, python-markupsafe, python-mimeparse, python-nose,
python-oauthlib, python-py, python-pygments, python-pyjwt, python-pyld,
python-pytest, python-scripttest, python-sphinx, python-subunit,
python-testrepository, python-testresources, python-testscenarios,
python-testtools, python-unidecode, python-unittest2, python-virtualenv,
python2-certifi, python2-coverage, python2-cython, python2-discover,
python2-docutils, python2-exif-read, python2-extras, python2-fixtures,
python2-itsdangerous, python2-jinja2, python2-jsonschema, python2-markupsafe,
python2-mimeparse, python2-nose, python2-oauthlib, python2-py,
python2-pygments, python2-pyjwt, python2-pyld, python2-pytest,
python2-requests, python2-scripttest, python2-sphinx, python2-subunit,
python2-testrepository, python2-testresources, python2-testscenarios,
python2-testtools, python2-unidecode, python2-unittest2, python2-virtualenv,
rrdtool, ruby, ruby, ruby-i18n, sane-backends, scrot, sound-theme-freedesktop,
stress, synergy, tdb, terminus-font, testdisk, texi2html, tiled, transfig,
unclutter, unixodbc, weechat, wv, xboing, xf86-video-modesetting, xfig,
xsensors, zsh
*** 117 package updates
acct-6.6.2, acl-2.2.52, apl-1.4, apr-1.5.1, apr-util-1.5.3, autoconf-2.68,
autoconf-2.69, autogen-5.18.4, bash-4.3.30, bash-light-4.3.30, bazaar-2.6.0,
bison-2.7, calcurse-3.2.1, ccache-3.1.10, chicken-4.9.0.1, coreutils-8.23,
curl-7.37.1, datamash-1.0.6, dbus-1.8.8, docbook-xml-4.2, docbook-xml-4.4,
docbook-xml-4.5, emacs-24.4, ffmpeg-2.2.10, ffmpeg-2.4.3, file-5.19,
file-5.20, freeipmi-1.4.5, gcc-4.7.4, gcc-4.9.2, gcc-toolchain-4.9.2,
gcl-2.6.11, gdb-7.8.1, geiser-0.6, gettext-0.19.3, git-2.1.2, glibc-2.20,
glibc-2.20, glibc-stripped-tarball-2.20, global-6.3.2, glpk-4.55,
gnupg-1.4.18, gnupg-2.0.26, gnurl-7.37.0, gnutls-3.2.20, gpgme-1.5.1,
gst-plugins-base-1.0.10, gstreamer-1.0.10, gtk+-3.10.1, gtkmm-3.9.16,
guile-1.8.8, guile-json-0.4.0, guile-ncurses-1.6, guile-ssh-0.7.1, guix-0.7,
guix-0.7.48bd76e, hello-2.10, help2man-1.46.3, icecat-31.2.0,
libart-lgpl-2.3.21, libassuan-2.1.3, libatomic-ops-7.4.2, libdrm-2.4.33,
libffi-3.1, libgc-7.2f, libgc-7.4.2, libgcrypt-1.5.4, libgcrypt-1.6.2,
libidn-1.29, libjpeg-9a, libotr-4.0.0, libsodium-1.0.0, libtasn1-4.1,
libunistring-0.9.4, libwebsockets-1.3, lightning-2.0.5, linux-libre-3.17.3,
lsof-4.88, lua-5.2.3, lvm2-2.02.109, lzip-1.16, make-4.1, maxima-5.34.1,
mit-scheme-9.2, mysql-5.1.73, neon-0.30.0, net-base-5.3, nettle-2.7.1,
notmuch-0.18.1, openssh-6.7p1, openssl-1.0.1j, parallel-20141022,
phonon-4.8.2, pspp-0.8.4, python-3.3.5, python-dateutil-1.5,
python2-dateutil-1.5, python2-pyicu-1.8, qt-4.8.6, qt-5.3.2, rcs-5.9.3,
readline-6.3, subversion-1.7.18, swig-3.0.2, tar-1.28, texinfo-5.2,
tor-0.2.5.10, transmission-2.84, ucommon-6.1.11, valgrind-3.10.0, vlc-2.1.5,
wget-1.16, windowmaker-0.95.6, xapian-1.2.18, xf86-video-ati-6.14.6,
xpdf-3.04, youtube-dl-2014.09.06
** Programming interfaces
*** New ruby-build-system, for Ruby packages
See “Build Systems” in the manual.
*** New glib-or-gtk-build-system, for packages using GLib schemas
See “Build Systems” in the manual.
*** gnu-build-system has a new #:substitutable? parameter
This allows packagers to mark a package as requiring a local build, thus
preventing it from being substituted by a pre-built binary.
*** cmake-build-system has a new #:build-type parameter
See “Build Systems” in the manual.
*** The supported-systems field of packages is used more consistently
This allows packagers to prevent attempts to build a package on a given
architecture when that architecture is known not to be supported. The
package-transitive-supported-systems procedure returns the intersection of
the systems supported by the given package and by its dependencies.
*** The wrap-program procedure can now be called multiple times
*** New graft-derivations and package-grafts procedures
They implement “grafts”, as described under “Security Updates” in the manual.
*** New “bag” intermediate representation for use by build systems
“Bags” are used internally as an intermediate representation between packages
and derivations. See “Build Systems” in the manual.
*** New (guix monad-repl) module, for monadic interaction at the REPL
See “The Store Monad” in the manual.
*** New (guix build emacs-utils) module, to facilitate building Emacs packages
*** New (guix tests) module, with tools used by the test suite
*** The internal guix-register command now deduplicates files in store items
*** Several system modules moved from (guix build …) to (gnu build …)
Also, the (gnu build linux-boot) module has been introduced, with code
typically used by initial RAM disks when booting on GNU/Linux-libre.
*** (guix profiles) provides a representation of package transactions
This factorizes code between guix package and the Emacs user interface.
*** Bootstrapping packages moved to (gnu packages commencement) modules
** Bugs fixed
*** guix-daemon now really deduplicates store items by default
Deduplication means that identical files found in /gnu/store are stored only
once, using hard links. This feature was wrongfully disabled, and is now
enabled by default. The former --disable-store-optimization option has been
renamed to --disable-deduplication.
*** guix-daemon no longer uses vfork
This could cause problems with ancient Linux kernel.
*** Fixed compilation of gccgo (<http://bugs.gnu.org/18101>)
*** 'make clean' doesn't delete os-config.tmpl (<http://bugs.gnu.org/18243>)
*** Fix handling of periods by fill-paragraph (<http://bugs.gnu.org/17468>)
*** Produce a top-level Info 'dir' file (<http://bugs.gnu.org/18305>)
*** guix offload ignores unreachable machines (<http://bugs.gnu.org/18070>)
*** guix offload: Ignore EEXIST when registering a .drv as a GC root
(<http://bugs.gnu.org/18115>)
*** perl-tk: Build sequentially (<http://bugs.gnu.org/18262>)
*** download: Use the 'SERVER NAME' TLS extension when possible
(<http://bugs.gnu.org/18526>)
*** libdaemon: Add alternate source URLs (<http://bugs.gnu.org/18639>)
*** icu4c: Reinstate RUNPATH on shared libraries
(<http://bugs.gnu.org/18695>)
*** nss-mdns: Add alternate source URLs (<http://bugs.gnu.org/18704>)
*** download: Add "Accept: */*" to the HTTP headers
(<http://bugs.gnu.org/18768>)
*** guix-register: Do not attempt to create NIX_STORE_DIR
(<http://bugs.gnu.org/18689>)
*** Allow Linux-libre to find our 'modprobe' command
(<http://bugs.gnu.org/18525>)
*** man-pages: Build sequentially (<http://bugs.gnu.org/18701>)
*** Fix intermittent test failures involving GC (<http://bugs.gnu.org/18935>)
*** guix import: pypi: Gracefully handle non-existent packages
(<http://bugs.gnu.org/18831>)
*** Make sure the shared library has the '.so' extension
(<http://bugs.gnu.org/18521>)
*** pull: Use the build procedure provided by the newly-downloaded Guix.
(<http://bugs.gnu.org/18534>)
*** WindowMaker no longer pollutes $PATH (<http://bugs.gnu.org/18698>)
** Native language support
*** New translation: cs (Czech)
*** Updated translations: de, sr, vi
* Changes in 0.7 (since 0.6)
** Package management
*** Binaries for mips64el-linux now available from hydra.gnu.org
These come in addition to the x86_64-linux and i686-linux binaries already
provided, thanks to our generous donor and friendly admins. See
“Substitutes” in the manual.
*** guix package has a new --show option
*** guix refresh has a new --list-dependent option
** Programming interfaces
*** New (guix gexp) module, which implements “G-expressions”
G-expressions are a new mechanism to embed build-side code in host-side
code. See “G-Expressions” in the manual.
*** (gnu system) and related modules now use G-expressions
This greatly simplifies code, and guarantees that build code carries
references to the packages or derivations it uses.
*** build-expression->derivation is deprecated in favor of G-expressions
*** The (gnu system) module has been largely augmented and factorized
*** New (guix build vm) module, support for virtual machine images
*** New (guix build activation) module, for “system activation”
*** New (guix build syscalls) module
*** New (guix build install) and module for whole system installation
*** New (gnu system install) module, for the installation system
*** New (gnu system file-systems) module, for file-system declarations
*** New (gnu) module, which aggregates common (gnu …) modules
*** service records now have an optional activate field
This allows services to specify code to run at system activation time.
** GNU distribution
*** An image to install the GNU system from a USB stick is provided
This is the first time an installation image is provided. See “System
Installation” in the manual for details. This is work in progress as noted
in “Limitations”. Your feedback and help are welcome!
*** Support for more parameters in operating-system declarations
Operating system declarations can now provide a list of file systems, a list
of setuid programs, bootloader options, and more. See “System Configuration”
in the manual.
*** guix system supports more actions
Newly supported actions are init, build, reconfigure, and disk-image.
See “Invoking guix system” in the manual.
*** User accounts and groups are created at system activation time
*** Virtual machine support uses para-virtualized devices
*** GCC package now has an additional lib output, for run-time support libs
*** GLib package now has a separate “bin” output (<http://bugs.gnu.org/17853>)
*** 134 new packages
abbaye, aegis, attica, babl, barcode, behave, btar, busybox, ccache, ccrtp,
chess, clucene, cmatrix, commoncpp, conkeror, cook, cssc, datamash, diffstat,
doxygen, dropbear, dtach, duplicity, e2fsck-static, exosip, fftw-openmpi,
fish, gconf, gegl, gimp, gmsh, gnome-mime-data, gnome-vfs, gnumeric, goffice,
gsegrafix, guile-opengl, guile-static-stripped, hdup, hwloc, inotify-tools,
jrnl, kbd, kmod, lftp, libarchive, libart-lgpl, libbonobo, libbonoboui,
libcroco, libdbusmenu-qt, libftdi, libglade, libgnome, libgnomecanvas,
libgnomeprint, libgnomeprintui, libgnomeui, libgsf, libidl, libmcrypt,
libmhash, librsvg, librsync, libsodium, libuv, libvpx, links, lzop, man-pages,
maxima, mcrypt, mosh, mpg123, mplayer, mu, ncmpcpp, node, notmuch, numactl,
offlineimap, openmpi, orbit2, osip, pangox-compat, perl-io-tty, petsc,
petsc-complex, petsc-complex-openmpi, petsc-openmpi, pingus, podofo, protobuf,
pt-scotch, python-enum34, python-keyring, python-lockfile, python-mock,
python-parse, python-parse-type, python-parsedatetime, python-pycrypto,
python-six, python-tzlocal, python2-lockfile, python2-mock, qjson, qrencode,
rasqal, rdiff-backup, rdup, redland, rottlog, scotch, sipwitch, sshfs-fuse,
strigi, sudo, superlu, superlu-dist, talkfilters, talloc, tcpdump, tinyproxy,
transmission, ucommon, udev, vlc, vtk, wakelan, wireless-tools,
wpa-supplicant, xboard, youtube-dl
*** 87 package updates
bitlbee-3.2.2, cursynth-1.5, ddrescue-1.18.1, dfc-3.0.4, dmd-0.2,
docbook-xml-4.3, docbook-xml-4.4, docbook-xsl-1.78.1, dvdisaster-0.72.6,
ffmpeg-2.3, fftw-3.3.4, fftwf-3.3.4, flac-1.3.0, gawk-4.1.1, gcc-4.7.4,
gcc-4.8.3, gcc-4.8.3, gcc-4.9.1, gcc-cross-mips64el-linux-gnuabi64-4.8.3,
gcc-objc++-4.8.3, gcc-objc-4.8.3, gcc-stripped-tarball-4.8.3,
gcc-toolchain-4.8.3, gcc-toolchain-4.9.1, gccgo-4.8.3, gdb-7.7.1,
gettext-0.19.2, gfortran-4.8.3, glib-2.40.0, global-6.3, gmp-6.0.0a,
gnupg-1.4.18, gnupg-2.0.25, gnutls-3.2.15, gp2c-0.0.9pl1, grep-2.20,
gst-plugins-base-1.0.10, gstreamer-0.10.36, gtk+-3.10.1, gtkmm-2.24.2,
guile-2.0.11, guile-2.0.11, guix-0.6, guix-0.6.0ae8c15, htop-1.0.3,
icu4c-53.1, imagemagick-6.8.9-0, json-c-0.12, libdrm-2.4.33, libgc-7.2e,
libgcrypt-1.5.3, libgpg-error-1.13, libjpeg-8d, libmicrohttpd-0.9.37,
libogg-1.3.2, libotr-4.0.0, libtasn1-3.6, libvorbis-1.3.4, lightning-2.0.4,
linux-libre-3.15.6, lua-5.1.5, lua-5.2.3, mcron-1.0.8, moe-1.6, nano-2.3.6,
neon-0.29.6, nettle-3.0, openssl-1.0.1h, parallel-20140722, pari-gp-2.7.1,
pspp-0.8.3, python-2.7.6, python-dateutil-2.2, python2-dateutil-2.2,
qemu-2.0.0, qemu-headless-2.0.0, qt-4.8.6, qt-5.2.1, readline-6.2,
screen-4.2.1, soprano-2.9.4, texinfo-5.2, texlive-2014, tor-0.2.4.22,
wdiff-1.2.2, xorriso-1.3.8, xterm-304
** Native language support
*** New translations: de (German), and hu (Hungarian)
*** Updated translations: eo, pt_BR, sr, vi
*** Package descriptions moved from the guix text domain to guix-packages
** Bugs fixed
*** Downloads are now faster (<http://bugs.gnu.org/15368>)
*** guix authenticate properly writes signatures to stdout
(<http://bugs.gnu.org/17312>)
*** Progress report of downloads is now properly displayed
*** Error reporting of pk-crypto errors has been improved
*** The 'patches' field now works for origins with no extension
*** Synchronization and GC issues fixed in the offload hook
*** (guix ftp-client) emits USER commands suitable for all servers
* Changes in 0.6 (since 0.5)
** Package management
*** Default store directory changed to /gnu/store
Although it is still possible to configure Guix to use the old store
directory, we recommend that you start with a fresh install to /gnu/store.
*** Substitutes from hydra.gnu.org must now be signed and authorized
*** Support for offloading builds to other Guix machines over SSH
*** New guix archive command
*** New guix system command; it can currently build VM images
*** guix package accepts several arguments after -i, -r, and -u
*** Updating a profile with guix package is now noticeably faster
*** guix build can override a packages source with the new --with-source
*** guix build has a new --no-build-hook option
*** guix commands that build packages have a common set of options
*** guix hash has a new --recursive option
*** Daemon no longer bind-mounts the hosts /dev (improves reproducibility)
** Programming interfaces
*** New (guix pk-crypto) and (guix pki) modules for public key cryptography
*** New #:local-build? parameter for derivations that shouldnt be offloaded
*** (gnu system vm) has procedures to build VMs that share the hosts store
*** New text-file* procedure in (guix monads)
*** System service definitions are now provided by the (guix services) modules
*** New X and SLiM services in (gnu services xorg)
*** New (guix git-download) and (guix svn-download) for git/svn checkouts
** GNU distribution
*** 91 new packages
a2ps, asciidoc, aspell-dict-en, aspell-dict-eo, aspell-dict-es,
aspell-dict-fr, aumix, bitlbee, bogofilter, boost, calcurse, clusterssh,
corkscrew, cursynth, docbook-xml, docbook-xsl, elfutils, enscript, fftwf,
fltk, fuse, gcc-toolchain, giflib, glade, gmime, gnome-desktop, gnubg, gnubik,
gnumach-headers, gnunet, gnuplot, gnurl, gphoto2, gtkglext, guile-json,
guile-reader-for-guile_2.0.11, gxmessage, hdf5, hurd-headers, inkscape, iotop,
isc-dhcp, iso-codes, jnettop, libatomic-ops, libexif, libgphoto2, libmpcdec,
libmpdclient, libotr, libpcap, libpeas, libpipeline, libtirpc, libwebsockets,
ltrace, luajit, lynx, man-db, mc, mig, miniupnpc, moe, mpc123, mpd, ncdc,
ncdu, ncmpc, neon, neon, octave, opus, paperkey, patchutils, perl-tk,
perl-x11-protocol, pinentry, python2-element-tree, python2-pybugz, quilt,
source-highlight, stalonetray, trueprint, ttf-dejavu, unionfs-fuse,
unionfs-fuse-static, uucp, vera, windowmaker, xapian, xterm
*** 90 package updates
apl-1.3, autoconf-2.68, automake-1.14.1, bash-4.3, bash-light-4.3,
bigloo-4.1a, binutils-2.24, binutils-static-stripped-tarball-2.24,
coreutils-8.22, curl-7.35.0, ed-1.10, ffmpeg-2.1.4, file-5.18, freeipmi-1.4.1,
gcc-4.8.2, gcc-4.8.2, gdb-7.7, gdbm-1.11, gettext-0.18.3.2, glib-2.39.1,
glibc-2.19, glibc-stripped-tarball-2.19, global-6.2.12, glpk-4.54,
gnu-pw-mgr-1.2, gnupg-1.4.16, gnutls-3.2.12, gp2c-0.0.8pl1, grep-2.18,
gst-plugins-base-0.10.36, gstreamer-1.0.10, gtk+-3.10.1, gtkmm-2.24.2,
guile-2.0.11, guile-ssh-0.6.0, guile-static-stripped-tarball-2.0.11,
guile-wm-1.0, guile-xcb-1.3, guix-0.5, help2man-1.45.1, icu4c-52.1,
imagemagick-6.8.8-10, inetutils-1.9.2, lapack-3.5.0, libcdio-0.92,
libdrm-2.4.46, libextractor-1.3, libgc-7.2e, libgc-7.4.0, libgcrypt-1.6.1,
libjpeg-9, libmicrohttpd-0.9.34, libssh-0.6.3, libtasn1-3.4, lightning-2.0.3,
linux-libre-3.13.7, mpc-1.0.2, mutt-1.5.23, net-base-5.2, ocrad-0.23,
openssh-6.6p1, openssl-1.0.1g, parallel-20140322, pari-gp-2.7.0, pspp-0.8.2,
pulseaudio-5.0, python-2.7.6, python-3.3.5, python-wrapper-3.3.5,
python2-pysqlite-2.6.3a, qemu-1.7.1, qemu-headless-1.7.1,
qemu-with-multiple-smb-shares-1.7.1, qt-4.8.5, qt-5.2.0, readline-6.3,
recutils-1.7, slim-1.3.6, sqlite-3.8.4.3, subversion-1.7.14, texinfo-4.13a,
tor-0.2.4.21, tzdata-2014a, units-2.11, valgrind-3.9.0, vim-7.4, wget-1.15,
xnee-3.18, xorriso-1.3.6.pl01, zile-2.4.11
*** New gcc-toolchain meta-package, makes it easy to install a GCC tool chain
*** libcs Info manual is now installed
*** Binutils is built with --enable-deterministic-archives
*** Packages that populated man/man* now populate share/man/man*
*** Many other packaging improvements
** Bugs fixed
*** guix pull consumes less memory, compiles in parallel
*** guix package --list-* gracefully handles EPIPE when used in a pipeline
*** guix package handles collisions between a symlink and a directory
(http://bugs.gnu.org/17083)
*** HTTP downloads provide a User-Agent field (http://bugs.gnu.org/16703)
*** guix package no longer shows misleading installed package number
(http://bugs.gnu.org/16484)
*** Manual suggests useradd --system (http://bugs.gnu.org/16289)
*** Python is built with ctypes support (http://bugs.gnu.org/16569)
*** HTTP/TLS connection not terminated properly (http://bugs.gnu.org/14884)
*** Gracefully handle poorly behaved HTTP servers (http://bugs.gnu.org/15733)
* Changes in 0.5 (since 0.4)
** Package management
*** GNU package descriptions synchronized with the gnumaint repository
In addition to synopses, descriptions of GNU packages are now kept in sync
with the gnumaint repository, which is the canonical place for GNU package
meta-data.
** Programming interfaces
*** Patches are now listed as part of origin
The origin form supports two new fields: patches (list of patches), and
snippet (code snippet to modify the source.) These are applied when running
guix build --source. See “Defining Packages” in the manual.
*** New (guix monads) monadic interface to operate on the store
See “The Store Monad” in the manual. The (gnu system …) modules have been
rewritten to use this monadic interface.
*** New (guix profiles) module
It provides an API for dealing with profiles, as with the guix package
command.
*** New (gnu system) module
This module provides a generic way to describe the systems configuration,
and to instantiate it, regardless of the final medium (QEMU image, etc.)
See “System Configuration” in the manual.
This is work in progress. Send feedback to guix-devel@gnu.org!
*** build-expression->derivation uses more parameters
Some positional parameters have been changed to keyword parameters.
See “Derivations” in the manual.
** GNU distribution
*** New port to the Loongson MIPS64 processors, n32 ABI (mips64el-linux)
Bootstrap binaries have been built for that architecture, and several
Loongson-specific patches not yet available upstream have been applied to core
packages. See “GNU Distribution” and “Porting” in the manual.
Pre-built binaries are not yet available via hydra.gnu.org, so Guix will
build from source on this platform.
*** 110 new packages
acct, alive, alsa-utils, apl, at-spi2-atk, at-spi2-core, atkmm, autogen,
automoc4, brasero, bridge-utils, cairomm, catkin, complexity, evince, ffmpeg,
fftw, ftgl, gcc-objc, gcc-objc++, gccgo, gcl, gfortran, glibmm, glpk,
gnome-icon-theme, gnu-pw-mgr, gp2c, gpgme, gsettings-desktop-schemas, gtkmm,
gtksourceview, guile-ssh, guile-wm, gvpe, hicolor-icon-theme, httpd, icecat,
icon-naming-utils, json-c, lapack, libcanberra, libcap, libgnome-keyring,
libmikmod, libnl, libnotify, libsamplerate, libsigc++, libsndfile, libssh,
libtheora, libxkbcommon, mercurial, mtools, netcat, pangomm, parallel,
pavucontrol, pciutils, pem, perl-encode-locale, perl-file-list,
perl-file-listing, perl-html-parser, perl-html-tagset, perl-http-cookies,
perl-http-daemon, perl-http-date, perl-http-message, perl-http-negotiate,
perl-io-html, perl-libwww, perl-libxml, perl-lwp-mediatypes, perl-net-http,
perl-uri, perl-www-robotrules, perl-xml-dom, perl-xml-regexp, perl-xml-simple,
phonon, powertop, pulseaudio, python2-dogtail, python2-empy, qemu-headless,
qt, qt, raptor2, scons, sdl, sdl-gfx, sdl-image, sdl-mixer, sdl-net, sdl-ttf,
sdl2, serveez, shared-mime-info, sharutils, skribilo, slim, soprano, swig,
xcb-util, xcb-util-image, xcb-util-keysyms, xcb-util-renderutil, xcb-util-wm
*** 47 package updates
atk 2.10.0, bison 3.0.2, cmake 2.8.12, dmd 0.1, freeipmi 1.3.3, gcc 4.8.2,
gcc 4.8.2, gcc-cross-mips64el-linux-gnuabi64 4.8.2, gcc-stripped-tarball 4.8.2,
gdb 7.6.2, gettext 0.18.3.1, glib 2.38.0, global 6.2.9, gmp 5.1.3,
gnupg 2.0.22, gobject-introspection 1.38.0, grep 2.15, gsl 1.16,
gtk+ 2.24.21, gtk+ 3.10.1, guile 2.0.9, guile 2.0.9, guile-xcb 1.2,
harfbuzz 0.9.22, hello 2.9, iproute2 3.12.0, libdrm 2.4.46,
libextractor 1.2, libjpeg 9, libmicrohttpd 0.9.32, lightning 2.0.2,
linux-libre 3.12, lzip 1.15, make 4.0, mit-krb5 1.11.3, pari-gp 2.5.5,
pixman 0.32.4, python 3.3.2, qemu 1.6.1,
qemu-with-multiple-smb-shares 1.6.1, rcs 5.9.2, recutils 1.6, rsync 3.1.0,
tar 1.27.1, texinfo 5.2, units 2.02, xorriso 1.3.2
*** Packages are now built with GCC 4.8.2 by default (was 4.7.3)
** Native language support
*** New sr (Serbian) translation
*** New vi (Vietnamese) translation
*** Updated pt_BR (Brazilian Portuguese) translation
** Bugs fixed
*** guix pull compiles Guix deterministically and correctly
Previously, the build environment was not cleared in between compile-file
calls, leading to build errors due to Guile bug http://bugs.gnu.org/15602 .
*** guix package allows removal of a specific package output
(http://bugs.gnu.org/15756)
*** guix-daemon always sets umask to 022
(http://lists.gnu.org/archive/html/bug-guix/2013-07/msg00033.html)
*** Files referenced by environment variables are protected from GC
*** Yet unbuilt packages get correctly installed (http://bugs.gnu.org/15283)
*** bootstrap-graph.{png,eps,pdf} built in srcdir (http://bugs.gnu.org/15640)
* Changes in 0.4 (since 0.3)
** Package management
*** New --list-generations and --delete-generations options
The guix package command has these two new options, which make it easier to
deal with a profiles generation. See “Invoking guix package” in the manual.
*** New guix-register program
This program allows the meta-data of a new store to be initialized, by
copying info from an existing store. It is mostly an internal tool.
** Programming interfaces
*** New API to bootstrap Autotools-based packages
The (guix build-system gnu) has a new dist-package procedure that takes a
package object and source directory, and returns a new package object that
runs ./bootstrap && make dist or anything similar.
*** derivation and related procedures have a #:references-graphs parameter
This parameter instructs the build daemon to populate the derivations build
tree with files containing the list of references of the given store files.
This is useful to write code that copies a packages and all its dependencies
to another storage device, such as a QEMU disk image.
*** Extended API to build a GNU system virtual machine image
The (gnu system vm) module has been augmented in many ways: the qemu-image
procedure can now populate and initialize the images store; the new
system-qemu-image procedure returns a QEMU image that runs dmd as its init
system, has login running on several consoles, has a set of installed
packages, and where Guix can be used.
New (gnu system …) modules have been added to handle the configuration of the
various parts of a GNU/Linux system. For instance, (gnu system dmd) provides
support for instantiating dmd services; (gnu system linux) helps with Linux
PAM configuration; and so on.
*** <derivation> objects supersede .drv file names in the API
derivation and similar procedures no longer return two values (a
<derivation> and a .drv file name); they now return a single value, which is
a <derivation> object. The <derivation> object embeds the corresponding .drv
file name. See “Derivations” in the manual for details.
** GNU distribution
*** 60 new packages
apr, apr-util, cdparanoia, dbus-glib, dfc, dmd, dvdisaster, exiv2, fetchmail,
freefont-ttf, freeglut, geeqie, git, gkrellm, glu, gnome-doc-utils,
gst-plugins-base, gstreamer, guile-cairo, guile-lib, guile-xcb, guix, htop,
itstool, lame, libextractor, libmicrohttpd, lightning, lzip, mingetty, mutt,
net-base, net-tools, ocrad, pspp, python-babel, python-dateutil, python-pytz,
python-setuptools, python-simplejson, python-wrapper, python2-babel,
python2-dateutil, python2-mechanize, python2-pyicu, python2-pysqlite,
python2-pytz, python2-setuptools, python2-simplejson, qemu-system-initrd,
qemu-with-multiple-smb-shares, ripperx, shadow, ttf-bitstream-vera, units,
valgrind, xmlto, xnee, yasm
*** 27 package updates
bigloo 4.0b, cairo 1.12.16, ddrescue 1.17, fontconfig 2.10.93, fplll 4.0.4,
gcc 4.7.3, gcc 4.7.3, glibc 2.18, glibc 2.18, glibc-stripped-tarball 2.18,
gnupg 2.0.21, gnutls 3.2.4, guile 2.0.9, guile 2.0.9, harfbuzz 0.9.21,
imagemagick 6.8.6-9, libdrm 2.4.46, libgcrypt 1.5.3, libjpeg 9, libksba 1.3.0,
linux-libre 3.11, m4 1.4.17, mpfrcx 0.4.2, pari-gp 2.5.4, python 2.7.5, python
3.3.2, texlive 2013
*** Fontconfig font search path made more convenient
Fontconfig, the library used by many graphical applications, such as those
based on GTK+, now knows where to find the default set of fonts. Additional
fonts installed in the user profile are automatically picked up.
*** More GUI applications
The emacs and racket packages are now linked against GTK+. New GTK+
applications have been added (see above.)
*** Packaging guidelines
The documentation of packaging guidelines has been augmented. See the manual
under “GNU Distribution”.
*** Support for Python 3 along with Python 2
Python 3 has been added to the distribution, and Python packages that support
it are now built for both Python 2 and Python 3. See the “Python Modules”
section of the manual for details.
** Internationalization
Updated translations: eo.
** Bugs fixed
*** Workarounds for Guile 2.0.5 now work on Debian derivatives
*** The dependency graph image has correct size in PDF output
*** 'ldd' now works correctly on x86_64
*** Xorg server test suite no longer fails (http://bugs.gnu.org/15392)
*** module-init-tools now builds (http://bugs.gnu.org/15182, http://bugs.gnu.org/15187)
*** Hop 2.4 builds with newer Bigloo (http://bugs.gnu.org/15194)
* Changes in 0.3 (since 0.2)
+25 -34
View File
@@ -22,6 +22,10 @@ GNU Guix currently depends on the following packages:
- [[http://gnu.org/software/guile/][GNU Guile 2.0.x]], version 2.0.5 or later
- [[http://gnupg.org/][GNU libgcrypt]]
- optionally [[http://savannah.nongnu.org/projects/guile-json/][Guile-JSON]], for the 'guix import pypi' command
- optionally [[http://www.gnutls.org][GnuTLS]] compiled with guile support enabled, for HTTPS support
in the 'guix download' command. Note that 'guix import pypi' requires
this functionality.
Unless `--disable-daemon' was passed, the following packages are needed:
@@ -33,23 +37,16 @@ When `--disable-daemon' was passed, you instead need the following:
- [[http://nixos.org/nix/][Nix]]
Optionally, packages from Nixpkgs may be transparently reused from Guix.
For this to work, you need to have a checkout of the Nixpkgs repository;
the `--with-nixpkgs' option allows you to let `configure' know where the
Nixpkgs checkout is.
* Installation
- [[http://nixos.org/nixpkgs/][Nixpkgs]]
See the manual for the installation instructions, either by running
When building Guix from a checkout, the following packages are also
required:
info -f doc/guix.info "(guix) Installation"
- [[http://www.gnu.org/software/autoconf/][GNU Autoconf]]
- [[http://www.gnu.org/software/automake/][GNU Automake]]
- [[http://www.gnu.org/software/gettext/][GNU Gettext]]
or by checking the [[http://www.gnu.org/software/guix/manual/guix.html#Installation][web copy of the manual]].
Run the "bootstrap" script to download the Nix daemon and to generate the
build system infrastructure using autoconf. It reports an error if an
inappropriate version of the above packages is being used.
For information on installation from a Git checkout, please see the HACKING
file.
* Installing Guix from Guix
@@ -57,37 +54,31 @@ You can re-build and re-install Guix using a system that already runs Guix.
To do so:
- Install the dependencies (see 'Requirements' above) and build tools using
Guix. You should have the following packages installed in your user
profile:
Guix:
- autoconf
- automake
- bzip2
- gcc
- gettext
- glibc
- guile
- ld-wrapper
- libgcrypt
- pkg-config
- sqlite
guix package --install autoconf automake bzip2 gcc-toolchain gettext \
guile libgcrypt pkg-config sqlite
- set the environment variables that Guix recommends you to set during the
- Set the environment variables that Guix recommends you to set during the
package installation process:
ACLOCAL, CPATH, LIBRARY_PATH, PATH, PKG_CONFIG_PATH
In addition, set
GUIX_LD_WRAPPER_ALLOW_IMPURITIES=yes
ACLOCAL_PATH, CPATH, LIBRARY_PATH, PKG_CONFIG_PATH
- re-run the configure script passing it the option
`--with-libgcrypt-prefix=$HOME/.guix-profile/'
- Set the PATH environment variable to refer to the profile:
PATH=$HOME/.guix-profile/bin:$PATH
- run "make" and "make install"
- Re-run the 'configure' script passing it the option
'--with-libgcrypt-prefix=$HOME/.guix-profile/', as well as
'--localstatedir=/somewhere', where '/somewhere' is the 'localstatedir'
value of the currently installed Guix (failing to do that would lead the
new Guix to consider the store to be empty!).
- Run "make", "make check", and "make install".
* How It Works
Guix does the high-level preparation of a /derivation/. A derivation is
the promise of a build; it is stored as a text file under
=/nix/store/xxx.drv=. The (guix derivations) module provides the
=/gnu/store/xxx.drv=. The (guix derivations) module provides the
`derivation' primitive, as well as higher-level wrappers such as
`build-expression->derivation'.
+11 -3
View File
@@ -2,7 +2,7 @@
#+TITLE: Tentative GNU Guix Road Map
Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
@@ -15,10 +15,18 @@ The goals of the GNU Guix project are two-fold:
- to use it to build a practical 100% free software distribution of
GNU/Linux and possibly other GNU variants, with a focus on the
promotion and tight integration of GNU components.
promotion and tight integration of GNU componentsthe GNU system.
This documents lists tentative milestones toward these goals.
This document lists milestones toward these goals.
The timeline below was written at the end of Dec. 2012. An updated and more
detailed list of the remaining milestones was posted at
https://lists.gnu.org/archive/html/guix-devel/2013-12/msg00120.html .
The actual timeline was of course slightly different than initially
envisioned, and so was the feature setthings like cross-compilation support
and the MIPS64 port were not planned back then. See the news section at
http://www.gnu.org/software/guix/ and NEWS for the release history.
* GNU Guix 0.1: Jan. 2013 (was: Dec. 2012)
+32 -10
View File
@@ -6,13 +6,35 @@ Thanks to the following people who contributed to GNU Guix through
suggestions, bug reports, patches, internationalization, or general
infrastructure help:
Lluís Batlle i Rossell <viric@viric.name>
Felipe Castro <fefcas@gmail.com>
Daniel Clark <dclark@pobox.com>
Alexandru Cojocaru <xojoc@gmx.com>
Aleix Conchillo Flaqué <aconchillo@gmail.com>
Rafael Ferreira <rafael.f.f1@gmail.com>
Matthew Lien <bluet@bluet.org>
Alex Sassmannshausen <alex.sassmannshausen@gmail.com>
Jason Self <jself@gnu.org>
Alen Skondro <askondro@gmail.com>
Lluís Batlle i Rossell <viric@viric.name>
Federico Beffa <beffa@ieee.org>
Marek Benc <merkur32@gmail.com>
Sylvain Beucler <beuc@beuc.net>
Carlos Carleos <carleos@uniovi.es>
Felipe Castro <fefcas@gmail.com>
Daniel Clark <dclark@pobox.com>
Alexandru Cojocaru <xojoc@gmx.com>
Aleix Conchillo Flaqué <aconchillo@gmail.com>
John Darrington <jmd@gnu.org>
Rafael Ferreira <rafael.f.f1@gmail.com>
Christian Grothoff <christian@grothoff.org>
Brandon Invergo <brandon@gnu.org>
Jeffrin Jose <ahiliation@yahoo.co.in>
Kete <kete@ninthfloor.org>
Alex Kost <alezost@gmail.com>
Matthew Lien <bluet@bluet.org>
Niels Möller <nisse@lysator.liu.se>
Yutaka Niibe <gniibe@fsij.org>
Adam Pribyl <pribyl@lowlevel.cz>
Bruno Félix Rezende Ribeiro <oitofelix@gnu.org>
Cyrill Schenkel <cyrill.schenkel@gmail.com>
Benno Schulenberg <coordinator@translationproject.org>
Alen Skondro <askondro@gmail.com>
Matthias Wachs <wachs@net.in.tum.de>
Philip Woods <elzairthesorcerer@gmail.com>
GNU Guix also includes non-software works. Thanks to the following
people who contributed the logo and general artwork and themes:
Nikita Karetnikov <nikita@karetnikov.org>
Felipe López <felipe.lopez@openmailbox.org>
+18 -76
View File
@@ -3,62 +3,31 @@
#+TITLE: What's left to do?
#+STARTUP: content hidestars
Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
* integrate needed Nix code
** Remove dependency on OpenSSL
The openssl command-line tool is used in libstore to sign store paths
to be exported, and to check such signatures. The signing keys are
usually in /etc/nix/signing-key.{pub,sec}. They are a PKCS#8-encoded
X.509 SubjectPublicKeyInfo. These can be decoded with the [[http://lists.gnu.org/archive/html/help-gnutls/2012-12/msg00012.html][C API of
GnuTLS]], but not yet with its Guile bindings. Theres also
gnutls_privkey_sign_data to sign, and related functions.
** Add `guix publish' to publish the store using Guile's web server
* Add `guix publish' to publish the store using Guile's web server
Generate narinfos and nars on the fly, upon HTTP GET requests.
Ideally, extend .nix-cache-info to include the server's public key, and also
reply to requests for .narinfo.sig.
Optionally, use Guile-Avahi to publish the service.
** MAYBE Add a substituter that uses the GNUnet DHT
* MAYBE Add a substituter that uses the GNUnet DHT or [[http://libswift.org][libswift]]
Would be neat if binaries could be pushed to and pulled from the GNUnet
DHT. Guix users would sign their binaries, and define which binaries
they trust.
Would be neat if binaries could be pushed to and pulled from the GNUnet DHT or
rather libswift (since DHTs arent suited for large payloads). Guix users
would sign their binaries, and define which binaries they trust.
** Add a remote build hook
Like scripts/build-remote.pl in Nix.
Use UPnP and similar to traverse NAT, like filegive does.
* user interface
** Add a package.el (Emacs) back-end
package.el is quite monolithic, but we may be able to reuse/extend
package-menu-mode or at least tabulated-list-mode.
** add guile-ncurses interface
* extend <origin>
** add OpenPGP signatures:
(origin
(method http-fetch)
(uri "http://.../foo.tgz")
(signature-uri (string-append uri ".sig"))
(signer-openpgp-fingerprint "..."))
** allow <origin> to be a derivation/package or a file
* extend <package>
** add recommends field
For instance, glibc, binutils, gcc, and ld-wrapper would recommend each other.
@@ -71,8 +40,6 @@ This should specify builder code to be run when building a user
environment with guix-package. For instance, Texinfos hook would
create a new dir.
** add patches there
** extend propagated-build-inputs with support for multiple outputs
#+BEGIN_SRC scheme
@@ -84,54 +51,33 @@ create a new dir.
("i3" ,p3)))
#+END_SRC
* synchronize package descriptions with GSRC and/or the [[http://directory.fsf.org][FSD]]
* synchronize non-GNU package descriptions with the [[http://directory.fsf.org][FSD]]
Meta-data for GNU packages, including descriptions and synopses, can be
dumped from the FSD:
http://directory.fsf.org/wiki?title=GNU/Export&action=purge .
We could periodically synchronize with that.
See http://lists.gnu.org/archive/html/bug-guix/2013-04/msg00120.html for info
on how to synchronize with GSRC's descriptions.
* add a guildhall build system
The Guildhall is Guiles packaging system. It should be easy to add a
guildhall-build-system that does the right thing based on guildhall
recipes.
* gnu-build-system: produce a debug derivation
Set a .gnu_debuglink in the main derivations to point to the sibling
file name (only the basename, to not retain a dependency on the debug
derivation.)
For /nix/store/xyz-foobar/bin/foo, we should have
/nix/store/abc-foobar-debug/lib/nix/store/xyz-foobar/bin/foo.debug (info
"(gdb) Separate Debug Files").
Users should have a default GDB setting with ~/.guix-profile/lib/debug
as their debug-file-directory.
* build-expression->derivation: define `%system' in the builder
Would allow build expressions to have system-dependent code, like
`glibc-dynamic-linker'.
* add allowed-references in <package>
[[file:~/src/nix/src/libstore/build.cc::if%20(drv.env.find("allowedReferences")%20!%3D%20drv.env.end())%20{][See how Nix implements that internally]].
* union
Support sophisticated collision handling when building a union: check
whether the colliding files are identical, honor per-package priorities,
etc.
Support sophisticated collision handling when building a union: honor
per-package priorities, etc.
* guix package
* add GUIX_ALLOW_EXPENSIVE_TESTS
** add --list-generations, and --delete-generations
Tests that need to download stuff or otherwise take a long time would only be
run when that is defined.
* add "guix challenge"
Would download a substitute, and compare its contents against a (hopefully
locally-built) copy.
* guix build utils
** MAYBE Change ld-wrapper to add RPATH for libs passed by file name
@@ -143,13 +89,9 @@ etc.
See [[https://github.com/NixOS/nixpkgs/commit/d1662d715514e6ef9d3dc29f132f1b3d8e608a18][Shea Levy's `replace-dependency' in Nixpkgs]].
* distro
** port to new GNU/Linux platforms, notably mipsel64-linux
** port to GNU/Hurd, aka. i686-gnu
Problems include that current glibc releases do not build on GNU/Hurd.
In addition, there havent been stable releases of GNU Mach, MiG, and
Hurd, which would be a pre-condition.
** make a bootable GNU/Linux-Libre distro, with OS configuration EDSL
Similar in spirit to /etc/nixos/configuration.nix.
+98
View File
@@ -0,0 +1,98 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (build-self)
#:use-module (gnu)
#:use-module (guix)
#:use-module (srfi srfi-1)
#:export (build))
;;; Commentary:
;;;
;;; When loaded, this module returns a monadic procedure of at least one
;;; argument: the source tree to build. It returns a derivation that
;;; builds it.
;;;
;;; This file uses modules provided by the already-installed Guix. Those
;;; modules may be arbitrarily old compared to the version we want to
;;; build. Because of that, it must rely on the smallest set of features
;;; that are likely to be provided by the (guix) and (gnu) modules, and by
;;; Guile itself, forever and ever.
;;;
;;; Code:
;; The dependencies. Don't refer explicitly to the variables because they
;; could be renamed or shuffled around in modules over time. Conversely,
;; 'find-best-packages-by-name' is expected to always have the same semantics.
(define libgcrypt
(first (find-best-packages-by-name "libgcrypt" #f)))
(define guile-json
(first (find-best-packages-by-name "guile-json" #f)))
;; The actual build procedure.
(define (top-source-directory)
"Return the name of the top-level directory of this source tree."
(and=> (assoc-ref (current-source-location) 'filename)
(lambda (file)
(string-append (dirname file) "/.."))))
;; The procedure below is our return value.
(define* (build source #:key verbose?
#:allow-other-keys
#:rest rest)
"Return a derivation that unpacks SOURCE into STORE and compiles Scheme
files."
(define builder
#~(begin
(use-modules (guix build pull))
(let ((json (string-append #$guile-json "/share/guile/site/2.0")))
(set! %load-path (cons json %load-path))
(set! %load-compiled-path (cons json %load-compiled-path)))
(build-guix #$output #$source
;; XXX: This is not perfect, enabling VERBOSE? means
;; building a different derivation.
#:debug-port (if #$verbose?
(current-error-port)
(%make-void-port "w"))
#:gcrypt #$libgcrypt)))
(gexp->derivation "guix-latest" builder
#:modules '((guix build pull)
(guix build utils))
;; Arrange so that our own (guix build …) modules are
;; used.
#:module-path (list (top-source-directory))))
;; This file is loaded by 'guix pull'; return it the build procedure.
build
;; Local Variables:
;; eval: (put 'with-load-path 'scheme-indent-function 1)
;; End:
;;; build-self.scm ends here
+3 -2
View File
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -48,8 +48,9 @@
drv)
#f))))
(set-build-options store #:use-substitutes? #t)
(let ((result (every (compose (warn (cut has-substitutes? store <>))
derivation-path->output-path)
derivation->output-path)
total)))
(when result
(format (current-error-port) "~a packages found substitutable~%"
@@ -0,0 +1,83 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
;;;
;;; Check whether important binaries are available at hydra.gnu.org.
;;;
(use-modules (guix store)
(guix packages)
(guix derivations)
(guix ui)
(gnu packages commencement)
(ice-9 match)
(srfi srfi-1)
(srfi srfi-26))
(define %supported-systems
'("x86_64-linux" "i686-linux"))
(define (final-inputs store system)
"Return the list of outputs directories of the final inputs for SYSTEM."
(append-map (match-lambda
((name package)
(let ((drv (package-derivation store package system)))
;; Libc's 'debug' output refers to gcc-cross-boot0, but it's
;; hard to avoid, so we tolerate it. This should be the
;; only exception.
(filter-map (match-lambda
(("debug" . directory)
(if (string=? "glibc" (package-name package))
#f
directory))
((_ . directory) directory))
(derivation->output-paths drv)))))
%final-inputs))
(define (assert-valid-substitute substitute)
"Make sure SUBSTITUTE does not refer to any bootstrap inputs, and bail out
if it does."
(let ((references (substitutable-references substitute)))
(when (any (cut string-contains <> "boot") references)
(leave (_ "'~a' refers to bootstrap inputs: ~s~%")
(substitutable-path substitute) references))))
(define (test-final-inputs store system)
"Check whether the final inputs for SYSTEM are clean---i.e., they don't
refer to the bootstrap tools."
(format #t "checking final inputs for '~a'...~%" system)
(let* ((inputs (final-inputs store system))
(available (substitutable-path-info store inputs)))
(for-each (lambda (dir)
(unless (find (lambda (substitute)
(string=? (substitutable-path substitute)
dir))
available)
(leave (_ "~a (system: ~a) has no substitute~%")
dir system)))
inputs)
(for-each assert-valid-substitute available)))
;; Entry point.
(with-store store
(set-build-options store #:use-substitutes? #t)
(for-each (cut test-final-inputs store <>)
%supported-systems))
+1 -1
View File
@@ -45,7 +45,7 @@
(match (string-tokenize file (char-set-complement (char-set #\/)))
((_ ... system basename)
(string->uri (string-append %url-base "/" system
"/20130105/" basename)))))
"/20131110/" basename)))))
(match (command-line)
((_ file expected-hash)
+92
View File
@@ -0,0 +1,92 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
;;;
;;; This file defines an operating system configuration for the demo virtual
;;; machine images that we build.
;;;
(use-modules (gnu)
(gnu packages xorg)
(gnu packages avahi)
(gnu packages linux)
(gnu packages tor)
(gnu services networking)
(gnu services avahi)
(gnu services dbus)
(gnu services xorg))
(operating-system
(host-name "gnu")
(timezone "Europe/Paris")
(locale "en_US.UTF-8")
(bootloader (grub-configuration
(device "/dev/sda")))
(file-systems
;; We provide a dummy file system for /, but that's OK because the VM build
;; code will automatically declare the / file system for us.
(cons* (file-system
(mount-point "/")
(device "dummy")
(type "dummy"))
;; %fuse-control-file-system ; needs fuse.ko
;; %binary-format-file-system ; needs binfmt.ko
%base-file-systems))
(users (list (user-account
(name "guest")
(group "users")
(supplementary-groups '("wheel")) ; allow use of sudo
(password "")
(comment "Guest of GNU")
(home-directory "/home/guest"))))
(issue "
This is an alpha preview of the GNU system. Welcome.
This image features the GNU Guix package manager, which was used to
build it (http://www.gnu.org/software/guix/). The init system is
GNU dmd (http://www.gnu.org/software/dmd/).
You can log in as 'guest' or 'root' with no password.
")
(services (cons* (slim-service #:auto-login? #t
#:default-user "guest")
;; QEMU networking settings.
(static-networking-service "eth0" "10.0.2.10"
#:name-servers '("10.0.2.3")
#:gateway "10.0.2.2")
(avahi-service)
(dbus-service (list avahi))
(tor-service)
%base-services))
(pam-services
;; Explicitly allow for empty passwords.
(base-pam-services #:allow-empty-passwords? #t))
(packages (cons* strace
tor torsocks
xterm avahi %base-packages)))
+141 -38
View File
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -36,16 +36,27 @@
dir)
(set! %load-path (cons dir %load-path))))))
(use-modules (guix store)
(use-modules (guix config)
(guix store)
(guix packages)
(guix derivations)
(guix monads)
((guix licenses) #:select (gpl3+))
((guix utils) #:select (%current-system))
((guix scripts system) #:select (read-operating-system))
(gnu packages)
(gnu packages gcc)
(gnu packages base)
(gnu packages gawk)
(gnu packages guile)
(gnu packages gettext)
(gnu packages compression)
(gnu packages multiprecision)
(gnu packages make-bootstrap)
(gnu packages commencement)
(gnu system)
(gnu system vm)
(gnu system install)
(srfi srfi-1)
(srfi srfi-26)
(ice-9 match))
@@ -58,12 +69,17 @@
(define* (package->alist store package system
#:optional (package-derivation package-derivation))
"Convert PACKAGE to an alist suitable for Hydra."
`((derivation . ,(package-derivation store package system))
`((derivation . ,(derivation-file-name
(package-derivation store package system)))
(description . ,(package-synopsis package))
(long-description . ,(package-description package))
(license . ,(package-license package))
(home-page . ,(package-home-page package))
(maintainers . ("bug-guix@gnu.org"))))
(maintainers . ("bug-guix@gnu.org"))
;; Work around versions of 'hydra-eval-guile-jobs' before Hydra commit
;; 61448ca (27 Feb. 2014) which used a default timeout of 2h.
(timeout . 72000)))
(define (package-job store job-name package system)
"Return a job called JOB-NAME that builds PACKAGE on SYSTEM."
@@ -79,9 +95,13 @@ SYSTEM."
,(cute package->alist store package system
(cut package-cross-derivation <> <> target <>))))
(define %packages-to-cross-build
(list gmp mpfr mpc coreutils findutils diffutils patch sed grep
gawk gettext hello guile-2.0
(define %core-packages
;; Note: Don't put the '-final' package variants because (1) that's
;; implicit, and (2) they cannot be cross-built (due to the explicit input
;; chain.)
(list gcc-4.8 gcc-4.7 glibc binutils
gmp mpfr mpc coreutils findutils diffutils patch sed grep
gawk gnu-gettext hello guile-2.0 zlib gzip xz
%bootstrap-binaries-tarball
%binutils-bootstrap-tarball
%glibc-bootstrap-tarball
@@ -89,49 +109,132 @@ SYSTEM."
%guile-bootstrap-tarball
%bootstrap-tarballs))
(define %packages-to-cross-build
%core-packages)
(define %cross-targets
'("mips64el-linux-gnu"
"mips64el-linux-gnuabi64"))
(define (demo-os)
"Return the \"demo\" 'operating-system' structure."
(let* ((dir (dirname (assoc-ref (current-source-location) 'filename)))
(file (string-append dir "/demo-os.scm")))
(read-operating-system file)))
(define (qemu-jobs store system)
"Return a list of jobs that build QEMU images for SYSTEM."
(define (->alist drv)
`((derivation . ,(derivation-file-name drv))
(description . "Stand-alone QEMU image of the GNU system")
(long-description . "This is a demo stand-alone QEMU image of the GNU
system.")
(license . ,gpl3+)
(home-page . ,%guix-home-page-url)
(maintainers . ("bug-guix@gnu.org"))))
(define (->job name drv)
(let ((name (symbol-append name (string->symbol ".")
(string->symbol system))))
`(,name . ,(cut ->alist drv))))
(define MiB
(expt 2 20))
(if (member system '("x86_64-linux" "i686-linux"))
(list (->job 'qemu-image
(run-with-store store
(system-qemu-image (demo-os)
#:disk-image-size
(* 1400 MiB)))) ; 1.4 GiB
(->job 'usb-image
(run-with-store store
(system-disk-image installation-os
#:disk-image-size
(* 800 MiB)))))
'()))
(define job-name
;; Return the name of a package's job.
(compose string->symbol package-full-name))
(define package->job
(let ((base-packages
(delete-duplicates
(append-map (match-lambda
((_ package _ ...)
(match (package-transitive-inputs package)
(((_ inputs _ ...) ...)
inputs))))
%final-inputs))))
(lambda (store package system)
"Return a job for PACKAGE on SYSTEM, or #f if this combination is not
valid."
(cond ((member package base-packages)
#f)
((member system
(package-transitive-supported-systems package))
(package-job store (job-name package) package system))
(else
#f)))))
;;;
;;; Hydra entry point.
;;;
(define (hydra-jobs store arguments)
"Return Hydra jobs."
(define systems
(match (filter-map (match-lambda
(('system . value)
value)
(_ #f))
arguments)
((lst ..1)
lst)
(_
(list (%current-system)))))
(define job-name
(compose string->symbol package-full-name))
(define subset
(match (assoc-ref arguments 'subset)
("core" 'core) ; only build core packages
(_ 'all))) ; build everything
(define (cross-jobs system)
(define (from-32-to-64? target)
;; Return true if SYSTEM is 32-bit and TARGET is 64-bit.
;; This hacks prevents known-to-fail cross-builds from i686-linux to
;; mips64el-linux-gnuabi64.
(and (string-prefix? "i686-" system)
(string-suffix? "64" target)))
(define (same? target)
;; Return true if SYSTEM and TARGET are the same thing. This is so we
;; don't try to cross-compile to 'mips64el-linux-gnu' from
;; 'mips64el-linux'.
(string-contains target system))
(define (either proc1 proc2)
(lambda (x)
(or (proc1 x) (proc2 x))))
(append-map (lambda (target)
(map (lambda (package)
(package-cross-job store (job-name package)
package target system))
%packages-to-cross-build))
%cross-targets))
(remove (either from-32-to-64? same?) %cross-targets)))
;; Return one job for each package, except bootstrap packages.
(let ((base-packages (delete-duplicates
(append-map (match-lambda
((_ package _ ...)
(match (package-transitive-inputs
package)
(((_ inputs _ ...) ...)
inputs))))
%final-inputs))))
(append-map (lambda (system)
(fold-packages (lambda (package result)
(if (member package base-packages)
result
(cons (package-job store (job-name package)
package system)
result)))
(cross-jobs system)))
systems)))
(append-map (lambda (system)
(case subset
((all)
;; Build everything.
(fold-packages (lambda (package result)
(let ((job (package->job store package
system)))
(if job
(cons job result)
result)))
(append (qemu-jobs store system)
(cross-jobs system))))
((core)
;; Build core packages only.
(append (map (lambda (package)
(package-job store (job-name package)
package system))
%core-packages)
(cross-jobs system)))
(else
(error "unknown subset" subset))))
%supported-systems))
+116
View File
@@ -0,0 +1,116 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
;;;
;;; This file defines build jobs of Guix itself for the Hydra continuation
;;; integration tool.
;;;
;; Attempt to use our very own Guix modules.
(eval-when (compile load eval)
;; Ignore any available .go, and force recompilation. This is because our
;; checkout in the store has mtime set to the epoch, and thus .go files look
;; newer, even though they may not correspond.
(set! %fresh-auto-compile #t)
;; Display which files are loaded.
(set! %load-verbosely #t)
(and=> (assoc-ref (current-source-location) 'filename)
(lambda (file)
(let ((dir (string-append (dirname file) "/../..")))
(format (current-error-port) "prepending ~s to the load path~%"
dir)
(set! %load-path (cons dir %load-path))))))
(use-modules (guix store)
(guix packages)
(guix utils)
(guix derivations)
(guix build-system gnu)
(gnu packages version-control)
(gnu packages package-management)
(gnu packages graphviz)
(srfi srfi-1)
(srfi srfi-26)
(ice-9 match))
;; XXX: Debugging hack: since `hydra-eval-guile-jobs' redirects the output
;; port to the bit bucket, let us write to the error port instead.
(setvbuf (current-error-port) _IOLBF)
(set-current-output-port (current-error-port))
(define* (package->alist store package system
#:optional (package-derivation package-derivation))
"Convert PACKAGE to an alist suitable for Hydra."
`((derivation . ,(derivation-file-name
(package-derivation store package system)))
(description . ,(package-synopsis package))
(long-description . ,(package-description package))
(license . ,(package-license package))
(home-page . ,(package-home-page package))
(maintainers . ("bug-guix@gnu.org"))))
(define (tarball-package checkout nix-checkout)
"Return a package that does `make distcheck' from CHECKOUT, a directory
containing a Git checkout of Guix."
(let ((dist (dist-package guix checkout)))
(package (inherit dist)
(location (source-properties->location (current-source-location)))
(arguments (substitute-keyword-arguments (package-arguments dist)
((#:phases p)
`(alist-cons-before
'autoreconf 'set-nix-submodule
(lambda _
;; Tell Git to use the Nix checkout that Hydra gave us.
(zero?
(system* "git" "config" "submodule.nix-upstream.url"
,nix-checkout)))
,p))))
(native-inputs `(("git" ,git)
("graphviz" ,graphviz)
,@(package-native-inputs dist))))))
(define (hydra-jobs store arguments)
"Return Hydra jobs."
(define systems
(match (filter-map (match-lambda
(('system . value)
value)
(_ #f))
arguments)
((lst ..1)
lst)
(_
(list (%current-system)))))
(define guix-checkout
(assq-ref arguments 'guix))
(define nix-checkout
(assq-ref arguments 'nix))
(format (current-error-port) "using checkout ~s (Nix: ~s)~%"
guix-checkout nix-checkout)
(let ((guix (assq-ref guix-checkout 'file-name))
(nix (assq-ref nix-checkout 'file-name)))
`((tarball . ,(cute package->alist store
(tarball-package guix nix)
(%current-system))))))
+306 -66
View File
@@ -4,7 +4,8 @@ exec guile -l "$0" \
(cdr (command-line)))'
!#
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Alex Sassmannshausen <alex.sassmannshausen@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -28,6 +29,7 @@ exec guile -l "$0" \
#:use-module (guix gnu-maintenance)
#:use-module (gnu packages)
#:use-module (sxml simple)
#:use-module (sxml fold)
#:use-module (web uri)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
@@ -47,14 +49,36 @@ exec guile -l "$0" \
(equal? (gnu-package-name package) name))
gnu))))
(define (package->sxml package)
"Return HTML-as-SXML representing PACKAGE."
(define (list-join lst item)
"Join the items in LST by inserting ITEM between each pair of elements."
(let loop ((lst lst)
(result '()))
(match lst
(()
(match (reverse result)
(()
'())
((_ rest ...)
rest)))
((head tail ...)
(loop tail
(cons* head item result))))))
(define (package->sxml package previous description-ids remaining)
"Return 3 values: the HTML-as-SXML for PACKAGE added to all previously
collected package output in PREVIOUS, a list of DESCRIPTION-IDS and the number
of packages still to be processed in REMAINING. Also Introduces a call to the
JavaScript prep_pkg_descs function as part of the output of PACKAGE, every
time the length of DESCRIPTION-IDS, increasing, is 15 or when REMAINING,
decreasing, is 1."
(define (location-url loc)
(string-append "http://git.savannah.gnu.org/cgit/guix.git/tree/"
(location-file loc) "#n"
(number->string (location-line loc))))
(define (source-url package)
(let ((loc (package-location package)))
(and loc
(string-append "http://git.savannah.gnu.org/cgit/guix.git/tree/"
(location-file loc) "#n"
(number->string (location-line loc))))))
(and loc (location-url loc))))
(define (license package)
(define ->sxml
@@ -65,7 +89,8 @@ exec guile -l "$0" \
(let ((uri (license-uri license)))
(case (and=> (and uri (string->uri uri)) uri-scheme)
((http https)
`(div (a (@ (href ,uri))
`(div (a (@ (href ,uri)
(title "Link to the full license"))
,(license-name license))))
(else
`(div ,(license-name license) " ("
@@ -74,68 +99,294 @@ exec guile -l "$0" \
(->sxml (package-license package)))
(define (patches package)
(define patch-url
(match-lambda
((? string? patch)
(string-append
"http://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/patches/"
(basename patch)))
((? origin? patch)
(match (origin-uri patch)
((? string? uri) uri)
((head . tail) head)))))
(define patch-name
(match-lambda
((? string? patch)
(basename patch))
((? origin? patch)
(match (origin-uri patch)
((? string? uri) (basename uri))
((head . tail) (basename head))))))
(define (snippet-link snippet)
(let ((loc (or (package-field-location package 'source)
(package-location package))))
`(a (@ (href ,(location-url loc))
(title "Link to patch snippet"))
"snippet")))
(and (origin? (package-source package))
(let ((patches (origin-patches (package-source package)))
(snippet (origin-snippet (package-source package))))
(and (or (pair? patches) snippet)
`(div "patches: "
,(let loop ((patches patches)
(number 1)
(links '()))
(match patches
(()
(let* ((additional (and snippet
(snippet-link snippet)))
(links (if additional
(cons additional links)
links)))
(list-join (reverse links) ", ")))
((patch rest ...)
(loop rest
(+ 1 number)
(cons `(a (@ (href ,(patch-url patch))
(title ,(string-append
"Link to "
(patch-name patch))))
,(number->string number))
links))))))))))
(define (status package)
(define (url system)
`(a (@ (href ,(string-append "http://hydra.gnu.org/job/gnu/master/"
(package-full-name package) "."
system)))
system))
(title "View the status of this architecture's build at Hydra"))
,system))
`(div "status: "
,(url "x86_64-linux") " "
,(url "i686-linux")))
,(list-join (map url (package-transitive-supported-systems package))
" ")))
(define (package-logo name)
(and=> (lookup-gnu-package name)
gnu-package-logo))
(define (insert-tr description-id js?)
(define (insert-js-call description-ids)
"Return an sxml call to prep_pkg_descs, with up to 15 elements of
description-ids as formal parameters."
`(script (@ (type "text/javascript"))
,(format #f "prep_pkg_descs(~a)"
(string-append "'"
(string-join description-ids "', '")
"'"))))
(let ((description-ids (cons description-id description-ids)))
`(tr (td ,(if (gnu-package? package)
`(img (@ (src "/graphics/gnu-head-mini.png")
(alt "Part of GNU")
(title "Part of GNU")))
""))
(td (a (@ (href ,(source-url package))
(title "Link to the Guix package source code"))
,(package-name package) " "
,(package-version package)))
(td (span ,(package-synopsis package))
(div (@ (id ,description-id))
,(match (package-logo (package-name package))
((? string? url)
`(img (@ (src ,url)
(height "35")
(class "package-logo")
(alt ("Logo of " ,(package-name package))))))
(_ #f))
(p ,(package-description package))
,(license package)
(a (@ (href ,(package-home-page package))
(title "Link to the package's website"))
,(package-home-page package))
,(status package)
,(patches package)
,(if js?
(insert-js-call description-ids)
""))))))
(let ((description-id (symbol->string
(gensym (package-name package)))))
`(tr (td ,(if (gnu-package? package)
`(img (@ (src "/graphics/gnu-head-mini.png")))
""))
(td (a (@ (href ,(source-url package)))
,(package-name package) " "
,(package-version package)))
(td (@ (colspan "2") (height "0"))
(a (@ (href "javascript:void(0)")
(title "show/hide package description")
(onClick ,(format #f "javascript:show_hide('~a')"
description-id)))
,(package-synopsis package))
(div (@ (id ,description-id)
(style "position: relative; display: none;"))
,(match (package-logo (package-name package))
((? string? url)
`(img (@ (src ,url)
(height "35em")
(style "float: left; padding-right: 1em;"))))
(_ #f))
(p ,(package-description package))
,(license package)
(a (@ (href ,(package-home-page package)))
,(package-home-page package))
,(status package))))))
(cond ((= remaining 1) ; Last package in packages
(values
(reverse ; Fold has reversed packages
(cons (insert-tr description-id 'js) ; Prefix final sxml
previous))
'() ; No more work to do
0)) ; End of the line
((= (length description-ids) 15) ; Time for a JS call
(values
(cons (insert-tr description-id 'js)
previous) ; Prefix new sxml
'() ; Reset description-ids
(1- remaining))) ; Reduce remaining
(else ; Insert another row, and build description-ids
(values
(cons (insert-tr description-id #f)
previous) ; Prefix new sxml
(cons description-id description-ids) ; Update description-ids
(1- remaining)))))) ; Reduce remaining
(define (packages->sxml packages)
"Return an HTML page as SXML describing PACKAGES."
`(div
(h2 "GNU Guix Package List")
(div (@ (style "margin-bottom: 5em;"))
(div (@ (id "intro"))
(div
(img (@ (src "graphics/guix-logo.small.png")
(alt "GNU Guix and the GNU System")
(height "83em"))))
"This web page lists the packages currently provided by the "
(a (@ (href "manual/guix.html#GNU-Distribution"))
"GNU system distribution")
" of "
(a (@ (href "/software/guix/guix.html")) "GNU Guix") ". "
"Our " (a (@ (href "http://hydra.gnu.org/jobset/gnu/master"))
"continuous integration system")
" shows their current build status.")
(table (@ (style "border: none;"))
,@(map package->sxml packages))))
(height "83"))))
(p "This web page lists the packages currently provided by the "
(a (@ (href "manual/guix.html#GNU-Distribution"))
"GNU system distribution")
" of "
(a (@ (href "/software/guix/guix.html")) "GNU Guix") ". "
"Our " (a (@ (href "http://hydra.gnu.org/jobset/gnu/master"))
"continuous integration system")
" shows their current build status."))
(table (@ (id "packages"))
(tr (th "GNU?")
(th "Package version")
(th "Package details"))
,@(fold-values package->sxml packages '() '() (length packages)))
(a (@ (href "#intro")
(title "Back to top.")
(id "top"))
"^")))
(define (insert-css)
"Return the CSS for the list-packages page."
(format #t
"<style>
/* license: CC0 */
a {
transition: all 0.3s;
}
div#intro {
margin-bottom: 2em;
}
div#intro div, div#intro p {
padding:0.5em;
}
div#intro div {
float:left;
}
div#intro img {
float:left;
padding:0.75em;
}
table#packages, table#packages tr, table#packages tbody, table#packages td, table#packages th {
border: 0px solid black;
clear: both;
}
table#packages tr:nth-child(even) {
background-color: #FFF;
}
table#packages tr:nth-child(odd) {
background-color: #EEE;
}
table#packages tr:hover, table#packages tr:focus, table#packages tr:active {
background-color: #DDD;
}
table#packages tr:first-child, table#packages tr:first-child:hover, table#packages tr:first-child:focus, table#packages tr:first-child:active {
background-color: #333;
color: #fff;
}
table#packages td {
margin:0px;
padding:0.2em 0.5em;
}
table#packages td:first-child {
width:10%;
text-align:center;
}
table#packages td:nth-child(2) {
width:30%;
}
table#packages td:last-child {
width:60%;
}
img.package-logo {
float: left;
padding: 0.75em;
}
table#packages span {
font-weight: 700;
}
table#packages span a {
float: right;
font-weight: 500;
}
a#top {
position:fixed;
right:10px;
bottom:10px;
font-size:150%;
background-color:#EEE;
padding:10px 7.5px 0 7.5px;
text-decoration:none;
color:#000;
border-radius:5px;
}
a#top:hover, a#top:focus {
background-color:#333;
color:#fff;
}
</style>"))
(define (insert-js)
"Return the JavaScript for the list-packages page."
(format #t
"<script type=\"text/javascript\">
// license: CC0
function show_hide(idThing)
{
if(document.getElementById && document.createTextNode) {
var thing = document.getElementById(idThing);
/* Used to change the link text, depending on whether description is
collapsed or expanded */
var thingLink = thing.previousSibling.lastChild.firstChild;
if (thing) {
if (thing.style.display == \"none\") {
thing.style.display = \"\";
thingLink.data = 'Collapse';
} else {
thing.style.display = \"none\";
thingLink.data = 'Expand';
}
}
}
}
/* Add controllers used for collapse/expansion of package descriptions */
function prep(idThing)
{
var tdThing = document.getElementById(idThing).parentNode;
if (tdThing) {
var aThing = tdThing.firstChild.appendChild(document.createElement('a'));
aThing.setAttribute('href', 'javascript:void(0)');
aThing.setAttribute('title', 'show/hide package description');
aThing.appendChild(document.createTextNode('Expand'));
aThing.onclick=function(){show_hide(idThing);};
/* aThing.onkeypress=function(){show_hide(idThing);}; */
}
}
/* Take n element IDs, prepare them for javascript enhanced
display and hide the IDs by default. */
function prep_pkg_descs()
{
if(document.getElementById && document.createTextNode) {
for(var i=0; i<arguments.length; i++) {
prep(arguments[i])
show_hide(arguments[i]);
}
}
}
</script>"))
(define (list-packages . args)
@@ -153,26 +404,15 @@ with gnu.org server-side include and all that."
(string<? (package-name p1) (package-name p2))))))
(format #t "<!--#include virtual=\"/server/html5-header.html\" -->
<!-- Parent-Version: 1.70 $ -->
<title>GNU Guix - GNU Distribution - GNU Project</title>
<!--#include virtual=\"/server/banner.html\" -->
")
(insert-css)
(insert-js)
(format #t "<!--#include virtual=\"/server/banner.html\" -->")
<script language=\"javascript\" type=\"text/javascript\">
// license: CC0
function show_hide(idThing)
{
var thing = document.getElementById(idThing);
if (thing) {
if (thing.style.display == \"none\") {
thing.style.display = \"\";
} else {
thing.style.display = \"none\";
}
}
}
</script>")
(display (sxml->xml (packages->sxml packages)))
(format #t "<!--#include virtual=\"/server/footer.html\" -->
(sxml->xml (packages->sxml packages))
(format #t "</div>
<!--#include virtual=\"/server/footer.html\" -->
<div id=\"footer\">
<p>Please send general FSF &amp; GNU inquiries to
@@ -17,7 +17,8 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
;;;
;;; Report synopses that defer from those found in the GNU Womb.
;;; Report package synopses and descriptions that defer from those found in
;;; the GNU Womb.
;;;
(use-modules (guix gnu-maintenance)
@@ -46,6 +47,16 @@
result))
'())))
(define (escape-quotes str)
"Replace any quote character in STR by an escaped quote character."
(list->string
(string-fold-right (lambda (chr result)
(match chr
(#\" (cons* #\\ #\"result))
(_ (cons chr result))))
'()
str)))
;; Iterate over GNU packages. Report those whose synopsis defers from that
;; found upstream.
(for-each (match-lambda
@@ -58,5 +69,17 @@
(format (guix-warning-port)
"~a: ~a: proposed synopsis: ~s~%"
(location->string loc) (package-name package)
upstream)))))
upstream)))
(let ((upstream (gnu-package-doc-description descriptor))
(downstream (package-description package))
(loc (or (package-field-location package 'description)
(package-location package))))
(when (and upstream
(not (string=? (fill-paragraph upstream 100)
(fill-paragraph downstream 100))))
(format (guix-warning-port)
"~a: ~a: proposed description:~% \"~a\"~%"
(location->string loc) (package-name package)
(fill-paragraph (escape-quotes upstream) 77 7))))))
gnus)
+39 -5
View File
@@ -38,13 +38,21 @@ if test "x$guix_build_daemon" = "xyes"; then
case "$LIBGCRYPT_PREFIX" in
no)
LIBGCRYPT_CFLAGS=""
LIBGCRYPT_LIBS=""
;;
*)
LIBGCRYPT_CFLAGS="-I$LIBGCRYPT_PREFIX/include"
LIBGCRYPT_LIBS="-L$LIBGCRYPT_PREFIX/lib -lgcrypt"
;;
esac
case "$LIBGCRYPT_LIBDIR" in
no)
LIBGCRYPT_LIBS="-lgcrypt"
;;
*)
LIBGCRYPT_LIBS="-L$LIBGCRYPT_LIBDIR -lgcrypt"
;;
esac
AC_SUBST([LIBGCRYPT_CFLAGS])
AC_SUBST([LIBGCRYPT_LIBS])
@@ -67,9 +75,17 @@ if test "x$guix_build_daemon" = "xyes"; then
AC_CHECK_FUNCS([chroot unshare])
AC_CHECK_HEADERS([sched.h sys/param.h sys/mount.h])
dnl Check for lutimes, optionally used for changing the mtime of
dnl symlinks.
AC_CHECK_FUNCS([lutimes])
dnl lutimes and lchown: used when canonicalizing store items.
dnl posix_fallocate: used when extracting archives.
dnl vfork: to speed up spawning of helper programs.
dnl `--> now disabled because of unpredictable behavior:
dnl see <http://lists.gnu.org/archive/html/guix-devel/2014-05/msg00036.html>
dnl and Nix commit f794465c (Nov. 2012).
dnl sched_setaffinity: to improve RPC locality.
dnl statvfs: to detect disk-full conditions.
dnl strsignal: for error reporting.
AC_CHECK_FUNCS([lutimes lchown posix_fallocate sched_setaffinity \
statvfs nanosleep strsignal])
dnl Check whether the store optimiser can optimise symlinks.
AC_MSG_CHECKING([whether it is possible to create a link to a symlink])
@@ -95,6 +111,17 @@ if test "x$guix_build_daemon" = "xyes"; then
dnl Check for <linux/fs.h> (for immutable file support).
AC_CHECK_HEADERS([linux/fs.h])
dnl Check whether the 'offload' build hook can be built (uses
dnl 'restore-file-set', which requires unbuffered custom binary input
dnl ports from Guile >= 2.0.10.)
GUIX_CHECK_UNBUFFERED_CBIP
guix_build_daemon_offload="$ac_cv_guix_cbips_support_setvbuf"
if test "x$guix_build_daemon_offload" = "xyes"; then
AC_DEFINE([HAVE_DAEMON_OFFLOAD_HOOK], [1],
[Define if the daemon's 'offload' build hook is being built.])
fi
dnl Temporary directory used to store the daemon's data.
AC_MSG_CHECKING([for unit test root])
GUIX_TEST_ROOT="`pwd`/test-tmp"
@@ -105,6 +132,13 @@ if test "x$guix_build_daemon" = "xyes"; then
[chmod +x nix/scripts/list-runtime-roots])
AC_CONFIG_FILES([nix/scripts/substitute-binary],
[chmod +x nix/scripts/substitute-binary])
AC_CONFIG_FILES([nix/scripts/guix-authenticate],
[chmod +x nix/scripts/guix-authenticate])
AC_CONFIG_FILES([nix/scripts/offload],
[chmod +x nix/scripts/offload])
fi
AM_CONDITIONAL([BUILD_DAEMON], [test "x$guix_build_daemon" = "xyes"])
AM_CONDITIONAL([BUILD_DAEMON_OFFLOAD], \
[test "x$guix_build_daemon" = "xyes" \
&& test "x$guix_build_daemon_offload" = "xyes"])
+68 -10
View File
@@ -2,12 +2,12 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.68)
AC_INIT([GNU Guix], [0.3], [bug-guix@gnu.org], [guix],
AC_INIT([GNU Guix], [0.8], [bug-guix@gnu.org], [guix],
[http://www.gnu.org/software/guix/])
AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([1.12 gnu silent-rules subdir-objects \
color-tests parallel-tests])
color-tests parallel-tests -Woverride])
AC_CONFIG_SRCDIR([guix.scm])
AC_CONFIG_MACRO_DIR([m4])
@@ -26,20 +26,33 @@ GUIX_ASSERT_SUPPORTED_SYSTEM
AC_ARG_WITH(store-dir,
AC_HELP_STRING([--with-store-dir=PATH],
[path of the store (defaults to /nix/store)]),
[file name of the store (defaults to /gnu/store)]),
[storedir="$withval"],
[storedir="/nix/store"])
[storedir="/gnu/store"])
AC_SUBST(storedir)
dnl Better be verbose.
AC_MSG_CHECKING([for the store directory])
AC_MSG_RESULT([$storedir])
AC_ARG_ENABLE([daemon],
[AS_HELP_STRING([--disable-daemon], [build the Nix daemon (C++)])],
[guix_build_daemon="$enableval"],
[guix_build_daemon="yes"])
# Prepare a version of $localstatedir that does not contain references
# Prepare a version of $localstatedir & co. that does not contain references
# to shell variables.
guix_localstatedir="`eval echo $localstatedir | sed -e "s|NONE|/usr/local|g"`"
guix_prefix="`eval echo $prefix | sed -e"s|NONE|/usr/local|g"`"
guix_localstatedir="`eval echo $localstatedir | sed -e "s|NONE|$guix_prefix|g"`"
guix_sysconfdir="`eval echo $sysconfdir | sed -e "s|NONE|$guix_prefix|g"`"
guix_sbindir="`eval echo $sbindir | sed -e "s|NONE|$guix_prefix|g"`"
AC_SUBST([guix_localstatedir])
AC_SUBST([guix_sysconfdir])
AC_SUBST([guix_sbindir])
dnl We require the pkg.m4 set of macros from pkg-config.
dnl Make sure it's available.
m4_pattern_forbid([PKG_CHECK_MODULES])
PKG_CHECK_MODULES([GUILE], [guile-2.0 >= 2.0.5])
AC_PATH_PROG([GUILE], [guile])
@@ -48,6 +61,10 @@ if test "x$GUILD" = "x"; then
AC_MSG_ERROR(['guild' binary not found; please check your guile-2.x installation.])
fi
dnl guile-json is used for the PyPI package importer
GUILE_MODULE_AVAILABLE([have_guile_json], [(json)])
AM_CONDITIONAL([HAVE_GUILE_JSON], [test "x$have_guile_json" = "xyes"])
dnl Make sure we have a full-fledged Guile.
GUIX_ASSERT_GUILE_FEATURES([regex posix socket net-db threads])
@@ -56,7 +73,8 @@ GUIX_CHECK_SRFI_37
AM_CONDITIONAL([INSTALL_SRFI_37], [test "x$ac_cv_guix_srfi_37_broken" = xyes])
AC_ARG_WITH([nix-prefix],
[AS_HELP_STRING([--with-nix-prefix=DIR], [search for Nix in DIR])],
[AS_HELP_STRING([--with-nix-prefix=DIR],
[search for Nix in DIR (for testing purposes and '--disable-daemon' builds)])],
[case "$withval" in
yes|no) ;;
*)
@@ -80,7 +98,8 @@ if test "x$NIX_INSTANTIATE" = "x"; then
fi
AC_ARG_WITH([nixpkgs],
[AS_HELP_STRING([--with-nixpkgs=DIR], [search for Nixpkgs in DIR])],
[AS_HELP_STRING([--with-nixpkgs=DIR],
[search for Nixpkgs in DIR (for testing purposes only)])],
[case "$withval" in
yes|no) AC_MSG_ERROR([Please use `--with-nixpkgs=DIR'.]);;
*) NIXPKGS="$withval";;
@@ -101,19 +120,44 @@ AC_ARG_WITH([libgcrypt-prefix],
yes|no)
LIBGCRYPT="libgcrypt"
LIBGCRYPT_PREFIX="no"
LIBGCRYPT_LIBDIR="no"
;;
*)
LIBGCRYPT="$withval/lib/libgcrypt"
LIBGCRYPT_PREFIX="$withval"
LIBGCRYPT_LIBDIR="$withval/lib"
;;
esac],
[LIBGCRYPT="libgcrypt"])
[LIBGCRYPT="libgcrypt"
LIBGCRYPT_PREFIX="no"
LIBGCRYPT_LIBDIR="no"])
AC_ARG_WITH([libgcrypt-libdir],
[AS_HELP_STRING([--with-libgcrypt-libdir=DIR],
[search for GNU libgcrypt's shared library in DIR])],
[case "$withval" in
yes|no)
LIBGCRYPT="libgcrypt"
LIBGCRYPT_LIBDIR="no"
;;
*)
LIBGCRYPT="$withval/libgcrypt"
LIBGCRYPT_LIBDIR="$withval"
;;
esac],
[if test "x$LIBGCRYPT" = x; then
LIBGCRYPT="libgcrypt"
fi
if test "x$LIBGCRYPT_LIBDIR" = x; then
LIBGCRYPT_LIBDIR="no"
fi])
dnl Library name suitable for `dynamic-link'.
AC_MSG_CHECKING([for libgcrypt shared library name])
AC_MSG_RESULT([$LIBGCRYPT])
AC_SUBST([LIBGCRYPT])
AC_SUBST([LIBGCRYPT_PREFIX])
AC_SUBST([LIBGCRYPT_LIBDIR])
GUIX_ASSERT_LIBGCRYPT_USABLE
@@ -121,12 +165,26 @@ AC_CACHE_SAVE
m4_include([config-daemon.ac])
dnl `dot' (from the Graphviz package) is only needed for maintainers.
dnl See `HACKING' for more info.
AM_MISSING_PROG([DOT], [dot])
AC_CONFIG_FILES([Makefile
po/Makefile.in
po/guix/Makefile.in
po/packages/Makefile.in
guix/config.scm])
AC_CONFIG_FILES([scripts/guix], [chmod +x scripts/guix])
AC_CONFIG_FILES([pre-inst-env], [chmod +x pre-inst-env])
AC_CONFIG_FILES([test-env], [chmod +x test-env])
dnl Emacs interface.
AM_PATH_LISPDIR
AM_CONDITIONAL([HAVE_EMACS], [test "x$EMACS" != "xno"])
emacsuidir="${guilemoduledir}/guix/emacs"
AC_SUBST([emacsuidir])
AC_CONFIG_FILES([emacs/guix-init.el
emacs/guix-helper.scm])
AC_OUTPUT
+38 -21
View File
@@ -1,5 +1,5 @@
# GNU Guix --- Functional package management for GNU
# Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
#
# This file is part of GNU Guix.
#
@@ -20,21 +20,21 @@
# Integration of the `guix-daemon' code taken from upstream Nix.
#
BUILT_SOURCES = nix/libstore/schema.sql.hh
BUILT_SOURCES += nix/libstore/schema.sql.hh
CLEANFILES += $(BUILT_SOURCES)
noinst_LIBRARIES = libformat.a libutil.a libstore.a
# Use '-std=c++0x' for 'std::shared_ptr'.
AM_CXXFLAGS = -Wall -std=c++0x
libformat_a_SOURCES = \
nix/boost/format/free_funcs.cc \
nix/boost/format/parsing.cc \
nix/boost/format/format_implementation.cc
libformat_headers = \
nix/boost/weak_ptr.hpp \
nix/boost/throw_exception.hpp \
nix/boost/checked_delete.hpp \
nix/boost/shared_ptr.hpp \
nix/boost/format.hpp \
nix/boost/assert.hpp \
nix/boost/format/macros_default.hpp \
@@ -44,16 +44,14 @@ libformat_headers = \
nix/boost/format/group.hpp \
nix/boost/format/feed_args.hpp \
nix/boost/format/internals_fwd.hpp \
nix/boost/format/internals.hpp \
nix/boost/detail/workaround.hpp \
nix/boost/detail/shared_count.hpp \
nix/boost/enable_shared_from_this.hpp
nix/boost/format/internals.hpp
libformat_a_CPPFLAGS = \
-I$(top_srcdir)/nix
libutil_a_SOURCES = \
nix/libutil/archive.cc \
nix/libutil/affinity.cc \
nix/libutil/serialise.cc \
nix/libutil/util.cc \
nix/libutil/xml-writer.cc \
@@ -61,6 +59,7 @@ libutil_a_SOURCES = \
nix/libutil/gcrypt-hash.cc
libutil_headers = \
nix/libutil/affinity.hh \
nix/libutil/hash.hh \
nix/libutil/serialise.hh \
nix/libutil/xml-writer.hh \
@@ -108,17 +107,18 @@ libstore_a_CPPFLAGS = \
-I$(top_builddir)/nix/libstore \
-DNIX_STORE_DIR=\"$(storedir)\" \
-DNIX_DATA_DIR=\"$(datadir)\" \
-DNIX_STATE_DIR=\"$(localstatedir)/nix\" \
-DNIX_LOG_DIR=\"$(localstatedir)/log/nix\" \
-DNIX_CONF_DIR=\"$(sysconfdir)/nix\" \
-DNIX_STATE_DIR=\"$(localstatedir)/guix\" \
-DNIX_LOG_DIR=\"$(localstatedir)/log/guix\" \
-DNIX_CONF_DIR=\"$(sysconfdir)/guix\" \
-DNIX_LIBEXEC_DIR=\"$(libexecdir)\" \
-DNIX_BIN_DIR=\"$(bindir)\" \
-DOPENSSL_PATH="\"openssl\""
-DOPENSSL_PATH="\"guix-authenticate\""
libstore_a_CXXFLAGS = \
libstore_a_CXXFLAGS = $(AM_CXXFLAGS) \
$(SQLITE3_CFLAGS) $(LIBGCRYPT_CFLAGS)
bin_PROGRAMS = guix-daemon
sbin_PROGRAMS = guix-register
guix_daemon_SOURCES = \
nix/nix-daemon/nix-daemon.cc \
@@ -135,15 +135,20 @@ guix_daemon_LDADD = \
guix_daemon_headers = \
nix/nix-daemon/shared.hh
libexec_PROGRAMS = nix-setuid-helper
nix_setuid_helper_SOURCES = \
nix/nix-setuid-helper/nix-setuid-helper.cc
nix_setuid_helper_CPPFLAGS = \
$(libutil_a_CPPFLAGS)
guix_register_SOURCES = \
nix/guix-register/guix-register.cc
guix_register_CPPFLAGS = \
$(libutil_a_CPPFLAGS) \
$(libstore_a_CPPFLAGS) \
-I$(top_srcdir)/nix/libstore
# XXX: Should we start using shared libs?
guix_register_LDADD = \
libstore.a libutil.a libformat.a -lbz2 \
$(SQLITE3_LIBS) $(LIBGCRYPT_LIBS)
nix_setuid_helper_LDADD = \
libutil.a libformat.a
noinst_HEADERS = \
$(libformat_headers) $(libutil_headers) $(libstore_headers) \
@@ -162,6 +167,18 @@ nodist_pkglibexec_SCRIPTS = \
nix/scripts/list-runtime-roots \
nix/scripts/substitute-binary
if BUILD_DAEMON_OFFLOAD
nodist_pkglibexec_SCRIPTS += \
nix/scripts/offload
endif BUILD_DAEMON_OFFLOAD
# XXX: It'd be better to hide it in $(pkglibexecdir).
nodist_libexec_SCRIPTS = \
nix/scripts/guix-authenticate
EXTRA_DIST += \
nix/sync-with-upstream \
nix/libstore/schema.sql \
+63
View File
@@ -0,0 +1,63 @@
# GNU Guix --- Functional package management for GNU
# Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2013 Andreas Enge <andreas@enge.fr>
#
# This file is part of GNU Guix.
#
# GNU Guix is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or (at
# your option) any later version.
#
# GNU Guix is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
info_TEXINFOS = doc/guix.texi
EXTRA_DIST += \
doc/emacs.texi \
doc/fdl-1.3.texi \
doc/images/bootstrap-graph.dot \
doc/images/bootstrap-graph.eps \
doc/images/bootstrap-graph.pdf
# Bundle this file so that makeinfo finds it in out-of-source-tree builds.
BUILT_SOURCES += doc/os-config.texi
EXTRA_DIST += doc/os-config.texi
MAINTAINERCLEANFILES = doc/os-config.texi
doc/os-config.texi: gnu/system/os-config.tmpl
$(MKDIR_P) "`dirname "$@"`"
cp "$<" "$@"
infoimagedir = $(infodir)/images
dist_infoimage_DATA = doc/images/bootstrap-graph.png
# Try hard to obtain an image size and aspect that's reasonable for inclusion
# in an Info or PDF document.
DOT_OPTIONS = \
-Gratio=.9 -Gnodesep=.005 -Granksep=.00005 \
-Nfontsize=9 -Nheight=.1 -Nwidth=.1
.dot.png:
$(DOT) -Tpng $(DOT_OPTIONS) < "$<" > "$@.tmp"
mv "$@.tmp" "$@"
.dot.pdf:
$(DOT) -Tpdf $(DOT_OPTIONS) < "$<" > "$@.tmp"
mv "$@.tmp" "$@"
.dot.eps:
$(DOT) -Teps $(DOT_OPTIONS) < "$<" > "$@.tmp"
mv "$@.tmp" "$@"
# We cannot add new dependencies to `doc/guix.pdf' & co. (info "(automake)
# Extending"). Using the `-local' rules is imperfect, because they may be
# triggered after the main rule. Oh, well.
pdf-local: $(top_srcdir)/doc/images/bootstrap-graph.pdf
info-local: $(top_srcdir)/doc/images/bootstrap-graph.png
ps-local: $(top_srcdir)/doc/images/bootstrap-graph.eps
+472
View File
@@ -0,0 +1,472 @@
@node Emacs Interface
@section Emacs Interface
@cindex Emacs
GNU Guix comes with a visual user interface for GNU@tie{}Emacs, known
as ``guix.el''. It can be used for routine package management tasks,
pretty much like the @command{guix package} command (@pxref{Invoking
guix package}). Specifically, ``guix.el'' makes it easy to:
@itemize
@item browse and display packages and generations;
@item search, install, upgrade and remove packages;
@item display packages from previous generations;
@item do some other useful things.
@end itemize
@menu
* Initial Setup: Emacs Initial Setup. Preparing @file{~/.emacs}.
* Usage: Emacs Usage. Using the interface.
* Configuration: Emacs Configuration. Configuring the interface.
* Prettify Mode: Emacs Prettify. Abbreviating @file{/gnu/store/@dots{}} file names.
@end menu
@node Emacs Initial Setup
@subsection Initial Setup
To be able to use ``guix.el'', you need to install the following
packages:
@itemize
@item
@uref{http://www.gnu.org/software/emacs/, GNU Emacs}, version 24.3 or
later;
@item
@uref{http://nongnu.org/geiser/, Geiser}, version 0.3 or later: it is
used for interacting with the Guile process.
@end itemize
When it is done, add the following into your init file (@pxref{Init
File,,, emacs, The GNU Emacs Manual}):
@example
(require 'guix-init nil t)
@end example
However there is a chance that @code{load-path} of your Emacs does not
contain a directory with ``guix.el'' (usually it is
@file{/usr/share/emacs/site-lisp/}). In that case you need to add it
before requiring (@pxref{Lisp Libraries,,, emacs, The GNU Emacs
Manual}):
@example
(add-to-list 'load-path "/path/to/directory-with-guix.el")
(require 'guix-init)
@end example
Do not worry about the efficiency of that @code{require} thing. It will
not load the whole ``guix.el'' package, it will just autoload the main
interactive commands (@pxref{Autoload,,, elisp, The GNU Emacs Lisp
Reference Manual}).
@node Emacs Usage
@subsection Usage
Once ``guix.el'' has been successfully configured, you should be able to
use commands for displaying packages and generations. This information
can be displayed in a ``list'' or ``info'' buffer.
@menu
* Commands: Emacs Commands. @kbd{M-x guix-@dots{}}
* General information: Emacs General info. Common for both interfaces.
* ``List'' buffer: Emacs List buffer. List-like interface.
* ``Info'' buffer: Emacs Info buffer. Help-like interface.
@end menu
@node Emacs Commands
@subsubsection Commands
All commands for displaying packages and generations use the current
profile, which can be changed with
@kbd{M-x@tie{}guix-set-current-profile}. Alternatively, if you call any
of these commands with prefix argument (@kbd{C-u}), you will be prompted
for a profile just for that command.
Commands for displaying packages:
@table @kbd
@item M-x guix-all-available-packages
@itemx M-x guix-newest-available-packages
Display all/newest available packages.
@item M-x guix-installed-packages
Display all installed packages.
@item M-x guix-obsolete-packages
Display obsolete packages (the packages that are installed in a profile
but cannot be found among available packages).
@item M-x guix-search-by-name
Display package(s) with the specified name.
@item M-x guix-search-by-regexp
Search for packages by a specified regexp. By default ``name'',
``synopsis'' and ``description'' of the packages will be searched. This
can be changed by modifying @code{guix-search-params} variable.
@end table
By default, these commands display each output on a separate line. If
you prefer to see a list of packages---i.e., a list with a package per
line, use the following setting:
@example
(setq guix-package-list-type 'package)
@end example
Commands for displaying generations:
@table @kbd
@item M-x guix-generations
List all the generations.
@item M-x guix-last-generations
List the @var{N} last generations. You will be prompted for the number
of generations.
@item M-x guix-generations-by-time
List generations matching time period. You will be prompted for the
period using Org mode time prompt based on Emacs calendar (@pxref{The
date/time prompt,,, org, The Org Manual}).
@end table
You can also invoke the @command{guix pull} command (@pxref{Invoking
guix pull}) from Emacs using:
@table @kbd
@item M-x guix-pull
With @kbd{C-u}, make it verbose.
@end table
Once @command{guix pull} has succeeded, the Guix REPL is restared. This
allows you to keep using the Emacs interface with the updated Guix.
@node Emacs General info
@subsubsection General information
The following keys are available for both ``list'' and ``info'' types of
buffers:
@table @kbd
@item l
@itemx r
Go backward/forward by the history of the displayed results (this
history is similar to the history of the Emacs @code{help-mode} or
@code{Info-mode}).
@item g
Revert current buffer: update information about the displayed
packages/generations and redisplay it.
@item R
Redisplay current buffer (without updating information).
@item C-c C-z
Go to the Guix REPL (@pxref{The REPL,,, geiser, Geiser User Manual}).
@item h
@itemx ?
Describe current mode to see all available bindings.
@end table
@emph{Hint:} If you need several ``list'' or ``info'' buffers, you can
simlpy @kbd{M-x clone-buffer} them, and each buffer will have its own
history.
@emph{Warning:} Name/version pairs cannot be used to identify packages
(because a name is not necessarily unique), so ``guix.el'' uses special
identifiers that live only during a guile session, so if the Guix REPL
was restarted, you may want to revert ``list'' buffer (by pressing
@kbd{g}).
@node Emacs List buffer
@subsubsection ``List'' buffer
An interface of a ``list'' buffer is similar to the interface provided
by ``package.el'' (@pxref{Package Menu,,, emacs, The GNU Emacs Manual}).
Default key bindings available for both ``package-list'' and
``generation-list'' buffers:
@table @kbd
@item m
Mark the current entry.
@item M
Mark all entries.
@item u
Unmark the current entry (with prefix, unmark all entries).
@item @key{DEL}
Unmark backward.
@item S
Sort entries by a specified column.
@end table
A ``package-list'' buffer additionally provides the following bindings:
@table @kbd
@item @key{RET}
Describe marked packages (display available information in a
``package-info'' buffer).
@item i
Mark the current package for installation.
@item d
Mark the current package for deletion.
@item U
Mark the current package for upgrading.
@item ^
Mark all obsolete packages for upgrading.
@item x
Execute actions on the marked packages.
@end table
A ``generation-list'' buffer additionally provides the following
bindings:
@table @kbd
@item @key{RET}
List packages installed in the current generation.
@item i
Describe marked generations (display available information in a
``generation-info'' buffer).
@item s
Switch profile to the current generation.
@item d
Mark the current generation for deletion (with prefix, mark all
generations).
@item x
Execute actions on the marked generations---i.e., delete generations.
@item e
Run Ediff (@pxref{Top,,, ediff, The Ediff Manual}) on package outputs
installed in the 2 marked generations. With prefix argument, run Ediff
on manifests of the marked generations.
@item D
@itemx =
Run Diff (@pxref{Diff Mode,,, emacs, The GNU Emacs Manual}) on package
outputs installed in the 2 marked generations. With prefix argument,
run Diff on manifests of the marked generations.
@item +
List package outputs added to the latest marked generation comparing
with another marked generation.
@item -
List package outputs removed from the latest marked generation comparing
with another marked generation.
@end table
@node Emacs Info buffer
@subsubsection ``Info'' buffer
The interface of an ``info'' buffer is similar to the interface of
@code{help-mode} (@pxref{Help Mode,,, emacs, The GNU Emacs Manual}).
``Info'' buffer contains some buttons (as usual you may use @key{TAB} /
@kbd{S-@key{TAB}} to move between buttons---@pxref{Mouse References,,,
emacs, The GNU Emacs Manual}) which can be used to:
@itemize @bullet
@item (in a ``package-info'' buffer)
@itemize @minus
@item install/remove a package;
@item jump to a package location;
@item browse home page of a package;
@item describe packages from ``Inputs'' fields.
@end itemize
@item (in a ``generation-info'' buffer)
@itemize @minus
@item remove a generation;
@item switch to a generation;
@item list packages installed in a generation;
@item jump to a generation directory.
@end itemize
@end itemize
It is also possible to copy a button label (a link to an URL or a file)
by pressing @kbd{c} on a button.
@node Emacs Configuration
@subsection Configuration
There are many variables you can modify to change the appearance or
behavior of Emacs user interface. Some of these variables are described
in this section. Also you can use Custom Interface (@pxref{Easy
Customization,,, emacs, The GNU Emacs Manual}) to explore/set variables
(not all) and faces.
@menu
* Guile and Build Options: Emacs Build Options. Specifying how packages are built.
* Buffer Names: Emacs Buffer Names. Names of Guix buffers.
* Keymaps: Emacs Keymaps. Configuring key bindings.
* Appearance: Emacs Appearance. Settings for visual appearance.
@end menu
@node Emacs Build Options
@subsubsection Guile and Build Options
@table @code
@item guix-guile-program
If you have some special needs for starting a Guile process, you may set
this variable, for example:
@example
(setq guix-guile-program '("/bin/guile" "--no-auto-compile"))
@end example
@item guix-use-substitutes
Has the same meaning as @code{--no-substitutes} option (@pxref{Invoking
guix build}).
@item guix-dry-run
Has the same meaning as @code{--dry-run} option (@pxref{Invoking guix
build}).
@end table
@node Emacs Buffer Names
@subsubsection Buffer Names
Default names of ``guix.el'' buffers (``*Guix@tie{}@dots{}*'') may be
changed with the following variables:
@table @code
@item guix-package-list-buffer-name
@item guix-output-list-buffer-name
@item guix-generation-list-buffer-name
@item guix-package-info-buffer-name
@item guix-output-info-buffer-name
@item guix-generation-info-buffer-name
@item guix-repl-buffer-name
@item guix-internal-repl-buffer-name
@end table
By default, the name of a profile is also displayed in a ``list'' or
``info'' buffer name. To change this behavior, use
@code{guix-buffer-name-function} variable.
For example, if you want to display all types of results in a single
buffer (in such case you will probably use a history (@kbd{l}/@kbd{r})
extensively), you may do it like this:
@example
(let ((name "Guix Universal"))
(setq
guix-package-list-buffer-name name
guix-output-list-buffer-name name
guix-generation-list-buffer-name name
guix-package-info-buffer-name name
guix-output-info-buffer-name name
guix-generation-info-buffer-name name
guix-buffer-name-function #'guix-buffer-name-simple))
@end example
@node Emacs Keymaps
@subsubsection Keymaps
If you want to change default key bindings, use the following keymaps
(@pxref{Init Rebinding,,, emacs, The GNU Emacs Manual}):
@table @code
@item guix-list-mode-map
Parent keymap with general keys for ``list'' buffers.
@item guix-package-list-mode-map
Keymap with specific keys for ``package-list'' buffers.
@item guix-output-list-mode-map
Keymap with specific keys for ``output-list'' buffers.
@item guix-generation-list-mode-map
Keymap with specific keys for ``generation-list'' buffers.
@item guix-info-mode-map
Parent keymap with general keys for ``info'' buffers.
@item guix-package-info-mode-map
Keymap with specific keys for ``package-info'' buffers.
@item guix-output-info-mode-map
Keymap with specific keys for ``output-info'' buffers.
@item guix-generation-info-mode-map
Keymap with specific keys for ``generation-info'' buffers.
@item guix-info-button-map
Keymap with keys available when a point is placed on a button.
@end table
@node Emacs Appearance
@subsubsection Appearance
You can change almost any aspect of ``list'' / ``info'' buffers using
the following variables:
@table @code
@item guix-list-column-format
@itemx guix-list-column-titles
@itemx guix-list-column-value-methods
Specify the columns, their names, what and how is displayed in ``list''
buffers.
@item guix-info-displayed-params
@itemx guix-info-insert-methods
@itemx guix-info-ignore-empty-vals
@itemx guix-info-param-title-format
@itemx guix-info-multiline-prefix
@itemx guix-info-indent
@itemx guix-info-fill-column
@itemx guix-info-delimiter
Various settings for ``info'' buffers.
@end table
@node Emacs Prettify
@subsection Guix Prettify Mode
Along with ``guix.el'', GNU@tie{}Guix comes with ``guix-prettify.el''.
It provides a minor mode for abbreviating store file names by replacing
hash sequences of symbols with ``@dots{}'':
@example
/gnu/store/72f54nfp6g1hz873w8z3gfcah0h4nl9p-foo-0.1
@result{} /gnu/store/…-foo-0.1
@end example
Once you set up ``guix.el'' (@pxref{Emacs Initial Setup}), the following
commands become available:
@table @kbd
@item M-x guix-prettify-mode
Enable/disable prettifying for the current buffer.
@item M-x global-guix-prettify-mode
Enable/disable prettifying globally.
@end table
To automatically enable @code{guix-prettify-mode} globally on Emacs
start, add the following line to your init file:
@example
(global-guix-prettify-mode)
@end example
If you want to enable it only for specific major modes, add it to the
mode hooks (@pxref{Hooks,,, emacs, The GNU Emacs Manual}), for example:
@example
(add-hook 'shell-mode-hook 'guix-prettify-mode)
(add-hook 'dired-mode-hook 'guix-prettify-mode)
@end example
+3530 -305
View File
File diff suppressed because it is too large Load Diff
+49
View File
@@ -0,0 +1,49 @@
# GNU Guix --- Functional package management for GNU
# Copyright © 2014 Alex Kost <alezost@gmail.com>
#
# This file is part of GNU Guix.
#
# GNU Guix is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or (at
# your option) any later version.
#
# GNU Guix is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
AUTOLOADS = emacs/guix-autoloads.el
ELFILES = \
emacs/guix-backend.el \
emacs/guix-base.el \
emacs/guix-history.el \
emacs/guix-info.el \
emacs/guix-list.el \
emacs/guix-messages.el \
emacs/guix-prettify.el \
emacs/guix-utils.el \
emacs/guix.el
if HAVE_EMACS
dist_lisp_DATA = \
$(ELFILES) \
$(AUTOLOADS)
nodist_lisp_DATA = \
emacs/guix-init.el
$(AUTOLOADS): $(ELFILES)
$(EMACS) --batch --eval \
"(let ((backup-inhibited t) \
(generated-autoload-file \
(expand-file-name \"$(AUTOLOADS)\" \"$(srcdir)\"))) \
(update-directory-autoloads \
(expand-file-name \"emacs\" \"$(srcdir)\")))"
endif HAVE_EMACS
+375
View File
@@ -0,0 +1,375 @@
;;; guix-backend.el --- Communication with Geiser
;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;; This file is part of GNU Guix.
;; GNU Guix is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Guix is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; This file provides the code for interacting with Guile using Geiser.
;; By default (if `guix-use-guile-server' is non-nil) 2 Geiser REPLs are
;; started. The main one (with "guile --listen" process) is used for
;; "interacting" with a user - for showing a progress of
;; installing/deleting Guix packages. The second (internal) REPL is
;; used for synchronous evaluating, e.g. when information about
;; packages/generations should be received for a list/info buffer.
;;
;; This "2 REPLs concept" makes it possible to have a running process of
;; installing/deleting packages and to continue to search/list/get info
;; about other packages at the same time. If you prefer to use a single
;; Guix REPL, do not try to receive any information while there is a
;; running code in the REPL (see
;; <https://github.com/jaor/geiser/issues/28>).
;;
;; If you need to use "guix.el" in another Emacs (i.e. when there is
;; a runnig "guile --listen..." REPL somewhere), you can either change
;; `guix-default-port' in that Emacs instance or set
;; `guix-use-guile-server' to t.
;;
;; Guix REPLs (unlike the usual Geiser REPLs) are not added to
;; `geiser-repl--repls' variable, and thus cannot be used for evaluating
;; while editing scm-files. The only purpose of Guix REPLs is to be an
;; intermediate between "Guix/Guile level" and "Emacs interface level".
;; That being said you can still want to use a Guix REPL while hacking
;; auxiliary scheme-files for "guix.el". You can just use "M-x
;; connect-to-guile" (connect to "localhost" and `guix-default-port') to
;; have a usual Geiser REPL with all stuff defined by "guix.el" package.
;;; Code:
(require 'geiser-mode)
(defvar guix-load-path
(file-name-directory (or load-file-name
(locate-library "guix")))
"Directory with scheme files for \"guix.el\" package.")
(defvar guix-helper-file
(expand-file-name "guix-helper.scm" guix-load-path)
"Auxiliary scheme file for loading.")
(defvar guix-guile-program (or geiser-guile-binary "guile")
"Name of the guile executable used for Guix REPL.
May be either a string (the name of the executable) or a list of
strings of the form:
(NAME . ARGS)
Where ARGS is a list of arguments to the guile program.")
;;; REPL
(defgroup guix-repl nil
"Settings for Guix REPLs."
:prefix "guix-repl-"
:group 'guix)
(defcustom guix-repl-startup-time 30000
"Time, in milliseconds, to wait for Guix REPL to startup.
Same as `geiser-repl-startup-time' but is used for Guix REPL.
If you have a slow system, try to increase this time."
:type 'integer
:group 'guix-repl)
(defcustom guix-repl-buffer-name "*Guix REPL*"
"Default name of a Geiser REPL buffer used for Guix."
:type 'string
:group 'guix-repl)
(defcustom guix-after-start-repl-hook ()
"Hook called after Guix REPL is started."
:type 'hook
:group 'guix-repl)
(defcustom guix-use-guile-server t
"If non-nil, start guile with '--listen' argument.
This allows to receive information about packages using an additional
REPL while some packages are being installed/removed in the main REPL."
:type 'boolean
:group 'guix-repl)
(defcustom guix-default-port 37246
"Default port used if `guix-use-guile-server' is non-nil."
:type 'integer
:group 'guix-repl)
(defvar guix-repl-buffer nil
"Main Geiser REPL buffer used for communicating with Guix.
This REPL is used for processing package actions and for
receiving information if `guix-use-guile-server' is nil.")
(defvar guix-internal-repl-buffer nil
"Additional Geiser REPL buffer used for communicating with Guix.
This REPL is used for receiving information only if
`guix-use-guile-server' is non-nil.")
(defvar guix-internal-repl-buffer-name "*Guix Internal REPL*"
"Default name of an internal Guix REPL buffer.")
(defvar guix-before-repl-operation-hook nil
"Hook run before executing an operation in Guix REPL.")
(defvar guix-after-repl-operation-hook
'(guix-repl-operation-success-message)
"Hook run after executing successful operation in Guix REPL.")
(defvar guix-repl-operation-p nil
"Non-nil, if current operation is performed by `guix-eval-in-repl'.
This internal variable is used to distinguish Guix operations
from operations performed in Guix REPL by a user.")
(defvar guix-repl-operation-type nil
"Type of the current operation performed by `guix-eval-in-repl'.
This internal variable is used to define what actions should be
executed after the current operation succeeds.
See `guix-eval-in-repl' for details.")
(defun guix-repl-operation-success-message ()
"Message telling about successful Guix operation."
(message "Guix operation has been performed."))
(defun guix-get-guile-program (&optional internal)
"Return a value suitable for `geiser-guile-binary'."
(if (or internal
(not guix-use-guile-server))
guix-guile-program
(append (if (listp guix-guile-program)
guix-guile-program
(list guix-guile-program))
;; Guile understands "--listen=..." but not "--listen ..."
(list (concat "--listen="
(number-to-string guix-default-port))))))
(defun guix-start-process-maybe (&optional start-msg end-msg)
"Start Geiser REPL configured for Guix if needed.
START-MSG and END-MSG are strings displayed in the minibuffer in
the beginning and in the end of the starting process. If nil,
display default messages."
(guix-start-repl-maybe nil
(or start-msg "Starting Guix REPL ...")
(or end-msg "Guix REPL has been started."))
(if guix-use-guile-server
(guix-start-repl-maybe 'internal)
(setq guix-internal-repl-buffer guix-repl-buffer)))
(defun guix-start-repl-maybe (&optional internal start-msg end-msg)
"Start Guix REPL if needed.
If INTERNAL is non-nil, start an internal REPL.
START-MSG and END-MSG are strings displayed in the minibuffer in
the beginning and in the end of the process. If nil, do not
display messages."
(let* ((repl-var (guix-get-repl-buffer-variable internal))
(repl (symbol-value repl-var)))
(unless (and (buffer-live-p repl)
(get-buffer-process repl))
(and start-msg (message start-msg))
(setq guix-repl-operation-p nil)
(let ((geiser-guile-binary (guix-get-guile-program internal))
(geiser-guile-init-file (or internal guix-helper-file))
(repl (get-buffer-create
(guix-get-repl-buffer-name internal))))
(condition-case err
(guix-start-repl repl
(and internal
(geiser-repl--read-address
"localhost" guix-default-port)))
(text-read-only
(error (concat "Couldn't start Guix REPL. Perhaps the port %s is busy.\n"
"See buffer '%s' for details")
guix-default-port (buffer-name repl))))
(set repl-var repl)
(and end-msg (message end-msg))
(unless internal
(run-hooks 'guix-after-start-repl-hook))))))
(defun guix-start-repl (buffer &optional address)
"Start Guix REPL in BUFFER.
If ADDRESS is non-nil, connect to a remote guile process using
this address (it should be defined by
`geiser-repl--read-address')."
;; A mix of the code from `geiser-repl--start-repl' and
;; `geiser-repl--to-repl-buffer'.
(let ((impl 'guile)
(geiser-guile-load-path (list guix-load-path))
(geiser-repl-startup-time guix-repl-startup-time))
(with-current-buffer buffer
(geiser-repl-mode)
(geiser-impl--set-buffer-implementation impl)
(geiser-repl--autodoc-mode -1)
(goto-char (point-max))
(let ((prompt (geiser-con--combined-prompt
geiser-guile--prompt-regexp
geiser-guile--debugger-prompt-regexp)))
(geiser-repl--save-remote-data address)
(geiser-repl--start-scheme impl address prompt)
(geiser-repl--quit-setup)
(geiser-repl--history-setup)
(setq-local geiser-repl--repls (list buffer))
(geiser-repl--set-this-buffer-repl buffer)
(setq geiser-repl--connection
(geiser-con--make-connection
(get-buffer-process (current-buffer))
geiser-guile--prompt-regexp
geiser-guile--debugger-prompt-regexp))
(geiser-repl--startup impl address)
(geiser-repl--autodoc-mode 1)
(geiser-company--setup geiser-repl-company-p)
(add-hook 'comint-output-filter-functions
'guix-repl-output-filter
nil t)
(set-process-query-on-exit-flag
(get-buffer-process (current-buffer))
geiser-repl-query-on-kill-p)))))
(defun guix-repl-output-filter (str)
"Filter function suitable for `comint-output-filter-functions'.
This is a replacement for `geiser-repl--output-filter'."
(cond
((string-match-p geiser-guile--prompt-regexp str)
(geiser-autodoc--disinhibit-autodoc)
(when guix-repl-operation-p
(setq guix-repl-operation-p nil)
(run-hooks 'guix-after-repl-operation-hook)
;; Run hooks specific to the current operation type.
(when guix-repl-operation-type
(let ((type-hook (intern
(concat "guix-after-"
(symbol-name guix-repl-operation-type)
"-hook"))))
(setq guix-repl-operation-type nil)
(and (boundp type-hook)
(run-hooks type-hook))))))
((string-match geiser-guile--debugger-prompt-regexp str)
(setq guix-repl-operation-p nil)
(geiser-con--connection-set-debugging geiser-repl--connection
(match-beginning 0))
(geiser-autodoc--disinhibit-autodoc))))
(defun guix-repl-exit (&optional internal no-wait)
"Exit the current Guix REPL.
If INTERNAL is non-nil, exit the internal REPL.
If NO-WAIT is non-nil, do not wait for the REPL process to exit:
send a kill signal to it and return immediately."
(let ((repl (symbol-value (guix-get-repl-buffer-variable internal))))
(when (get-buffer-process repl)
(with-current-buffer repl
(geiser-con--connection-deactivate geiser-repl--connection t)
(comint-kill-subjob)
(unless no-wait
(while (get-buffer-process repl)
(sleep-for 0.1)))))))
(defun guix-get-repl-buffer (&optional internal)
"Return Guix REPL buffer; start REPL if needed.
If INTERNAL is non-nil, return an additional internal REPL."
(guix-start-process-maybe)
(let ((repl (symbol-value (guix-get-repl-buffer-variable internal))))
;; If a new Geiser REPL is started, `geiser-repl--repl' variable may
;; be set to the new value in a Guix REPL, so set it back to a
;; proper value here.
(with-current-buffer repl
(geiser-repl--set-this-buffer-repl repl))
repl))
(defun guix-get-repl-buffer-variable (&optional internal)
"Return the name of a variable with a REPL buffer."
(if internal
'guix-internal-repl-buffer
'guix-repl-buffer))
(defun guix-get-repl-buffer-name (&optional internal)
"Return the name of a REPL buffer."
(if internal
guix-internal-repl-buffer-name
guix-repl-buffer-name))
(defun guix-switch-to-repl (&optional internal)
"Switch to Guix REPL.
If INTERNAL is non-nil (interactively with prefix), switch to the
additional internal REPL if it exists."
(interactive "P")
(geiser-repl--switch-to-buffer (guix-get-repl-buffer internal)))
;;; Evaluating expressions
(defvar guix-operation-buffer nil
"Buffer from which the latest Guix operation was performed.")
(defun guix-make-guile-expression (fun &rest args)
"Return string containing a guile expression for calling FUN with ARGS."
(format "(%S %s)" fun
(mapconcat
(lambda (arg)
(cond
((null arg) "'()")
((or (eq arg t)
;; An ugly hack to separate 'false' from nil
(equal arg 'f)
(keywordp arg))
(concat "#" (prin1-to-string arg t)))
((or (symbolp arg) (listp arg))
(concat "'" (prin1-to-string arg)))
(t (prin1-to-string arg))))
args
" ")))
(defun guix-eval (str &optional wrap)
"Evaluate guile expression STR.
If WRAP is non-nil, wrap STR into (begin ...) form.
Return a list of strings with result values of evaluation."
(with-current-buffer (guix-get-repl-buffer 'internal)
(let* ((wrapped (if wrap (geiser-debug--wrap-region str) str))
(code `(:eval (:scm ,wrapped)))
(ret (geiser-eval--send/wait code)))
(if (geiser-eval--retort-error ret)
(error "Error in evaluating guile expression: %s"
(geiser-eval--retort-output ret))
(cdr (assq 'result ret))))))
(defun guix-eval-read (str &optional wrap)
"Evaluate guile expression STR.
For the meaning of WRAP, see `guix-eval'.
Return elisp expression of the first result value of evaluation."
;; Parsing scheme code with elisp `read' is probably not the best idea.
(read (replace-regexp-in-string
"#f\\|#<unspecified>" "nil"
(replace-regexp-in-string
"#t" "t" (car (guix-eval str wrap))))))
(defun guix-eval-in-repl (str &optional operation-buffer operation-type)
"Switch to Guix REPL and evaluate STR with guile expression there.
If OPERATION-BUFFER is non-nil, it should be a buffer from which
the current operation was performed.
If OPERATION-TYPE is non-nil, it should be a symbol. After
successful executing of the current operation,
`guix-after-OPERATION-TYPE-hook' is called."
(run-hooks 'guix-before-repl-operation-hook)
(setq guix-repl-operation-p t
guix-repl-operation-type operation-type
guix-operation-buffer operation-buffer)
(let ((repl (guix-get-repl-buffer)))
(with-current-buffer repl
(geiser-repl--send str))
(geiser-repl--switch-to-buffer repl)))
(provide 'guix-backend)
;;; guix-backend.el ends here
+1106
View File
File diff suppressed because it is too large Load Diff
+64
View File
@@ -0,0 +1,64 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; This is an auxiliary file for the Emacs UI. It is used to add Guix
;; directories to path variables and to load the main code.
;;; Code:
(use-modules (ice-9 regex)
(srfi srfi-26))
(define %guix-dir)
;; The code is taken from guix executable script
(define (set-paths!)
(define-syntax-rule (push! elt v) (set! v (cons elt v)))
(define config-lookup
(let ((config '(("prefix" . "@prefix@")
("guilemoduledir" . "@guilemoduledir@")))
(var-ref-regexp (make-regexp "\\$\\{([a-z]+)\\}")))
(define (expand-var-ref match)
(lookup (match:substring match 1)))
(define (expand str)
(regexp-substitute/global #f var-ref-regexp str
'pre expand-var-ref 'post))
(define (lookup name)
(expand (assoc-ref config name)))
lookup))
(let ((module-dir (config-lookup "guilemoduledir"))
(updates-dir (and=> (or (getenv "XDG_CONFIG_HOME")
(and=> (getenv "HOME")
(cut string-append <> "/.config")))
(cut string-append <> "/guix/latest"))))
(push! module-dir %load-compiled-path)
(if (and updates-dir (file-exists? updates-dir))
(begin
(set! %guix-dir updates-dir)
(push! updates-dir %load-path)
(push! updates-dir %load-compiled-path))
(set! %guix-dir module-dir))))
(set-paths!)
(load-from-path "guix-main")
+92
View File
@@ -0,0 +1,92 @@
;;; guix-history.el --- History of buffer information
;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;; This file is part of GNU Guix.
;; GNU Guix is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Guix is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; This file provides support for history of buffers similar to the
;; history of a `help-mode' buffer.
;;; Code:
(require 'cl-macs)
(defvar-local guix-history-stack-item nil
"Current item of the history.
A list of the form (FUNCTION [ARGS ...]).
The item is used by calling (apply FUNCTION ARGS).")
(put 'guix-history-stack-item 'permanent-local t)
(defvar-local guix-history-back-stack nil
"Stack (list) of visited items.
Each element of the list has a form of `guix-history-stack-item'.")
(put 'guix-history-back-stack 'permanent-local t)
(defvar-local guix-history-forward-stack nil
"Stack (list) of items visited with `guix-history-back'.
Each element of the list has a form of `guix-history-stack-item'.")
(put 'guix-history-forward-stack 'permanent-local t)
(defvar guix-history-size 0
"Maximum number of items saved in history.
If 0, the history is disabled.")
(defun guix-history-add (item)
"Add ITEM to history."
(and guix-history-stack-item
(push guix-history-stack-item guix-history-back-stack))
(setq guix-history-forward-stack nil
guix-history-stack-item item)
(when (>= (length guix-history-back-stack)
guix-history-size)
(setq guix-history-back-stack
(cl-loop for elt in guix-history-back-stack
for i from 1 to guix-history-size
collect elt))))
(defun guix-history-replace (item)
"Replace current item in history with ITEM."
(setq guix-history-stack-item item))
(defun guix-history-goto (item)
"Go to the ITEM of history.
ITEM should have the form of `guix-history-stack-item'."
(or (listp item)
(error "Wrong value of history element"))
(setq guix-history-stack-item item)
(apply (car item) (cdr item)))
(defun guix-history-back ()
"Go back to the previous element of history in the current buffer."
(interactive)
(or guix-history-back-stack
(user-error "No previous element in history"))
(push guix-history-stack-item guix-history-forward-stack)
(guix-history-goto (pop guix-history-back-stack)))
(defun guix-history-forward ()
"Go forward to the next element of history in the current buffer."
(interactive)
(or guix-history-forward-stack
(user-error "No next element in history"))
(push guix-history-stack-item guix-history-back-stack)
(guix-history-goto (pop guix-history-forward-stack)))
(provide 'guix-history)
;;; guix-history.el ends here
+870
View File
@@ -0,0 +1,870 @@
;;; guix-info.el --- Info buffers for displaying entries -*- lexical-binding: t -*-
;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;; This file is part of GNU Guix.
;; GNU Guix is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Guix is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; This file provides a help-like buffer for displaying information
;; about Guix packages and generations.
;;; Code:
(require 'guix-base)
(require 'guix-utils)
(defgroup guix-info nil
"General settings for info buffers."
:prefix "guix-info-"
:group 'guix)
(defface guix-info-param-title
'((t :inherit font-lock-type-face))
"Face used for titles of parameters."
:group 'guix-info)
(defface guix-info-file-path
'((t :inherit link))
"Face used for file paths."
:group 'guix-info)
(defface guix-info-url
'((t :inherit link))
"Face used for URLs."
:group 'guix-info)
(defface guix-info-time
'((t :inherit font-lock-constant-face))
"Face used for timestamps."
:group 'guix-info)
(defface guix-info-action-button
'((((type x w32 ns) (class color))
:box (:line-width 2 :style released-button)
:background "lightgrey" :foreground "black")
(t :inherit button))
"Face used for action buttons."
:group 'guix-info)
(defface guix-info-action-button-mouse
'((((type x w32 ns) (class color))
:box (:line-width 2 :style released-button)
:background "grey90" :foreground "black")
(t :inherit highlight))
"Mouse face used for action buttons."
:group 'guix-info)
(defcustom guix-info-ignore-empty-vals nil
"If non-nil, do not display parameters with nil values."
:type 'boolean
:group 'guix-info)
(defvar guix-info-param-title-format "%-18s: "
"String used to format a title of a parameter.
It should be a '%s'-sequence. After inserting a title formatted
with this string, a value of the parameter is inserted.
This string is used by `guix-info-insert-title-default'.")
(defvar guix-info-multiline-prefix (make-string 20 ?\s)
"String used to format multi-line parameter values.
If a value occupies more than one line, this string is inserted
in the beginning of each line after the first one.
This string is used by `guix-info-insert-val-default'.")
(defvar guix-info-indent 2
"Number of spaces used to indent various parts of inserted text.")
(defvar guix-info-fill-column 60
"Column used for filling (word wrapping) parameters with long lines.
If a value is not multi-line and it occupies more than this
number of characters, it will be split into several lines.")
(defvar guix-info-delimiter "\n\f\n"
"String used to separate entries.")
(defvar guix-info-insert-methods
'((package
(name guix-package-info-name)
(version guix-package-info-version)
(license guix-package-info-license)
(synopsis guix-package-info-synopsis)
(description guix-package-info-insert-description
guix-info-insert-title-simple)
(outputs guix-package-info-insert-outputs
guix-info-insert-title-simple)
(source guix-package-info-insert-source
guix-info-insert-title-simple)
(home-url guix-info-insert-url)
(inputs guix-package-info-insert-inputs)
(native-inputs guix-package-info-insert-native-inputs)
(propagated-inputs guix-package-info-insert-propagated-inputs)
(location guix-package-info-insert-location))
(installed
(path guix-package-info-insert-output-path
guix-info-insert-title-simple)
(dependencies guix-package-info-insert-output-dependencies
guix-info-insert-title-simple))
(output
(name guix-package-info-name)
(version guix-output-info-insert-version)
(output guix-output-info-insert-output)
(source guix-package-info-insert-source
guix-info-insert-title-simple)
(path guix-package-info-insert-output-path
guix-info-insert-title-simple)
(dependencies guix-package-info-insert-output-dependencies
guix-info-insert-title-simple)
(license guix-package-info-license)
(synopsis guix-package-info-synopsis)
(description guix-package-info-insert-description
guix-info-insert-title-simple)
(home-url guix-info-insert-url)
(inputs guix-package-info-insert-inputs)
(native-inputs guix-package-info-insert-native-inputs)
(propagated-inputs guix-package-info-insert-propagated-inputs)
(location guix-package-info-insert-location))
(generation
(number guix-generation-info-insert-number)
(current guix-generation-info-insert-current)
(path guix-info-insert-file-path)
(time guix-info-insert-time)))
"Methods for inserting parameter values.
Each element of the list should have a form:
(ENTRY-TYPE . ((PARAM INSERT-VALUE [INSERT-TITLE]) ...))
INSERT-VALUE may be either nil, a face name or a function. If it
is nil or a face, `guix-info-insert-val-default' function is
called with parameter value and INSERT-VALUE as arguments. If it
is a function, this function is called with parameter value and
entry info (alist of parameters and their values) as arguments.
INSERT-TITLE may be either nil, a face name or a function. If it
is nil or a face, `guix-info-insert-title-default' function is
called with parameter title and INSERT-TITLE as arguments. If it
is a function, this function is called with parameter title as
argument.")
(defvar guix-info-displayed-params
'((package name version synopsis outputs source location home-url
license inputs native-inputs propagated-inputs description)
(output name version output synopsis source path dependencies location
home-url license inputs native-inputs propagated-inputs
description)
(installed path dependencies)
(generation number prev-number current time path))
"List of displayed entry parameters.
Each element of the list should have a form:
(ENTRY-TYPE . (PARAM ...))
The order of displayed parameters is the same as in this list.")
(defun guix-info-get-insert-methods (entry-type param)
"Return list of insert methods for parameter PARAM of ENTRY-TYPE.
See `guix-info-insert-methods' for details."
(guix-get-key-val guix-info-insert-methods
entry-type param))
(defun guix-info-get-displayed-params (entry-type)
"Return parameters of ENTRY-TYPE that should be displayed."
(guix-get-key-val guix-info-displayed-params
entry-type))
(defun guix-info-get-indent (&optional level)
"Return `guix-info-indent' \"multiplied\" by LEVEL spaces.
LEVEL is 1 by default."
(make-string (* guix-info-indent (or level 1)) ?\s))
(defun guix-info-insert-indent (&optional level)
"Insert `guix-info-indent' spaces LEVEL times (1 by default)."
(insert (guix-info-get-indent level)))
(defun guix-info-insert-entries (entries entry-type)
"Display ENTRIES of ENTRY-TYPE in the current info buffer.
ENTRIES should have a form of `guix-entries'."
(guix-mapinsert (lambda (entry)
(guix-info-insert-entry entry entry-type))
entries
guix-info-delimiter))
(defun guix-info-insert-entry-default (entry entry-type
&optional indent-level)
"Insert ENTRY of ENTRY-TYPE into the current info buffer.
If INDENT-LEVEL is non-nil, indent displayed information by this
number of `guix-info-indent' spaces."
(let ((region-beg (point)))
(mapc (lambda (param)
(guix-info-insert-param param entry entry-type))
(guix-info-get-displayed-params entry-type))
(when indent-level
(indent-rigidly region-beg (point)
(* indent-level guix-info-indent)))))
(defun guix-info-insert-entry (entry entry-type &optional indent-level)
"Insert ENTRY of ENTRY-TYPE into the current info buffer.
Use `guix-info-insert-ENTRY-TYPE-function' or
`guix-info-insert-entry-default' if it is nil."
(let* ((var (intern (concat "guix-info-insert-"
(symbol-name entry-type)
"-function")))
(fun (symbol-value var)))
(if (functionp fun)
(funcall fun entry)
(guix-info-insert-entry-default entry entry-type indent-level))))
(defun guix-info-insert-param (param entry entry-type)
"Insert title and value of a PARAM at point.
ENTRY is alist with parameters and their values.
ENTRY-TYPE is a type of ENTRY."
(let ((val (guix-get-key-val entry param)))
(unless (and guix-info-ignore-empty-vals (null val))
(let* ((title (guix-get-param-title entry-type param))
(insert-methods (guix-info-get-insert-methods entry-type param))
(val-method (car insert-methods))
(title-method (cadr insert-methods)))
(guix-info-method-funcall title title-method
#'guix-info-insert-title-default)
(guix-info-method-funcall val val-method
#'guix-info-insert-val-default
entry)
(insert "\n")))))
(defun guix-info-method-funcall (val method default-fun &rest args)
"Call METHOD or DEFAULT-FUN.
If METHOD is a function and VAL is non-nil, call this
function by applying it to VAL and ARGS.
If METHOD is a face, propertize inserted VAL with this face."
(cond ((or (null method)
(facep method))
(funcall default-fun val method))
((functionp method)
(apply method val args))
(t (error "Unknown method '%S'" method))))
(defun guix-info-insert-title-default (title &optional face format)
"Insert TITLE formatted with `guix-info-param-title-format' at point."
(guix-format-insert title
(or face 'guix-info-param-title)
(or format guix-info-param-title-format)))
(defun guix-info-insert-title-simple (title &optional face)
"Insert TITLE at point."
(guix-info-insert-title-default title face "%s:"))
(defun guix-info-insert-val-default (val &optional face)
"Format and insert parameter value VAL at point.
This function is intended to be called after
`guix-info-insert-title-default'.
If VAL is a one-line string longer than `guix-info-fill-column',
split it into several short lines. See also
`guix-info-multiline-prefix'.
If FACE is non-nil, propertize inserted line(s) with this FACE."
(guix-split-insert val face
guix-info-fill-column
(concat "\n" guix-info-multiline-prefix)))
(defun guix-info-insert-val-simple (val &optional face-or-fun)
"Format and insert parameter value VAL at point.
This function is intended to be called after
`guix-info-insert-title-simple'.
If VAL is a one-line string longer than `guix-info-fill-column',
split it into several short lines and indent each line with
`guix-info-indent' spaces.
If FACE-OR-FUN is a face, propertize inserted line(s) with this FACE.
If FACE-OR-FUN is a function, call it with VAL as argument. If
VAL is a list, call the function on each element of this list."
(if (null val)
(progn (guix-info-insert-indent)
(guix-format-insert nil))
(let ((prefix (concat "\n" (guix-info-get-indent))))
(insert prefix)
(if (functionp face-or-fun)
(guix-mapinsert face-or-fun
(if (listp val) val (list val))
prefix)
(guix-split-insert val face-or-fun
guix-info-fill-column prefix)))))
(defun guix-info-insert-time (seconds &optional _)
"Insert formatted time string using SECONDS at point."
(guix-info-insert-val-default (guix-get-time-string seconds)
'guix-info-time))
;;; Buttons
(defvar guix-info-button-map
(let ((map (make-sparse-keymap)))
(set-keymap-parent map button-map)
(define-key map (kbd "c") 'guix-info-button-copy-label)
map)
"Keymap for buttons in info buffers.")
(define-button-type 'guix
'keymap guix-info-button-map
'follow-link t)
(define-button-type 'guix-action
:supertype 'guix
'face 'guix-info-action-button
'mouse-face 'guix-info-action-button-mouse)
(define-button-type 'guix-file
:supertype 'guix
'face 'guix-info-file-path
'help-echo "Find file"
'action (lambda (btn)
(guix-find-file (button-label btn))))
(define-button-type 'guix-url
:supertype 'guix
'face 'guix-info-url
'help-echo "Browse URL"
'action (lambda (btn)
(browse-url (button-label btn))))
(define-button-type 'guix-package-location
:supertype 'guix
'face 'guix-package-info-location
'help-echo "Find location of this package"
'action (lambda (btn)
(guix-find-location (button-label btn))))
(define-button-type 'guix-package-name
:supertype 'guix
'face 'guix-package-info-name-button
'help-echo "Describe this package"
'action (lambda (btn)
(guix-get-show-entries guix-profile 'info guix-package-info-type
'name (button-label btn))))
(defun guix-info-button-copy-label (&optional pos)
"Copy a label of the button at POS into kill ring.
If POS is nil, use the current point position."
(interactive)
(let ((button (button-at (or pos (point)))))
(when button
(kill-new (button-label button)))))
(defun guix-info-insert-action-button (label action &optional message
&rest properties)
"Make action button with LABEL and insert it at point.
ACTION is a function called when the button is pressed. It
should accept button as the argument.
MESSAGE is a button message.
See `insert-text-button' for the meaning of PROPERTIES."
(apply #'guix-insert-button
label 'guix-action
'action action
'help-echo message
properties))
(defun guix-info-insert-file-path (path &optional _)
"Make button from file PATH and insert it at point."
(guix-insert-button path 'guix-file))
(defun guix-info-insert-url (url &optional _)
"Make button from URL and insert it at point."
(guix-insert-button url 'guix-url))
(defvar guix-info-mode-map
(let ((map (make-sparse-keymap)))
(set-keymap-parent
map (make-composed-keymap button-buffer-map
special-mode-map))
map)
"Parent keymap for info buffers.")
(define-derived-mode guix-info-mode special-mode "Guix-Info"
"Parent mode for displaying information in info buffers.")
;;; Displaying packages
(guix-define-buffer-type info package
:required (id installed non-unique))
(defface guix-package-info-heading
'((((type tty pc) (class color)) :weight bold)
(t :height 1.6 :weight bold :inherit variable-pitch))
"Face for package name and version headings."
:group 'guix-package-info)
(defface guix-package-info-name
'((t :inherit font-lock-keyword-face))
"Face used for a name of a package."
:group 'guix-package-info)
(defface guix-package-info-name-button
'((t :inherit button))
"Face used for a full name that can be used to describe a package."
:group 'guix-package-info)
(defface guix-package-info-version
'((t :inherit font-lock-builtin-face))
"Face used for a version of a package."
:group 'guix-package-info)
(defface guix-package-info-synopsis
'((((type tty pc) (class color)) :weight bold)
(t :height 1.1 :weight bold :inherit variable-pitch))
"Face used for a synopsis of a package."
:group 'guix-package-info)
(defface guix-package-info-description
'((t))
"Face used for a description of a package."
:group 'guix-package-info)
(defface guix-package-info-license
'((t :inherit font-lock-string-face))
"Face used for a license of a package."
:group 'guix-package-info)
(defface guix-package-info-location
'((t :inherit link))
"Face used for a location of a package."
:group 'guix-package-info)
(defface guix-package-info-installed-outputs
'((default :weight bold)
(((class color) (min-colors 88) (background light))
:foreground "ForestGreen")
(((class color) (min-colors 88) (background dark))
:foreground "PaleGreen")
(((class color) (min-colors 8))
:foreground "green")
(t :underline t))
"Face used for installed outputs of a package."
:group 'guix-package-info)
(defface guix-package-info-uninstalled-outputs
'((t :weight bold))
"Face used for uninstalled outputs of a package."
:group 'guix-package-info)
(defface guix-package-info-obsolete
'((t :inherit error))
"Face used if a package is obsolete."
:group 'guix-package-info)
(defvar guix-info-insert-package-function
#'guix-package-info-insert-with-heading
"Function used to insert a package information.
It is called with a single argument - alist of package parameters.
If nil, insert package in a default way.")
(defvar guix-package-info-heading-params '(synopsis description)
"List of parameters displayed in a heading along with name and version.")
(defun guix-package-info-insert-heading (entry)
"Insert the heading for package ENTRY.
Show package name, version, and `guix-package-info-heading-params'."
(guix-format-insert (concat (guix-get-key-val entry 'name) " "
(guix-get-key-val entry 'version))
'guix-package-info-heading)
(insert "\n\n")
(mapc (lambda (param)
(let ((val (guix-get-key-val entry param))
(face (guix-get-symbol (symbol-name param)
'info 'package)))
(when val
(guix-format-insert val (and (facep face) face))
(insert "\n\n"))))
guix-package-info-heading-params))
(defun guix-package-info-insert-with-heading (entry)
"Insert package ENTRY with its heading at point."
(guix-package-info-insert-heading entry)
(mapc (lambda (param)
(unless (or (memq param '(name version))
(memq param guix-package-info-heading-params))
(guix-info-insert-param param entry 'package)))
(guix-info-get-displayed-params 'package)))
(defun guix-package-info-insert-description (desc &optional _)
"Insert description DESC at point."
(guix-info-insert-val-simple desc 'guix-package-info-description))
(defun guix-package-info-insert-location (location &optional _)
"Make button from file LOCATION and insert it at point."
(guix-insert-button location 'guix-package-location))
(defmacro guix-package-info-define-insert-inputs (&optional type)
"Define a face and a function for inserting package inputs.
TYPE is a type of inputs.
Function name is `guix-package-info-insert-TYPE-inputs'.
Face name is `guix-package-info-TYPE-inputs'."
(let* ((type-str (symbol-name type))
(type-name (and type (concat type-str "-")))
(type-desc (and type (concat type-str " ")))
(face (intern (concat "guix-package-info-" type-name "inputs")))
(btn (intern (concat "guix-package-" type-name "input")))
(fun (intern (concat "guix-package-info-insert-" type-name "inputs"))))
`(progn
(defface ,face
'((t :inherit guix-package-info-name-button))
,(concat "Face used for " type-desc "inputs of a package.")
:group 'guix-package-info)
(define-button-type ',btn
:supertype 'guix-package-name
'face ',face)
(defun ,fun (inputs &optional _)
,(concat "Make buttons from " type-desc "INPUTS and insert them at point.")
(guix-package-info-insert-full-names inputs ',btn)))))
(guix-package-info-define-insert-inputs)
(guix-package-info-define-insert-inputs native)
(guix-package-info-define-insert-inputs propagated)
(defun guix-package-info-insert-full-names (names button-type)
"Make BUTTON-TYPE buttons from package NAMES and insert them at point.
NAMES is a list of strings."
(if names
(guix-info-insert-val-default
(with-temp-buffer
(guix-mapinsert (lambda (name)
(guix-insert-button name button-type))
names
guix-list-separator)
(buffer-substring (point-min) (point-max))))
(guix-format-insert nil)))
;;; Inserting outputs and installed parameters
(defvar guix-package-info-output-format "%-10s"
"String used to format output names of the packages.
It should be a '%s'-sequence. After inserting an output name
formatted with this string, an action button is inserted.")
(defvar guix-package-info-obsolete-string "(This package is obsolete)"
"String used if a package is obsolete.")
(defvar guix-info-insert-installed-function nil
"Function used to insert an installed information.
It is called with a single argument - alist of installed
parameters (`output', `path', `dependencies').
If nil, insert installed info in a default way.")
(defun guix-package-info-insert-outputs (outputs entry)
"Insert OUTPUTS from package ENTRY at point."
(and (guix-get-key-val entry 'obsolete)
(guix-package-info-insert-obsolete-text))
(and (guix-get-key-val entry 'non-unique)
(guix-get-key-val entry 'installed)
(guix-package-info-insert-non-unique-text
(guix-get-full-name entry)))
(insert "\n")
(mapc (lambda (output)
(guix-package-info-insert-output output entry))
outputs))
(defun guix-package-info-insert-obsolete-text ()
"Insert a message about obsolete package at point."
(guix-info-insert-indent)
(guix-format-insert guix-package-info-obsolete-string
'guix-package-info-obsolete))
(defun guix-package-info-insert-non-unique-text (full-name)
"Insert a message about non-unique package with FULL-NAME at point."
(insert "\n")
(guix-info-insert-indent)
(insert "Installed outputs are displayed for a non-unique ")
(guix-insert-button full-name 'guix-package-name)
(insert " package."))
(defun guix-package-info-insert-output (output entry)
"Insert OUTPUT at point.
Make some fancy text with buttons and additional stuff if the
current OUTPUT is installed (if there is such output in
`installed' parameter of a package ENTRY)."
(let* ((installed (guix-get-key-val entry 'installed))
(obsolete (guix-get-key-val entry 'obsolete))
(installed-entry (cl-find-if
(lambda (entry)
(string= (guix-get-key-val entry 'output)
output))
installed))
(action-type (if installed-entry 'delete 'install)))
(guix-info-insert-indent)
(guix-format-insert output
(if installed-entry
'guix-package-info-installed-outputs
'guix-package-info-uninstalled-outputs)
guix-package-info-output-format)
(guix-package-info-insert-action-button action-type entry output)
(when obsolete
(guix-info-insert-indent)
(guix-package-info-insert-action-button 'upgrade entry output))
(insert "\n")
(when installed-entry
(guix-info-insert-entry installed-entry 'installed 2))))
(defun guix-package-info-insert-action-button (type entry output)
"Insert button to process an action on a package OUTPUT at point.
TYPE is one of the following symbols: `install', `delete', `upgrade'.
ENTRY is an alist with package info."
(let ((type-str (capitalize (symbol-name type)))
(full-name (guix-get-full-name entry output)))
(guix-info-insert-action-button
type-str
(lambda (btn)
(guix-process-package-actions
guix-profile
`((,(button-get btn 'action-type) (,(button-get btn 'id)
,(button-get btn 'output))))
(current-buffer)))
(concat type-str " '" full-name "'")
'action-type type
'id (or (guix-get-key-val entry 'package-id)
(guix-get-key-val entry 'id))
'output output)))
(defun guix-package-info-insert-output-path (path &optional _)
"Insert PATH of the installed output."
(guix-info-insert-val-simple path #'guix-info-insert-file-path))
(defalias 'guix-package-info-insert-output-dependencies
'guix-package-info-insert-output-path)
;;; Inserting a source
(defface guix-package-info-source
'((t :inherit link :underline nil))
"Face used for a source URL of a package."
:group 'guix-package-info)
(defcustom guix-package-info-auto-find-source nil
"If non-nil, find a source file after pressing a \"Show\" button.
If nil, just display the source file path without finding."
:type 'boolean
:group 'guix-package-info)
(defcustom guix-package-info-auto-download-source t
"If nil, do not automatically download a source file if it doesn't exist.
After pressing a \"Show\" button, a derivation of the package
source is calculated and a store file path is displayed. If this
variable is non-nil and the source file does not exist in the
store, it will be automatically downloaded (with a possible
prompt depending on `guix-operation-confirm' variable)."
:type 'boolean
:group 'guix-package-info)
(defvar guix-package-info-download-buffer nil
"Buffer from which a current download operation was performed.")
(define-button-type 'guix-package-source
:supertype 'guix
'face 'guix-package-info-source
'help-echo ""
'action (lambda (_)
;; As a source may not be a real URL (e.g., "mirror://..."),
;; no action is bound to a source button.
(message "Yes, this is the source URL. What did you expect?")))
(defun guix-package-info-insert-source-url (url &optional _)
"Make button from source URL and insert it at point."
(guix-insert-button url 'guix-package-source))
(defun guix-package-info-show-source (entry-id package-id)
"Show file name of a package source in the current info buffer.
Find the file if needed (see `guix-package-info-auto-find-source').
ENTRY-ID is an ID of the current entry (package or output).
PACKAGE-ID is an ID of the package which source to show."
(let* ((entry (guix-get-entry-by-id entry-id guix-entries))
(file (guix-package-source-path package-id)))
(or file
(error "Couldn't define file path of the package source"))
(let* ((new-entry (cons (cons 'source-file file)
entry))
(entries (cl-substitute-if
new-entry
(lambda (entry)
(equal (guix-get-key-val entry 'id)
entry-id))
guix-entries
:count 1)))
(guix-redisplay-buffer :entries entries)
(if (file-exists-p file)
(if guix-package-info-auto-find-source
(guix-find-file file)
(message "The source store path is displayed."))
(if guix-package-info-auto-download-source
(guix-package-info-download-source package-id)
(message "The source does not exist in the store."))))))
(defun guix-package-info-download-source (package-id)
"Download a source of the package PACKAGE-ID."
(setq guix-package-info-download-buffer (current-buffer))
(guix-package-source-build-derivation
package-id
"The source does not exist in the store. Download it?"))
(defun guix-package-info-insert-source (source entry)
"Insert SOURCE from package ENTRY at point.
SOURCE is a list of URLs."
(guix-info-insert-indent)
(if (null source)
(guix-format-insert nil)
(let* ((source-file (guix-get-key-val entry 'source-file))
(entry-id (guix-get-key-val entry 'id))
(package-id (or (guix-get-key-val entry 'package-id)
entry-id)))
(if (null source-file)
(guix-info-insert-action-button
"Show"
(lambda (btn)
(guix-package-info-show-source (button-get btn 'entry-id)
(button-get btn 'package-id)))
"Show the source store path of the current package"
'entry-id entry-id
'package-id package-id)
(unless (file-exists-p source-file)
(guix-info-insert-action-button
"Download"
(lambda (btn)
(guix-package-info-download-source
(button-get btn 'package-id)))
"Download the source into the store"
'package-id package-id))
(guix-info-insert-val-simple source-file
#'guix-info-insert-file-path))
(guix-info-insert-val-simple source
#'guix-package-info-insert-source-url))))
(defun guix-package-info-redisplay-after-download ()
"Redisplay an 'info' buffer after downloading the package source.
This function is used to hide a \"Download\" button if needed."
(when (buffer-live-p guix-package-info-download-buffer)
(guix-redisplay-buffer :buffer guix-package-info-download-buffer)
(setq guix-package-info-download-buffer nil)))
(add-hook 'guix-after-source-download-hook
'guix-package-info-redisplay-after-download)
;;; Displaying outputs
(guix-define-buffer-type info output
:buffer-name "*Guix Package Info*"
:required (id package-id installed non-unique))
(defvar guix-info-insert-output-function nil
"Function used to insert an output information.
It is called with a single argument - alist of output parameters.
If nil, insert output in a default way.")
(defun guix-output-info-insert-version (version entry)
"Insert output VERSION and obsolete text if needed at point."
(guix-info-insert-val-default version
'guix-package-info-version)
(and (guix-get-key-val entry 'obsolete)
(guix-package-info-insert-obsolete-text)))
(defun guix-output-info-insert-output (output entry)
"Insert OUTPUT and action buttons at point."
(let* ((installed (guix-get-key-val entry 'installed))
(obsolete (guix-get-key-val entry 'obsolete))
(action-type (if installed 'delete 'install)))
(guix-info-insert-val-default
output
(if installed
'guix-package-info-installed-outputs
'guix-package-info-uninstalled-outputs))
(guix-info-insert-indent)
(guix-package-info-insert-action-button action-type entry output)
(when obsolete
(guix-info-insert-indent)
(guix-package-info-insert-action-button 'upgrade entry output))))
;;; Displaying generations
(guix-define-buffer-type info generation)
(defface guix-generation-info-number
'((t :inherit font-lock-keyword-face))
"Face used for a number of a generation."
:group 'guix-generation-info)
(defface guix-generation-info-current
'((t :inherit guix-package-info-installed-outputs))
"Face used if a generation is the current one."
:group 'guix-generation-info)
(defface guix-generation-info-not-current
'((t nil))
"Face used if a generation is not the current one."
:group 'guix-generation-info)
(defvar guix-info-insert-generation-function nil
"Function used to insert a generation information.
It is called with a single argument - alist of generation parameters.
If nil, insert generation in a default way.")
(defun guix-generation-info-insert-number (number &optional _)
"Insert generation NUMBER and action buttons."
(guix-info-insert-val-default number 'guix-generation-info-number)
(guix-info-insert-indent)
(guix-info-insert-action-button
"Packages"
(lambda (btn)
(guix-get-show-entries guix-profile 'list guix-package-list-type
'generation (button-get btn 'number)))
"Show installed packages for this generation"
'number number)
(guix-info-insert-indent)
(guix-info-insert-action-button
"Delete"
(lambda (btn)
(guix-delete-generations guix-profile (list (button-get btn 'number))
(current-buffer)))
"Delete this generation"
'number number))
(defun guix-generation-info-insert-current (val entry)
"Insert boolean value VAL showing whether this generation is current."
(if val
(guix-info-insert-val-default "Yes" 'guix-generation-info-current)
(guix-info-insert-val-default "No" 'guix-generation-info-not-current)
(guix-info-insert-indent)
(guix-info-insert-action-button
"Switch"
(lambda (btn)
(guix-switch-to-generation guix-profile (button-get btn 'number)
(current-buffer)))
"Switch to this generation (make it the current one)"
'number (guix-get-key-val entry 'number))))
(provide 'guix-info)
;;; guix-info.el ends here
+14
View File
@@ -0,0 +1,14 @@
(require 'guix-autoloads)
(defvar guix-load-path
(replace-regexp-in-string "${prefix}" "@prefix@" "@emacsuidir@")
"Directory with scheme files for \"guix.el\" package.")
(defvar guix-default-profile
(concat (or (getenv "NIX_STATE_DIR") "@guix_localstatedir@/guix")
"/profiles/per-user/"
(getenv "USER")
"/guix-profile")
"Default Guix profile.")
(provide 'guix-init)
+865
View File
@@ -0,0 +1,865 @@
;;; guix-list.el --- List buffers for displaying entries -*- lexical-binding: t -*-
;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;; This file is part of GNU Guix.
;; GNU Guix is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Guix is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; This file provides a list-like buffer for displaying information
;; about Guix packages and generations.
;;; Code:
(require 'cl-lib)
(require 'tabulated-list)
(require 'guix-info)
(require 'guix-base)
(require 'guix-utils)
(defgroup guix-list nil
"General settings for list buffers."
:prefix "guix-list-"
:group 'guix)
(defface guix-list-file-path
'((t :inherit guix-info-file-path))
"Face used for file paths."
:group 'guix-list)
(defcustom guix-list-describe-warning-count 10
"The maximum number of entries for describing without a warning.
If a user wants to describe more than this number of marked
entries, he will be prompted for confirmation."
:type 'integer
:group 'guix-list)
(defvar guix-list-column-format
`((package
(name 20 t)
(version 10 nil)
(outputs 13 t)
(installed 13 t)
(synopsis 30 nil))
(output
(name 20 t)
(version 10 nil)
(output 9 t)
(installed 12 t)
(synopsis 30 nil))
(generation
(number 5
,(lambda (a b) (guix-list-sort-numerically 0 a b))
:right-align t)
(current 10 t)
(time 20 t)
(path 30 t)))
"Columns displayed in list buffers.
Each element of the list has a form:
(ENTRY-TYPE . ((PARAM WIDTH SORT . PROPS) ...))
PARAM is the name of an entry parameter of ENTRY-TYPE. For the
meaning of WIDTH, SORT and PROPS, see `tabulated-list-format'.")
(defvar guix-list-column-titles
'((generation
(number . "N.")))
"Column titles for list buffers.
Has the same structure as `guix-param-titles', but titles from
this list have a priority.")
(defvar guix-list-column-value-methods
'((package
(name . guix-package-list-get-name)
(synopsis . guix-list-get-one-line)
(description . guix-list-get-one-line)
(installed . guix-package-list-get-installed-outputs))
(output
(name . guix-package-list-get-name)
(synopsis . guix-list-get-one-line)
(description . guix-list-get-one-line))
(generation
(current . guix-generation-list-get-current)
(time . guix-list-get-time)
(path . guix-list-get-file-path)))
"Methods for inserting parameter values in columns.
Each element of the list has a form:
(ENTRY-TYPE . ((PARAM . FUN) ...))
PARAM is the name of an entry parameter of ENTRY-TYPE.
FUN is a function returning a value that will be inserted. The
function is called with 2 arguments: the first one is the value
of the parameter; the second argument is an entry info (alist of
parameters and their values).")
(defun guix-list-get-param-title (entry-type param)
"Return title of an ENTRY-TYPE entry parameter PARAM."
(or (guix-get-key-val guix-list-column-titles
entry-type param)
(guix-get-param-title entry-type param)))
(defun guix-list-get-column-format (entry-type)
"Return column format for ENTRY-TYPE."
(guix-get-key-val guix-list-column-format entry-type))
(defun guix-list-get-displayed-params (entry-type)
"Return list of parameters of ENTRY-TYPE that should be displayed."
(mapcar #'car
(guix-list-get-column-format entry-type)))
(defun guix-list-get-sort-key (entry-type param &optional invert)
"Return suitable sort key for `tabulated-list-sort-key'.
Define column title by ENTRY-TYPE and PARAM. If INVERT is
non-nil, invert the sort."
(when (memq param (guix-list-get-displayed-params entry-type))
(cons (guix-list-get-param-title entry-type param) invert)))
(defun guix-list-sort-numerically (column a b)
"Compare COLUMN of tabulated entries A and B numerically.
It is a sort predicate for `tabulated-list-format'.
Return non-nil, if B is bigger than A."
(cl-flet ((num (entry)
(string-to-number (aref (cadr entry) column))))
(> (num b) (num a))))
(defun guix-list-make-tabulated-vector (entry-type fun)
"Call FUN on each column specification for ENTRY-TYPE.
FUN is called with 2 argument: parameter name and column
specification (see `guix-list-column-format').
Return a vector made of values of FUN calls."
(apply #'vector
(mapcar (lambda (col-spec)
(funcall fun (car col-spec) (cdr col-spec)))
(guix-list-get-column-format entry-type))))
(defun guix-list-get-list-format (entry-type)
"Return ENTRY-TYPE list specification for `tabulated-list-format'."
(guix-list-make-tabulated-vector
entry-type
(lambda (param spec)
(cons (guix-list-get-param-title entry-type param)
spec))))
(defun guix-list-insert-entries (entries entry-type)
"Display ENTRIES of ENTRY-TYPE in the current list buffer.
ENTRIES should have a form of `guix-entries'."
(setq tabulated-list-entries
(guix-list-get-tabulated-entries entries entry-type))
(tabulated-list-print))
(defun guix-list-get-tabulated-entries (entries entry-type)
"Return list of values of ENTRY-TYPE for `tabulated-list-entries'.
Values are taken from ENTRIES which should have the form of
`guix-entries'."
(mapcar (lambda (entry)
(list (guix-get-key-val entry 'id)
(guix-list-get-tabulated-entry entry entry-type)))
entries))
(defun guix-list-get-tabulated-entry (entry entry-type)
"Return array of values for `tabulated-list-entries'.
Parameters are taken from ENTRY of ENTRY-TYPE."
(guix-list-make-tabulated-vector
entry-type
(lambda (param _)
(let ((val (guix-get-key-val entry param))
(fun (guix-get-key-val guix-list-column-value-methods
entry-type param)))
(if fun
(funcall fun val entry)
(guix-get-string val))))))
(defun guix-list-get-one-line (val &optional _)
"Return one-line string from a multi-line string VAL.
VAL may be nil."
(if val
(guix-get-one-line val)
(guix-get-string nil)))
(defun guix-list-get-time (seconds &optional _)
"Return formatted time string from SECONDS."
(guix-get-time-string seconds))
(defun guix-list-get-file-path (path &optional _)
"Return PATH button specification for `tabulated-list-entries'."
(list path
'face 'guix-list-file-path
'action (lambda (btn) (find-file (button-label btn)))
'follow-link t
'help-echo "Find file"))
(defun guix-list-current-id ()
"Return ID of the current entry."
(or (tabulated-list-get-id)
(user-error "No entry here")))
(defun guix-list-current-entry ()
"Return alist of the current entry info."
(guix-get-entry-by-id (guix-list-current-id) guix-entries))
(defun guix-list-for-each-line (fun &rest args)
"Call FUN with ARGS for each entry line."
(or (derived-mode-p 'guix-list-mode)
(error "The current buffer is not in Guix List mode"))
(save-excursion
(goto-char (point-min))
(while (not (eobp))
(apply fun args)
(forward-line))))
(defun guix-list-fold-lines (fun init)
"Fold over entry lines in the current list buffer.
Call FUN with RESULT as argument for each line, using INIT as
the initial value of RESULT. Return the final result."
(let ((res init))
(guix-list-for-each-line
(lambda () (setq res (funcall fun res))))
res))
;;; Marking and sorting
(defvar-local guix-list-marked nil
"List of the marked entries.
Each element of the list has a form:
(ID MARK-NAME . ARGS)
ID is an entry ID.
MARK-NAME is a symbol from `guix-list-mark-alist'.
ARGS is a list of additional values.")
(defvar guix-list-mark-alist
'((empty . ?\s)
(general . ?*))
"Alist of available mark names and mark characters.")
(defsubst guix-list-get-mark (name)
"Return mark character by its NAME."
(or (guix-get-key-val guix-list-mark-alist name)
(error "Mark '%S' not found" name)))
(defsubst guix-list-get-mark-string (name)
"Return mark string by its NAME."
(string (guix-list-get-mark name)))
(defun guix-list-current-mark ()
"Return mark character of the current line."
(char-after (line-beginning-position)))
(defun guix-list-get-marked (&rest mark-names)
"Return list of specs of entries marked with any mark from MARK-NAMES.
Entry specs are elements from `guix-list-marked' list.
If MARK-NAMES are not specified, use all marks from
`guix-list-mark-alist' except the `empty' one."
(or mark-names
(setq mark-names
(delq 'empty
(mapcar #'car guix-list-mark-alist))))
(cl-remove-if-not (lambda (assoc)
(memq (cadr assoc) mark-names))
guix-list-marked))
(defun guix-list-get-marked-args (mark-name)
"Return list of (ID . ARGS) elements from lines marked with MARK-NAME.
See `guix-list-marked' for the meaning of ARGS."
(mapcar (lambda (spec)
(let ((id (car spec))
(args (cddr spec)))
(cons id args)))
(guix-list-get-marked mark-name)))
(defun guix-list-get-marked-id-list (&rest mark-names)
"Return list of IDs of entries marked with any mark from MARK-NAMES.
See `guix-list-get-marked' for details."
(mapcar #'car (apply #'guix-list-get-marked mark-names)))
(defun guix-list-mark (mark-name &optional advance &rest args)
"Put a mark on the current line.
Also add the current entry to `guix-list-marked' using its ID and ARGS.
MARK-NAME is a symbol from `guix-list-mark-alist'.
If ADVANCE is non-nil, move forward by one line after marking.
Interactively, put a general mark and move to the next line."
(interactive '(general t))
(let ((id (guix-list-current-id)))
(if (eq mark-name 'empty)
(setq guix-list-marked (assq-delete-all id guix-list-marked))
(let ((assoc (assq id guix-list-marked))
(val (cons mark-name args)))
(if assoc
(setcdr assoc val)
(push (cons id val) guix-list-marked)))))
(tabulated-list-put-tag (guix-list-get-mark-string mark-name)
advance))
(defun guix-list-mark-all (mark-name)
"Mark all lines with MARK-NAME mark.
MARK-NAME is a symbol from `guix-list-mark-alist'.
Interactively, put a general mark on all lines."
(interactive '(general))
(guix-list-for-each-line #'guix-list-mark mark-name))
(defun guix-list-unmark (&optional arg)
"Unmark the current line and move to the next line.
With ARG, unmark all lines."
(interactive "P")
(if arg
(guix-list-unmark-all)
(guix-list-mark 'empty t)))
(defun guix-list-unmark-backward ()
"Move up one line and unmark it."
(interactive)
(forward-line -1)
(guix-list-mark 'empty))
(defun guix-list-unmark-all ()
"Unmark all lines."
(interactive)
(guix-list-mark-all 'empty))
(defun guix-list-restore-marks ()
"Put marks according to `guix-list-mark-alist'."
(guix-list-for-each-line
(lambda ()
(let ((mark-name (car (guix-get-key-val guix-list-marked
(guix-list-current-id)))))
(tabulated-list-put-tag
(guix-list-get-mark-string (or mark-name 'empty)))))))
(defun guix-list-sort (&optional n)
"Sort guix list entries by the column at point.
With a numeric prefix argument N, sort the Nth column.
Same as `tabulated-list-sort', but also restore marks after sorting."
(interactive "P")
(tabulated-list-sort n)
(guix-list-restore-marks))
(defvar guix-list-mode-map
(let ((map (make-sparse-keymap)))
(set-keymap-parent map tabulated-list-mode-map)
(define-key map (kbd "RET") 'guix-list-describe)
(define-key map (kbd "m") 'guix-list-mark)
(define-key map (kbd "*") 'guix-list-mark)
(define-key map (kbd "M") 'guix-list-mark-all)
(define-key map (kbd "u") 'guix-list-unmark)
(define-key map (kbd "DEL") 'guix-list-unmark-backward)
(define-key map [remap tabulated-list-sort] 'guix-list-sort)
map)
"Parent keymap for list buffers.")
(define-derived-mode guix-list-mode tabulated-list-mode "Guix-List"
"Parent mode for displaying information in list buffers."
(setq tabulated-list-padding 2))
(defmacro guix-list-define-entry-type (entry-type &rest args)
"Define common stuff for displaying ENTRY-TYPE entries in list buffers.
Remaining argument (ARGS) should have a form [KEYWORD VALUE] ... The
following keywords are available:
- `:sort-key' - default sort key for the tabulated list buffer.
- `:invert-sort' - if non-nil, invert initial sort.
- `:marks' - default value for the defined
`guix-ENTRY-TYPE-mark-alist' variable.
This macro defines the following functions:
- `guix-ENTRY-TYPE-mark-MARK-NAME' functions for each mark
specified in `:marks' argument."
(let* ((entry-type-str (symbol-name entry-type))
(prefix (concat "guix-" entry-type-str "-list"))
(mode-str (concat prefix "-mode"))
(init-fun (intern (concat prefix "-mode-initialize")))
(marks-var (intern (concat prefix "-mark-alist")))
(marks-val nil)
(sort-key nil)
(invert-sort nil))
;; Process the keyword args.
(while (keywordp (car args))
(pcase (pop args)
(`:sort-key (setq sort-key (pop args)))
(`:invert-sort (setq invert-sort (pop args)))
(`:marks (setq marks-val (pop args)))
(_ (pop args))))
`(progn
(defvar ,marks-var ',marks-val
,(concat "Alist of additional marks for `" mode-str "'.\n"
"Marks from this list are added to `guix-list-mark-alist'."))
,@(mapcar (lambda (mark-spec)
(let* ((mark-name (car mark-spec))
(mark-name-str (symbol-name mark-name)))
`(defun ,(intern (concat prefix "-mark-" mark-name-str "-simple")) ()
,(concat "Put '" mark-name-str "' mark and move to the next line.\n"
"Also add the current entry to `guix-list-marked'.")
(interactive)
(guix-list-mark ',mark-name t))))
marks-val)
(defun ,init-fun ()
,(concat "Initial settings for `" mode-str "'.")
,(when sort-key
`(setq tabulated-list-sort-key
(guix-list-get-sort-key
',entry-type ',sort-key ,invert-sort)))
(setq tabulated-list-format
(guix-list-get-list-format ',entry-type))
(setq-local guix-list-mark-alist
(append guix-list-mark-alist ,marks-var))
(tabulated-list-init-header)))))
(put 'guix-list-define-entry-type 'lisp-indent-function 'defun)
(defun guix-list-describe-maybe (entry-type ids)
"Describe ENTRY-TYPE entries in info buffer using list of IDS."
(let ((count (length ids)))
(when (or (<= count guix-list-describe-warning-count)
(y-or-n-p (format "Do you really want to describe %d entries? "
count)))
(apply #'guix-get-show-entries
guix-profile 'info entry-type 'id ids))))
(defun guix-list-describe (&optional arg)
"Describe entries marked with a general mark.
If no entries are marked, describe the current entry.
With prefix (if ARG is non-nil), describe entries marked with any mark."
(interactive "P")
(let ((ids (or (apply #'guix-list-get-marked-id-list
(unless arg '(general)))
(list (guix-list-current-id)))))
(guix-list-describe-maybe guix-entry-type ids)))
;;; Displaying packages
(guix-define-buffer-type list package)
(guix-list-define-entry-type package
:sort-key name
:marks ((install . ?I)
(upgrade . ?U)
(delete . ?D)))
(defface guix-package-list-installed
'((t :inherit guix-package-info-installed-outputs))
"Face used if there are installed outputs for the current package."
:group 'guix-package-list)
(defface guix-package-list-obsolete
'((t :inherit guix-package-info-obsolete))
"Face used if a package is obsolete."
:group 'guix-package-list)
(defcustom guix-package-list-generation-marking-enabled nil
"If non-nil, allow putting marks in a list with 'generation packages'.
By default this is disabled, because it may be confusing. For
example a package is installed in some generation, so a user can
mark it for deletion in the list of packages from this
generation, but the package may not be installed in the latest
generation, so actually it cannot be deleted.
If you managed to understand the explanation above or if you
really know what you do or if you just don't care, you can set
this variable to t. It should not do much harm anyway (most
likely)."
:type 'boolean
:group 'guix-package-list)
(let ((map guix-package-list-mode-map))
(define-key map (kbd "x") 'guix-package-list-execute)
(define-key map (kbd "i") 'guix-package-list-mark-install)
(define-key map (kbd "d") 'guix-package-list-mark-delete)
(define-key map (kbd "U") 'guix-package-list-mark-upgrade)
(define-key map (kbd "^") 'guix-package-list-mark-upgrades))
(defun guix-package-list-get-name (name entry)
"Return NAME of the package ENTRY.
Colorize it with `guix-package-list-installed' or
`guix-package-list-obsolete' if needed."
(guix-get-string name
(cond ((guix-get-key-val entry 'obsolete)
'guix-package-list-obsolete)
((guix-get-key-val entry 'installed)
'guix-package-list-installed))))
(defun guix-package-list-get-installed-outputs (installed &optional _)
"Return string with outputs from INSTALLED entries."
(guix-get-string
(mapcar (lambda (entry)
(guix-get-key-val entry 'output))
installed)))
(defun guix-package-list-marking-check ()
"Signal an error if marking is disabled for the current buffer."
(when (and (not guix-package-list-generation-marking-enabled)
(or (derived-mode-p 'guix-package-list-mode)
(derived-mode-p 'guix-output-list-mode))
(eq guix-search-type 'generation))
(error "Action marks are disabled for lists of 'generation packages'")))
(defun guix-package-list-mark-outputs (mark default
&optional prompt available)
"Mark the current package with MARK and move to the next line.
If PROMPT is non-nil, use it to ask a user for outputs from
AVAILABLE list, otherwise mark all DEFAULT outputs."
(let ((outputs (if prompt
(guix-completing-read-multiple
prompt available nil t)
default)))
(apply #'guix-list-mark mark t outputs)))
(defun guix-package-list-mark-install (&optional arg)
"Mark the current package for installation and move to the next line.
With ARG, prompt for the outputs to install (several outputs may
be separated with \",\")."
(interactive "P")
(guix-package-list-marking-check)
(let* ((entry (guix-list-current-entry))
(all (guix-get-key-val entry 'outputs))
(installed (guix-get-installed-outputs entry))
(available (cl-set-difference all installed :test #'string=)))
(or available
(user-error "This package is already installed"))
(guix-package-list-mark-outputs
'install '("out")
(and arg "Output(s) to install: ")
available)))
(defun guix-package-list-mark-delete (&optional arg)
"Mark the current package for deletion and move to the next line.
With ARG, prompt for the outputs to delete (several outputs may
be separated with \",\")."
(interactive "P")
(guix-package-list-marking-check)
(let* ((entry (guix-list-current-entry))
(installed (guix-get-installed-outputs entry)))
(or installed
(user-error "This package is not installed"))
(guix-package-list-mark-outputs
'delete installed
(and arg "Output(s) to delete: ")
installed)))
(defun guix-package-list-mark-upgrade (&optional arg)
"Mark the current package for upgrading and move to the next line.
With ARG, prompt for the outputs to upgrade (several outputs may
be separated with \",\")."
(interactive "P")
(guix-package-list-marking-check)
(let* ((entry (guix-list-current-entry))
(installed (guix-get-installed-outputs entry)))
(or installed
(user-error "This package is not installed"))
(when (or (guix-get-key-val entry 'obsolete)
(y-or-n-p "This package is not obsolete. Try to upgrade it anyway? "))
(guix-package-list-mark-outputs
'upgrade installed
(and arg "Output(s) to upgrade: ")
installed))))
(defun guix-list-mark-package-upgrades (fun)
"Mark all obsolete packages for upgrading.
Use FUN to perform marking of the current line. FUN should
accept an entry as argument."
(guix-package-list-marking-check)
(let ((obsolete (cl-remove-if-not
(lambda (entry)
(guix-get-key-val entry 'obsolete))
guix-entries)))
(guix-list-for-each-line
(lambda ()
(let* ((id (guix-list-current-id))
(entry (cl-find-if
(lambda (entry)
(equal id (guix-get-key-val entry 'id)))
obsolete)))
(when entry
(funcall fun entry)))))))
(defun guix-package-list-mark-upgrades ()
"Mark all obsolete packages for upgrading."
(interactive)
(guix-list-mark-package-upgrades
(lambda (entry)
(apply #'guix-list-mark
'upgrade nil
(guix-get-installed-outputs entry)))))
(defun guix-list-execute-package-actions (fun)
"Perform actions on the marked packages.
Use FUN to define actions suitable for `guix-process-package-actions'.
FUN should accept action-type as argument."
(let ((actions (delq nil
(mapcar fun '(install delete upgrade)))))
(if actions
(guix-process-package-actions
guix-profile actions (current-buffer))
(user-error "No operations specified"))))
(defun guix-package-list-execute ()
"Perform actions on the marked packages."
(interactive)
(guix-list-execute-package-actions #'guix-package-list-make-action))
(defun guix-package-list-make-action (action-type)
"Return action specification for the packages marked with ACTION-TYPE.
Return nil, if there are no packages marked with ACTION-TYPE.
The specification is suitable for `guix-process-package-actions'."
(let ((specs (guix-list-get-marked-args action-type)))
(and specs (cons action-type specs))))
;;; Displaying outputs
(guix-define-buffer-type list output
:buffer-name "*Guix Package List*")
(guix-list-define-entry-type output
:sort-key name
:marks ((install . ?I)
(upgrade . ?U)
(delete . ?D)))
(let ((map guix-output-list-mode-map))
(define-key map (kbd "RET") 'guix-output-list-describe)
(define-key map (kbd "x") 'guix-output-list-execute)
(define-key map (kbd "i") 'guix-output-list-mark-install)
(define-key map (kbd "d") 'guix-output-list-mark-delete)
(define-key map (kbd "U") 'guix-output-list-mark-upgrade)
(define-key map (kbd "^") 'guix-output-list-mark-upgrades))
(defun guix-output-list-mark-install ()
"Mark the current output for installation and move to the next line."
(interactive)
(guix-package-list-marking-check)
(let* ((entry (guix-list-current-entry))
(installed (guix-get-key-val entry 'installed)))
(if installed
(user-error "This output is already installed")
(guix-list-mark 'install t))))
(defun guix-output-list-mark-delete ()
"Mark the current output for deletion and move to the next line."
(interactive)
(guix-package-list-marking-check)
(let* ((entry (guix-list-current-entry))
(installed (guix-get-key-val entry 'installed)))
(if installed
(guix-list-mark 'delete t)
(user-error "This output is not installed"))))
(defun guix-output-list-mark-upgrade ()
"Mark the current output for deletion and move to the next line."
(interactive)
(guix-package-list-marking-check)
(let* ((entry (guix-list-current-entry))
(installed (guix-get-key-val entry 'installed)))
(or installed
(user-error "This output is not installed"))
(when (or (guix-get-key-val entry 'obsolete)
(y-or-n-p "This output is not obsolete. Try to upgrade it anyway? "))
(guix-list-mark 'upgrade t))))
(defun guix-output-list-mark-upgrades ()
"Mark all obsolete package outputs for upgrading."
(interactive)
(guix-list-mark-package-upgrades
(lambda (_) (guix-list-mark 'upgrade))))
(defun guix-output-list-execute ()
"Perform actions on the marked outputs."
(interactive)
(guix-list-execute-package-actions #'guix-output-list-make-action))
(defun guix-output-list-make-action (action-type)
"Return action specification for the outputs marked with ACTION-TYPE.
Return nil, if there are no outputs marked with ACTION-TYPE.
The specification is suitable for `guix-process-output-actions'."
(let ((ids (guix-list-get-marked-id-list action-type)))
(and ids (cons action-type
(mapcar #'guix-get-package-id-and-output-by-output-id
ids)))))
(defun guix-output-list-describe (&optional arg)
"Describe outputs or packages marked with a general mark.
If no entries are marked, describe the current output or package.
With prefix (if ARG is non-nil), describe entries marked with any mark.
Also see `guix-package-info-type'."
(interactive "P")
(if (eq guix-package-info-type 'output)
(guix-list-describe arg)
(let* ((oids (or (apply #'guix-list-get-marked-id-list
(unless arg '(general)))
(list (guix-list-current-id))))
(pids (mapcar (lambda (oid)
(car (guix-get-package-id-and-output-by-output-id
oid)))
oids)))
(guix-list-describe-maybe 'package (cl-remove-duplicates pids)))))
;;; Displaying generations
(guix-define-buffer-type list generation)
(guix-list-define-entry-type generation
:sort-key number
:invert-sort t
:marks ((delete . ?D)))
(let ((map guix-generation-list-mode-map))
(define-key map (kbd "RET") 'guix-generation-list-show-packages)
(define-key map (kbd "+") 'guix-generation-list-show-added-packages)
(define-key map (kbd "-") 'guix-generation-list-show-removed-packages)
(define-key map (kbd "=") 'guix-generation-list-diff)
(define-key map (kbd "D") 'guix-generation-list-diff)
(define-key map (kbd "e") 'guix-generation-list-ediff)
(define-key map (kbd "x") 'guix-generation-list-execute)
(define-key map (kbd "i") 'guix-list-describe)
(define-key map (kbd "s") 'guix-generation-list-switch)
(define-key map (kbd "d") 'guix-generation-list-mark-delete))
(defun guix-generation-list-get-current (val &optional _)
"Return string from VAL showing whether this generation is current.
VAL is a boolean value."
(if val "(current)" ""))
(defun guix-generation-list-switch ()
"Switch current profile to the generation at point."
(interactive)
(let* ((entry (guix-list-current-entry))
(current (guix-get-key-val entry 'current))
(number (guix-get-key-val entry 'number)))
(if current
(user-error "This generation is already the current one")
(guix-switch-to-generation guix-profile number (current-buffer)))))
(defun guix-generation-list-show-packages ()
"List installed packages for the generation at point."
(interactive)
(guix-get-show-entries guix-profile 'list guix-package-list-type
'generation (guix-list-current-id)))
(defun guix-generation-list-generations-to-compare ()
"Return a sorted list of 2 marked generations for comparing."
(let ((numbers (guix-list-get-marked-id-list 'general)))
(if (/= (length numbers) 2)
(user-error "2 generations should be marked for comparing")
(sort numbers #'<))))
(defun guix-generation-list-show-added-packages ()
"List package outputs added to the latest marked generation.
If 2 generations are marked with \\[guix-list-mark], display
outputs installed in the latest marked generation that were not
installed in the other one."
(interactive)
(apply #'guix-get-show-entries
guix-profile 'list 'output 'generation-diff
(reverse (guix-generation-list-generations-to-compare))))
(defun guix-generation-list-show-removed-packages ()
"List package outputs removed from the latest marked generation.
If 2 generations are marked with \\[guix-list-mark], display
outputs not installed in the latest marked generation that were
installed in the other one."
(interactive)
(apply #'guix-get-show-entries
guix-profile 'list 'output 'generation-diff
(guix-generation-list-generations-to-compare)))
(defun guix-generation-list-compare (diff-fun gen-fun)
"Run GEN-FUN on the 2 marked generations and run DIFF-FUN on the results."
(cl-multiple-value-bind (gen1 gen2)
(guix-generation-list-generations-to-compare)
(funcall diff-fun
(funcall gen-fun gen1)
(funcall gen-fun gen2))))
(defun guix-generation-list-ediff-manifests ()
"Run Ediff on manifests of the 2 marked generations."
(interactive)
(guix-generation-list-compare
#'ediff-files
#'guix-profile-generation-manifest-file))
(defun guix-generation-list-diff-manifests ()
"Run Diff on manifests of the 2 marked generations."
(interactive)
(guix-generation-list-compare
#'guix-diff
#'guix-profile-generation-manifest-file))
(defun guix-generation-list-ediff-packages ()
"Run Ediff on package outputs installed in the 2 marked generations."
(interactive)
(guix-generation-list-compare
#'ediff-buffers
#'guix-profile-generation-packages-buffer))
(defun guix-generation-list-diff-packages ()
"Run Diff on package outputs installed in the 2 marked generations."
(interactive)
(guix-generation-list-compare
#'guix-diff
#'guix-profile-generation-packages-buffer))
(defun guix-generation-list-ediff (arg)
"Run Ediff on package outputs installed in the 2 marked generations.
With ARG, run Ediff on manifests of the marked generations."
(interactive "P")
(if arg
(guix-generation-list-ediff-manifests)
(guix-generation-list-ediff-packages)))
(defun guix-generation-list-diff (arg)
"Run Diff on package outputs installed in the 2 marked generations.
With ARG, run Diff on manifests of the marked generations."
(interactive "P")
(if arg
(guix-generation-list-diff-manifests)
(guix-generation-list-diff-packages)))
(defun guix-generation-list-mark-delete (&optional arg)
"Mark the current generation for deletion and move to the next line.
With ARG, mark all generations for deletion."
(interactive "P")
(if arg
(guix-list-mark-all 'delete)
(guix-list-mark 'delete t)))
(defun guix-generation-list-execute ()
"Delete marked generations."
(interactive)
(let ((marked (guix-list-get-marked-id-list 'delete)))
(or marked
(user-error "No generations marked for deletion"))
(guix-delete-generations guix-profile marked (current-buffer))))
(provide 'guix-list)
;;; guix-list.el ends here
+918
View File
@@ -0,0 +1,918 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; Information about packages and generations is passed to the elisp
;; side in the form of alists of parameters (such as name or
;; version) and their values.
;; entries procedure is the “entry point” for the elisp side to get
;; information about packages and generations.
;; Since name/version pair is not necessarily unique, we use
;; `object-address' to identify a package (for id parameter), if
;; possible. However for the obsolete packages (that can be found in
;; installed manifest but not in a package directory), id parameter is
;; still "name-version" string. So id package parameter in the code
;; below is either an object-address number or a full-name string.
;; To speed-up the process of getting information, the following
;; auxiliary variables are used:
;;
;; - `%packages' - VHash of "package address"/"package" pairs.
;;
;; - `%package-table' - Hash table of
;; "name+version key"/"list of packages" pairs.
;;; Code:
(use-modules
(ice-9 vlist)
(ice-9 match)
(srfi srfi-1)
(srfi srfi-2)
(srfi srfi-11)
(srfi srfi-19)
(srfi srfi-26)
(guix)
(guix git-download)
(guix packages)
(guix profiles)
(guix licenses)
(guix utils)
(guix ui)
(guix scripts package)
(guix scripts pull)
(gnu packages))
(define-syntax-rule (first-or-false lst)
(and (not (null? lst))
(first lst)))
(define (list-maybe obj)
(if (list? obj) obj (list obj)))
(define full-name->name+version package-name->name+version)
(define (name+version->full-name name version)
(string-append name "-" version))
(define* (make-package-specification name #:optional version output)
(let ((full-name (if version
(name+version->full-name name version)
name)))
(if output
(string-append full-name ":" output)
full-name)))
(define name+version->key cons)
(define key->name+version car+cdr)
(define %packages
(fold-packages (lambda (pkg res)
(vhash-consq (object-address pkg) pkg res))
vlist-null))
(define %package-table
(let ((table (make-hash-table (vlist-length %packages))))
(vlist-for-each
(lambda (elem)
(match elem
((address . pkg)
(let* ((key (name+version->key (package-name pkg)
(package-version pkg)))
(ref (hash-ref table key)))
(hash-set! table key
(if ref (cons pkg ref) (list pkg)))))))
%packages)
table))
(define (manifest-entry->name+version+output entry)
(values
(manifest-entry-name entry)
(manifest-entry-version entry)
(manifest-entry-output entry)))
(define (manifest-entry->package-specification entry)
(call-with-values
(lambda () (manifest-entry->name+version+output entry))
make-package-specification))
(define (manifest-entries->package-specifications entries)
(map manifest-entry->package-specification entries))
(define (generation-package-specifications profile number)
"Return a list of package specifications for generation NUMBER."
(let ((manifest (profile-manifest
(generation-file-name profile number))))
(manifest-entries->package-specifications
(manifest-entries manifest))))
(define (generation-package-specifications+paths profile number)
"Return a list of package specifications and paths for generation NUMBER.
Each element of the list is a list of the package specification and its path."
(let ((manifest (profile-manifest
(generation-file-name profile number))))
(map (lambda (entry)
(list (manifest-entry->package-specification entry)
(manifest-entry-item entry)))
(manifest-entries manifest))))
(define (generation-difference profile number1 number2)
"Return a list of package specifications for outputs installed in generation
NUMBER1 and not installed in generation NUMBER2."
(let ((specs1 (generation-package-specifications profile number1))
(specs2 (generation-package-specifications profile number2)))
(lset-difference string=? specs1 specs2)))
(define (manifest-entries->hash-table entries)
"Return a hash table of name keys and lists of matching manifest ENTRIES."
(let ((table (make-hash-table (length entries))))
(for-each (lambda (entry)
(let* ((key (manifest-entry-name entry))
(ref (hash-ref table key)))
(hash-set! table key
(if ref (cons entry ref) (list entry)))))
entries)
table))
(define (manifest=? m1 m2)
(or (eq? m1 m2)
(equal? m1 m2)))
(define manifest->hash-table
(let ((current-manifest #f)
(current-table #f))
(lambda (manifest)
"Return a hash table of name keys and matching MANIFEST entries."
(unless (manifest=? manifest current-manifest)
(set! current-manifest manifest)
(set! current-table (manifest-entries->hash-table
(manifest-entries manifest))))
current-table)))
(define* (manifest-entries-by-name manifest name #:optional version output)
"Return a list of MANIFEST entries matching NAME, VERSION and OUTPUT."
(let ((entries (or (hash-ref (manifest->hash-table manifest) name)
'())))
(if (or version output)
(filter (lambda (entry)
(and (or (not version)
(equal? version (manifest-entry-version entry)))
(or (not output)
(equal? output (manifest-entry-output entry)))))
entries)
entries)))
(define (manifest-entry-by-output entries output)
"Return a manifest entry from ENTRIES matching OUTPUT."
(find (lambda (entry)
(string= output (manifest-entry-output entry)))
entries))
(define (fold-manifest-by-name manifest proc init)
"Fold over MANIFEST entries.
Call (PROC NAME VERSION ENTRIES RESULT), using INIT as the initial value
of RESULT. ENTRIES is a list of manifest entries with NAME/VERSION."
(hash-fold (lambda (name entries res)
(proc name (manifest-entry-version (car entries))
entries res))
init
(manifest->hash-table manifest)))
(define* (object-transformer param-alist #:optional (params '()))
"Return procedure transforming objects into alist of parameter/value pairs.
PARAM-ALIST is alist of available parameters (symbols) and procedures
returning values of these parameters. Each procedure is applied to
objects.
PARAMS is list of parameters from PARAM-ALIST that should be returned by
a resulting procedure. If PARAMS is not specified or is an empty list,
use all available parameters.
Example:
(let* ((alist `((plus1 . ,1+) (minus1 . ,1-) (mul2 . ,(cut * 2 <>))))
(number->alist (object-transformer alist '(plus1 mul2))))
(number->alist 8))
=>
((plus1 . 9) (mul2 . 16))
"
(let* ((use-all-params (null? params))
(alist (filter-map (match-lambda
((param . proc)
(and (or use-all-params
(memq param params))
(cons param proc)))
(_ #f))
param-alist)))
(lambda objects
(map (match-lambda
((param . proc)
(cons param (apply proc objects))))
alist))))
(define %manifest-entry-param-alist
`((output . ,manifest-entry-output)
(path . ,manifest-entry-item)
(dependencies . ,manifest-entry-dependencies)))
(define manifest-entry->sexp
(object-transformer %manifest-entry-param-alist))
(define (manifest-entries->sexps entries)
(map manifest-entry->sexp entries))
(define (package-inputs-names inputs)
"Return a list of full names of the packages from package INPUTS."
(filter-map (match-lambda
((_ (? package? package))
(package-full-name package))
(_ #f))
inputs))
(define (package-license-names package)
"Return a list of license names of the PACKAGE."
(filter-map (lambda (license)
(and (license? license)
(license-name license)))
(list-maybe (package-license package))))
(define (package-source-names package)
"Return a list of source names (URLs) of the PACKAGE."
(let ((source (package-source package)))
(and (origin? source)
(filter-map (lambda (uri)
(cond ((string? uri)
uri)
((git-reference? uri)
(git-reference-url uri))
(else "Unknown source type")))
(list-maybe (origin-uri source))))))
(define (package-unique? package)
"Return #t if PACKAGE is a single package with such name/version."
(null? (cdr (packages-by-name (package-name package)
(package-version package)))))
(define %package-param-alist
`((id . ,object-address)
(package-id . ,object-address)
(name . ,package-name)
(version . ,package-version)
(license . ,package-license-names)
(source . ,package-source-names)
(synopsis . ,package-synopsis)
(description . ,package-description)
(home-url . ,package-home-page)
(outputs . ,package-outputs)
(non-unique . ,(negate package-unique?))
(inputs . ,(lambda (pkg)
(package-inputs-names
(package-inputs pkg))))
(native-inputs . ,(lambda (pkg)
(package-inputs-names
(package-native-inputs pkg))))
(propagated-inputs . ,(lambda (pkg)
(package-inputs-names
(package-propagated-inputs pkg))))
(location . ,(lambda (pkg)
(location->string (package-location pkg))))))
(define (package-param package param)
"Return a value of a PACKAGE PARAM."
(and=> (assq-ref %package-param-alist param)
(cut <> package)))
;;; Finding packages.
(define (package-by-address address)
(and=> (vhash-assq address %packages)
cdr))
(define (packages-by-name+version name version)
(or (hash-ref %package-table
(name+version->key name version))
'()))
(define (packages-by-full-name full-name)
(call-with-values
(lambda () (full-name->name+version full-name))
packages-by-name+version))
(define (packages-by-id id)
(if (integer? id)
(let ((pkg (package-by-address id)))
(if pkg (list pkg) '()))
(packages-by-full-name id)))
(define (id->name+version id)
(if (integer? id)
(and=> (package-by-address id)
(lambda (pkg)
(values (package-name pkg)
(package-version pkg))))
(full-name->name+version id)))
(define (package-by-id id)
(first-or-false (packages-by-id id)))
(define (newest-package-by-id id)
(and=> (id->name+version id)
(lambda (name)
(first-or-false (find-best-packages-by-name name #f)))))
(define (matching-packages predicate)
(fold-packages (lambda (pkg res)
(if (predicate pkg)
(cons pkg res)
res))
'()))
(define (filter-packages-by-output packages output)
(filter (lambda (package)
(member output (package-outputs package)))
packages))
(define* (packages-by-name name #:optional version output)
"Return a list of packages matching NAME, VERSION and OUTPUT."
(let ((packages (if version
(packages-by-name+version name version)
(matching-packages
(lambda (pkg) (string=? name (package-name pkg)))))))
(if output
(filter-packages-by-output packages output)
packages)))
(define (manifest-entry->packages entry)
(call-with-values
(lambda () (manifest-entry->name+version+output entry))
packages-by-name))
(define (packages-by-regexp regexp match-params)
"Return a list of packages matching REGEXP string.
MATCH-PARAMS is a list of parameters that REGEXP can match."
(define (package-match? package regexp)
(any (lambda (param)
(let ((val (package-param package param)))
(and (string? val) (regexp-exec regexp val))))
match-params))
(let ((re (make-regexp regexp regexp/icase)))
(matching-packages (cut package-match? <> re))))
(define (all-available-packages)
"Return a list of all available packages."
(matching-packages (const #t)))
(define (newest-available-packages)
"Return a list of the newest available packages."
(vhash-fold (lambda (name elem res)
(match elem
((_ newest pkgs ...)
(cons newest res))))
'()
(find-newest-available-packages)))
;;; Making package/output patterns.
(define (specification->package-pattern specification)
(call-with-values
(lambda ()
(full-name->name+version specification))
list))
(define (specification->output-pattern specification)
(call-with-values
(lambda ()
(package-specification->name+version+output specification #f))
list))
(define (id->package-pattern id)
(if (integer? id)
(package-by-address id)
(specification->package-pattern id)))
(define (id->output-pattern id)
"Return an output pattern by output ID.
ID should be '<package-address>:<output>' or '<name>-<version>:<output>'."
(let-values (((name version output)
(package-specification->name+version+output id)))
(if version
(list name version output)
(list (package-by-address (string->number name))
output))))
(define (specifications->package-patterns . specifications)
(map specification->package-pattern specifications))
(define (specifications->output-patterns . specifications)
(map specification->output-pattern specifications))
(define (ids->package-patterns . ids)
(map id->package-pattern ids))
(define (ids->output-patterns . ids)
(map id->output-pattern ids))
(define* (manifest-patterns-result packages res obsolete-pattern
#:optional installed-pattern)
"Auxiliary procedure for 'manifest-package-patterns' and
'manifest-output-patterns'."
(if (null? packages)
(cons (obsolete-pattern) res)
(if installed-pattern
;; We don't need duplicates for a list of installed packages,
;; so just take any (car) package.
(cons (installed-pattern (car packages)) res)
res)))
(define* (manifest-package-patterns manifest #:optional obsolete-only?)
"Return a list of package patterns for MANIFEST entries.
If OBSOLETE-ONLY? is #f, use all entries, otherwise make patterns only
for obsolete packages."
(fold-manifest-by-name
manifest
(lambda (name version entries res)
(manifest-patterns-result (packages-by-name name version)
res
(lambda () (list name version entries))
(and (not obsolete-only?)
(cut list <> entries))))
'()))
(define* (manifest-output-patterns manifest #:optional obsolete-only?)
"Return a list of output patterns for MANIFEST entries.
If OBSOLETE-ONLY? is #f, use all entries, otherwise make patterns only
for obsolete packages."
(fold (lambda (entry res)
(manifest-patterns-result (manifest-entry->packages entry)
res
(lambda () entry)
(and (not obsolete-only?)
(cut list <> entry))))
'()
(manifest-entries manifest)))
(define (obsolete-package-patterns manifest)
(manifest-package-patterns manifest #t))
(define (obsolete-output-patterns manifest)
(manifest-output-patterns manifest #t))
;;; Transforming package/output patterns into alists.
(define (obsolete-package-sexp name version entries)
"Return an alist with information about obsolete package.
ENTRIES is a list of installed manifest entries."
`((id . ,(name+version->full-name name version))
(name . ,name)
(version . ,version)
(outputs . ,(map manifest-entry-output entries))
(obsolete . #t)
(installed . ,(manifest-entries->sexps entries))))
(define (package-pattern-transformer manifest params)
"Return 'package-pattern->package-sexps' procedure."
(define package->sexp
(object-transformer %package-param-alist params))
(define* (sexp-by-package package #:optional
(entries (manifest-entries-by-name
manifest
(package-name package)
(package-version package))))
(cons (cons 'installed (manifest-entries->sexps entries))
(package->sexp package)))
(define (->sexps pattern)
(match pattern
((? package? package)
(list (sexp-by-package package)))
(((? package? package) entries)
(list (sexp-by-package package entries)))
((name version entries)
(list (obsolete-package-sexp
name version entries)))
((name version)
(let ((packages (packages-by-name name version)))
(if (null? packages)
(let ((entries (manifest-entries-by-name
manifest name version)))
(if (null? entries)
'()
(list (obsolete-package-sexp
name version entries))))
(map sexp-by-package packages))))
(_ '())))
->sexps)
(define (output-pattern-transformer manifest params)
"Return 'output-pattern->output-sexps' procedure."
(define package->sexp
(object-transformer (alist-delete 'id %package-param-alist)
params))
(define manifest-entry->sexp
(object-transformer (alist-delete 'output %manifest-entry-param-alist)
params))
(define* (output-sexp pkg-alist pkg-address output
#:optional entry)
(let ((entry-alist (if entry
(manifest-entry->sexp entry)
'()))
(base `((id . ,(string-append
(number->string pkg-address)
":" output))
(output . ,output)
(installed . ,(->bool entry)))))
(append entry-alist base pkg-alist)))
(define (obsolete-output-sexp entry)
(let-values (((name version output)
(manifest-entry->name+version+output entry)))
(let ((base `((id . ,(make-package-specification
name version output))
(package-id . ,(name+version->full-name name version))
(name . ,name)
(version . ,version)
(output . ,output)
(obsolete . #t)
(installed . #t))))
(append (manifest-entry->sexp entry) base))))
(define* (sexps-by-package package #:optional output
(entries (manifest-entries-by-name
manifest
(package-name package)
(package-version package))))
;; Assuming that PACKAGE has this OUTPUT.
(let ((pkg-alist (package->sexp package))
(address (object-address package))
(outputs (if output
(list output)
(package-outputs package))))
(map (lambda (output)
(output-sexp pkg-alist address output
(manifest-entry-by-output entries output)))
outputs)))
(define* (sexps-by-manifest-entry entry #:optional
(packages (manifest-entry->packages
entry)))
(if (null? packages)
(list (obsolete-output-sexp entry))
(map (lambda (package)
(output-sexp (package->sexp package)
(object-address package)
(manifest-entry-output entry)
entry))
packages)))
(define (->sexps pattern)
(match pattern
((? package? package)
(sexps-by-package package))
((package (? string? output))
(sexps-by-package package output))
((? manifest-entry? entry)
(list (obsolete-output-sexp entry)))
((package entry)
(sexps-by-manifest-entry entry (list package)))
((name version output)
(let ((packages (packages-by-name name version output)))
(if (null? packages)
(let ((entries (manifest-entries-by-name
manifest name version output)))
(append-map (cut sexps-by-manifest-entry <>)
entries))
(append-map (cut sexps-by-package <> output)
packages))))
(_ '())))
->sexps)
(define (entry-type-error entry-type)
(error (format #f "Wrong entry-type '~a'" entry-type)))
(define (search-type-error entry-type search-type)
(error (format #f "Wrong search type '~a' for entry-type '~a'"
search-type entry-type)))
(define %pattern-transformers
`((package . ,package-pattern-transformer)
(output . ,output-pattern-transformer)))
(define (pattern-transformer entry-type)
(assq-ref %pattern-transformers entry-type))
;; All procedures from inner alists are called with (MANIFEST . SEARCH-VALS)
;; as arguments; see `package/output-sexps'.
(define %patterns-makers
(let* ((apply-to-rest (lambda (proc)
(lambda (_ . rest) (apply proc rest))))
(apply-to-first (lambda (proc)
(lambda (first . _) (proc first))))
(manifest-package-proc (apply-to-first manifest-package-patterns))
(manifest-output-proc (apply-to-first manifest-output-patterns))
(regexp-proc (lambda (_ regexp params . __)
(packages-by-regexp regexp params)))
(all-proc (lambda _ (all-available-packages)))
(newest-proc (lambda _ (newest-available-packages))))
`((package
(id . ,(apply-to-rest ids->package-patterns))
(name . ,(apply-to-rest specifications->package-patterns))
(installed . ,manifest-package-proc)
(generation . ,manifest-package-proc)
(obsolete . ,(apply-to-first obsolete-package-patterns))
(regexp . ,regexp-proc)
(all-available . ,all-proc)
(newest-available . ,newest-proc))
(output
(id . ,(apply-to-rest ids->output-patterns))
(name . ,(apply-to-rest specifications->output-patterns))
(installed . ,manifest-output-proc)
(generation . ,manifest-output-proc)
(obsolete . ,(apply-to-first obsolete-output-patterns))
(regexp . ,regexp-proc)
(all-available . ,all-proc)
(newest-available . ,newest-proc)))))
(define (patterns-maker entry-type search-type)
(or (and=> (assq-ref %patterns-makers entry-type)
(cut assq-ref <> search-type))
(search-type-error entry-type search-type)))
(define (package/output-sexps profile params entry-type
search-type search-vals)
"Return information about packages or package outputs.
See 'entry-sexps' for details."
(let* ((profile (if (eq? search-type 'generation)
(generation-file-name profile (car search-vals))
profile))
(manifest (profile-manifest profile))
(patterns (if (and (eq? entry-type 'output)
(eq? search-type 'generation-diff))
(match search-vals
((g1 g2)
(map specification->output-pattern
(generation-difference profile g1 g2)))
(_ '()))
(apply (patterns-maker entry-type search-type)
manifest search-vals)))
(->sexps ((pattern-transformer entry-type) manifest params)))
(append-map ->sexps patterns)))
;;; Getting information about generations.
(define (generation-param-alist profile)
"Return an alist of generation parameters and procedures for PROFILE."
(let ((current (generation-number profile)))
`((id . ,identity)
(number . ,identity)
(prev-number . ,(cut previous-generation-number profile <>))
(current . ,(cut = current <>))
(path . ,(cut generation-file-name profile <>))
(time . ,(lambda (gen)
(time-second (generation-time profile gen)))))))
(define (matching-generations profile predicate)
"Return a list of PROFILE generations matching PREDICATE."
(filter predicate (profile-generations profile)))
(define (last-generations profile number)
"Return a list of last NUMBER generations.
If NUMBER is 0 or less, return all generations."
(let ((generations (profile-generations profile))
(number (if (<= number 0) +inf.0 number)))
(if (> (length generations) number)
(list-head (reverse generations) number)
generations)))
(define (find-generations profile search-type search-vals)
"Find PROFILE's generations matching SEARCH-TYPE and SEARCH-VALS."
(case search-type
((id)
(matching-generations profile (cut memq <> search-vals)))
((last)
(last-generations profile (car search-vals)))
((all)
(last-generations profile +inf.0))
((time)
(match search-vals
((from to)
(matching-generations
profile
(lambda (gen)
(let ((time (time-second (generation-time profile gen))))
(< from time to)))))
(_ '())))
(else (search-type-error "generation" search-type))))
(define (generation-sexps profile params search-type search-vals)
"Return information about generations.
See 'entry-sexps' for details."
(let ((generations (find-generations profile search-type search-vals))
(->sexp (object-transformer (generation-param-alist profile)
params)))
(map ->sexp generations)))
;;; Getting package/output/generation entries (alists).
(define (entries profile params entry-type search-type search-vals)
"Return information about entries.
ENTRY-TYPE is a symbol defining a type of returning information. Should
be: 'package', 'output' or 'generation'.
SEARCH-TYPE and SEARCH-VALS define how to get the information.
SEARCH-TYPE should be one of the following symbols:
- If ENTRY-TYPE is 'package' or 'output':
'id', 'name', 'regexp', 'all-available', 'newest-available',
'installed', 'obsolete', 'generation'.
- If ENTRY-TYPE is 'generation':
'id', 'last', 'all', 'time'.
PARAMS is a list of parameters for receiving. If it is an empty list,
get information with all available parameters, which are:
- If ENTRY-TYPE is 'package':
'id', 'name', 'version', 'outputs', 'license', 'synopsis',
'description', 'home-url', 'inputs', 'native-inputs',
'propagated-inputs', 'location', 'installed'.
- If ENTRY-TYPE is 'output':
'id', 'package-id', 'name', 'version', 'output', 'license',
'synopsis', 'description', 'home-url', 'inputs', 'native-inputs',
'propagated-inputs', 'location', 'installed', 'path', 'dependencies'.
- If ENTRY-TYPE is 'generation':
'id', 'number', 'prev-number', 'path', 'time'.
Returning value is a list of alists. Each alist consists of
parameter/value pairs."
(case entry-type
((package output)
(package/output-sexps profile params entry-type
search-type search-vals))
((generation)
(generation-sexps profile params
search-type search-vals))
(else (entry-type-error entry-type))))
;;; Package actions.
(define* (package->manifest-entry* package #:optional output)
(and package
(begin
(check-package-freshness package)
(package->manifest-entry package output))))
(define* (make-install-manifest-entries id #:optional output)
(package->manifest-entry* (package-by-id id) output))
(define* (make-upgrade-manifest-entries id #:optional output)
(package->manifest-entry* (newest-package-by-id id) output))
(define* (make-manifest-pattern id #:optional output)
"Make manifest pattern from a package ID and OUTPUT."
(let-values (((name version)
(id->name+version id)))
(and name version
(manifest-pattern
(name name)
(version version)
(output output)))))
(define (convert-action-pattern pattern proc)
"Convert action PATTERN into a list of objects returned by PROC.
PROC is called: (PROC ID) or (PROC ID OUTPUT)."
(match pattern
((id . outputs)
(if (null? outputs)
(let ((obj (proc id)))
(if obj (list obj) '()))
(filter-map (cut proc id <>)
outputs)))
(_ '())))
(define (convert-action-patterns patterns proc)
(append-map (cut convert-action-pattern <> proc)
patterns))
(define* (process-package-actions
profile #:key (install '()) (upgrade '()) (remove '())
(use-substitutes? #t) dry-run?)
"Perform package actions.
INSTALL, UPGRADE, REMOVE are lists of 'package action patterns'.
Each pattern should have the following form:
(ID . OUTPUTS)
ID is an object address or a full-name of a package.
OUTPUTS is a list of package outputs (may be an empty list)."
(format #t "The process begins ...~%")
(let* ((install (append
(convert-action-patterns
install make-install-manifest-entries)
(convert-action-patterns
upgrade make-upgrade-manifest-entries)))
(remove (convert-action-patterns remove make-manifest-pattern))
(transaction (manifest-transaction (install install)
(remove remove)))
(manifest (profile-manifest profile))
(new-manifest (manifest-perform-transaction
manifest transaction)))
(unless (and (null? install) (null? remove))
(with-store store
(let* ((derivation (run-with-store store
(profile-derivation new-manifest)))
(derivations (list derivation))
(new-profile (derivation->output-path derivation)))
(set-build-options store
#:use-substitutes? use-substitutes?)
(show-manifest-transaction store manifest transaction
#:dry-run? dry-run?)
(show-what-to-build store derivations
#:use-substitutes? use-substitutes?
#:dry-run? dry-run?)
(unless dry-run?
(let ((name (generation-file-name
profile
(+ 1 (generation-number profile)))))
(and (build-derivations store derivations)
(let* ((entries (manifest-entries new-manifest))
(count (length entries)))
(switch-symlinks name new-profile)
(switch-symlinks profile name)
(format #t (N_ "~a package in profile~%"
"~a packages in profile~%"
count)
count))))))))))
(define (delete-generations* profile generations)
"Delete GENERATIONS from PROFILE.
GENERATIONS is a list of generation numbers."
(with-store store
(delete-generations store profile generations)))
(define (package-source-derivation->store-path derivation)
"Return a store path of the package source DERIVATION."
(match (derivation-outputs derivation)
;; Source derivation is always (("out" . derivation)).
(((_ . output-drv))
(derivation-output-path output-drv))
(_ #f)))
(define (package-source-path package-id)
"Return a store file path to a source of a package PACKAGE-ID."
(and-let* ((package (package-by-id package-id))
(source (package-source package)))
(with-store store
(package-source-derivation->store-path
(package-source-derivation store source)))))
(define* (package-source-build-derivation package-id #:key dry-run?
(use-substitutes? #t))
"Build source derivation of a package PACKAGE-ID."
(and-let* ((package (package-by-id package-id))
(source (package-source package)))
(with-store store
(let* ((derivation (package-source-derivation store source))
(derivations (list derivation)))
(set-build-options store
#:use-substitutes? use-substitutes?)
(show-what-to-build store derivations
#:use-substitutes? use-substitutes?
#:dry-run? dry-run?)
(unless dry-run?
(build-derivations store derivations))
(format #t "The source store path: ~a~%"
(package-source-derivation->store-path derivation))))))
+208
View File
@@ -0,0 +1,208 @@
;;; guix-messages.el --- Minibuffer messages
;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;; This file is part of GNU Guix.
;; GNU Guix is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Guix is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; This file provides `guix-result-message' function used to show a
;; minibuffer message after displaying packages/generations in a
;; list/info buffer.
;;; Code:
(require 'cl-lib)
(require 'guix-utils)
(defvar guix-messages
`((package
(id
(0 "Packages not found.")
(1 "")
(many "%d packages." count))
(name
,(lambda (_ entries names)
(guix-message-packages-by-name entries 'package names)))
(regexp
(0 "No packages matching '%s'." val)
(1 "A single package matching '%s'." val)
(many "%d packages matching '%s'." count val))
(all-available
(0 "No packages are available for some reason.")
(1 "A single available package (that's strange).")
(many "%d available packages." count))
(newest-available
(0 "No packages are available for some reason.")
(1 "A single newest available package (that's strange).")
(many "%d newest available packages." count))
(installed
(0 "No packages installed in profile '%s'." profile)
(1 "A single package installed in profile '%s'." profile)
(many "%d packages installed in profile '%s'." count profile))
(obsolete
(0 "No obsolete packages in profile '%s'." profile)
(1 "A single obsolete package in profile '%s'." profile)
(many "%d obsolete packages in profile '%s'." count profile))
(generation
(0 "No packages installed in generation %d of profile '%s'."
val profile)
(1 "A single package installed in generation %d of profile '%s'."
val profile)
(many "%d packages installed in generation %d of profile '%s'."
count val profile)))
(output
(id
(0 "Package outputs not found.")
(1 "")
(many "%d package outputs." count))
(name
,(lambda (_ entries names)
(guix-message-packages-by-name entries 'output names)))
(regexp
(0 "No package outputs matching '%s'." val)
(1 "A single package output matching '%s'." val)
(many "%d package outputs matching '%s'." count val))
(all-available
(0 "No package outputs are available for some reason.")
(1 "A single available package output (that's strange).")
(many "%d available package outputs." count))
(newest-available
(0 "No package outputs are available for some reason.")
(1 "A single newest available package output (that's strange).")
(many "%d newest available package outputs." count))
(installed
(0 "No package outputs installed in profile '%s'." profile)
(1 "A single package output installed in profile '%s'." profile)
(many "%d package outputs installed in profile '%s'." count profile))
(obsolete
(0 "No obsolete package outputs in profile '%s'." profile)
(1 "A single obsolete package output in profile '%s'." profile)
(many "%d obsolete package outputs in profile '%s'." count profile))
(generation
(0 "No package outputs installed in generation %d of profile '%s'."
val profile)
(1 "A single package output installed in generation %d of profile '%s'."
val profile)
(many "%d package outputs installed in generation %d of profile '%s'."
count val profile))
(generation-diff
guix-message-outputs-by-diff))
(generation
(id
(0 "Generations not found.")
(1 "")
(many "%d generations." count))
(last
(0 "No generations in profile '%s'." profile)
(1 "The last generation of profile '%s'." profile)
(many "%d last generations of profile '%s'." count profile))
(all
(0 "No generations in profile '%s'." profile)
(1 "A single generation available in profile '%s'." profile)
(many "%d generations available in profile '%s'." count profile))
(time
guix-message-generations-by-time))))
(defun guix-message-string-name (name)
"Return a quoted name string."
(concat "'" name "'"))
(defun guix-message-string-entry-type (entry-type &optional plural)
"Return a string denoting an ENTRY-TYPE."
(cl-ecase entry-type
(package
(if plural "packages" "package"))
(output
(if plural "package outputs" "package output"))
(generation
(if plural "generations" "generation"))))
(defun guix-message-string-entries (count entry-type)
"Return a string denoting the COUNT of ENTRY-TYPE entries."
(cl-case count
(0 (concat "No "
(guix-message-string-entry-type
entry-type 'plural)))
(1 (concat "A single "
(guix-message-string-entry-type
entry-type)))
(t (format "%d %s"
count
(guix-message-string-entry-type
entry-type 'plural)))))
(defun guix-message-packages-by-name (entries entry-type names)
"Display a message for packages or outputs searched by NAMES."
(let* ((count (length entries))
(str-beg (guix-message-string-entries count entry-type))
(str-end (if (cdr names)
(concat "matching the following names: "
(mapconcat #'guix-message-string-name
names ", "))
(concat "with name "
(guix-message-string-name (car names))))))
(message "%s %s." str-beg str-end)))
(defun guix-message-generations-by-time (profile entries times)
"Display a message for generations searched by TIMES."
(let* ((count (length entries))
(str-beg (guix-message-string-entries count 'generation))
(time-beg (guix-get-time-string (car times)))
(time-end (guix-get-time-string (cadr times))))
(message (concat "%s of profile '%s'\n"
"matching time period '%s' - '%s'.")
str-beg profile time-beg time-end)))
(defun guix-message-outputs-by-diff (profile entries generations)
"Display a message for outputs searched by GENERATIONS difference."
(let* ((count (length entries))
(str-beg (guix-message-string-entries count 'output))
(gen1 (car generations))
(gen2 (cadr generations)))
(cl-multiple-value-bind (new old str-action)
(if (> gen1 gen2)
(list gen1 gen2 "added to")
(list gen2 gen1 "removed from"))
(message (concat "%s %s generation %d comparing with "
"generation %d of profile '%s'.")
str-beg str-action new old profile))))
(defun guix-result-message (profile entries entry-type
search-type search-vals)
"Display an appropriate message after displaying ENTRIES."
(let* ((type-spec (guix-get-key-val guix-messages
entry-type search-type))
(fun-or-count-spec (car type-spec)))
(if (functionp fun-or-count-spec)
(funcall fun-or-count-spec profile entries search-vals)
(let* ((count (length entries))
(count-key (if (> count 1) 'many count))
(msg-spec (guix-get-key-val type-spec count-key))
(msg (car msg-spec))
(args (cdr msg-spec)))
(mapc (lambda (subst)
(setq args (cl-substitute (cdr subst) (car subst) args)))
`((count . ,count)
(val . ,(car search-vals))
(profile . ,profile)))
(apply #'message msg args)))))
(provide 'guix-messages)
;;; guix-messages.el ends here
+204
View File
@@ -0,0 +1,204 @@
;;; guix-prettify.el --- Prettify Guix store file names
;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;; This file is part of GNU Guix.
;; GNU Guix is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Guix is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; This package provides minor-mode for prettifying Guix store file
;; names — i.e., after enabling `guix-prettify-mode',
;; '/gnu/store/72f54nfp6g1hz873w8z3gfcah0h4nl9p-foo-0.1' names will be
;; replaced with '/gnu/store/…-foo-0.1' in the current buffer. There is
;; also `global-guix-prettify-mode' for global prettifying.
;; To install, add the following to your emacs init file:
;;
;; (add-to-list 'load-path "/path/to/dir-with-guix-prettify")
;; (autoload 'guix-prettify-mode "guix-prettify" nil t)
;; (autoload 'global-guix-prettify-mode "guix-prettify" nil t)
;; If you want to enable/disable composition after "M-x font-lock-mode",
;; use the following setting:
;;
;; (setq font-lock-extra-managed-props
;; (cons 'composition font-lock-extra-managed-props))
;; Credits:
;;
;; Thanks to Ludovic Courtès for the idea of this package.
;;
;; Thanks to the authors of `prettify-symbols-mode' (part of Emacs 24.4)
;; and "pretty-symbols.el" <http://github.com/drothlis/pretty-symbols>
;; for the code. It helped to write this package.
;;; Code:
(defgroup guix-prettify nil
"Prettify Guix store file names."
:prefix "guix-prettify-"
:group 'font-lock
:group 'convenience)
(defcustom guix-prettify-char ?…
"Character used for prettifying."
:type 'character
:group 'guix-prettify)
(defcustom guix-prettify-decompose-force nil
"If non-nil, remove any composition.
By default, after disabling `guix-prettify-mode',
compositions (prettifying names with `guix-prettify-char') are
removed only from strings matching `guix-prettify-regexp', so
that compositions created by other modes are left untouched.
Set this variable to non-nil, if you want to remove any
composition unconditionally (like `prettify-symbols-mode' does).
Most likely it will do no harm and will make the process of
disabling `guix-prettify-mode' a little faster."
:type 'boolean
:group 'guix-prettify)
(defcustom guix-prettify-regexp
(rx "/"
(or "nix" "gnu")
"/store/"
;; Hash-parts do not include "e", "o", "u" and "t". See base32Chars
;; at <https://github.com/NixOS/nix/blob/master/src/libutil/hash.cc>
(group (= 32 (any "0-9" "a-d" "f-n" "p-s" "v-z"))))
"Regexp matching file names for prettifying.
Disable `guix-prettify-mode' before modifying this variable and
make sure to modify `guix-prettify-regexp-group' if needed.
Example of a \"deeper\" prettifying:
(setq guix-prettify-regexp \"store/[[:alnum:]]\\\\\\={32\\\\}\"
guix-prettify-regexp-group 0)
This will transform
'/gnu/store/72f54nfp6g1hz873w8z3gfcah0h4nl9p-foo-0.1' into
'/gnu/…-foo-0.1'"
:type 'regexp
:group 'guix-prettify)
(defcustom guix-prettify-regexp-group 1
"Regexp group in `guix-prettify-regexp' for prettifying."
:type 'integer
:group 'guix-prettify)
(defvar guix-prettify-special-modes
'(guix-info-mode ibuffer-mode)
"List of special modes that support font-locking.
By default, \\[global-guix-prettify-mode] enables prettifying in
all buffers except the ones where `font-lock-defaults' is
nil (see Info node `(elisp) Font Lock Basics'), because it may
break the existing highlighting.
Modes from this list and all derived modes are exceptions
\(`global-guix-prettify-mode' enables prettifying there).")
(defvar guix-prettify-flush-function
(cond ((fboundp 'font-lock-flush) #'font-lock-flush)
((fboundp 'jit-lock-refontify) #'jit-lock-refontify))
"Function used to refontify buffer.
This function is called without arguments after
enabling/disabling `guix-prettify-mode'. If nil, do nothing.")
(defun guix-prettify-compose ()
"Compose matching region in the current buffer."
(let ((beg (match-beginning guix-prettify-regexp-group))
(end (match-end guix-prettify-regexp-group)))
(compose-region beg end guix-prettify-char 'decompose-region))
;; Return nil because we're not adding any face property.
nil)
(defun guix-prettify-decompose-buffer ()
"Remove file names compositions from the current buffer."
(with-silent-modifications
(let ((inhibit-read-only t))
(if guix-prettify-decompose-force
(remove-text-properties (point-min)
(point-max)
'(composition nil))
(save-excursion
(goto-char (point-min))
(while (re-search-forward guix-prettify-regexp nil t)
(remove-text-properties
(match-beginning guix-prettify-regexp-group)
(match-end guix-prettify-regexp-group)
'(composition nil))))))))
;;;###autoload
(define-minor-mode guix-prettify-mode
"Toggle Guix Prettify mode.
With a prefix argument ARG, enable Guix Prettify mode if ARG is
positive, and disable it otherwise. If called from Lisp, enable
the mode if ARG is omitted or nil.
When Guix Prettify mode is enabled, hash-parts of the Guix store
file names (see `guix-prettify-regexp') are prettified,
i.e. displayed as `guix-prettify-char' character. This mode can
be enabled programmatically using hooks:
(add-hook 'shell-mode-hook 'guix-prettify-mode)
It is possible to enable the mode in any buffer, however not any
buffer's highlighting may survive after adding new elements to
`font-lock-keywords' (see `guix-prettify-special-modes' for
details).
Also you can use `global-guix-prettify-mode' to enable Guix
Prettify mode for all modes that support font-locking."
:init-value nil
:lighter ""
(let ((keywords `((,guix-prettify-regexp
(,guix-prettify-regexp-group
(guix-prettify-compose))))))
(if guix-prettify-mode
;; Turn on.
(font-lock-add-keywords nil keywords)
;; Turn off.
(font-lock-remove-keywords nil keywords)
(guix-prettify-decompose-buffer))
(and guix-prettify-flush-function
(funcall guix-prettify-flush-function))))
(defun guix-prettify-supported-p ()
"Return non-nil, if the mode can be harmlessly enabled in current buffer."
(or font-lock-defaults
(apply #'derived-mode-p guix-prettify-special-modes)))
(defun guix-prettify-turn-on ()
"Enable `guix-prettify-mode' in the current buffer if needed.
See `guix-prettify-special-modes' for details."
(and (not guix-prettify-mode)
(guix-prettify-supported-p)
(guix-prettify-mode)))
;;;###autoload
(define-globalized-minor-mode global-guix-prettify-mode
guix-prettify-mode guix-prettify-turn-on)
;;;###autoload
(defalias 'guix-prettify-global-mode 'global-guix-prettify-mode)
(provide 'guix-prettify)
;;; guix-prettify.el ends here
+175
View File
@@ -0,0 +1,175 @@
;;; guix-utils.el --- General utility functions
;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;; This file is part of GNU Guix.
;; GNU Guix is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Guix is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; This file provides auxiliary general functions for guix.el package.
;;; Code:
(require 'cl-lib)
(defvar guix-true-string "Yes")
(defvar guix-false-string "")
(defvar guix-list-separator ", ")
(defvar guix-time-format "%F %T"
"String used to format time values.
For possible formats, see `format-time-string'.")
(defun guix-get-string (val &optional face)
"Convert VAL into a string and return it.
VAL can be an expression of any type.
If VAL is t/nil, it is replaced with
`guix-true-string'/`guix-false-string'.
If VAL is list, its elements are concatenated using
`guix-list-separator'.
If FACE is non-nil, propertize returned string with this FACE."
(let ((str (cond
((stringp val) val)
((null val) guix-false-string)
((eq t val) guix-true-string)
((numberp val) (number-to-string val))
((listp val) (mapconcat #'guix-get-string
val guix-list-separator))
(t (prin1-to-string val)))))
(if (and val face)
(propertize str 'font-lock-face face)
str)))
(defun guix-get-time-string (seconds)
"Return formatted time string from SECONDS.
Use `guix-time-format'."
(format-time-string guix-time-format (seconds-to-time seconds)))
(defun guix-get-one-line (str)
"Return one-line string from a multi-line STR."
(replace-regexp-in-string "\n" " " str))
(defun guix-format-insert (val &optional face format)
"Convert VAL into a string and insert it at point.
If FACE is non-nil, propertize VAL with FACE.
If FORMAT is non-nil, format VAL with FORMAT."
(let ((str (guix-get-string val face)))
(insert (if format
(format format str)
str))))
(defun guix-mapinsert (function sequence separator)
"Like `mapconcat' but for inserting text.
Apply FUNCTION to each element of SEQUENCE, and insert SEPARATOR
at point between each FUNCTION call."
(when sequence
(funcall function (car sequence))
(mapc (lambda (obj)
(insert separator)
(funcall function obj))
(cdr sequence))))
(defun guix-insert-button (label &optional type &rest properties)
"Make button of TYPE with LABEL and insert it at point.
See `insert-text-button' for the meaning of PROPERTIES."
(if (null label)
(guix-format-insert nil)
(apply #'insert-text-button label
:type (or type 'button)
properties)))
(defun guix-split-insert (val &optional face col separator)
"Convert VAL into a string, split it and insert at point.
If FACE is non-nil, propertize returned string with this FACE.
If COL is non-nil and result string is a one-line string longer
than COL, split it into several short lines.
Separate inserted lines with SEPARATOR."
(if (null val)
(guix-format-insert nil)
(let ((strings (guix-split-string (guix-get-string val) col)))
(guix-mapinsert (lambda (str) (guix-format-insert str face))
strings
(or separator "")))))
(defun guix-split-string (str &optional col)
"Split string STR by lines and return list of result strings.
If COL is non-nil and STR is a one-line string longer than COL,
split it into several short lines."
(let ((strings (split-string str "\n *")))
(if (and col
(null (cdr strings)) ; if not multi-line
(> (length str) col))
(split-string (guix-get-filled-string str col) "\n")
strings)))
(defun guix-get-filled-string (str col)
"Return string by filling STR to column COL."
(with-temp-buffer
(insert str)
(let ((fill-column col))
(fill-region (point-min) (point-max)))
(buffer-string)))
(defun guix-completing-read-multiple (prompt table &optional predicate
require-match initial-input
hist def inherit-input-method)
"Same as `completing-read-multiple' but remove duplicates in result."
(cl-remove-duplicates
(completing-read-multiple prompt table predicate
require-match initial-input
hist def inherit-input-method)
:test #'string=))
(declare-function org-read-date "org" t)
(defun guix-read-date (prompt)
"Prompt for a date or time using `org-read-date'.
Return time value."
(require 'org)
(org-read-date nil t nil prompt))
(defun guix-get-key-val (alist &rest keys)
"Return value from ALIST by KEYS.
ALIST is alist of alists of alists ... which can be consecutively
accessed with KEYS."
(let ((val alist))
(dolist (key keys val)
(setq val (cdr (assq key val))))))
(defun guix-find-file (file)
"Find FILE if it exists."
(if (file-exists-p file)
(find-file file)
(message "File '%s' does not exist." file)))
;;; Diff
(defvar guix-diff-switches "-u"
"A string or list of strings specifying switches to be passed to diff.")
(defun guix-diff (old new &optional switches no-async)
"Same as `diff', but use `guix-diff-switches' as default."
(diff old new (or switches guix-diff-switches) no-async))
(provide 'guix-utils)
;;; guix-utils.el ends here
+198
View File
@@ -0,0 +1,198 @@
;;; guix.el --- Interface for GNU Guix package manager
;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;; Package-Requires: ((geiser "0.3"))
;; Keywords: tools
;; This file is part of GNU Guix.
;; GNU Guix is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Guix is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; This package provides an interface for searching, listing and getting
;; information about Guix packages and generations; and for
;; installing/upgrading/removing packages.
;;; Code:
(require 'guix-base)
(require 'guix-list)
(require 'guix-info)
(require 'guix-utils)
(defgroup guix nil
"Interface for Guix package manager."
:prefix "guix-"
:group 'external)
(defcustom guix-list-single-package nil
"If non-nil, list a package even if it is the only matching result.
If nil, show a single package in the info buffer."
:type 'boolean
:group 'guix)
(defvar guix-search-params '(name synopsis description)
"Default list of package parameters for searching by regexp.")
(defvar guix-search-history nil
"A history of minibuffer prompts.")
(defun guix-get-show-packages (profile search-type &rest search-vals)
"Search for packages and show results.
If PROFILE is nil, use `guix-current-profile'.
See `guix-get-entries' for the meaning of SEARCH-TYPE and
SEARCH-VALS.
Results are displayed in the list buffer, unless a single package
is found and `guix-list-single-package' is nil."
(or profile (setq profile guix-current-profile))
(let ((packages (guix-get-entries profile guix-package-list-type
search-type search-vals
(guix-get-params-for-receiving
'list guix-package-list-type))))
(if (or guix-list-single-package
(cdr packages))
(guix-set-buffer profile packages 'list guix-package-list-type
search-type search-vals)
(let ((packages (guix-get-entries profile guix-package-info-type
search-type search-vals
(guix-get-params-for-receiving
'info guix-package-info-type))))
(guix-set-buffer profile packages 'info guix-package-info-type
search-type search-vals)))))
(defun guix-get-show-generations (profile search-type &rest search-vals)
"Search for generations and show results.
If PROFILE is nil, use `guix-current-profile'.
See `guix-get-entries' for the meaning of SEARCH-TYPE and
SEARCH-VALS."
(apply #'guix-get-show-entries
(or profile guix-current-profile)
'list 'generation search-type search-vals))
;;;###autoload
(defun guix-search-by-name (name &optional profile)
"Search for Guix packages by NAME.
NAME is a string with name specification. It may optionally contain
a version number. Examples: \"guile\", \"guile-2.0.11\".
If PROFILE is nil, use `guix-current-profile'.
Interactively with prefix, prompt for PROFILE."
(interactive
(list (read-string "Package name: " nil 'guix-search-history)
(and current-prefix-arg
(guix-profile-prompt))))
(guix-get-show-packages profile 'name name))
;;;###autoload
(defun guix-search-by-regexp (regexp &optional params profile)
"Search for Guix packages by REGEXP.
PARAMS are package parameters that should be searched.
If PARAMS are not specified, use `guix-search-params'.
If PROFILE is nil, use `guix-current-profile'.
Interactively with prefix, prompt for PROFILE."
(interactive
(list (read-regexp "Regexp: " nil 'guix-search-history)
nil
(and current-prefix-arg
(guix-profile-prompt))))
(guix-get-show-packages profile 'regexp regexp
(or params guix-search-params)))
;;;###autoload
(defun guix-installed-packages (&optional profile)
"Display information about installed Guix packages.
If PROFILE is nil, use `guix-current-profile'.
Interactively with prefix, prompt for PROFILE."
(interactive
(list (and current-prefix-arg
(guix-profile-prompt))))
(guix-get-show-packages profile 'installed))
;;;###autoload
(defun guix-obsolete-packages (&optional profile)
"Display information about obsolete Guix packages.
If PROFILE is nil, use `guix-current-profile'.
Interactively with prefix, prompt for PROFILE."
(interactive
(list (and current-prefix-arg
(guix-profile-prompt))))
(guix-get-show-packages profile 'obsolete))
;;;###autoload
(defun guix-all-available-packages (&optional profile)
"Display information about all available Guix packages.
If PROFILE is nil, use `guix-current-profile'.
Interactively with prefix, prompt for PROFILE."
(interactive
(list (and current-prefix-arg
(guix-profile-prompt))))
(guix-get-show-packages profile 'all-available))
;;;###autoload
(defun guix-newest-available-packages (&optional profile)
"Display information about the newest available Guix packages.
If PROFILE is nil, use `guix-current-profile'.
Interactively with prefix, prompt for PROFILE."
(interactive
(list (and current-prefix-arg
(guix-profile-prompt))))
(guix-get-show-packages profile 'newest-available))
;;;###autoload
(defun guix-generations (&optional profile)
"Display information about all generations.
If PROFILE is nil, use `guix-current-profile'.
Interactively with prefix, prompt for PROFILE."
(interactive
(list (and current-prefix-arg
(guix-profile-prompt))))
(guix-get-show-generations profile 'all))
;;;###autoload
(defun guix-last-generations (number &optional profile)
"Display information about last NUMBER generations.
If PROFILE is nil, use `guix-current-profile'.
Interactively with prefix, prompt for PROFILE."
(interactive
(list (read-number "The number of last generations: ")
(and current-prefix-arg
(guix-profile-prompt))))
(guix-get-show-generations profile 'last number))
;;;###autoload
(defun guix-generations-by-time (from to &optional profile)
"Display information about generations created between FROM and TO.
FROM and TO should be time values.
If PROFILE is nil, use `guix-current-profile'.
Interactively with prefix, prompt for PROFILE."
(interactive
(list (guix-read-date "Find generations (from): ")
(guix-read-date "Find generations (to): ")
(and current-prefix-arg
(guix-profile-prompt))))
(guix-get-show-generations profile 'time
(float-time from)
(float-time to)))
(provide 'guix)
;;; guix.el ends here
+269 -38
View File
@@ -1,6 +1,7 @@
# GNU Guix --- Functional package management for GNU
# Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2013 Andreas Enge <andreas@enge.fr>
# Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
# Copyright © 2013, 2014 Mark H Weaver <mhw@netris.org>
#
# This file is part of GNU Guix.
#
@@ -21,205 +22,423 @@
# binaries.
GNU_SYSTEM_MODULES = \
gnu.scm \
gnu/artwork.scm \
gnu/packages.scm \
gnu/packages/abiword.scm \
gnu/packages/acct.scm \
gnu/packages/acl.scm \
gnu/packages/admin.scm \
gnu/packages/adns.scm \
gnu/packages/algebra.scm \
gnu/packages/aidc.scm \
gnu/packages/apl.scm \
gnu/packages/apr.scm \
gnu/packages/asciidoc.scm \
gnu/packages/aspell.scm \
gnu/packages/attr.scm \
gnu/packages/autogen.scm \
gnu/packages/autotools.scm \
gnu/packages/avahi.scm \
gnu/packages/backup.scm \
gnu/packages/base.scm \
gnu/packages/bash.scm \
gnu/packages/bdb.scm \
gnu/packages/bdw-gc.scm \
gnu/packages/bittorrent.scm \
gnu/packages/bison.scm \
gnu/packages/boost.scm \
gnu/packages/bootstrap.scm \
gnu/packages/busybox.scm \
gnu/packages/calcurse.scm \
gnu/packages/ccache.scm \
gnu/packages/cdrom.scm \
gnu/packages/cflow.scm \
gnu/packages/check.scm \
gnu/packages/cmake.scm \
gnu/packages/commencement.scm \
gnu/packages/compression.scm \
gnu/packages/complexity.scm \
gnu/packages/conkeror.scm \
gnu/packages/cook.scm \
gnu/packages/cpio.scm \
gnu/packages/cppi.scm \
gnu/packages/cross-base.scm \
gnu/packages/crypto.scm \
gnu/packages/cryptsetup.scm \
gnu/packages/curl.scm \
gnu/packages/cursynth.scm \
gnu/packages/cyrus-sasl.scm \
gnu/packages/databases.scm \
gnu/packages/datamash.scm \
gnu/packages/dc.scm \
gnu/packages/dejagnu.scm \
gnu/packages/ddrescue.scm \
gnu/packages/dictionaries.scm \
gnu/packages/disk.scm \
gnu/packages/docbook.scm \
gnu/packages/doxygen.scm \
gnu/packages/dwm.scm \
gnu/packages/ed.scm \
gnu/packages/elf.scm \
gnu/packages/emacs.scm \
gnu/packages/fdisk.scm \
gnu/packages/enchant.scm \
gnu/packages/feh.scm \
gnu/packages/file.scm \
gnu/packages/firmware.scm \
gnu/packages/fish.scm \
gnu/packages/flashing-tools.scm \
gnu/packages/flex.scm \
gnu/packages/fltk.scm \
gnu/packages/fonts.scm \
gnu/packages/fontutils.scm \
gnu/packages/freeipmi.scm \
gnu/packages/ftp.scm \
gnu/packages/fribidi.scm \
gnu/packages/games.scm \
gnu/packages/gawk.scm \
gnu/packages/gcal.scm \
gnu/packages/gcc.scm \
gnu/packages/gd.scm \
gnu/packages/gdb.scm \
gnu/packages/gdbm.scm \
gnu/packages/geeqie.scm \
gnu/packages/gettext.scm \
gnu/packages/ghostscript.scm \
gnu/packages/gimp.scm \
gnu/packages/gkrellm.scm \
gnu/packages/gl.scm \
gnu/packages/glib.scm \
gnu/packages/global.scm \
gnu/packages/gnome.scm \
gnu/packages/gnunet.scm \
gnu/packages/gnupg.scm \
gnu/packages/gnustep.scm \
gnu/packages/gnutls.scm \
gnu/packages/gnuzilla.scm \
gnu/packages/gnu-pw-mgr.scm \
gnu/packages/gperf.scm \
gnu/packages/gprolog.scm \
gnu/packages/gps.scm \
gnu/packages/graphviz.scm \
gnu/packages/groff.scm \
gnu/packages/grub.scm \
gnu/packages/grue-hunter.scm \
gnu/packages/gsasl.scm \
gnu/packages/gstreamer.scm \
gnu/packages/gtk.scm \
gnu/packages/guile.scm \
gnu/packages/guile-wm.scm \
gnu/packages/gv.scm \
gnu/packages/help2man.scm \
gnu/packages/gxmessage.scm \
gnu/packages/hugs.scm \
gnu/packages/hurd.scm \
gnu/packages/icu4c.scm \
gnu/packages/idutils.scm \
gnu/packages/image.scm \
gnu/packages/imagemagick.scm \
gnu/packages/indent.scm \
gnu/packages/inkscape.scm \
gnu/packages/irssi.scm \
gnu/packages/iso-codes.scm \
gnu/packages/jrnl.scm \
gnu/packages/kde.scm \
gnu/packages/ld-wrapper.scm \
gnu/packages/less.scm \
gnu/packages/lesstif.scm \
gnu/packages/libapr.scm \
gnu/packages/libcanberra.scm \
gnu/packages/libdaemon.scm \
gnu/packages/libevent.scm \
gnu/packages/libffi.scm \
gnu/packages/libftdi.scm \
gnu/packages/libidn.scm \
gnu/packages/libjpeg.scm \
gnu/packages/libphidget.scm \
gnu/packages/libpng.scm \
gnu/packages/libsigsegv.scm \
gnu/packages/libtiff.scm \
gnu/packages/libunistring.scm \
gnu/packages/libusb.scm \
gnu/packages/libunwind.scm \
gnu/packages/lightning.scm \
gnu/packages/links.scm \
gnu/packages/linux.scm \
gnu/packages/linux-initrd.scm \
gnu/packages/lisp.scm \
gnu/packages/lout.scm \
gnu/packages/lsh.scm \
gnu/packages/lsof.scm \
gnu/packages/lua.scm \
gnu/packages/lvm.scm \
gnu/packages/lynx.scm \
gnu/packages/m4.scm \
gnu/packages/mailutils.scm \
gnu/packages/man.scm \
gnu/packages/mail.scm \
gnu/packages/make-bootstrap.scm \
gnu/packages/maths.scm \
gnu/packages/mc.scm \
gnu/packages/mcrypt.scm \
gnu/packages/messaging.scm \
gnu/packages/miscfiles.scm \
gnu/packages/mit-krb5.scm \
gnu/packages/moe.scm \
gnu/packages/mpd.scm \
gnu/packages/mp3.scm \
gnu/packages/mpi.scm \
gnu/packages/multiprecision.scm \
gnu/packages/mysql.scm \
gnu/packages/mtools.scm \
gnu/packages/nano.scm \
gnu/packages/ncdu.scm \
gnu/packages/ncurses.scm \
gnu/packages/netpbm.scm \
gnu/packages/nettle.scm \
gnu/packages/node.scm \
gnu/packages/noweb.scm \
gnu/packages/ntp.scm \
gnu/packages/nvi.scm \
gnu/packages/ocaml.scm \
gnu/packages/oggvorbis.scm \
gnu/packages/ocrad.scm \
gnu/packages/onc-rpc.scm \
gnu/packages/openldap.scm \
gnu/packages/openssl.scm \
gnu/packages/parted.scm \
gnu/packages/patchelf.scm \
gnu/packages/orpheus.scm \
gnu/packages/ots.scm \
gnu/packages/package-management.scm \
gnu/packages/parallel.scm \
gnu/packages/patchutils.scm \
gnu/packages/pciutils.scm \
gnu/packages/pcre.scm \
gnu/packages/pdf.scm \
gnu/packages/pem.scm \
gnu/packages/perl.scm \
gnu/packages/photo.scm \
gnu/packages/pkg-config.scm \
gnu/packages/plotutils.scm \
gnu/packages/polkit.scm \
gnu/packages/popt.scm \
gnu/packages/pth.scm \
gnu/packages/pulseaudio.scm \
gnu/packages/pretty-print.scm \
gnu/packages/protobuf.scm \
gnu/packages/python.scm \
gnu/packages/qemu.scm \
gnu/packages/qt.scm \
gnu/packages/ratpoison.scm \
gnu/packages/rdf.scm \
gnu/packages/readline.scm \
gnu/packages/recutils.scm \
gnu/packages/rrdtool.scm \
gnu/packages/rsync.scm \
gnu/packages/ruby.scm \
gnu/packages/rush.scm \
gnu/packages/samba.scm \
gnu/packages/scanner.scm \
gnu/packages/scheme.scm \
gnu/packages/screen.scm \
gnu/packages/scrot.scm \
gnu/packages/sdl.scm \
gnu/packages/search.scm \
gnu/packages/serveez.scm \
gnu/packages/shishi.scm \
gnu/packages/skribilo.scm \
gnu/packages/slim.scm \
gnu/packages/smalltalk.scm \
gnu/packages/sqlite.scm \
gnu/packages/ssh.scm \
gnu/packages/system.scm \
gnu/packages/stalonetray.scm \
gnu/packages/swig.scm \
gnu/packages/synergy.scm \
gnu/packages/tcl.scm \
gnu/packages/tcsh.scm \
gnu/packages/telephony.scm \
gnu/packages/texinfo.scm \
gnu/packages/texlive.scm \
gnu/packages/time.scm \
gnu/packages/tmux.scm \
gnu/packages/tor.scm \
gnu/packages/unclutter.scm \
gnu/packages/unrtf.scm \
gnu/packages/upnp.scm \
gnu/packages/uucp.scm \
gnu/packages/valgrind.scm \
gnu/packages/version-control.scm \
gnu/packages/video.scm \
gnu/packages/vim.scm \
gnu/packages/vpn.scm \
gnu/packages/vtk.scm \
gnu/packages/w3m.scm \
gnu/packages/wdiff.scm \
gnu/packages/web.scm \
gnu/packages/weechat.scm \
gnu/packages/wget.scm \
gnu/packages/which.scm \
gnu/packages/wordnet.scm \
gnu/packages/wv.scm \
gnu/packages/xfig.scm \
gnu/packages/xiph.scm \
gnu/packages/xlockmore.scm \
gnu/packages/xml.scm \
gnu/packages/xnee.scm \
gnu/packages/xorg.scm \
gnu/packages/yasm.scm \
gnu/packages/zile.scm \
gnu/packages/zip.scm \
gnu/system/vm.scm
gnu/packages/zsh.scm \
\
gnu/services.scm \
gnu/services/avahi.scm \
gnu/services/base.scm \
gnu/services/dbus.scm \
gnu/services/dmd.scm \
gnu/services/networking.scm \
gnu/services/ssh.scm \
gnu/services/xorg.scm \
\
gnu/system.scm \
gnu/system/file-systems.scm \
gnu/system/grub.scm \
gnu/system/install.scm \
gnu/system/linux.scm \
gnu/system/linux-initrd.scm \
gnu/system/shadow.scm \
gnu/system/vm.scm \
\
gnu/build/activation.scm \
gnu/build/file-systems.scm \
gnu/build/install.scm \
gnu/build/linux-boot.scm \
gnu/build/linux-initrd.scm \
gnu/build/vm.scm
patchdir = $(guilemoduledir)/gnu/packages/patches
dist_patch_DATA = \
gnu/packages/patches/abiword-explictly-cast-bools.patch \
gnu/packages/patches/abiword-link-plugins-against-backend.patch \
gnu/packages/patches/abiword-no-include-glib-internal-headers.patch \
gnu/packages/patches/abiword-pass-no-undefined-to-linker.patch \
gnu/packages/patches/abiword-use-proper-png-api.patch \
gnu/packages/patches/abiword-wmf-version-lookup-fix.patch \
gnu/packages/patches/alsa-lib-mips-atomic-fix.patch \
gnu/packages/patches/apr-skip-getservbyname-test.patch \
gnu/packages/patches/ath9k-htc-firmware-binutils.patch \
gnu/packages/patches/ath9k-htc-firmware-gcc.patch \
gnu/packages/patches/ath9k-htc-firmware-objcopy.patch \
gnu/packages/patches/automake-skip-amhello-tests.patch \
gnu/packages/patches/avahi-localstatedir.patch \
gnu/packages/patches/avrdude-fix-libusb.patch \
gnu/packages/patches/bigloo-gc-shebangs.patch \
gnu/packages/patches/binutils-ld-new-dtags.patch \
gnu/packages/patches/binutils-loongson-workaround.patch \
gnu/packages/patches/cdparanoia-fpic.patch \
gnu/packages/patches/clucene-pkgconfig.patch \
gnu/packages/patches/cmake-fix-tests.patch \
gnu/packages/patches/coreutils-dummy-man.patch \
gnu/packages/patches/cpio-gets-undeclared.patch \
gnu/packages/patches/cssc-gets-undeclared.patch \
gnu/packages/patches/cssc-missing-include.patch \
gnu/packages/patches/cursynth-wave-rand.patch \
gnu/packages/patches/dbus-localstatedir.patch \
gnu/packages/patches/diffutils-gets-undeclared.patch \
gnu/packages/patches/emacs-configure-sh.patch \
gnu/packages/patches/dfu-programmer-fix-libusb.patch \
gnu/packages/patches/doxygen-test.patch \
gnu/packages/patches/doxygen-tmake.patch \
gnu/packages/patches/duplicity-piped-password.patch \
gnu/packages/patches/duplicity-test_selection-tmp.patch \
gnu/packages/patches/eudev-rules-directory.patch \
gnu/packages/patches/file-CVE-2014-3587.patch \
gnu/packages/patches/findutils-absolute-paths.patch \
gnu/packages/patches/flac-fix-memcmp-not-declared.patch \
gnu/packages/patches/flashrom-use-libftdi1.patch \
gnu/packages/patches/flex-bison-tests.patch \
gnu/packages/patches/gawk-shell.patch \
gnu/packages/patches/gcc-cross-environment-variables.patch \
gnu/packages/patches/gcc-fix-pr61801.patch \
gnu/packages/patches/gd-mips64-deplibs-fix.patch \
gnu/packages/patches/glib-tests-desktop.patch \
gnu/packages/patches/glib-tests-homedir.patch \
gnu/packages/patches/glib-tests-prlimit.patch \
gnu/packages/patches/glib-tests-timer.patch \
gnu/packages/patches/glibc-bootstrap-system.patch \
gnu/packages/patches/glibc-no-ld-so-cache.patch \
gnu/packages/patches/gnutls-fix-tests-on-32-bits-system.patch \
gnu/packages/patches/glibc-ldd-x86_64.patch \
gnu/packages/patches/gnunet-fix-scheduler.patch \
gnu/packages/patches/gnunet-fix-tests.patch \
gnu/packages/patches/gobject-introspection-cc.patch \
gnu/packages/patches/grub-gets-undeclared.patch \
gnu/packages/patches/gstreamer-0.10-bison3.patch \
gnu/packages/patches/gstreamer-0.10-silly-test.patch \
gnu/packages/patches/guile-1.8-cpp-4.5.patch \
gnu/packages/patches/guile-default-utf8.patch \
gnu/packages/patches/guile-linux-syscalls.patch \
gnu/packages/patches/guile-relocatable.patch \
gnu/packages/patches/libapr-skip-getservbyname-test.patch \
gnu/packages/patches/guix-test-networking.patch \
gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \
gnu/packages/patches/hop-bigloo-4.0b.patch \
gnu/packages/patches/icu4c-test-date-format.patch \
gnu/packages/patches/inkscape-stray-comma.patch \
gnu/packages/patches/jbig2dec-ignore-testtest.patch \
gnu/packages/patches/kmod-module-directory.patch \
gnu/packages/patches/libarchive-CVE-2013-0211.patch \
gnu/packages/patches/libarchive-fix-lzo-test-case.patch \
gnu/packages/patches/libarchive-mtree-filename-length-fix.patch \
gnu/packages/patches/libbonobo-activation-test-race.patch \
gnu/packages/patches/libevent-dns-tests.patch \
gnu/packages/patches/liboop-mips64-deplibs-fix.patch \
gnu/packages/patches/libmad-mips-newgcc.patch \
gnu/packages/patches/libtheora-config-guess.patch \
gnu/packages/patches/libtool-skip-tests.patch \
gnu/packages/patches/libtool-skip-tests-for-mips.patch \
gnu/packages/patches/libssh-CVE-2014-0017.patch \
gnu/packages/patches/lm-sensors-hwmon-attrs.patch \
gnu/packages/patches/luit-posix.patch \
gnu/packages/patches/m4-gets-undeclared.patch \
gnu/packages/patches/m4-readlink-EINVAL.patch \
gnu/packages/patches/m4-s_isdir.patch \
gnu/packages/patches/make-impure-dirs.patch \
gnu/packages/patches/mc-fix-ncurses-build.patch \
gnu/packages/patches/mcron-install.patch \
gnu/packages/patches/mhash-keygen-test-segfault.patch \
gnu/packages/patches/minetest-subgame-env-var.patch \
gnu/packages/patches/mit-krb5-init-fix.patch \
gnu/packages/patches/mpc123-initialize-ao.patch \
gnu/packages/patches/module-init-tools-moduledir.patch \
gnu/packages/patches/mupdf-buildsystem-fix.patch \
gnu/packages/patches/net-tools-bitrot.patch \
gnu/packages/patches/nvi-assume-preserve-path.patch \
gnu/packages/patches/orpheus-cast-errors-and-includes.patch \
gnu/packages/patches/ots-no-include-missing-file.patch \
gnu/packages/patches/patchelf-page-size.patch \
gnu/packages/patches/patchutils-xfail-gendiff-tests.patch \
gnu/packages/patches/perl-no-sys-dirs.patch \
gnu/packages/patches/perl-tk-x11-discover.patch \
gnu/packages/patches/petsc-fix-threadcomm.patch \
gnu/packages/patches/pingus-sdl-libs-config.patch \
gnu/packages/patches/plotutils-libpng-jmpbuf.patch \
gnu/packages/patches/polkit-drop-test.patch \
gnu/packages/patches/procps-make-3.82.patch \
gnu/packages/patches/python-fix-dbm.patch \
gnu/packages/patches/qemu-multiple-smb-shares.patch \
gnu/packages/patches/pulseaudio-CVE-2014-3970.patch \
gnu/packages/patches/pulseaudio-fix-mult-test.patch \
gnu/packages/patches/pybugz-encode-error.patch \
gnu/packages/patches/pybugz-stty.patch \
gnu/packages/patches/python-fix-tests.patch \
gnu/packages/patches/python-libffi-mips-n32-fix.patch \
gnu/packages/patches/qt4-tests.patch \
gnu/packages/patches/ratpoison-shell.patch \
gnu/packages/patches/readline-link-ncurses.patch \
gnu/packages/patches/ripperx-libm.patch \
gnu/packages/patches/scheme48-tests.patch \
gnu/packages/patches/tar-gets-undeclared.patch \
gnu/packages/patches/scotch-test-threading.patch \
gnu/packages/patches/slim-session.patch \
gnu/packages/patches/slim-config.patch \
gnu/packages/patches/slim-sigusr1.patch \
gnu/packages/patches/soprano-find-clucene.patch \
gnu/packages/patches/source-highlight-regexrange-test.patch \
gnu/packages/patches/sqlite-large-page-size-fix.patch \
gnu/packages/patches/superlu-dist-scotchmetis.patch \
gnu/packages/patches/tcsh-fix-autotest.patch \
gnu/packages/patches/teckit-cstdio.patch \
gnu/packages/patches/texi2html-document-encoding.patch \
gnu/packages/patches/texi2html-i18n.patch \
gnu/packages/patches/udev-gir-libtool.patch \
gnu/packages/patches/util-linux-perl.patch \
gnu/packages/patches/vpnc-script.patch \
gnu/packages/patches/w3m-fix-compile.patch \
gnu/packages/patches/xpdf-constchar.patch
gnu/packages/patches/xf86-input-synaptics-glibc-2.20.patch \
gnu/packages/patches/xmodmap-asprintf.patch
bootstrapdir = $(guilemoduledir)/gnu/packages/bootstrap
bootstrap_x86_64_linuxdir = $(bootstrapdir)/x86_64-linux
bootstrap_i686_linuxdir = $(bootstrapdir)/i686-linux
bootstrap_mips64el_linuxdir = $(bootstrapdir)/mips64el-linux
dist_bootstrap_x86_64_linux_DATA = \
gnu/packages/bootstrap/x86_64-linux/bash \
@@ -233,12 +452,20 @@ dist_bootstrap_i686_linux_DATA = \
gnu/packages/bootstrap/i686-linux/tar \
gnu/packages/bootstrap/i686-linux/xz
dist_bootstrap_mips64el_linux_DATA = \
gnu/packages/bootstrap/mips64el-linux/bash \
gnu/packages/bootstrap/mips64el-linux/mkdir \
gnu/packages/bootstrap/mips64el-linux/tar \
gnu/packages/bootstrap/mips64el-linux/xz
# Big bootstrap binaries are not included in the tarball. Instead, they
# are downloaded.
nodist_bootstrap_x86_64_linux_DATA = \
gnu/packages/bootstrap/x86_64-linux/guile-2.0.7.tar.xz
gnu/packages/bootstrap/x86_64-linux/guile-2.0.9.tar.xz
nodist_bootstrap_i686_linux_DATA = \
gnu/packages/bootstrap/i686-linux/guile-2.0.7.tar.xz
gnu/packages/bootstrap/i686-linux/guile-2.0.9.tar.xz
nodist_bootstrap_mips64el_linux_DATA = \
gnu/packages/bootstrap/mips64el-linux/guile-2.0.9.tar.xz
# Those files must remain executable, so they remain executable once
# imported into the store.
@@ -247,7 +474,8 @@ install-data-hook:
DISTCLEANFILES = \
$(nodist_bootstrap_x86_64_linux_DATA) \
$(nodist_bootstrap_i686_linux_DATA)
$(nodist_bootstrap_i686_linux_DATA) \
$(nodist_bootstrap_mips64el_linux_DATA)
# Method to download a file from an external source.
DOWNLOAD_FILE = \
@@ -255,9 +483,12 @@ DOWNLOAD_FILE = \
$(GUILE) --no-auto-compile -L "$(top_builddir)" -L "$(top_srcdir)" \
"$(top_srcdir)/build-aux/download.scm"
gnu/packages/bootstrap/x86_64-linux/guile-2.0.7.tar.xz:
gnu/packages/bootstrap/x86_64-linux/guile-2.0.9.tar.xz:
$(MKDIR_P) `dirname "$@"`
$(DOWNLOAD_FILE) "$@" "bc43210dcd146d242bef4d354b0aeac12c4ef3118c07502d17ffa8d49e15aa2c"
gnu/packages/bootstrap/i686-linux/guile-2.0.7.tar.xz:
$(DOWNLOAD_FILE) "$@" "037b103522a2d0d7d69c7ffd8de683dfe5bb4b59c1fafd70b4ffd397fd2f57f0"
gnu/packages/bootstrap/i686-linux/guile-2.0.9.tar.xz:
$(MKDIR_P) `dirname "$@"`
$(DOWNLOAD_FILE) "$@" "f9a7c6f4c556eaafa2a69bcf07d4ffbb6682ea831d4c9da9ba095aca3ccd217c"
$(DOWNLOAD_FILE) "$@" "b757cd46bf13ecac83fb8e955fb50096ac2d17bb610ca8eb816f29302a00a846"
gnu/packages/bootstrap/mips64el-linux/guile-2.0.9.tar.xz:
$(MKDIR_P) `dirname "$@"`
$(DOWNLOAD_FILE) "$@" "994680f0001346864aa2c2cc5110f380ee7518dcd701c614291682b8e948f73b"
+47
View File
@@ -0,0 +1,47 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu))
;;; Commentary:
;;;
;;; This composite module re-exports core parts the (gnu …) public modules.
;;;
;;; Code:
(eval-when (eval load compile)
(begin
(define %public-modules
'((gnu system)
(gnu system file-systems)
(gnu system grub) ; 'grub-configuration'
(gnu system linux) ; 'base-pam-services'
(gnu system shadow) ; 'user-account'
(gnu system linux-initrd)
(gnu services)
(gnu services base)
(gnu packages)
(gnu packages base)
(guix gexp))) ; so gexps can be used
(for-each (let ((i (module-public-interface (current-module))))
(lambda (m)
(module-use! i (resolve-interface m))))
%public-modules)))
;;; gnu.scm ends here
+40
View File
@@ -0,0 +1,40 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu artwork)
#:use-module (guix packages)
#:use-module (guix git-download)
#:export (%artwork-repository))
;;; Commentary:
;;;
;;; Common place for the definition of the Guix artwork repository.
;;;
;;; Code:
(define %artwork-repository
(origin
(method git-fetch)
(uri (git-reference
(url "git://git.savannah.gnu.org/guix/guix-artwork.git")
(commit "94e6111")))
(sha256
(base32
"0aax85mygpq4lbyn8sriafikyg54yss3lisin6pwkvlvp23a3v1j"))))
;;; artwork.scm ends here
+296
View File
@@ -0,0 +1,296 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu build activation)
#:use-module (gnu build linux-boot)
#:use-module (guix build utils)
#:use-module (ice-9 ftw)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:export (activate-users+groups
activate-etc
activate-setuid-programs
activate-/bin/sh
activate-modprobe
activate-firmware
activate-current-system))
;;; Commentary:
;;;
;;; This module provides "activation" helpers. Activation is the process that
;;; consists in setting up system-wide files and directories so that an
;;; 'operating-system' configuration becomes active.
;;;
;;; Code:
(define* (add-group name #:key gid password system?
(log-port (current-error-port)))
"Add NAME as a user group, with the given numeric GID if specified."
;; Use 'groupadd' from the Shadow package.
(format log-port "adding group '~a'...~%" name)
(let ((args `(,@(if gid `("-g" ,(number->string gid)) '())
,@(if password `("-p" ,password) '())
,@(if system? `("--system") '())
,name)))
(zero? (apply system* "groupadd" args))))
(define* (add-user name group
#:key uid comment home shell password system?
(supplementary-groups '())
(log-port (current-error-port)))
"Create an account for user NAME part of GROUP, with the specified
properties. Return #t on success."
(format log-port "adding user '~a'...~%" name)
(if (and uid (zero? uid))
;; 'useradd' fails with "Cannot determine your user name" if the root
;; account doesn't exist. Thus, for bootstrapping purposes, create that
;; one manually.
(begin
(call-with-output-file "/etc/shadow"
(cut format <> "~a::::::::~%" name))
(call-with-output-file "/etc/passwd"
(cut format <> "~a:x:~a:~a:~a:~a:~a~%"
name "0" "0" comment home shell))
(chmod "/etc/shadow" #o600)
#t)
;; Use 'useradd' from the Shadow package.
(let ((args `(,@(if uid `("-u" ,(number->string uid)) '())
"-g" ,(if (number? group) (number->string group) group)
,@(if (pair? supplementary-groups)
`("-G" ,(string-join supplementary-groups ","))
'())
,@(if comment `("-c" ,comment) '())
,@(if home
(if (file-exists? home)
`("-d" ,home) ; avoid warning from 'useradd'
`("-d" ,home "--create-home"))
'())
,@(if shell `("-s" ,shell) '())
,@(if password `("-p" ,password) '())
,@(if system? '("--system") '())
,name)))
(zero? (apply system* "useradd" args)))))
(define* (modify-user name group
#:key uid comment home shell password system?
(supplementary-groups '())
(log-port (current-error-port)))
"Modify user account NAME to have all the given settings."
;; Use 'usermod' from the Shadow package.
(let ((args `(,@(if uid `("-u" ,(number->string uid)) '())
"-g" ,(if (number? group) (number->string group) group)
,@(if (pair? supplementary-groups)
`("-G" ,(string-join supplementary-groups ","))
'())
,@(if comment `("-c" ,comment) '())
;; Don't use '--move-home', so ignore HOME.
,@(if shell `("-s" ,shell) '())
,name)))
(zero? (apply system* "usermod" args))))
(define* (ensure-user name group
#:key uid comment home shell password system?
(supplementary-groups '())
(log-port (current-error-port))
#:rest rest)
"Make sure user NAME exists and has the relevant settings."
(if (false-if-exception (getpwnam name))
(apply modify-user name group rest)
(apply add-user name group rest)))
(define (activate-users+groups users groups)
"Make sure the accounts listed in USERS and the user groups listed in GROUPS
are all available.
Each item in USERS is a list of all the characteristics of a user account;
each item in GROUPS is a tuple with the group name, group password or #f, and
numeric gid or #f."
(define (touch file)
(close-port (open-file file "a0b")))
(define activate-user
(match-lambda
((name uid group supplementary-groups comment home shell password system?)
(let ((profile-dir (string-append "/var/guix/profiles/per-user/"
name)))
(ensure-user name group
#:uid uid
#:system? system?
#:supplementary-groups supplementary-groups
#:comment comment
#:home home
#:shell shell
#:password password)
(unless system?
;; Create the profile directory for the new account.
(let ((pw (getpwnam name)))
(mkdir-p profile-dir)
(chown profile-dir (passwd:uid pw) (passwd:gid pw))))))))
;; 'groupadd' aborts if the file doesn't already exist.
(touch "/etc/group")
;; Create the root account so we can use 'useradd' and 'groupadd'.
(activate-user (find (match-lambda
((name (? zero?) _ ...) #t)
(_ #f))
users))
;; Then create the groups.
(for-each (match-lambda
((name password gid system?)
(unless (false-if-exception (getgrnam name))
(add-group name
#:gid gid #:password password
#:system? system?))))
groups)
;; Finally create the other user accounts.
(for-each activate-user users))
(define (activate-etc etc)
"Install ETC, a directory in the store, as the source of static files for
/etc."
;; /etc is a mixture of static and dynamic settings. Here is where we
;; initialize it from the static part.
(define (rm-f file)
(false-if-exception (delete-file file)))
(format #t "populating /etc from ~a...~%" etc)
(rm-f "/etc/static")
(symlink etc "/etc/static")
(for-each (lambda (file)
(let ((target (string-append "/etc/" file))
(source (string-append "/etc/static/" file)))
(rm-f target)
;; Things such as /etc/sudoers must be regular files, not
;; symlinks; furthermore, they could be modified behind our
;; back---e.g., with 'visudo'. Thus, make a copy instead of
;; symlinking them.
(if (file-is-directory? source)
(symlink source target)
(copy-file source target))
;; XXX: Dirty hack to meet sudo's expectations.
(when (string=? (basename target) "sudoers")
(chmod target #o440))))
(scandir etc
(lambda (file)
(not (member file '("." ".."))))
;; The default is 'string-locale<?', but we don't have
;; it when run from the initrd's statically-linked
;; Guile.
string<?))
;; Prevent ETC from being GC'd.
(rm-f "/var/guix/gcroots/etc-directory")
(symlink etc "/var/guix/gcroots/etc-directory"))
(define %setuid-directory
;; Place where setuid programs are stored.
"/run/setuid-programs")
(define (link-or-copy source target)
"Attempt to make TARGET a hard link to SOURCE; if it fails, fall back to
copy SOURCE to TARGET."
(catch 'system-error
(lambda ()
(link source target))
(lambda args
;; Perhaps SOURCE and TARGET live in a different file system, so copy
;; SOURCE.
(copy-file source target))))
(define (activate-setuid-programs programs)
"Turn PROGRAMS, a list of file names, into setuid programs stored under
%SETUID-DIRECTORY."
(define (make-setuid-program prog)
(let ((target (string-append %setuid-directory
"/" (basename prog))))
(link-or-copy prog target)
(chown target 0 0)
(chmod target #o6555)))
(format #t "setting up setuid programs in '~a'...~%"
%setuid-directory)
(if (file-exists? %setuid-directory)
(for-each (compose delete-file
(cut string-append %setuid-directory "/" <>))
(scandir %setuid-directory
(lambda (file)
(not (member file '("." ".."))))
string<?))
(mkdir-p %setuid-directory))
(for-each make-setuid-program programs))
(define (activate-/bin/sh shell)
"Change /bin/sh to point to SHELL."
(symlink shell "/bin/sh.new")
(rename-file "/bin/sh.new" "/bin/sh"))
(define (activate-modprobe modprobe)
"Tell the kernel to use MODPROBE to load modules."
(call-with-output-file "/proc/sys/kernel/modprobe"
(lambda (port)
(display modprobe port))))
(define (activate-firmware directory)
"Tell the kernel to look for device firmware under DIRECTORY. This
mechanism bypasses udev: it allows Linux to handle firmware loading directly
by itself, without having to resort to a \"user helper\"."
(call-with-output-file "/sys/module/firmware_class/parameters/path"
(lambda (port)
(display directory port))))
(define %current-system
;; The system that is current (a symlink.) This is not necessarily the same
;; as the system we booted (aka. /run/booted-system) because we can re-build
;; a new system configuration and activate it, without rebooting.
"/run/current-system")
(define (boot-time-system)
"Return the '--system' argument passed on the kernel command line."
(find-long-option "--system" (linux-command-line)))
(define* (activate-current-system
#:optional (system (or (getenv "GUIX_NEW_SYSTEM")
(boot-time-system))))
"Atomically make SYSTEM the current system."
;; The 'GUIX_NEW_SYSTEM' environment variable is used as a way for 'guix
;; system reconfigure' to pass the file name of the new system.
(format #t "making '~a' the current system...~%" system)
;; Atomically make SYSTEM current.
(let ((new (string-append %current-system ".new")))
(symlink system new)
(rename-file new %current-system)))
;;; activation.scm ends here
+299
View File
@@ -0,0 +1,299 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu build file-systems)
#:use-module (guix build utils)
#:use-module (rnrs io ports)
#:use-module (rnrs bytevectors)
#:use-module (ice-9 match)
#:use-module (ice-9 rdelim)
#:use-module (system foreign)
#:autoload (system repl repl) (start-repl)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:export (disk-partitions
partition-label-predicate
find-partition-by-label
canonicalize-device-spec
MS_RDONLY
MS_NOSUID
MS_NODEV
MS_NOEXEC
MS_BIND
MS_MOVE
bind-mount
mount-flags->bit-mask
check-file-system
mount-file-system))
;;; Commentary:
;;;
;;; This modules provides tools to deal with disk partitions, and to mount and
;;; check file systems.
;;;
;;; Code:
;; Linux mount flags, from libc's <sys/mount.h>.
(define MS_RDONLY 1)
(define MS_NOSUID 2)
(define MS_NODEV 4)
(define MS_NOEXEC 8)
(define MS_BIND 4096)
(define MS_MOVE 8192)
(define (bind-mount source target)
"Bind-mount SOURCE at TARGET."
(mount source target "" MS_BIND))
(define-syntax %ext2-endianness
;; Endianness of ext2 file systems.
(identifier-syntax (endianness little)))
;; Offset in bytes of interesting parts of an ext2 superblock. See
;; <http://www.nongnu.org/ext2-doc/ext2.html#DEF-SUPERBLOCK>.
;; TODO: Use "packed structs" from Guile-OpenGL or similar.
(define-syntax %ext2-sblock-magic (identifier-syntax 56))
(define-syntax %ext2-sblock-creator-os (identifier-syntax 72))
(define-syntax %ext2-sblock-uuid (identifier-syntax 104))
(define-syntax %ext2-sblock-volume-name (identifier-syntax 120))
(define (read-ext2-superblock device)
"Return the raw contents of DEVICE's ext2 superblock as a bytevector, or #f
if DEVICE does not contain an ext2 file system."
(define %ext2-magic
;; The magic bytes that identify an ext2 file system.
#xef53)
(define superblock-size
;; Size of the interesting part of an ext2 superblock.
264)
(define block
;; The superblock contents.
(make-bytevector superblock-size))
(call-with-input-file device
(lambda (port)
(seek port 1024 SEEK_SET)
;; Note: work around <http://bugs.gnu.org/17466>.
(and (eqv? superblock-size (get-bytevector-n! port block 0
superblock-size))
(let ((magic (bytevector-u16-ref block %ext2-sblock-magic
%ext2-endianness)))
(and (= magic %ext2-magic)
block))))))
(define (ext2-superblock-uuid sblock)
"Return the UUID of ext2 superblock SBLOCK as a 16-byte bytevector."
(let ((uuid (make-bytevector 16)))
(bytevector-copy! sblock %ext2-sblock-uuid uuid 0 16)
uuid))
(define (ext2-superblock-volume-name sblock)
"Return the volume name of SBLOCK as a string of at most 16 characters, or
#f if SBLOCK has no volume name."
(let ((bv (make-bytevector 16)))
(bytevector-copy! sblock %ext2-sblock-volume-name bv 0 16)
;; This is a Latin-1, nul-terminated string.
(let ((bytes (take-while (negate zero?) (bytevector->u8-list bv))))
(if (null? bytes)
#f
(list->string (map integer->char bytes))))))
(define (disk-partitions)
"Return the list of device names corresponding to valid disk partitions."
(define (partition? major minor)
(let ((marker (format #f "/sys/dev/block/~a:~a/partition" major minor)))
(catch 'system-error
(lambda ()
(not (zero? (call-with-input-file marker read))))
(lambda args
(if (= ENOENT (system-error-errno args))
#f
(apply throw args))))))
(call-with-input-file "/proc/partitions"
(lambda (port)
;; Skip the two header lines.
(read-line port)
(read-line port)
;; Read each subsequent line, and extract the last space-separated
;; field.
(let loop ((parts '()))
(let ((line (read-line port)))
(if (eof-object? line)
(reverse parts)
(match (string-tokenize line)
(((= string->number major) (= string->number minor)
blocks name)
(if (partition? major minor)
(loop (cons name parts))
(loop parts))))))))))
(define (partition-label-predicate label)
"Return a procedure that, when applied to a partition name such as \"sda1\",
return #t if that partition's volume name is LABEL."
(lambda (part)
(let* ((device (string-append "/dev/" part))
(sblock (catch 'system-error
(lambda ()
(read-ext2-superblock device))
(lambda args
;; When running on the hand-made /dev,
;; 'disk-partitions' could return partitions for which
;; we have no /dev node. Handle that gracefully.
(if (= ENOENT (system-error-errno args))
(begin
(format (current-error-port)
"warning: device '~a' not found~%"
device)
#f)
(apply throw args))))))
(and sblock
(let ((volume (ext2-superblock-volume-name sblock)))
(and volume
(string=? volume label)))))))
(define (find-partition-by-label label)
"Return the first partition found whose volume name is LABEL, or #f if none
were found."
(and=> (find (partition-label-predicate label)
(disk-partitions))
(cut string-append "/dev/" <>)))
(define* (canonicalize-device-spec spec #:optional (title 'any))
"Return the device name corresponding to SPEC. TITLE is a symbol, one of
the following:
• 'device', in which case SPEC is known to designate a device node--e.g.,
\"/dev/sda1\";
• 'label', in which case SPEC is known to designate a partition label--e.g.,
\"my-root-part\";
• 'any', in which case SPEC can be anything.
"
(define max-trials
;; Number of times we retry partition label resolution, 1 second per
;; trial. Note: somebody reported a delay of 16 seconds (!) before their
;; USB key would be detected by the kernel, so we must wait for at least
;; this long.
20)
(define canonical-title
;; The realm of canonicalization.
(if (eq? title 'any)
(if (string-prefix? "/" spec)
'device
'label)
title))
(case canonical-title
((device)
;; Nothing to do.
spec)
((label)
;; Resolve the label.
(let loop ((count 0))
(let ((device (find-partition-by-label spec)))
(or device
;; Some devices take a bit of time to appear, most notably USB
;; storage devices. Thus, wait for the device to appear.
(if (> count max-trials)
(error "failed to resolve partition label" spec)
(begin
(format #t "waiting for partition '~a' to appear...~%"
spec)
(sleep 1)
(loop (+ 1 count))))))))
;; TODO: Add support for UUIDs.
(else
(error "unknown device title" title))))
(define (check-file-system device type)
"Run a file system check of TYPE on DEVICE."
(define fsck
(string-append "fsck." type))
(let ((status (system* fsck "-v" "-p" "-C" "0" device)))
(match (status:exit-val status)
(0
#t)
(1
(format (current-error-port) "'~a' corrected errors on ~a; continuing~%"
fsck device))
(2
(format (current-error-port) "'~a' corrected errors on ~a; rebooting~%"
fsck device)
(sleep 3)
(reboot))
(code
(format (current-error-port) "'~a' exited with code ~a on ~a; spawning REPL~%"
fsck code device)
(start-repl)))))
(define (mount-flags->bit-mask flags)
"Return the number suitable for the 'flags' argument of 'mount' that
corresponds to the symbols listed in FLAGS."
(let loop ((flags flags))
(match flags
(('read-only rest ...)
(logior MS_RDONLY (loop rest)))
(('bind-mount rest ...)
(logior MS_BIND (loop rest)))
(('no-suid rest ...)
(logior MS_NOSUID (loop rest)))
(('no-dev rest ...)
(logior MS_NODEV (loop rest)))
(('no-exec rest ...)
(logior MS_NOEXEC (loop rest)))
(()
0))))
(define* (mount-file-system spec #:key (root "/root"))
"Mount the file system described by SPEC under ROOT. SPEC must have the
form:
(DEVICE TITLE MOUNT-POINT TYPE (FLAGS ...) OPTIONS CHECK?)
DEVICE, MOUNT-POINT, and TYPE must be strings; OPTIONS can be a string or #f;
FLAGS must be a list of symbols. CHECK? is a Boolean indicating whether to
run a file system check."
(match spec
((source title mount-point type (flags ...) options check?)
(let ((source (canonicalize-device-spec source title))
(mount-point (string-append root "/" mount-point)))
(when check?
(check-file-system source type))
(mkdir-p mount-point)
(mount source mount-point type (mount-flags->bit-mask flags)
(if options
(string->pointer options)
%null-pointer))
;; Update /etc/mtab.
(mkdir-p (string-append root "/etc"))
(let ((port (open-file (string-append root "/etc/mtab") "a")))
(format port "~a ~a ~a ~a 0 0~%"
source mount-point type (or options ""))
(close-port port))))))
;;; file-systems.scm ends here
+155
View File
@@ -0,0 +1,155 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu build install)
#:use-module (guix build utils)
#:use-module (srfi srfi-26)
#:use-module (ice-9 match)
#:export (install-grub
populate-root-file-system
reset-timestamps
register-closure))
;;; Commentary:
;;;
;;; This module supports the installation of the GNU system on a hard disk.
;;; It is meant to be used both in a build environment (in derivations that
;;; build VM images), and on the bare metal (when really installing the
;;; system.)
;;;
;;; Code:
(define* (install-grub grub.cfg device mount-point)
"Install GRUB with GRUB.CFG on DEVICE, which is assumed to be mounted on
MOUNT-POINT."
(let* ((target (string-append mount-point "/boot/grub/grub.cfg"))
(pivot (string-append target ".new")))
(mkdir-p (dirname target))
;; Copy GRUB.CFG instead of just symlinking it since it's not a GC root.
;; Do that atomically.
(copy-file grub.cfg pivot)
(rename-file pivot target)
(unless (zero? (system* "grub-install" "--no-floppy"
"--boot-directory"
(string-append mount-point "/boot")
device))
(error "failed to install GRUB"))))
(define (evaluate-populate-directive directive target)
"Evaluate DIRECTIVE, an sexp describing a file or directory to create under
directory TARGET."
(let loop ((directive directive))
(catch 'system-error
(lambda ()
(match directive
(('directory name)
(mkdir-p (string-append target name)))
(('directory name uid gid)
(let ((dir (string-append target name)))
(mkdir-p dir)
(chown dir uid gid)))
(('directory name uid gid mode)
(loop `(directory ,name ,uid ,gid))
(chmod (string-append target name) mode))
((new '-> old)
(let try ()
(catch 'system-error
(lambda ()
(symlink old (string-append target new)))
(lambda args
;; When doing 'guix system init' on the current '/', some
;; symlinks may already exists. Override them.
(if (= EEXIST (system-error-errno args))
(begin
(delete-file (string-append target new))
(try))
(apply throw args))))))))
(lambda args
;; Usually we can only get here when installing to an existing root,
;; as with 'guix system init foo.scm /'.
(format (current-error-port)
"error: failed to evaluate directive: ~s~%"
directive)
(apply throw args)))))
(define (directives store)
"Return a list of directives to populate the root file system that will host
STORE."
`(;; Note: the store's GID is fixed precisely so we can set it here rather
;; than at activation time.
(directory ,store 0 30000 #o1775)
(directory "/etc")
(directory "/var/log") ; for dmd
(directory "/var/guix/gcroots")
(directory "/var/empty") ; for no-login accounts
(directory "/var/db") ; for dhclient, etc.
(directory "/var/run")
(directory "/run")
(directory "/mnt")
(directory "/var/guix/profiles/per-user/root" 0 0)
;; Link to the initial system generation.
("/var/guix/profiles/system" -> "system-1-link")
("/var/guix/gcroots/booted-system" -> "/run/booted-system")
("/var/guix/gcroots/current-system" -> "/run/current-system")
(directory "/bin")
(directory "/tmp" 0 0 #o1777) ; sticky bit
(directory "/root" 0 0) ; an exception
(directory "/home" 0 0)))
(define (populate-root-file-system system target)
"Make the essential non-store files and directories on TARGET. This
includes /etc, /var, /run, /bin/sh, etc., and all the symlinks to SYSTEM."
(for-each (cut evaluate-populate-directive <> target)
(directives (%store-directory)))
;; Add system generation 1.
(false-if-exception (delete-file "/var/guix/profiles/system-1-link"))
(symlink system
(string-append target "/var/guix/profiles/system-1-link")))
(define (reset-timestamps directory)
"Reset the timestamps of all the files under DIRECTORY, so that they appear
as created and modified at the Epoch."
(display "clearing file timestamps...\n")
(for-each (lambda (file)
(let ((s (lstat file)))
;; XXX: Guile uses libc's 'utime' function (not 'futime'), so
;; the timestamp of symlinks cannot be changed, and there are
;; symlinks here pointing to /gnu/store, which is the host,
;; read-only store.
(unless (eq? (stat:type s) 'symlink)
(utime file 0 0 0 0))))
(find-files directory "")))
(define (register-closure store closure)
"Register CLOSURE in STORE, where STORE is the directory name of the target
store and CLOSURE is the name of a file containing a reference graph as used
by 'guix-register'. As a side effect, this resets timestamps on store files."
(let ((status (system* "guix-register" "--prefix" store
closure)))
(unless (zero? status)
(error "failed to register store items" closure))))
;;; install.scm ends here
+434
View File
@@ -0,0 +1,434 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu build linux-boot)
#:use-module (rnrs io ports)
#:use-module (system repl error-handling)
#:autoload (system repl repl) (start-repl)
#:autoload (system base compile) (compile-file)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (ice-9 match)
#:use-module (ice-9 ftw)
#:use-module (guix build utils)
#:use-module (gnu build file-systems)
#:export (mount-essential-file-systems
linux-command-line
find-long-option
make-essential-device-nodes
configure-qemu-networking
bind-mount
load-linux-module*
device-number
boot-system))
;;; Commentary:
;;;
;;; Utility procedures useful in a Linux initial RAM disk (initrd). Note that
;;; many of these use procedures not yet available in vanilla Guile (`mount',
;;; `load-linux-module', etc.); these are provided by a Guile patch used in
;;; the GNU distribution.
;;;
;;; Code:
(define* (mount-essential-file-systems #:key (root "/"))
"Mount /proc and /sys under ROOT."
(define (scope dir)
(string-append root
(if (string-suffix? "/" root)
""
"/")
dir))
(unless (file-exists? (scope "proc"))
(mkdir (scope "proc")))
(mount "none" (scope "proc") "proc")
(unless (file-exists? (scope "sys"))
(mkdir (scope "sys")))
(mount "none" (scope "sys") "sysfs"))
(define (move-essential-file-systems root)
"Move currently mounted essential file systems to ROOT."
(for-each (lambda (dir)
(let ((target (string-append root dir)))
(unless (file-exists? target)
(mkdir target))
(mount dir target "" MS_MOVE)))
'("/proc" "/sys")))
(define (linux-command-line)
"Return the Linux kernel command line as a list of strings."
(string-tokenize
(call-with-input-file "/proc/cmdline"
get-string-all)))
(define (find-long-option option arguments)
"Find OPTION among ARGUMENTS, where OPTION is something like \"--load\".
Return the value associated with OPTION, or #f on failure."
(let ((opt (string-append option "=")))
(and=> (find (cut string-prefix? opt <>)
arguments)
(lambda (arg)
(substring arg (+ 1 (string-index arg #\=)))))))
(define* (make-disk-device-nodes base major #:optional (minor 0))
"Make the block device nodes around BASE (something like \"/root/dev/sda\")
with the given MAJOR number, starting with MINOR."
(mknod base 'block-special #o644 (device-number major minor))
(let loop ((i 1))
(when (< i 16)
(mknod (string-append base (number->string i))
'block-special #o644 (device-number major (+ minor i)))
(loop (+ i 1)))))
(define* (make-essential-device-nodes #:key (root "/"))
"Make essential device nodes under ROOT/dev."
;; The hand-made udev!
(define (scope dir)
(string-append root
(if (string-suffix? "/" root)
""
"/")
dir))
(unless (file-exists? (scope "dev"))
(mkdir (scope "dev")))
;; Make the device nodes for SCSI disks.
(make-disk-device-nodes (scope "dev/sda") 8)
(make-disk-device-nodes (scope "dev/sdb") 8 16)
(make-disk-device-nodes (scope "dev/sdc") 8 32)
(make-disk-device-nodes (scope "dev/sdd") 8 48)
;; SCSI CD-ROM devices (aka. "/dev/sr0" etc.).
(mknod (scope "dev/scd0") 'block-special #o644 (device-number 11 0))
(mknod (scope "dev/scd1") 'block-special #o644 (device-number 11 1))
;; The virtio (para-virtualized) block devices, as supported by QEMU/KVM.
(make-disk-device-nodes (scope "dev/vda") 252)
;; Memory (used by Xorg's VESA driver.)
(mknod (scope "dev/mem") 'char-special #o640 (device-number 1 1))
(mknod (scope "dev/kmem") 'char-special #o640 (device-number 1 2))
;; Inputs (used by Xorg.)
(unless (file-exists? (scope "dev/input"))
(mkdir (scope "dev/input")))
(mknod (scope "dev/input/mice") 'char-special #o640 (device-number 13 63))
(mknod (scope "dev/input/mouse0") 'char-special #o640 (device-number 13 32))
(mknod (scope "dev/input/event0") 'char-special #o640 (device-number 13 64))
;; System console. This node is magically created by the kernel on the
;; initrd's root, so don't try to create it in that case.
(unless (string=? root "/")
(mknod (scope "dev/console") 'char-special #o600
(device-number 5 1)))
;; TTYs.
(mknod (scope "dev/tty") 'char-special #o600
(device-number 5 0))
(chmod (scope "dev/tty") #o666)
(let loop ((n 0))
(and (< n 50)
(let ((name (format #f "dev/tty~a" n)))
(mknod (scope name) 'char-special #o600
(device-number 4 n))
(loop (+ 1 n)))))
;; Serial line.
(mknod (scope "dev/ttyS0") 'char-special #o660
(device-number 4 64))
;; Pseudo ttys.
(mknod (scope "dev/ptmx") 'char-special #o666
(device-number 5 2))
(chmod (scope "dev/ptmx") #o666)
;; Create /dev/pts; it will be mounted later, at boot time.
(unless (file-exists? (scope "dev/pts"))
(mkdir (scope "dev/pts")))
;; Rendez-vous point for syslogd.
(mknod (scope "dev/log") 'socket #o666 0)
(mknod (scope "dev/kmsg") 'char-special #o600 (device-number 1 11))
;; Other useful nodes, notably relied on by guix-daemon.
(for-each (match-lambda
((file major minor)
(mknod (scope file) 'char-special #o666
(device-number major minor))
(chmod (scope file) #o666)))
'(("dev/null" 1 3)
("dev/zero" 1 5)
("dev/full" 1 7)
("dev/random" 1 8)
("dev/urandom" 1 9)))
(symlink "/proc/self/fd" (scope "dev/fd"))
(symlink "/proc/self/fd/0" (scope "dev/stdin"))
(symlink "/proc/self/fd/1" (scope "dev/stdout"))
(symlink "/proc/self/fd/2" (scope "dev/stderr"))
;; Loopback devices.
(let loop ((i 0))
(when (< i 8)
(mknod (scope (string-append "dev/loop" (number->string i)))
'block-special #o660
(device-number 7 i))
(loop (+ 1 i))))
;; File systems in user space (FUSE).
(mknod (scope "dev/fuse") 'char-special #o666 (device-number 10 229)))
(define %host-qemu-ipv4-address
(inet-pton AF_INET "10.0.2.10"))
(define* (configure-qemu-networking #:optional (interface "eth0"))
"Setup the INTERFACE network interface and /etc/resolv.conf according to
QEMU's default networking settings (see net/slirp.c in QEMU for default
networking values.) Return #t if INTERFACE is up, #f otherwise."
(display "configuring QEMU networking...\n")
(let* ((sock (socket AF_INET SOCK_STREAM 0))
(address (make-socket-address AF_INET %host-qemu-ipv4-address 0))
(flags (network-interface-flags sock interface)))
(set-network-interface-address sock interface address)
(set-network-interface-flags sock interface (logior flags IFF_UP))
;; Hello! We used to create /etc/resolv.conf here, with "nameserver
;; 10.0.2.3\n". However, with Linux-libre 3.16, we're getting ENOSPC.
;; And since it's actually unnecessary, it's gone.
(logand (network-interface-flags sock interface) IFF_UP)))
(define (load-linux-module* file)
"Load Linux module from FILE, the name of a `.ko' file."
(define (slurp module)
;; TODO: Use 'mmap' to reduce memory usage.
(call-with-input-file file get-bytevector-all))
(load-linux-module (slurp file)))
(define (device-number major minor)
"Return the device number for the device with MAJOR and MINOR, for use as
the last argument of `mknod'."
(+ (* major 256) minor))
(define (pidof program)
"Return the PID of the first presumed instance of PROGRAM."
(let ((program (basename program)))
(find (lambda (pid)
(let ((exe (format #f "/proc/~a/exe" pid)))
(and=> (false-if-exception (readlink exe))
(compose (cut string=? program <>) basename))))
(filter-map string->number (scandir "/proc")))))
(define* (mount-root-file-system root type
#:key volatile-root? (unionfs "unionfs"))
"Mount the root file system of type TYPE at device ROOT. If VOLATILE-ROOT?
is true, mount ROOT read-only and make it a union with a writable tmpfs using
UNIONFS."
(define (mark-as-not-killable pid)
;; Tell the 'user-processes' dmd service that PID must be kept alive when
;; shutting down.
(mkdir-p "/root/etc/dmd")
(let ((port (open-file "/root/etc/dmd/do-not-kill" "a")))
(chmod port #o600)
(write pid port)
(newline port)
(close-port port)))
(catch #t
(lambda ()
(if volatile-root?
(begin
(mkdir-p "/real-root")
(mount root "/real-root" type MS_RDONLY)
(mkdir-p "/rw-root")
(mount "none" "/rw-root" "tmpfs")
;; We want read-write /dev nodes.
(make-essential-device-nodes #:root "/rw-root")
;; Make /root a union of the tmpfs and the actual root. Use
;; 'max_files' to set a high RLIMIT_NOFILE for the unionfs process
;; itself. Failing to do that, we quickly run out of file
;; descriptors; see <http://bugs.gnu.org/17827>.
(unless (zero? (system* unionfs "-o"
"cow,allow_other,use_ino,suid,dev,max_files=65536"
"/rw-root=RW:/real-root=RO"
"/root"))
(error "unionfs failed"))
;; Make sure unionfs remains alive till the end. Because
;; 'fuse_daemonize' doesn't tell the PID of the forked daemon, we
;; have to resort to 'pidof' here.
(mark-as-not-killable (pidof unionfs)))
(begin
(check-file-system root type)
(mount root "/root" type))))
(lambda args
(format (current-error-port) "exception while mounting '~a': ~s~%"
root args)
(start-repl)))
(copy-file "/proc/mounts" "/root/etc/mtab"))
(define (switch-root root)
"Switch to ROOT as the root file system, in a way similar to what
util-linux' switch_root(8) does."
(move-essential-file-systems root)
(chdir root)
;; Since we're about to 'rm -rf /', try to make sure we're on an initrd.
;; TODO: Use 'statfs' to check the fs type, like klibc does.
(when (or (not (file-exists? "/init")) (directory-exists? "/home"))
(format (current-error-port)
"The root file system is probably not an initrd; \
bailing out.~%root contents: ~s~%" (scandir "/"))
(force-output (current-error-port))
(exit 1))
;; Delete files from the old root, without crossing mount points (assuming
;; there are no mount points in sub-directories.) That means we're leaving
;; the empty ROOT directory behind us, but that's OK.
(let ((root-device (stat:dev (stat "/"))))
(for-each (lambda (file)
(unless (member file '("." ".."))
(let* ((file (string-append "/" file))
(device (stat:dev (lstat file))))
(when (= device root-device)
(delete-file-recursively file)))))
(scandir "/")))
;; Make ROOT the new root.
(mount root "/" "" MS_MOVE)
(chroot ".")
(chdir "/")
(when (file-exists? "/dev/console")
;; Close the standard file descriptors since they refer to the old
;; /dev/console, and reopen them.
(let ((console (open-file "/dev/console" "r+b0")))
(for-each close-fdes '(0 1 2))
(dup2 (fileno console) 0)
(dup2 (fileno console) 1)
(dup2 (fileno console) 2)
(close-port console))))
(define* (boot-system #:key
(linux-modules '())
qemu-guest-networking?
volatile-root?
pre-mount
(mounts '()))
"This procedure is meant to be called from an initrd. Boot a system by
first loading LINUX-MODULES (a list of absolute file names of '.ko' files),
then setting up QEMU guest networking if QEMU-GUEST-NETWORKING? is true,
calling PRE-MOUNT, mounting the file systems specified in MOUNTS, and finally
booting into the new root if any. The initrd supports kernel command-line
options '--load', '--root', and '--repl'.
Mount the root file system, specified by the '--root' command-line argument,
if any.
MOUNTS must be a list suitable for 'mount-file-system'.
When VOLATILE-ROOT? is true, the root file system is writable but any changes
to it are lost."
(define root-mount-point?
(match-lambda
((device _ "/" _ ...) #t)
(_ #f)))
(define root-fs-type
(or (any (match-lambda
((device _ "/" type _ ...) type)
(_ #f))
mounts)
"ext4"))
(display "Welcome, this is GNU's early boot Guile.\n")
(display "Use '--repl' for an initrd REPL.\n\n")
(call-with-error-handling
(lambda ()
(mount-essential-file-systems)
(let* ((args (linux-command-line))
(to-load (find-long-option "--load" args))
(root (find-long-option "--root" args)))
(when (member "--repl" args)
(start-repl))
(display "loading kernel modules...\n")
(for-each load-linux-module* linux-modules)
(when qemu-guest-networking?
(unless (configure-qemu-networking)
(display "network interface is DOWN\n")))
;; Make /dev nodes.
(make-essential-device-nodes)
;; Prepare the real root file system under /root.
(unless (file-exists? "/root")
(mkdir "/root"))
(if root
(mount-root-file-system (canonicalize-device-spec root)
root-fs-type
#:volatile-root? volatile-root?)
(mount "none" "/root" "tmpfs"))
(unless (file-exists? "/root/dev")
(mkdir "/root/dev")
(make-essential-device-nodes #:root "/root"))
(when (procedure? pre-mount)
;; Do whatever actions are needed before mounting--e.g., installing
;; device mappings.
(pre-mount))
;; Mount the specified file systems.
(for-each mount-file-system
(remove root-mount-point? mounts))
(if to-load
(begin
(switch-root "/root")
(format #t "loading '~a'...\n" to-load)
;; TODO: Remove /lib, /share, and /loader.go.
(primitive-load to-load)
(format (current-error-port)
"boot program '~a' terminated, rebooting~%"
to-load)
(sleep 2)
(reboot))
(begin
(display "no boot file passed via '--load'\n")
(display "entering a warm and cozy REPL\n")
(start-repl)))))))
;;; linux-initrd.scm ends here
+142
View File
@@ -0,0 +1,142 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu build linux-initrd)
#:use-module (guix build utils)
#:use-module (guix build store-copy)
#:use-module (system base compile)
#:use-module (rnrs bytevectors)
#:use-module ((system foreign) #:select (sizeof))
#:use-module (ice-9 popen)
#:use-module (ice-9 ftw)
#:export (write-cpio-archive
build-initrd))
;;; Commentary:
;;;
;;; Tools to create Linux initial RAM disks ("initrds"). Initrds are
;;; essentially gzipped cpio archives, with a '/init' executable that the
;;; kernel runs at boot time.
;;;
;;; Code:
(define* (write-cpio-archive output directory
#:key
(compress? #t)
(cpio "cpio") (gzip "gzip"))
"Write a cpio archive containing DIRECTORY to file OUTPUT, using CPIO. When
COMPRESS? is true, compress it using GZIP. On success, return OUTPUT."
;; Note: don't use '--no-absolute-filenames' since that strips leading
;; slashes from symlink targets.
(let ((pipe (open-pipe* OPEN_WRITE cpio "-o" "-O" output
"-H" "newc" "--null")))
(define (print0 file)
(format pipe "~a\0" file))
;; Note: as per `ramfs-rootfs-initramfs.txt', always add directory entries
;; before the files that are inside of it: "The Linux kernel cpio
;; extractor won't create files in a directory that doesn't exist, so the
;; directory entries must go before the files that go in those
;; directories."
;; XXX: Use a deterministic order.
(file-system-fold (const #t)
(lambda (file stat result) ; leaf
(print0 file))
(lambda (dir stat result) ; down
(unless (string=? dir directory)
(print0 dir)))
(const #f) ; up
(const #f) ; skip
(const #f)
#f
directory)
(and (zero? (close-pipe pipe))
(or (not compress?)
(and (zero? (system* gzip "--best" output))
(rename-file (string-append output ".gz")
output))
output))))
(define (cache-compiled-file-name file)
"Return the file name of the in-cache .go file for FILE, relative to the
current directory.
This is similar to what 'compiled-file-name' in (system base compile) does."
(let loop ((file file))
(let ((target (false-if-exception (readlink file))))
(if target
(loop target)
(format #f ".cache/guile/ccache/~a-~a-~a-~a/~a"
(effective-version)
(if (eq? (native-endianness) (endianness little))
"LE"
"BE")
(sizeof '*)
(effective-version)
file)))))
(define (compile-to-cache file)
"Compile FILE to the cache."
(let ((compiled-file (cache-compiled-file-name file)))
(mkdir-p (dirname compiled-file))
(compile-file file
#:opts %auto-compilation-options
#:output-file compiled-file)))
(define* (build-initrd output
#:key
guile init
(references-graphs '())
(cpio "cpio")
(gzip "gzip"))
"Write an initial RAM disk (initrd) to OUTPUT. The initrd starts the script
at INIT, running GUILE. It contains all the items referred to by
REFERENCES-GRAPHS."
(mkdir "contents")
;; Copy the closures of all the items referenced in REFERENCES-GRAPHS.
(populate-store references-graphs "contents")
(with-directory-excursion "contents"
;; Make '/init'.
(symlink init "init")
;; Compile it.
(compile-to-cache "init")
;; Allow Guile to find out where it is (XXX). See
;; 'guile-relocatable.patch'.
(mkdir-p "proc/self")
(symlink (string-append guile "/bin/guile") "proc/self/exe")
(readlink "proc/self/exe")
;; Reset the timestamps of all the files that will make it in the initrd.
(for-each (lambda (file)
(unless (eq? 'symlink (stat:type (lstat file)))
(utime file 0 0 0 0)))
(find-files "." ".*"))
(write-cpio-archive output "."
#:cpio cpio #:gzip gzip))
(delete-file-recursively "contents"))
;;; linux-initrd.scm ends here
+232
View File
@@ -0,0 +1,232 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu build vm)
#:use-module (guix build utils)
#:use-module (guix build store-copy)
#:use-module (gnu build linux-boot)
#:use-module (gnu build install)
#:use-module (ice-9 match)
#:use-module (ice-9 regex)
#:use-module (srfi srfi-26)
#:export (qemu-command
load-in-linux-vm
format-partition
initialize-root-partition
initialize-partition-table
initialize-hard-disk))
;;; Commentary:
;;;
;;; This module provides supporting code to run virtual machines and build
;;; virtual machine images using QEMU.
;;;
;;; Code:
(define* (qemu-command #:optional (system %host-type))
"Return the default name of the QEMU command for SYSTEM."
(let ((cpu (substring %host-type 0
(string-index %host-type #\-))))
(string-append "qemu-system-"
(if (string-match "^i[3456]86$" cpu)
"i386"
cpu))))
(define* (load-in-linux-vm builder
#:key
output
(qemu (qemu-command)) (memory-size 512)
linux initrd
make-disk-image? (disk-image-size 100)
(disk-image-format "qcow2")
(references-graphs '()))
"Run BUILDER, a Scheme file, into a VM running LINUX with INITRD, and copy
the result to OUTPUT.
When MAKE-DISK-IMAGE? is true, OUTPUT will contain a VM image of
DISK-IMAGE-SIZE MiB resulting from the execution of BUILDER, which may access
it via /dev/hda.
REFERENCES-GRAPHS can specify a list of reference-graph files as produced by
the #:references-graphs parameter of 'derivation'."
(define image-file
(string-append "image." disk-image-format))
(when make-disk-image?
(unless (zero? (system* "qemu-img" "create" "-f" disk-image-format
image-file
(number->string disk-image-size)))
(error "qemu-img failed")))
(mkdir "xchg")
(match references-graphs
((graph-files ...)
;; Copy the reference-graph files under xchg/ so EXP can access it.
(map (lambda (file)
(copy-file file (string-append "xchg/" file)))
graph-files))
(_ #f))
(unless (zero?
(apply system* qemu "-enable-kvm" "-nographic" "-no-reboot"
"-m" (number->string memory-size)
"-net" "nic,model=virtio"
"-virtfs"
(string-append "local,id=store_dev,path="
(%store-directory)
",security_model=none,mount_tag=store")
"-virtfs"
(string-append "local,id=xchg_dev,path=xchg"
",security_model=none,mount_tag=xchg")
"-kernel" linux
"-initrd" initrd
"-append" (string-append "console=ttyS0 --load="
builder)
(if make-disk-image?
`("-drive" ,(string-append "file=" image-file
",if=virtio"))
'())))
(error "qemu failed" qemu))
(if make-disk-image?
(copy-file image-file output)
(begin
(mkdir output)
(copy-recursively "xchg" output))))
(define* (initialize-partition-table device partition-size
#:key
bootable?
(label-type "msdos")
(offset (expt 2 20)))
"Create on DEVICE a partition table of type LABEL-TYPE, with a single
partition of PARTITION-SIZE bytes starting at OFFSET bytes. When BOOTABLE? is
true, set the bootable flag on the partition. Return #t on success."
(format #t "creating partition table with a ~a B partition...\n"
partition-size)
(unless (zero? (apply system* "parted" device "mklabel" label-type
"mkpart" "primary" "ext2"
(format #f "~aB" offset)
(format #f "~aB" partition-size)
(if bootable?
'("set" "1" "boot" "on")
'())))
(error "failed to create partition table")))
(define MS_BIND 4096) ; <sys/mounts.h> again!
(define* (format-partition partition type
#:key label)
"Create a file system TYPE on PARTITION. If LABEL is true, use that as the
volume name."
(format #t "creating ~a partition...\n" type)
(unless (zero? (apply system* (string-append "mkfs." type)
"-F" partition
(if label
`("-L" ,label)
'())))
(error "failed to create partition")))
(define* (initialize-root-partition target-directory
#:key copy-closures? register-closures?
closures system-directory)
"Initialize the root partition mounted at TARGET-DIRECTORY."
(define target-store
(string-append target-directory (%store-directory)))
(when copy-closures?
;; Populate the store.
(populate-store (map (cut string-append "/xchg/" <>) closures)
target-directory))
;; Populate /dev.
(make-essential-device-nodes #:root target-directory)
;; Optionally, register the inputs in the image's store.
(when register-closures?
(unless copy-closures?
;; XXX: 'guix-register' wants to palpate the things it registers, so
;; bind-mount the store on the target.
(mkdir-p target-store)
(mount (%store-directory) target-store "" MS_BIND))
(display "registering closures...\n")
(for-each (lambda (closure)
(register-closure target-directory
(string-append "/xchg/" closure)))
closures)
(unless copy-closures?
(system* "umount" target-store)))
;; Add the non-store directories and files.
(display "populating...\n")
(populate-root-file-system system-directory target-directory))
(define* (initialize-hard-disk device
#:key
system-directory
grub.cfg
disk-image-size
(file-system-type "ext4")
file-system-label
(closures '())
copy-closures?
(bootable? #t)
(register-closures? #t))
"Initialize DEVICE, a disk of DISK-IMAGE-SIZE bytes, with a FILE-SYSTEM-TYPE
partition with (optionally) FILE-SYSTEM-LABEL as its volume name, and with
GRUB installed. When BOOTABLE? is true, set the bootable flag on that
partition.
If REGISTER-CLOSURES? is true, register all of CLOSURES is the partition's
store. If COPY-CLOSURES? is true, copy all of CLOSURES to the partition.
SYSTEM-DIRECTORY is the name of the directory of the 'system' derivation."
(define target-directory
"/fs")
(define partition
(string-append device "1"))
(initialize-partition-table device
(- disk-image-size (* 5 (expt 2 20)))
#:bootable? bootable?)
(format-partition partition file-system-type
#:label file-system-label)
(display "mounting partition...\n")
(mkdir target-directory)
(mount partition target-directory file-system-type)
(initialize-root-partition target-directory
#:system-directory system-directory
#:copy-closures? copy-closures?
#:register-closures? register-closures?
#:closures closures)
(install-grub grub.cfg device target-directory)
;; 'guix-register' resets timestamps and everything, so no need to do it
;; once more in that case.
(unless register-closures?
(reset-timestamps target-directory))
(zero? (system* "umount" target-directory)))
;;; vm.scm ends here
+274 -57
View File
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -21,19 +22,34 @@
#:use-module (guix packages)
#:use-module (guix ui)
#:use-module (guix utils)
#:use-module ((guix ftp-client) #:select (ftp-open))
#:use-module (guix gnu-maintenance)
#:use-module (ice-9 ftw)
#:use-module (ice-9 vlist)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-26)
#:use-module (srfi srfi-39)
#:export (search-patch
search-bootstrap-binary
%patch-directory
%bootstrap-binaries-path
%package-module-path
fold-packages
find-packages-by-name
find-newest-available-packages))
find-best-packages-by-name
find-newest-available-packages
package-direct-dependents
package-transitive-dependents
package-covering-dependents
check-package-freshness
specification->package))
;;; Commentary:
;;;
@@ -42,8 +58,6 @@
;;;
;;; Code:
(define _ (cut gettext <> "guix"))
;; By default, we store patches and bootstrap binaries alongside Guile
;; modules. This is so that these extra files can be found without
;; requiring a special setup, such as a specific installation directory
@@ -52,7 +66,7 @@
(define %patch-path
(make-parameter
(map (cut string-append <> "/gnu/packages/patches")
(map (cut string-append <> "/gnu/packages/patches")
%load-path)))
(define %bootstrap-binaries-path
@@ -69,21 +83,33 @@
(search-path (%bootstrap-binaries-path)
(string-append system "/" file-name)))
(define %distro-module-directory
;; Absolute path of the (gnu packages ...) module root.
(string-append (dirname (search-path %load-path "gnu/packages.scm"))
"/packages"))
(define %distro-root-directory
;; Absolute file name of the module hierarchy.
(dirname (search-path %load-path "guix.scm")))
(define (package-files)
"Return the list of files that implement distro modules."
(define prefix-len
(string-length
(dirname (dirname (search-path %load-path "gnu/packages.scm")))))
(define %package-module-path
;; Search path for package modules. Each item must be either a directory
;; name or a pair whose car is a directory and whose cdr is a sub-directory
;; to narrow the search.
(let* ((not-colon (char-set-complement (char-set #\:)))
(environment (string-tokenize (or (getenv "GUIX_PACKAGE_PATH") "")
not-colon)))
;; Automatically add items from $GUIX_PACKAGE_PATH to Guile's search path.
(for-each (lambda (directory)
(set! %load-path (cons directory %load-path))
(set! %load-compiled-path
(cons directory %load-compiled-path)))
environment)
(make-parameter
(append environment `((,%distro-root-directory . "gnu/packages"))))))
(define* (scheme-files directory)
"Return the list of Scheme files found under DIRECTORY."
(file-system-fold (const #t) ; enter?
(lambda (path stat result) ; leaf
(if (string-suffix? ".scm" path)
(cons (substring path prefix-len) result)
(cons path result)
result))
(lambda (path stat result) ; down
result)
@@ -95,20 +121,42 @@
path (strerror errno))
result)
'()
%distro-module-directory
directory
stat))
(define (package-modules)
"Return the list of modules that provide packages for the distribution."
(define not-slash
(char-set-complement (char-set #\/)))
(define file-name->module-name
(let ((not-slash (char-set-complement (char-set #\/))))
(lambda (file)
"Return the module name (a list of symbols) corresponding to FILE."
(map string->symbol
(string-tokenize (string-drop-right file 4) not-slash)))))
(filter-map (lambda (path)
(let ((name (map string->symbol
(string-tokenize (string-drop-right path 4)
not-slash))))
(false-if-exception (resolve-interface name))))
(package-files)))
(define* (package-modules directory #:optional sub-directory)
"Return the list of modules that provide packages for the distribution.
Optionally, narrow the search to SUB-DIRECTORY."
(define prefix-len
(string-length directory))
(filter-map (lambda (file)
(let ((file (substring file prefix-len)))
(false-if-exception
(resolve-interface (file-name->module-name file)))))
(scheme-files (if sub-directory
(string-append directory "/" sub-directory)
directory))))
(define* (all-package-modules #:optional (path (%package-module-path)))
"Return the list of package modules found in PATH, a list of directories to
search."
(fold-right (lambda (spec result)
(match spec
((? string? directory)
(append (package-modules directory) result))
((directory . sub-directory)
(append (package-modules directory sub-directory)
result))))
'()
path))
(define (fold-packages proc init)
"Call (PROC PACKAGE RESULT) for each available package, using INIT as
@@ -129,43 +177,212 @@ same package twice."
module)))
init
vlist-null
(package-modules))))
(all-package-modules))))
(define* (find-packages-by-name name #:optional version)
"Return the list of packages with the given NAME. If VERSION is not #f,
(define find-packages-by-name
(let ((packages (delay
(fold-packages (lambda (p r)
(vhash-cons (package-name p) p r))
vlist-null))))
(lambda* (name #:optional version)
"Return the list of packages with the given NAME. If VERSION is not #f,
then only return packages whose version is equal to VERSION."
(define right-package?
(if version
(lambda (p)
(and (string=? (package-name p) name)
(string=? (package-version p) version)))
(lambda (p)
(string=? (package-name p) name))))
(let ((matching (vhash-fold* cons '() name (force packages))))
(if version
(filter (lambda (package)
(string=? (package-version package) version))
matching)
matching)))))
(fold-packages (lambda (package result)
(if (right-package? package)
(cons package result)
result))
'()))
(define (find-newest-available-packages)
"Return a vhash keyed by package names, and with
(define find-newest-available-packages
(memoize
(lambda ()
"Return a vhash keyed by package names, and with
associated values of the form
(newest-version newest-package ...)
where the preferred package is listed first."
;; FIXME: Currently, the preferred package is whichever one
;; was found last by 'fold-packages'. Find a better solution.
(fold-packages (lambda (p r)
(let ((name (package-name p))
(version (package-version p)))
(match (vhash-assoc name r)
((_ newest-so-far . pkgs)
(case (version-compare version newest-so-far)
((>) (vhash-cons name `(,version ,p) r))
((=) (vhash-cons name `(,version ,p ,@pkgs) r))
((<) r)))
(#f (vhash-cons name `(,version ,p) r)))))
vlist-null))
;; FIXME: Currently, the preferred package is whichever one
;; was found last by 'fold-packages'. Find a better solution.
(fold-packages (lambda (p r)
(let ((name (package-name p))
(version (package-version p)))
(match (vhash-assoc name r)
((_ newest-so-far . pkgs)
(case (version-compare version newest-so-far)
((>) (vhash-cons name `(,version ,p) r))
((=) (vhash-cons name `(,version ,p ,@pkgs) r))
((<) r)))
(#f (vhash-cons name `(,version ,p) r)))))
vlist-null))))
(define (find-best-packages-by-name name version)
"If version is #f, return the list of packages named NAME with the highest
version numbers; otherwise, return the list of packages named NAME and at
VERSION."
(if version
(find-packages-by-name name version)
(match (vhash-assoc name (find-newest-available-packages))
((_ version pkgs ...) pkgs)
(#f '()))))
(define* (vhash-refq vhash key #:optional (dflt #f))
"Look up KEY in the vhash VHASH, and return the value (if any) associated
with it. If KEY is not found, return DFLT (or `#f' if no DFLT argument is
supplied). Uses `eq?' for equality testing."
(or (and=> (vhash-assq key vhash) cdr)
dflt))
(define package-dependencies
(memoize
(lambda ()
"Return a vhash keyed by package, and with associated values that are a
list of packages that depend on that package."
(fold-packages
(lambda (package dag)
(fold
(lambda (in d)
;; Insert a graph edge from each of package's inputs to package.
(vhash-consq in
(cons package (vhash-refq d in '()))
(vhash-delq in d)))
dag
(match (package-direct-inputs package)
(((labels packages . _) ...)
packages) )))
vlist-null))))
(define (package-direct-dependents packages)
"Return a list of packages from the distribution that directly depend on the
packages in PACKAGES."
(delete-duplicates
(concatenate
(map (lambda (p)
(vhash-refq (package-dependencies) p '()))
packages))))
(define (package-transitive-dependents packages)
"Return the transitive dependent packages of the distribution packages in
PACKAGES---i.e. the dependents of those packages, plus their dependents,
recursively."
(let ((dependency-dag (package-dependencies)))
(fold-tree
cons '()
(lambda (node) (vhash-refq dependency-dag node))
;; Start with the dependents to avoid including PACKAGES in the result.
(package-direct-dependents packages))))
(define (package-covering-dependents packages)
"Return a minimal list of packages from the distribution whose dependencies
include all of PACKAGES and all packages that depend on PACKAGES."
(let ((dependency-dag (package-dependencies)))
(fold-tree-leaves
cons '()
(lambda (node) (vhash-refq dependency-dag node))
;; Start with the dependents to avoid including PACKAGES in the result.
(package-direct-dependents packages))))
(define %sigint-prompt
;; The prompt to jump to upon SIGINT.
(make-prompt-tag "interruptible"))
(define (call-with-sigint-handler thunk handler)
"Call THUNK and return its value. Upon SIGINT, call HANDLER with the signal
number in the context of the continuation of the call to this function, and
return its return value."
(call-with-prompt %sigint-prompt
(lambda ()
(sigaction SIGINT
(lambda (signum)
(sigaction SIGINT SIG_DFL)
(abort-to-prompt %sigint-prompt signum)))
(dynamic-wind
(const #t)
thunk
(cut sigaction SIGINT SIG_DFL)))
(lambda (k signum)
(handler signum))))
(define-syntax-rule (waiting exp fmt rest ...)
"Display the given message while EXP is being evaluated."
(let* ((message (format #f fmt rest ...))
(blank (make-string (string-length message) #\space)))
(display message (current-error-port))
(force-output (current-error-port))
(call-with-sigint-handler
(lambda ()
(dynamic-wind
(const #f)
(lambda () exp)
(lambda ()
;; Clear the line.
(display #\cr (current-error-port))
(display blank (current-error-port))
(display #\cr (current-error-port))
(force-output (current-error-port)))))
(lambda (signum)
(format (current-error-port) " interrupted by signal ~a~%" SIGINT)
#f))))
(define ftp-open*
;; Memoizing version of `ftp-open'. The goal is to avoid initiating a new
;; FTP connection for each package, esp. since most of them are to the same
;; server. This has a noticeable impact when doing "guix upgrade -u".
(memoize ftp-open))
(define (check-package-freshness package)
"Check whether PACKAGE has a newer version available upstream, and report
it."
;; TODO: Automatically inject the upstream version when desired.
(catch #t
(lambda ()
(when (false-if-exception (gnu-package? package))
(let ((name (package-name package))
(full-name (package-full-name package)))
(match (waiting (latest-release name
#:ftp-open ftp-open*
#:ftp-close (const #f))
(_ "looking for the latest release of GNU ~a...") name)
((? gnu-release? release)
(let ((latest-version
(string-append (gnu-release-package release) "-"
(gnu-release-version release))))
(when (version>? latest-version full-name)
(format (current-error-port)
(_ "~a: note: using ~a \
but ~a is available upstream~%")
(location->string (package-location package))
full-name latest-version))))
(_ #t)))))
(lambda (key . args)
;; Silently ignore networking errors rather than preventing
;; installation.
(case key
((getaddrinfo-error ftp-error) #f)
(else (apply throw key args))))))
(define (specification->package spec)
"Return a package matching SPEC. SPEC may be a package name, or a package
name followed by a hyphen and a version number. If the version number is not
present, return the preferred newest version."
(let-values (((name version)
(package-name->name+version spec)))
(match (find-best-packages-by-name name version)
((p) ; one match
p)
((p x ...) ; several matches
(warning (_ "ambiguous package specification `~a'~%") spec)
(warning (_ "choosing ~a from ~a~%")
(package-full-name p)
(location->string (package-location p)))
p)
(_ ; no matches
(if version
(leave (_ "~A: package not found for version ~a~%")
name version)
(leave (_ "~A: unknown package~%") name))))))
+106
View File
@@ -0,0 +1,106 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Marek Benc <merkur32@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages abiword)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages boost)
#:use-module (gnu packages compression)
#:use-module (gnu packages enchant)
#:use-module (gnu packages fribidi)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gtk)
#:use-module (gnu packages image)
#:use-module (gnu packages ots)
#:use-module (gnu packages popt)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages readline)
#:use-module (gnu packages wv)
#:use-module (gnu packages xml))
(define-public abiword
(package
(name "abiword")
(version "2.8.6")
(source
(origin
(method url-fetch)
(uri
(string-append "http://abisource.org/downloads/" name "/" version
"/source/" name "-" version ".tar.gz"))
(sha256
(base32 "059sd2apxdmcacc4pll880i7vm18h0kyjsq299m1mz3c7ak8k46r"))
(patches
(list
(search-patch "abiword-wmf-version-lookup-fix.patch")
(search-patch "abiword-no-include-glib-internal-headers.patch")
(search-patch "abiword-explictly-cast-bools.patch")
(search-patch "abiword-use-proper-png-api.patch")
(search-patch "abiword-pass-no-undefined-to-linker.patch")
(search-patch "abiword-link-plugins-against-backend.patch")))))
(build-system gnu-build-system)
(arguments ;; NOTE: rsvg is disabled, since Abiword
`(#:configure-flags ;; supports it directly, and its BS is broken.
(list
"--enable-clipart" ;; TODO: The following plugins have unresolved
"--enable-templates" ;; dependencies: aiksaurus, grammar, wpg, gda,
(string-append ;; wordperfect, psion, mathview, goffice.
"--enable-plugins="
"applix " "babelfish " "bmp " "clarisworks " "collab " "command "
"docbook " "eml " "freetranslation " "garble " "gdict " "gimp "
"google " "hancom " "hrtext " "iscii " "kword " "latex "
"loadbindings " "mht " "mif " "mswrite " "opendocument "
"openwriter " "openxml " "opml " "ots " "paint " "passepartout "
"pdb " "pdf " "presentation " "s5 " "sdw " "t602 " "urldict "
"wikipedia " "wmf " "wml " "xslfo"))))
(inputs
`(("boost" ,boost)
("enchant" ,enchant)
("fontconfig" ,fontconfig)
("fribidi" ,fribidi)
("glib" ,glib)
("gtk+" ,gtk+-2)
("libglade" ,libglade)
("libgsf" ,libgsf)
("libjpeg" ,libjpeg)
("libpng" ,libpng)
("librsvg" ,librsvg)
("libwmf" ,libwmf)
("libxml2" ,libxml2)
("ots" ,ots)
("popt" ,popt)
("readline" ,readline)
("wv" ,wv)
("zlib" ,zlib)))
(native-inputs
`(("intltool" ,intltool)
("glib:bin" ,glib "bin")
("pkg-config" ,pkg-config)))
(home-page "http://abisource.org/")
(synopsis "Word processing program")
(description
"AbiWord is a word processing program. It is rapidly becoming a state
of the art word processor, with lots of features useful for your daily work,
personal needs, or for just some good old typing fun.")
(license license:gpl2+)))
@@ -16,38 +16,29 @@
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages fdisk)
#:use-module ((guix licenses) #:select (gpl3+))
#:use-module ((gnu packages gettext)
#:renamer (symbol-prefix-proc 'guix:))
#:use-module (gnu packages guile)
#:use-module (gnu packages linux)
#:use-module (gnu packages parted)
(define-module (gnu packages acct)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu))
(define-public fdisk
(define-public acct
(package
(name "fdisk")
(version "2.0.0a")
(name "acct")
(version "6.6.2")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/fdisk/gnufdisk-"
(uri (string-append "mirror://gnu/acct/acct-"
version ".tar.gz"))
(sha256
(base32
"04nd7civ561x2lwcmxhsqbprml3178jfc58fy1v7hzqg5k4nbhy3"))))
"0081hzkcxw9aslpsakridj15m0wbnkdhm210fzbg021vi4pppm4f"))))
(build-system gnu-build-system)
(inputs
`(("gettext" ,guix:gettext)
("guile" ,guile-1.8)
("util-linux" ,util-linux)
("parted" ,parted)))
(home-page "https://www.gnu.org/software/fdisk/")
(synopsis "Low-level disk partitioning and formatting")
(home-page "https://gnu.org/software/acct/")
(synopsis "Standard login and process accounting utilities")
(description
"GNU Fdisk provides alternatives to util-linux fdisk and util-linux
cfdisk. It uses GNU Parted.")
"GNU acct provides a means for system administrators to determine
system usage patterns. It provides information on, for example, connections,
programs executed, and system resources used.")
(license gpl3+)))
+13 -22
View File
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -20,8 +21,7 @@
#:use-module (guix licenses)
#:use-module (gnu packages attr)
#:use-module (gnu packages perl)
#:use-module ((gnu packages gettext)
#:renamer (symbol-prefix-proc 'guix:))
#:use-module (gnu packages gettext)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu))
@@ -29,7 +29,7 @@
(define-public acl
(package
(name "acl")
(version "2.2.51")
(version "2.2.52")
(source
(origin
(method url-fetch)
@@ -37,32 +37,23 @@
version ".src.tar.gz"))
(sha256
(base32
"09aj30m49ivycl3irram8c3givc0crivjm3ymw0nhfaxrwhlb186"))))
"08qd9s3wfhv0ajswsylnfwr5h0d7j9d4rgip855nrh400nxp940p"))))
(build-system gnu-build-system)
(arguments
`(#:phases
`(#:tests? #f ; FIXME: Investigate test suite failures
#:phases
(alist-cons-after
'configure 'patch-makefile-SHELL
(lambda _
(patch-makefile-SHELL "include/buildmacros"))
,(if (%current-target-system)
'%standard-phases
'(alist-replace 'check
(lambda _
(system* "make" "tests" "-C" "test")
;; XXX: Ignore the test result since this is
;; dependent on the underlying file system.
#t)
%standard-phases)))))
(inputs `(("attr" ,attr)
;; Perl is needed to run tests; remove it from cross builds.
,@(if (%current-target-system)
'()
`(("perl" ,perl)))))
(alist-replace
'install
(lambda _
(zero? (system* "make" "install" "install-lib")))
%standard-phases))))
(inputs `(("attr" ,attr)))
(native-inputs
`(("gettext" ,guix:gettext)))
`(("gettext" ,gnu-gettext)))
(home-page
"http://savannah.nongnu.org/projects/acl")
+949
View File
@@ -0,0 +1,949 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages admin)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
#:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages readline)
#:use-module (gnu packages linux)
#:use-module (gnu packages guile)
#:use-module (gnu packages gettext)
#:use-module (gnu packages perl)
#:use-module (gnu packages tcl)
#:use-module ((gnu packages compression) #:prefix c:)
#:use-module ((gnu packages openssl) #:prefix o:)
#:use-module (gnu packages bison)
#:use-module (gnu packages flex)
#:use-module (gnu packages glib)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages popt)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages groff)
#:use-module (gnu packages pciutils)
#:use-module (gnu packages libusb)
#:use-module (gnu packages libftdi)
#:use-module (gnu packages image)
#:use-module (gnu packages xorg))
(define-public dmd
(package
(name "dmd")
(version "0.2")
(source (origin
(method url-fetch)
(uri (string-append "ftp://alpha.gnu.org/gnu/dmd/dmd-"
version ".tar.gz"))
(sha256
(base32
"10fl4k96f17gqx2fv8iw9c61ld26gsk4bbrlfqckdmiimz1k175z"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags '("--localstatedir=/var")))
(native-inputs `(("pkg-config" ,pkg-config)))
(inputs `(("guile" ,guile-2.0)))
(synopsis "Daemon managing daemons")
(description
"GNU DMD is a daemon-managing daemon, meaning that it manages the
execution of system services, replacing similar functionality found in
typical init systems. It provides dependency-handling through a convenient
interface and is based on GNU Guile.")
(license gpl3+)
(home-page "http://www.gnu.org/software/dmd/")))
(define-public dfc
(package
(name "dfc")
(version "3.0.4")
(source
(origin
(method url-fetch)
(uri (string-append
"http://projects.gw-computing.net/attachments/download/79/dfc-"
version ".tar.gz"))
(sha256
(base32
"0zk1ppx93ijimf4sbgqilxxikpsa2gmpbynknyh41xy7jbdjxp0b"))))
(build-system cmake-build-system)
(arguments '(#:tests? #f)) ; There are no tests.
(native-inputs `(("gettext" ,gnu-gettext)))
(home-page "http://projects.gw-computing.net/projects/dfc")
(synopsis "Display file system space usage using graphs and colors")
(description
"dfc (df color) is a modern version of df. It uses colors, draws pretty
graphs and can export its output to different formats.")
(license bsd-3)))
(define-public htop
(package
(name "htop")
(version "1.0.3")
(source (origin
(method url-fetch)
(uri (string-append "http://hisham.hm/htop/releases/"
version "/htop-" version ".tar.gz"))
(sha256
(base32
"0a8qbpsifzjwc4f45xfwm48jhm59g6q5hlib4bf7z13mgy95fp05"))))
(build-system gnu-build-system)
(inputs
`(("ncurses" ,ncurses)))
(home-page "http://htop.sourceforge.net/")
(synopsis "Interactive process viewer")
(description
"This is htop, an interactive process viewer. It is a text-mode
application (for console or X terminals) and requires ncurses.")
(license gpl2)))
(define-public pies
(package
(name "pies")
(version "1.2")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/pies/pies-"
version ".tar.bz2"))
(sha256
(base32
"18w0dbg77i56cx1bwa789w0qi3l4xkkbascxcv2b6gbm0zmjg1g6"))))
(build-system gnu-build-system)
(home-page "http://www.gnu.org/software/pies/")
(synopsis "Program invocation and execution supervisor")
(description
"GNU pies is a program that supervises the invocation and execution of
other programs. It reads the list of programs to be started from its
configuration file, executes them, and then monitors their status,
re-executing them as necessary.")
(license gpl3+)))
(define-public inetutils
(package
(name "inetutils")
(version "1.9.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/inetutils/inetutils-"
version ".tar.gz"))
(sha256
(base32
"04wrm0v7l4890mmbaawd6wjwdv08bkglgqhpz0q4dkb0l50fl8q4"))))
(build-system gnu-build-system)
(arguments `(;; FIXME: `tftp.sh' relies on `netstat' from utils-linux,
;; which is currently missing.
#:tests? #f))
(inputs `(("ncurses" ,ncurses)
("readline" ,readline))) ; for 'ftp'
(home-page "http://www.gnu.org/software/inetutils/")
(synopsis "Basic networking utilities")
(description
"Inetutils is a collection of common network programs, such as an ftp
client and server, a telnet client and server, and an rsh client and server.")
(license gpl3+)))
(define-public shadow
(package
(name "shadow")
(version "4.1.5.1")
(source (origin
;; Shadow has no real upstream, and not even tarballs.
;; See <https://lists.gnu.org/archive/html/guix-devel/2014-03/msg00233.html>.
(method git-fetch)
(uri (git-reference
(url "git://git.debian.org/git/pkg-shadow/shadow")
(commit (string-append "upstream/" version))))
(sha256
(base32
"1xx85d83kmacmjzqbamgydcjkwsqd5fi1s2wgwx6myq5wa39qx0n"))))
(build-system gnu-build-system)
(arguments
'(;; Assume System V `setpgrp (void)', which is the default on GNU
;; variants (`AC_FUNC_SETPGRP' is not cross-compilation capable.)
#:configure-flags '("--with-libpam" "ac_cv_func_setpgrp_void=yes")
#:phases (alist-cons-before
'build 'set-nscd-file-name
(lambda* (#:key inputs #:allow-other-keys)
;; Use the right file name for nscd.
(let ((libc (assoc-ref inputs "libc")))
(substitute* "lib/nscd.c"
(("/usr/sbin/nscd")
(string-append libc "/sbin/nscd")))))
(alist-cons-after
'install 'remove-groups
(lambda* (#:key outputs #:allow-other-keys)
;; Remove `groups', which is already provided by Coreutils.
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(man (string-append out "/share/man/man1")))
(delete-file (string-append bin "/groups"))
(for-each delete-file (find-files man "^groups\\."))
#t))
%standard-phases))))
(inputs (if (string-suffix? "-linux"
(or (%current-target-system)
(%current-system)))
`(("linux-pam" ,linux-pam))
'()))
(home-page "http://pkg-shadow.alioth.debian.org/")
(synopsis "Authentication-related tools such as passwd, su, and login")
(description
"Shadow provides a number of authentication-related tools, including:
login, passwd, su, groupadd, and useradd.")
;; The `vipw' program is GPLv2+.
;; libmisc/salt.c is public domain.
(license bsd-3)))
(define-public mingetty
(package
(name "mingetty")
(version "1.08")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/mingetty/mingetty-"
version ".tar.gz"))
(sha256
(base32
"05yxrp44ky2kg6qknk1ih0kvwkgbn9fbz77r3vci7agslh5wjm8g"))))
(build-system gnu-build-system)
(arguments
`(#:phases (alist-replace 'configure
(lambda* (#:key inputs outputs
#:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(man8 (string-append
out "/share/man/man8"))
(sbin (string-append out "/sbin"))
(shadow (assoc-ref inputs "shadow"))
(login (string-append shadow
"/bin/login")))
(substitute* "Makefile"
(("^SBINDIR.*")
(string-append "SBINDIR = " out
"/sbin\n"))
(("^MANDIR.*")
(string-append "MANDIR = " out
"/share/man/man8\n")))
;; Pick the right 'login' by default.
(substitute* "mingetty.c"
(("\"/bin/login\"")
(string-append "\"" login "\"")))
(mkdir-p sbin)
(mkdir-p man8)))
%standard-phases)
#:tests? #f)) ; no tests
(inputs `(("shadow" ,shadow)))
(home-page "http://sourceforge.net/projects/mingetty")
(synopsis "Getty for the text console")
(description
"Small console getty that is started on the Linux text console,
asks for a login name and then transfers over to 'login'. It is extended to
allow automatic login and starting any app.")
(license gpl2+)))
(define-public net-base
(package
(name "net-base")
(version "5.3")
(source (origin
(method url-fetch)
(uri (string-append
"mirror://debian/pool/main/n/netbase/netbase_"
version ".tar.xz"))
(sha256
(base32
"12xqjwg3p4rzmmh2iib6sigm9l29y3dgk74mmnw64k84jnbwdxl1"))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
#:builder (begin
(use-modules (guix build utils)
(srfi srfi-26))
(let* ((source (assoc-ref %build-inputs "source"))
(tar (assoc-ref %build-inputs "tar"))
(xz (assoc-ref %build-inputs "xz"))
(output (assoc-ref %outputs "out"))
(etc (string-append output "/etc")))
(setenv "PATH" (string-append xz "/bin"))
(system* (string-append tar "/bin/tar") "xvf"
source)
(chdir ,(string-append "netbase-" version))
(mkdir-p etc)
(for-each copy-file
'("etc-services" "etc-protocols" "etc-rpc")
(map (cut string-append etc "/" <>)
'("services" "protocols" "rpc")))
#t))))
(native-inputs `(("tar" ,tar)
("xz" ,c:xz)))
(synopsis "IANA protocol, port, and RPC number assignments")
(description
"This package provides the /etc/services, /etc/protocols, and /etc/rpc
files, which contain information about the IANA-assigned port, protocol, and
ONC RPC numbers")
(home-page "http://packages.debian.org/sid/netbase")
(license gpl2)))
(define-public netcat
(package
(name "netcat")
(version "0.7.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/netcat/netcat-"
version ".tar.bz2"))
(sha256
(base32
"1frjcdkhkpzk0f84hx6hmw5l0ynpmji8vcbaxg8h5k2svyxz0nmm"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
;; By default, man and info pages are put in PREFIX/{man,info},
;; but we want them in PREFIX/share/{man,info}.
(let ((out (assoc-ref %outputs "out")))
(list (string-append "--mandir=" out "/share/man")
(string-append "--infodir=" out "/share/info")))))
(home-page "http://netcat.sourceforge.net")
(synopsis "Read and write data over TCP/IP")
(description
"Netcat is a featured networking utility which reads and writes data
across network connections, using the TCP/IP protocol. It is designed to be a
reliable \"back-end\" tool that can be used directly or easily driven by other
programs and scripts. At the same time, it is a feature-rich network debugging
and exploration tool, since it can create almost any kind of connection you
would need and has several interesting built-in capabilities.")
(license gpl2+)))
(define-public alive
(package
(name "alive")
(version "2.0.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/alive/alive-"
version ".tar.xz"))
(sha256
(base32
"1vrzg51ai68x9yld7vbgl58sxaw5qpx8rbakwcxn4cqq6vpxj38j"))))
(build-system gnu-build-system)
(arguments '(#:configure-flags '("alive_cv_nice_ping=yes")))
(inputs `(("guile" ,guile-2.0)
("inetutils" ,inetutils)))
(home-page "http://www.gnu.org/software/alive/")
(synopsis "Autologin and keep-alive daemon")
(description
"GNU Alive sends periodic pings to a server, generally to keep a
connection alive.")
(license gpl3+)))
(define-public isc-dhcp
(package
(name "isc-dhcp")
(version "4.3.0")
(source (origin
(method url-fetch)
(uri (string-append "http://ftp.isc.org/isc/dhcp/"
version "/dhcp-" version ".tar.gz"))
(sha256
(base32
"12mydvj6x3zcl3gla06bywfkkrgg03g66fijs94mwb7kbiym3dm7"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-cons-after
'configure 'post-configure
(lambda* (#:key outputs #:allow-other-keys)
;; Point to the right client script, which will be
;; installed in a later phase.
(substitute* "includes/dhcpd.h"
(("#define[[:blank:]]+_PATH_DHCLIENT_SCRIPT.*")
(let ((out (assoc-ref outputs "out")))
(string-append "#define _PATH_DHCLIENT_SCRIPT \""
out "/libexec/dhclient-script"
"\"\n"))))
;; During the 'build' phase, 'bind.tar.gz' is extracted, so
;; we must patch shebangs in there and make sure the right
;; shell is used.
(with-directory-excursion "bind"
(substitute* "Makefile"
(("\\./configure")
(let ((sh (which "sh")))
(string-append "./configure CONFIG_SHELL="
sh " SHELL=" sh))))
(system* "tar" "xf" "bind.tar.gz")
(for-each patch-shebang
(find-files "bind-9.9.5" ".*"))
(zero? (system* "tar" "cf" "bind.tar.gz"
"bind-9.9.5"))))
(alist-cons-after
'install 'post-install
(lambda* (#:key inputs outputs #:allow-other-keys)
;; Install the dhclient script for GNU/Linux and make sure
;; if finds all the programs it needs.
(let* ((out (assoc-ref outputs "out"))
(libexec (string-append out "/libexec"))
(coreutils (assoc-ref inputs "coreutils"))
(net-tools (assoc-ref inputs "net-tools"))
(sed (assoc-ref inputs "sed")))
(substitute* "client/scripts/linux"
(("/sbin/ip")
(string-append (assoc-ref inputs "iproute")
"/sbin/ip")))
(mkdir-p libexec)
(copy-file "client/scripts/linux"
(string-append libexec "/dhclient-script"))
(wrap-program (string-append libexec "/dhclient-script")
`("PATH" ":" prefix
,(map (lambda (dir)
(string-append dir "/bin:"
dir "/sbin"))
(list net-tools coreutils sed))))))
%standard-phases))))
(native-inputs `(("perl" ,perl)))
(inputs `(("net-tools" ,net-tools)
("iproute" ,iproute)
;; When cross-compiling, we need the cross Coreutils and sed.
;; Otherwise just use those from %FINAL-INPUTS.
,@(if (%current-target-system)
`(("coreutils" ,coreutils)
("sed" ,sed))
'())))
(home-page "http://www.isc.org/products/DHCP/")
(synopsis "Dynamic Host Configuration Protocol (DHCP) tools")
(description
"ISC's Dynamic Host Configuration Protocol (DHCP) distribution provides a
reference implementation of all aspects of DHCP, through a suite of DHCP
tools: server, client, and relay agent.")
(license isc)))
(define-public libpcap
(package
(name "libpcap")
(version "1.5.3")
(source (origin
(method url-fetch)
(uri (string-append "http://www.tcpdump.org/release/libpcap-"
version ".tar.gz"))
(sha256
(base32
"14wyjywrdi1ikaj6yc9c72m6m2r64z94lb0gm7k1a3q6q5cj3scs"))))
(build-system gnu-build-system)
(native-inputs `(("bison" ,bison) ("flex" ,flex)))
(arguments '(#:tests? #f)) ; no 'check' target
(home-page "http://www.tcpdump.org")
(synopsis "Network packet capture library")
(description
"libpcap is an interface for user-level packet capture. It provides a
portable framework for low-level network monitoring. Applications include
network statistics collection, security monitoring, network debugging, etc.")
;; fad-*.c and a couple other files are BSD-4, but the rest is BSD-3.
(license bsd-3)))
(define-public tcpdump
(package
(name "tcpdump")
(version "4.5.1")
(source (origin
(method url-fetch)
(uri (string-append "http://www.tcpdump.org/release/tcpdump-"
version ".tar.gz"))
(sha256
(base32
"15hb7zkzd66nag102qbv100hcnf7frglbkylmr8adwr8f5jkkaql"))))
(build-system gnu-build-system)
(inputs `(("libpcap" ,libpcap)
("openssl" ,o:openssl)))
(native-inputs `(("perl" ,perl))) ; for tests
(home-page "http://www.tcpdump.org/")
(synopsis "Network packet analyzer")
(description
"Tcpdump is a command-line tool to analyze network traffic passing
through the network interface controller.")
(license bsd-3)))
(define-public jnettop
(package
(name "jnettop")
(version "0.13.0")
(source (origin
(method url-fetch)
(uri (string-append "http://jnettop.kubs.info/dist/jnettop-"
version ".tar.gz"))
(sha256
(base32
"1855np7c4b0bqzhf1l1dyzxb90fpnvrirdisajhci5am6als31z9"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("glib" ,glib)
("ncurses" ,ncurses)
("libpcap" ,libpcap)))
(home-page "http://jnettop.kubs.info/")
(synopsis "Visualize network traffic by bandwidth use")
(description
"Jnettop is a traffic visualiser, which captures traffic going
through the host it is running from and displays streams sorted
by bandwidth they use.")
(license gpl2+)))
(define-public clusterssh
(package
(name "clusterssh")
(version "3.28")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/clusterssh/"
"clusterssh-" version ".tar.gz"))
(sha256
(base32
"1bwggpvaj2al5blg1ynapviv2kpydffpzq2zkhi81najnvzc1rr7"))))
(build-system gnu-build-system)
(inputs `(("perl" ,perl)))
(propagated-inputs `(("xterm" ,xterm)
("perl-tk" ,perl-tk)
("perl-x11-protocol" ,perl-x11-protocol)))
(arguments
`(#:phases
(alist-cons-after
'install 'set-load-paths
(lambda* (#:key inputs outputs #:allow-other-keys)
;; Put the perl-tk and perl-x11-protocol modules in the perl inc
;; path for PROG
(let* ((out (assoc-ref outputs "out"))
(prog (string-append out "/bin/cssh"))
(perl-ver ,(package-version perl))
(x11-inc (string-append
(assoc-ref inputs "perl-x11-protocol")
"/lib/perl5/site_perl/" perl-ver))
(tk-inc (string-append
(assoc-ref inputs "perl-tk")
"/lib/perl5/site_perl/" perl-ver
"/x86_64-linux")))
(wrap-program
prog
`("PERL5LIB" ":" prefix (,x11-inc ,tk-inc)))))
%standard-phases)))
;; The clusterssh.sourceforge.net address requires login to view
(home-page "http://sourceforge.net/projects/clusterssh/")
(synopsis "Secure concurrent multi-server terminal control")
(description
"ClusterSSH controls a number of xterm windows via a single graphical
console window to allow commands to be interactively run on multiple servers
over ssh connections.")
(license gpl2+)))
(define-public rottlog
(package
(name "rottlog")
(version "0.72.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/rottlog/rottlog-"
version ".tar.gz"))
(sha256
(base32
"0751mb9l2f0jrk3vj6q8ilanifd121dliwk0c34g8k0dlzsv3kd7"))
(modules '((guix build utils)))
(snippet
'(substitute* "Makefile.in"
(("-o \\$\\{LOG_OWN\\} -g \\$\\{LOG_GROUP\\}")
;; Don't try to chown root.
"")
(("mkdir -p \\$\\(ROTT_STATDIR\\)")
;; Don't attempt to create /var/lib/rottlog.
"true")))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags (list (string-append "ROTT_ETCDIR="
(assoc-ref %outputs "out")
"/etc")
"--localstatedir=/var")
#:phases (alist-cons-after
'install 'install-info
(lambda _
(zero? (system* "make" "install-info")))
%standard-phases)))
(native-inputs `(("texinfo" ,texinfo)
("util-linux" ,util-linux))) ; for 'cal'
(home-page "http://www.gnu.org/software/rottlog/")
(synopsis "Log rotation and management")
(description
"GNU Rot[t]log is a program for managing log files. It is used to
automatically rotate out log files when they have reached a given size or
according to a given schedule. It can also be used to automatically compress
and archive such logs. Rot[t]log will mail reports of its activity to the
system administrator.")
(license gpl3+)))
(define-public sudo
(package
(name "sudo")
(version "1.8.10p3")
(source (origin
(method url-fetch)
(uri
(list (string-append "http://www.sudo.ws/sudo/dist/sudo-"
version ".tar.gz")
(string-append "ftp://ftp.sudo.ws/pub/sudo/OLD/sudo-"
version ".tar.gz")))
(sha256
(base32
"002l6h27pnhb77b65frhazbhknsxvrsnkpi43j7i0qw1lrgi7nkf"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--with-logpath=/var/log/sudo.log")
#:phases (alist-cons-before
'configure 'pre-configure
(lambda _
(substitute* "configure"
;; Refer to the right executables.
(("/usr/bin/mv") (which "mv"))
(("/usr/bin/sh") (which "sh")))
(substitute* (find-files "." "Makefile\\.in")
(("-O [[:graph:]]+ -G [[:graph:]]+")
;; Allow installation as non-root.
"")
(("^install: (.*)install-sudoers(.*)" _ before after)
;; Don't try to create /etc/sudoers.
(string-append "install: " before after "\n"))))
%standard-phases)
;; XXX: The 'testsudoers' test series expects user 'root' to exist, but
;; the chroot's /etc/passwd doesn't have it. Turn off the tests.
#:tests? #f))
(inputs
`(("groff" ,groff)
("linux-pam" ,linux-pam)
("coreutils" ,coreutils)))
(home-page "http://www.sudo.ws/")
(synopsis "Run commands as root")
(description
"Sudo (su \"do\") allows a system administrator to delegate authority to
give certain users (or groups of users) the ability to run some (or all)
commands as root or another user while providing an audit trail of the
commands and their arguments.")
;; See <http://www.sudo.ws/sudo/license.html>.
(license x11)))
(define-public wpa-supplicant
(package
(name "wpa-supplicant")
(version "2.2")
(source (origin
(method url-fetch)
(uri (string-append
"http://hostap.epitest.fi/releases/wpa_supplicant-"
version
".tar.gz"))
(sha256
(base32
"1vf8jc4yyksbxf86narvsli3vxfbm8nbnim2mdp66nd6d3yvin70"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-replace
'configure
(lambda* (#:key outputs #:allow-other-keys)
(chdir "wpa_supplicant")
(copy-file "defconfig" ".config")
(let ((port (open-file ".config" "al")))
(display "
CONFIG_DEBUG_SYSLOG=y
CONFIG_CTRL_IFACE_DBUS=y
CONFIG_CTRL_IFACE_DBUS_NEW=y
CONFIG_CTRL_IFACE_DBUS_INTRO=y
CONFIG_DRIVER_NL80211=y
CFLAGS += $(shell pkg-config libnl-3.0 --cflags)
CONFIG_LIBNL32=y
CONFIG_READLINE=y\n" port)
(close-port port)))
%standard-phases)
#:make-flags (list "CC=gcc"
(string-append "BINDIR=" (assoc-ref %outputs "out")
"/sbin")
(string-append "LIBDIR=" (assoc-ref %outputs "out")
"/lib"))
#:tests? #f))
(inputs
`(("readline" ,readline)
("libnl" ,libnl)
("dbus" ,dbus)
("openssl" ,o:openssl)))
(native-inputs
`(("pkg-config" ,pkg-config)))
(home-page "http://hostap.epitest.fi/wpa_supplicant/")
(synopsis "Connecting to WPA and WPA2-protected wireless networks")
(description
"wpa_supplicant is a WPA Supplicant with support for WPA and WPA2 (IEEE
802.11i / RSN). Supplicant is the IEEE 802.1X/WPA component that is used in
the client stations. It implements key negotiation with a WPA Authenticator
and it controls the roaming and IEEE 802.11 authentication/association of the
WLAN driver.
This package provides the 'wpa_supplicant' daemon and the 'wpa_cli' command.")
;; In practice, this is linked against Readline, which makes it GPLv3+.
(license bsd-3)))
(define-public wakelan
(package
(name "wakelan")
(version "1.1")
(source (origin
(method url-fetch)
(uri (string-append
"ftp://ftp.gwdg.de/pub/linux/metalab/system/network/misc/wakelan-"
version ".tar.gz"))
(sha256
(base32
"0vydqpf44146ir6k87gmqaq6xy66xhc1gkr3nsd7jj3nhy7ypx9x"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-replace
'configure
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(mkdir-p (string-append out "/bin"))
(mkdir-p (string-append out "/share/man/man1"))
;; It's an old configure script that doesn't understand
;; the extra options we pass.
(setenv "CONFIG_SHELL" (which "bash"))
(zero?
(system* "./configure"
(string-append "--prefix=" out)
(string-append "--mandir=" out
"/share/man")))))
%standard-phases)
#:tests? #f))
(home-page "http://kernel.org") ; really, no home page
(synopsis "Send a wake-on-LAN packet")
(description
"WakeLan broadcasts a properly formatted UDP packet across the local area
network, which causes enabled computers to power on.")
(license gpl2+)))
(define-public dmidecode
(package
(name "dmidecode")
(version "2.12")
(source (origin
(method url-fetch)
(uri (string-append
"mirror://savannah/dmidecode/dmidecode-"
version ".tar.bz2"))
(sha256
(base32
"122hgaw8mpqdfra159lfl6pyk3837giqx6vq42j64fjnbl2z6gwi"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-delete 'configure %standard-phases)
#:tests? #f ; no 'check' target
#:make-flags (list (string-append "prefix="
(assoc-ref %outputs "out")))))
(home-page "http://www.nongnu.org/dmidecode/")
(synopsis "Read hardware information from the BIOS")
(description
"Dmidecode reports information about your system's hardware as described
in your system BIOS according to the SMBIOS/DMI standard. This typically
includes system manufacturer, model name, serial number, BIOS version, asset
tag as well as a lot of other details of varying level of interest and
reliability depending on the manufacturer. This will often include usage
status for the CPU sockets, expansion slots (e.g. AGP, PCI, ISA) and memory
module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
(license gpl2+)))
(define-public acpica
(package
(name "acpica")
(version "20140724")
(source (origin
(method url-fetch)
(uri (string-append
"https://acpica.org/sites/acpica/files/acpica-unix2-"
version ".tar.gz"))
(sha256
(base32
"01vdgrh7dsxrrvg5yd8sxm63cw8210pnsi5qg9g15ac53gn243ac"))))
(build-system gnu-build-system)
(native-inputs `(("flex" ,flex)
("bison" ,bison)))
(arguments
'(#:make-flags (list (string-append "PREFIX=" %output)
"HOST=_LINUX"
"OPT_CFLAGS=-Wall -fno-strict-aliasing")
#:tests? #f ; no 'check' target.
#:phases (alist-delete 'configure %standard-phases)))
(home-page "http://acpica.org/")
(synopsis "Tools for the development and debug of ACPI tables")
(description
"The ACPI Component Architecture (ACPICA) project provides an
OS-independent reference implementation of the Advanced Configuration and
Power Interface Specification (ACPI). ACPICA code contains those portions of
ACPI meant to be directly integrated into the host OS as a kernel-resident
subsystem, and a small set of tools to assist in developing and debugging ACPI
tables. This package contains only the user-space tools needed for ACPI table
development, not the kernel implementation of ACPI.")
(license gpl2))) ; Dual GPLv2/ACPICA Licence
(define-public stress
(package
(name "stress")
(version "1.0.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://debian/pool/main/s/stress/stress_"
version ".orig.tar.gz"))
(sha256
(base32
"1v9vnzlihqfjsxa93hdbrq72pqqk00dkylmlg8jpxhm7s1w9qfl1"))))
(build-system gnu-build-system)
(home-page "http://packages.debian.org/wheezy/stress")
(synopsis "Impose load on and stress test a computer system")
(description
"Stress is a tool that imposes a configurable amount of CPU, memory, I/O,
or disk stress on a POSIX-compliant operating system and reports any errors it
detects.
Stress is not a benchmark. It is a tool used by system administrators to
evaluate how well their systems will scale, by kernel programmers to evaluate
perceived performance characteristics, and by systems programmers to expose
the classes of bugs which only or more frequently manifest themselves when the
system is under heavy load.")
(license gpl2+)))
(define-public detox
(package
(name "detox")
(version "1.2.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/detox/detox-"
version ".tar.bz2"))
(sha256
(base32
"1y6vvjqsg54kl49cry73jbfhr04s7wjs779vrr9zrq6kww7dkymb"))))
(build-system gnu-build-system)
;; Both flex and popt are used in this case for their runtime libraries
;; (libfl and libpopt).
(inputs
`(("flex" ,flex)
("popt" ,popt)))
(arguments
`(#:configure-flags `(,(string-append "--with-popt="
(assoc-ref %build-inputs "popt")))
#:tests? #f)) ;no 'check' target
(home-page "http://detox.sourceforge.net")
(synopsis "Clean up filenames")
(description
"Detox is a program that renames files to make them easier to work with
under Unix and related operating systems. Spaces and various other unsafe
characters (such as \"$\") get replaced with \"_\". ISO 8859-1 (Latin-1)
characters can be replaced as well, as can UTF-8 characters.")
(license bsd-3)))
(define-public testdisk
(package
(name "testdisk")
(version "6.14")
(source (origin
(method url-fetch)
(uri (string-append "http://www.cgsecurity.org/testdisk-"
version ".tar.bz2"))
(sha256
(base32
"0v1jap83f5h99zv01v3qmqm160d36n4ysi0gyq7xzb3mqgmw75x5"))))
(build-system gnu-build-system)
(inputs
`(;; ("ntfs" ,ntfs)
("util-linux" ,util-linux)
("openssl" ,o:openssl)
("zlib" ,c:zlib)
("e2fsprogs" ,e2fsprogs)
("libjpeg" ,libjpeg)
("ncurses" ,ncurses)))
(home-page "http://www.cgsecurity.org/wiki/TestDisk")
(synopsis "Data recovery tool")
(description
"TestDisk is a program for data recovery, primarily designed to help
recover lost partitions and/or make non-booting disks bootable again.")
(license gpl2+)))
(define-public direvent
(package
(name "direvent")
(version "5.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/direvent/direvent-"
version ".tar.gz"))
(sha256
(base32
"1i14131y6m8wvirz6piw4zxz2q1kbpl0lniv5kl55rx4k372dg8z"))
(modules '((guix build utils)))
(snippet '(substitute* "tests/testsuite"
(("#![[:blank:]]?/bin/sh")
"#!$SHELL")))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-cons-before
'build 'patch-/bin/sh
(lambda* (#:key inputs #:allow-other-keys)
;; Use the right shell when executing the watcher.
(let ((bash (assoc-ref inputs "bash")))
(substitute* "src/direvent.c"
(("\"/bin/sh\"")
(string-append "\"" bash "/bin/sh\"")))))
%standard-phases)))
(home-page "http://www.gnu.org/software/direvent/")
(synopsis "Daemon to monitor directories for events such as file removal")
(description
"A daemon that monitors directories for events, such as creating,
deleting or modifying files. It can monitor different sets of directories for
different events. When an event is detected, direvent calls a specified
external program with information about the event, such as the location
within the file system where it occurred. Thus, \"direvent\" provides an
easy way to react immediately if given files undergo changes, for example, to
track changes in important system configuration files.")
(license gpl3+)))
+55
View File
@@ -0,0 +1,55 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages adns)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu))
(define-public adns
(package
(name "adns")
(version "1.5.0")
(source (origin
(method url-fetch)
(uri (list (string-append "mirror://gnu/adns/adns-"
version ".tar.gz")
(string-append
"http://www.chiark.greenend.org.uk/~ian/adns/ftp/adns-"
version ".tar.gz")))
(sha256
(base32
"0hg89b5n84zjhzvbzrpvhl0hbm4s6d1z2pzllfis64ai656ypibz"))))
(build-system gnu-build-system)
(arguments
;; Make sure the programs under bin/ fine libadns.so.
'(#:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath -Wl,"
(assoc-ref %outputs "out")
"/lib"))
;; XXX: Tests expect real name resolution to work.
#:tests? #f))
(home-page "http://www.gnu.org/software/adns/")
(synopsis "Asynchronous DNS client library and utilities")
(description
"GNU adns is a C library that provides easy-to-use DNS resolution
functionality. The library is asynchronous, allowing several concurrent
calls. The package also includes several command-line utilities for use in
scripts.")
(license gpl3+)))
+68
View File
@@ -0,0 +1,68 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 John Darringon <jmd@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages aidc)
#:use-module (gnu packages)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages image)
#:use-module (guix build-system gnu))
(define-public barcode
(package
(name "barcode")
(version "0.99")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/barcode/barcode-"
version ".tar.xz"))
(sha256 (base32
"1indapql5fjz0bysyc88cmc54y8phqrbi7c76p71fgjp45jcyzp8"))))
(build-system gnu-build-system)
(synopsis "Convert text strings to printed bars in various standards")
(description "GNU Barcode is a flexible tool to produce printed barcodes
from text strings. It supports a variety of encoding standards and sizing
measurements. Barcodes can be output in PostScript or Encapsulated PostScript
formats.")
(license license:gpl3+)
(home-page "http://www.gnu.org/software/barcode/")))
(define-public qrencode
(package
(name "qrencode")
(version "3.4.3")
(source (origin
(method url-fetch)
(uri (string-append
"http://fukuchi.org/works/qrencode/qrencode-" version
".tar.bz2"))
(sha256 (base32
"163sb580p570p27imc6jhkfdw15kzp8vy1jq92nip1rwa63i9myz"))))
(build-system gnu-build-system)
(inputs `(("libpng" ,libpng)))
(native-inputs `(("pkg-config" ,pkg-config)))
(synopsis "Encode data into a QR Code symbol")
(description "Libqrencode is a C library for encoding data in a QR Code
symbol, a kind of 2D symbology that can be scanned by handy terminals such as
a mobile phone with CCD. The capacity of QR Code is up to 7000 digits or 4000
characters, and is highly robust.")
(license license:lgpl2.1+)
(home-page "http://fukuchi.org/works/qrencode")))
+220 -65
View File
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2012, 2013, 2014 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -20,19 +21,21 @@
(define-module (gnu packages algebra)
#:use-module (gnu packages)
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages mpi)
#:use-module (gnu packages perl)
#:use-module (gnu packages readline)
#:use-module (gnu packages flex)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu))
#:use-module (guix build-system gnu)
#:use-module (guix utils))
(define-public mpfrcx
(package
(name "mpfrcx")
(version "0.4.1")
(version "0.4.2")
(source (origin
(method url-fetch)
(uri (string-append
@@ -40,19 +43,18 @@
version ".tar.gz"))
(sha256
(base32
"1rrc75chxyicqjgg5mfhgbz7p9mx1fgh0qlx14a82m25vfhifnd1"))))
"0grw66b255r574lvll1bqccm5myj2m8ajzsjaygcyq9zjnnbnhhy"))))
(build-system gnu-build-system)
(inputs `(("gmp" ,gmp)
("mpfr" ,mpfr)
("mpc" ,mpc)))
(synopsis "mpfrcx, a library for the arithmetic of univariate polynomials
over arbitrary precision real or complex numbers")
(synopsis "Arithmetic of polynomials over arbitrary precision numbers")
(description
"mpfrcx is a library for the arithmetic of univariate polynomials over
"Mpfrcx is a library for the arithmetic of univariate polynomials over
arbitrary precision real (mpfr) or complex (mpc) numbers, without control
on the rounding. For the time being, only the few functions needed to
on the rounding. For the time being, only the few functions needed to
implement the floating point approach to complex multiplication are
implemented. On the other hand, these comprise asymptotically fast
implemented. On the other hand, these comprise asymptotically fast
multiplication routines such as ToomCook and the FFT. ")
(license lgpl2.1+)
(home-page "http://mpfrcx.multiprecision.org/")))
@@ -60,61 +62,35 @@ multiplication routines such as ToomCook and the FFT. ")
(define-public fplll
(package
(name "fplll")
(version "4.0.2")
(version "4.0.4")
(source (origin
(method url-fetch)
(uri (string-append
"http://perso.ens-lyon.fr/damien.stehle/fplll/libfplll-"
version ".tar.gz"))
(sha256 (base32
"0zkifm4s77cl2qib905lxpwvlwf6liy8q7bnmvfdfyz0fbgxl8z8"))))
"1cbiby7ykis4z84swclpysrljmqhfcllpkcbll1m08rzskgb1a6b"))))
(build-system gnu-build-system)
(inputs `(("gmp" ,gmp)
("mpfr" ,mpfr)))
(synopsis "fplll, a library for LLL-reduction of euclidean lattices")
(synopsis "Library for LLL-reduction of euclidean lattices")
(description
"fplll LLL-reduces euclidean lattices. Since version 3, it can also
"fplll LLL-reduces euclidean lattices. Since version 3, it can also
solve the shortest vector problem.")
(license lgpl2.1+)
(home-page "http://perso.ens-lyon.fr/damien.stehle/fplll/")))
(define-public gsl
(package
(name "gsl")
(version "1.15")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/gsl/gsl-"
version ".tar.gz"))
(sha256
(base32
"18qf6jzz1r3mzb5qynywv4xx3z9g61hgkbpkdrhbgqh2g7jhgfc5"))))
(build-system gnu-build-system)
(home-page "http://www.gnu.org/software/gsl/")
(synopsis "Numerical library for C and C++")
(description
"The GNU Scientific Library (GSL) is a numerical library for C
and C++ programmers. It is free software under the GNU General
Public License.
The library provides a wide range of mathematical routines such
as random number generators, special functions and least-squares
fitting. There are over 1000 functions in total with an
extensive test suite.")
(license gpl3+)))
(define-public pari-gp
(package
(name "pari-gp")
(version "2.5.3")
(version "2.7.1")
(source (origin
(method url-fetch)
(uri (string-append
"http://pari.math.u-bordeaux.fr/pub/pari/unix/pari-"
version ".tar.gz"))
(sha256 (base32
"0zsjccnnv00kwj2gk3ww2v530kjin1rgj8p8hbl4pwcnwc7m68gl"))))
"1gj1rddi22hinzwy7r6hljgbi252wwwyd6gapg4hvcn0ycc7jqyc"))))
(build-system gnu-build-system)
(inputs `(("gmp" ,gmp)
("perl" ,perl)
@@ -127,17 +103,10 @@ extensive test suite.")
#:phases
(alist-replace
'configure
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(readline (assoc-ref inputs "readline"))
(gmp (assoc-ref inputs "gmp")))
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(zero?
(system* "./Configure"
(string-append "--prefix=" out)
(string-append "--with-readline=" readline)
(string-append "--with-gmp=" gmp)))))
;; FIXME: readline and gmp will be detected automatically in the next
;; stable release
(system* "./Configure" (string-append "--prefix=" out)))))
%standard-phases)))
(synopsis "PARI/GP, a computer algebra system for number theory")
(description
@@ -151,6 +120,133 @@ PARI is also available as a C library to allow for faster computations.")
(license gpl2+)
(home-page "http://pari.math.u-bordeaux.fr/")))
(define-public gp2c
(package
(name "gp2c")
(version "0.0.9pl1")
(source (origin
(method url-fetch)
(uri (string-append
"http://pari.math.u-bordeaux.fr/pub/pari/GP2C/gp2c-"
version ".tar.gz"))
(sha256 (base32
"1p36060vwhn38j77r4c3jqyaslvhvgm6fdw2486k7krxk5ai7ph5"))))
(build-system gnu-build-system)
(native-inputs `(("perl" ,perl)))
(inputs `(("pari-gp" ,pari-gp)))
(arguments
'(#:configure-flags
(list (string-append "--with-paricfg="
(assoc-ref %build-inputs "pari-gp")
"/lib/pari/pari.cfg"))))
(synopsis "PARI/GP, a computer algebra system for number theory")
(description
"PARI/GP is a widely used computer algebra system designed for fast
computations in number theory (factorisations, algebraic number theory,
elliptic curves...), but it also contains a large number of other useful
functions to compute with mathematical entities such as matrices,
polynomials, power series, algebraic numbers, etc., and a lot of
transcendental functions.
PARI is also available as a C library to allow for faster computations.
GP2C, the GP to C compiler, translates GP scripts to PARI programs.")
(license gpl2)
(home-page "http://pari.math.u-bordeaux.fr/")))
(define-public flint
(package
(name "flint")
(version "2.4.4")
(source (origin
(method url-fetch)
(uri (string-append
"http://flintlib.org/flint-"
version ".tar.gz"))
(sha256 (base32
"1isv1sfv8sg3qvf0d99apdfi3jnql95xfzszcawdf1pgjj9rwyf4"))))
(build-system gnu-build-system)
(inputs
`(("gmp" ,gmp)
("mpfr" ,mpfr)))
(arguments
`(#:phases
(alist-replace
'configure
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(gmp (assoc-ref inputs "gmp"))
(mpfr (assoc-ref inputs "mpfr")))
;; Drop test failing with gmp-6 due to changed invertibility
;; of 0 in Z/1 Z, which according to the flint authors has no
;; impact on flint.
;; FIXME: Drop with later version.
(delete-file "fmpz/test/t-invmod.c")
;; do not pass "--enable-fast-install", which makes the
;; homebrew configure process fail
(zero? (system*
"./configure"
(string-append "--prefix=" out)
(string-append "--with-gmp=" gmp)
(string-append "--with-mpfr=" mpfr)))))
%standard-phases)))
(synopsis "Fast library for number theory")
(description
"FLINT is a C library for number theory. It supports arithmetic
with numbers, polynomials, power series and matrices over many base
rings, including multiprecision integers and rationals, integers
modulo n, p-adic numbers, finite fields (prime and non-prime order)
and real and complex numbers (via the Arb extension library).
Operations that can be performed include conversions, arithmetic,
GCDs, factoring, solving linear systems, and evaluating special
functions. In addition, FLINT provides various low-level routines for
fast arithmetic.")
(license gpl2+)
(home-page "http://flintlib.org/")))
(define-public arb
(package
(name "arb")
(version "2.2.0")
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/fredrik-johansson/arb/archive/"
version ".tar.gz"))
(sha256 (base32
"0a8cgzznkmr59ngj4di9a37b5h4i00gbnixnxlwd34bcbflvjzyr"))))
(build-system gnu-build-system)
(inputs
`(("flint" ,flint)
("gmp" ,gmp)
("mpfr" ,mpfr)))
(arguments
`(#:phases
(alist-replace
'configure
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(flint (assoc-ref inputs "flint"))
(gmp (assoc-ref inputs "gmp"))
(mpfr (assoc-ref inputs "mpfr")))
;; do not pass "--enable-fast-install", which makes the
;; homebrew configure process fail
(zero? (system*
"./configure"
(string-append "--prefix=" out)
(string-append "--with-flint=" flint)
(string-append "--with-gmp=" gmp)
(string-append "--with-mpfr=" mpfr)))))
%standard-phases)))
(synopsis "Arbitrary precision floating-point ball arithmetic")
(description
"Arb is a C library for arbitrary-precision floating-point ball
arithmetic. It supports efficient high-precision computation with
polynomials, power series, matrices and special functions over the
real and complex numbers, with automatic, rigorous error control.")
(license gpl2+)
(home-page "http://fredrikj.net/arb/")))
(define-public bc
(package
(name "bc")
@@ -162,8 +258,8 @@ PARI is also available as a C library to allow for faster computations.")
(base32
"0cqf5jkwx6awgd2xc2a0mkpxilzcfmhncdcfg7c9439wgkqxkxjf"))))
(build-system gnu-build-system)
(inputs `(("readline" ,readline)
("flex" ,flex)))
(inputs `(("readline" ,readline)))
(native-inputs `(("flex" ,flex)))
(arguments
'(#:phases
(alist-replace 'configure
@@ -173,20 +269,79 @@ PARI is also available as a C library to allow for faster computations.")
(let ((out (assoc-ref outputs "out")))
(setenv "CONFIG_SHELL" (which "bash"))
(zero?
(system* "./configure"
(string-append "--prefix=" out)))))
(system*
"./configure"
(string-append "--prefix=" out)
;; By default, man and info pages are put in
;; PREFIX/{man,info}, but we want them in
;; PREFIX/share/{man,info}.
(string-append "--mandir=" out "/share/man")
(string-append "--infodir=" out "/share/info")))))
%standard-phases)))
(home-page "http://www.gnu.org/software/bc/")
(synopsis "Arbitrary precision numeric processing language")
(description
"bc is an arbitrary precision numeric processing language. Syntax
is similar to C, but differs in many substantial areas. It supports
interactive execution of statements. bc is a utility included in the
POSIX P1003.2/D11 draft standard.
Since the POSIX document does not specify how bc must be implemented,
this version does not use the historical method of having bc be a
compiler for the dc calculator. This version has a single executable
that both compiles the language and runs the resulting `byte code'. The
byte code is not the dc language.")
"bc is an arbitrary precision numeric processing language. It includes
an interactive environment for evaluating mathematical statements. Its
syntax is similar to that of C, so basic usage is familiar. It also includes
\"dc\", a reverse-polish calculator.")
(license gpl2+)))
(define-public fftw
(package
(name "fftw")
(version "3.3.4")
(source (origin
(method url-fetch)
(uri (string-append "ftp://ftp.fftw.org/pub/fftw/fftw-"
version".tar.gz"))
(sha256
(base32
"10h9mzjxnwlsjziah4lri85scc05rlajz39nqf3mbh4vja8dw34g"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags '("--enable-shared" "--enable-openmp")
#:phases (alist-cons-before
'build 'no-native
(lambda _
;; By default '-mtune=native' is used. However, that may
;; cause the use of ISA extensions (SSE2, etc.) that are
;; not necessarily available on the user's machine when
;; that package is built on a different machine.
(substitute* (find-files "." "Makefile$")
(("-mtune=native") "")))
%standard-phases)))
(native-inputs `(("perl" ,perl)))
(home-page "http://fftw.org")
(synopsis "Computing the discrete Fourier transform")
(description
"FFTW is a C subroutine library for computing the discrete Fourier
transform (DFT) in one or more dimensions, of arbitrary input size, and of
both real and complex data (as well as of even/odd data---i.e. the discrete
cosine/ sine transforms or DCT/DST).")
(license gpl2+)))
(define-public fftwf
(package (inherit fftw)
(name "fftwf")
(arguments
(substitute-keyword-arguments (package-arguments fftw)
((#:configure-flags cf)
`(cons "--enable-float" ,cf))))
(description
(string-append (package-description fftw)
" Single-precision version."))))
(define-public fftw-openmpi
(package (inherit fftw)
(name "fftw-openmpi")
(inputs
`(("openmpi" ,openmpi)
,@(package-inputs fftw)))
(arguments
(substitute-keyword-arguments (package-arguments fftw)
((#:configure-flags cf)
`(cons "--enable-mpi" ,cf))))
(description
(string-append (package-description fftw)
" With OpenMPI parallelism support."))))
+56
View File
@@ -0,0 +1,56 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages apl)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages gettext)
#:use-module (gnu packages maths)
#:use-module (gnu packages databases)
#:use-module (gnu packages readline))
(define-public apl
(package
(name "apl")
(version "1.4")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/apl/apl-" version ".tar.gz"))
(sha256
(base32
"0fl9l4jb5wpnb54kqkphavi657z1cv15h9qj2rqy2shf33dk3nk9"))))
(build-system gnu-build-system)
(home-page "http://www.gnu.org/software/apl/")
(inputs
`(("gettext" ,gnu-gettext)
("lapack" ,lapack)
("sqlite" ,sqlite)
("readline" ,readline)))
(arguments
`(#:configure-flags (list (string-append
"--with-sqlite3="
(assoc-ref %build-inputs "sqlite")))))
(synopsis "APL interpreter")
(description
"GNU APL is a free interpreter for the programming language APL. It is
an implementation of the ISO standard 13751.")
(license gpl3+)))
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -16,7 +17,7 @@
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages libapr)
(define-module (gnu packages apr)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
@@ -25,65 +26,74 @@
#:use-module (gnu packages perl)
#:use-module (gnu packages autotools))
(define-public libapr
(define-public apr
(package
(name "libapr")
(version "1.4.8")
(name "apr")
(version "1.5.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://apache/apr/apr-"
version ".tar.bz2"))
(sha256
(base32
"0884csfk3f530yscak0jlr6w929s3ys0n7fpwdg3dii1sgwd5f31"))))
"1b4qw686bwjn19iyb0lg918q23xxd6s2gnyczhjq992d3m1vwjp9"))
(patches
(list (search-patch "apr-skip-getservbyname-test.patch")))
(patch-flags '("-p0"))))
(build-system gnu-build-system)
(arguments
`(#:patches (list (assoc-ref %build-inputs
"patch/skip-test"))
#:patch-flags '("-p0")))
;; Sometimes we end up with two processes concurrently trying to make
;; 'libmod_test.la': <http://hydra.gnu.org/build/60266/nixlog/2/raw>.
;; Thus, build sequentially.
'(#:parallel-build? #f
#:parallel-tests? #f))
(inputs `(("perl" ,perl)
("libtool" ,libtool)
("patch/skip-test"
,(search-patch "libapr-skip-getservbyname-test.patch"))))
("libtool" ,libtool)))
(home-page "http://apr.apache.org/")
(synopsis "The Apache Portable Runtime Library")
(description
"The mission of the Apache Portable Runtime (APR) project is to create and
maintain software libraries that provide a predictable and consistent interface
to underlying platform-specific implementations. The primary goal is to provide
to underlying platform-specific implementations. The primary goal is to provide
an API to which software developers may code and be assured of predictable if
not identical behaviour regardless of the platform on which their software is
built, relieving them of the need to code special-case conditions to work
around or take advantage of platform-specific deficiencies or features.")
(license asl2.0)))
(define-public libaprutil
(define-public apr-util
(package
(name "libaprutil")
(version "1.5.2")
(name "apr-util")
(version "1.5.3")
(source (origin
(method url-fetch)
(uri (string-append "mirror://apache/apr/apr-util-"
version ".tar.bz2"))
(sha256
(base32
"19qjxpckb9p4j9pbk8kcirg6k5vqnjrqhnk9xx2c5m9964p3vkls"))))
"0s1rpqjy5xr03k9s4xrsm5wvhj5286vlkf6jvqayw99yy5sb3vbq"))))
(build-system gnu-build-system)
(inputs
`(("libapr" ,libapr)))
`(("apr" ,apr)))
(arguments
'(#:phases
(alist-replace
'configure
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(libapr (assoc-ref inputs "libapr")))
(apr (assoc-ref inputs "apr")))
(setenv "CONFIG_SHELL" (which "bash"))
(zero?
(system* "./configure"
(string-append "--prefix=" out)
(string-append "--with-apr=" libapr)))))
%standard-phases)))
(string-append "--with-apr=" apr)))))
%standard-phases)
;; There are race conditions during 'make check'. Typically, the
;; 'testall' executable is not built yet by the time 'make check' tries
;; to run it. See
;; <http://lists.gnu.org/archive/html/guix-devel/2014-03/msg00261.html>.
#:parallel-tests? #f))
(home-page "http://apr.apache.org/")
(synopsis "One of the Apache Portable Runtime Library companions")
(description
+52
View File
@@ -0,0 +1,52 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages asciidoc)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (gnu packages python)
#:use-module (guix build-system gnu)
#:autoload (gnu packages zip) (unzip))
(define-public asciidoc
(package
(name "asciidoc")
(version "8.6.9")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/asciidoc/asciidoc-"
version ".tar.gz"))
(sha256
(base32
"1w71nk527lq504njmaf0vzr93pgahkgzzxzglrq6bay8cw2rvnvq"))))
(build-system gnu-build-system)
(arguments '(#:tests? #f)) ; no 'check' target
(inputs `(("python" ,python-2)))
(home-page "http://www.methods.co.nz/asciidoc/")
(synopsis "Text-based document generation system")
(description
"AsciiDoc is a text document format for writing notes, documentation,
articles, books, ebooks, slideshows, web pages, man pages and blogs.
AsciiDoc files can be translated to many formats including HTML, PDF,
EPUB, man page.
AsciiDoc is highly configurable: both the AsciiDoc source file syntax and
the backend output markups (which can be almost any type of SGML/XML
markup) can be customized and extended by the user.")
(license gpl2+)))
+75 -12
View File
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -21,7 +21,8 @@
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (guix licenses)
#:use-module (gnu packages perl))
#:use-module (gnu packages perl)
#:use-module (gnu packages which))
(define-public aspell
(package
@@ -40,14 +41,76 @@
(home-page "http://aspell.net/")
(synopsis "Spell checker")
(description
"GNU Aspell is a free spell checker designed to eventually replace
Ispell. It can either be used as a library or as an independent spell
checker. Its main feature is that it does a superior job of suggesting
possible replacements for a misspelled word than just about any other
spell checker out there for the English language. Unlike Ispell, Aspell
can also easily check documents in UTF-8 without having to use a special
dictionary. Aspell will also do its best to respect the current locale
setting. Other advantages over Ispell include support for using
multiple dictionaries at once and intelligently handling personal
dictionaries when more than one Aspell process is open at once.")
"Aspell is a spell-checker which can be used either as a library or as
a standalone program. Notable features of Aspell include its full support of
documents written in the UTF-8 encoding and its ability to use multiple
dictionaries, including personal ones.")
(license lgpl2.1+)))
;;;
;;; Dictionaries.
;;;
;;; Use 'export ASPELL_CONF="dict-dir $HOME/.guix-profile/lib/aspell"' to use them.
;;;
(define* (aspell-dictionary dict-name full-name
#:key version sha256 (prefix "aspell6-"))
(package
(name (string-append "aspell-dict-" dict-name))
(version version)
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/aspell/dict/" dict-name
"/" prefix dict-name "-"
version ".tar.bz2"))
(sha256 sha256)))
(build-system gnu-build-system)
(arguments
`(#:phases (alist-replace
'configure
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(zero? (system* "./configure"))))
%standard-phases)
#:make-flags (let ((out (assoc-ref %outputs "out")))
(list (string-append "dictdir=" out "/lib/aspell")
(string-append "datadir=" out "/lib/aspell")))
#:tests? #f))
(native-inputs `(("aspell" ,aspell)
("which" ,which)))
(synopsis (string-append full-name " dictionary for GNU Aspell")) ; XXX: i18n
(description
"This package provides a dictionary for the GNU Aspell spell checker.")
(license gpl2+)
(home-page "http://aspell.net/")))
(define-public aspell-dict-en
(aspell-dictionary "en" "English"
#:version "7.1-0"
#:sha256
(base32
"02ldfiny4iakgfgy4sdrzjqdzi7l1rmb6y30lv31kfy5x31g77gz")))
(define-public aspell-dict-eo
(aspell-dictionary "eo" "Esperanto"
#:version "2.1.20000225a-2"
#:sha256
(base32
"09vf0mbiicbmyb4bwb7v7lgpabnylg0wy7m3hlhl5rjdda6x3lj1")))
(define-public aspell-dict-es
(aspell-dictionary "es" "Spanish"
#:version "1.11-2"
#:sha256
(base32
"1k5g328ac1hdpp6fsg57d8md6i0aqcwlszp3gbmp5706wyhpydmd")))
(define-public aspell-dict-fr
(aspell-dictionary "fr" "French"
#:version "0.50-3"
#:prefix "aspell-"
#:sha256
(base32
"14ffy9mn5jqqpp437kannc3559bfdrpk7r36ljkzjalxa53i0hpr")))
+2 -3
View File
@@ -20,8 +20,7 @@
(define-module (gnu packages attr)
#:use-module (guix licenses)
#:use-module (gnu packages perl)
#:use-module ((gnu packages gettext)
#:renamer (symbol-prefix-proc 'guix:))
#:use-module (gnu packages gettext)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu))
@@ -75,7 +74,7 @@
'()
`(("perl" ,perl))))
(native-inputs
`(("gettext" ,guix:gettext)))
`(("gettext" ,gnu-gettext)))
(home-page "http://savannah.nongnu.org/projects/attr/")
(synopsis "Library and tools for manipulating extended attributes")
+65
View File
@@ -0,0 +1,65 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013,2014 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages autogen)
#:use-module (guix packages)
#:use-module (guix licenses)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages perl)
#:use-module (gnu packages which)
#:use-module (gnu packages guile))
(define-public autogen
(package
(name "autogen")
(version "5.18.4")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/autogen/rel"
version "/autogen-"
version ".tar.gz"))
(sha256
(base32
"0pbjzwgvmjvi6nl1bcyhfc9kl93s6321dgmvp5dqdip7i8dgin9w"))))
(build-system gnu-build-system)
(native-inputs `(("perl" ,perl))) ;for doc generator mdoc
(inputs `(("which" ,which)
("guile" ,guile-2.0)))
(arguments
'(#:phases (alist-cons-before
'patch-source-shebangs 'patch-test-scripts
(lambda _
(let ((sh (which "sh")))
(substitute*
(append (find-files "agen5/test" "\\.test$")
(find-files "autoopts/test" "\\.(test|in)$"))
(("/bin/sh") sh)
(("/usr/bin/tr") "tr"))))
%standard-phases)))
(home-page "http://www.gnu.org/software/autogen/")
(synopsis "Automated program generator")
(description
"AutoGen is a program to ease the maintenance of programs that contain
large amounts of repetitive text. It automates the construction of these
sections of the code, simplifying the task of keeping the text in sync. It
also includes an add-on package called AutoOpts, which is specialized for the
maintenance and documentation of program options.")
(license gpl3+)))
+82 -58
View File
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -27,7 +28,9 @@
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial))
#:use-module (guix build-system trivial)
#:use-module (ice-9 match)
#:export (autoconf-wrapper))
(define-public autoconf
(package
@@ -52,20 +55,44 @@
"http://www.gnu.org/software/autoconf/")
(synopsis "Create source code configuration scripts")
(description
"GNU Autoconf is an extensible package of M4 macros that produce
shell scripts to automatically configure software source code
packages. These scripts can adapt the packages to many kinds of
UNIX-like systems without manual user intervention. Autoconf
creates a configuration script for a package from a template
file that lists the operating system features that the package
can use, in the form of M4 macro calls.")
"Autoconf offers the developer a robust set of M4 macros which expand
into shell code to test the features of Unix-like systems and to adapt
automatically their software package to these systems. The resulting shell
scripts are self-contained and portable, freeing the user from needing to
know anything about Autoconf or M4.")
(license gpl3+))) ; some files are under GPLv2+
(define-public autoconf-wrapper
;; An Autoconf wrapper that generates `configure' scripts that use our
;; own Bash instead of /bin/sh in shebangs. For that reason, it
;; should only be used internally---users should not end up
;; distributing `configure' files with a system-specific shebang.
(define-public autoconf-2.68
(package (inherit autoconf)
(version "2.68")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/autoconf/autoconf-"
version ".tar.xz"))
(sha256
(base32
"1fjm21k2na07f3vasf288a0zx66lbv0hd3l9bvv3q8p62s3pg569"))))))
(define-public autoconf-2.64
;; As of GDB 7.8, GDB is still developed using this version of Autoconf.
(package (inherit autoconf)
(version "2.64")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/autoconf/autoconf-"
version ".tar.xz"))
(sha256
(base32
"0j3jdjpf5ly39dlp0bg70h72nzqr059k0x8iqxvaxf106chpgn9j"))))))
(define* (autoconf-wrapper #:optional (autoconf autoconf))
"Return an wrapper around AUTOCONF that generates `configure' scripts that
use our own Bash instead of /bin/sh in shebangs. For that reason, it should
only be used internally---users should not end up distributing `configure'
files with a system-specific shebang."
(package (inherit autoconf)
(location (source-properties->location (current-source-location)))
(name (string-append (package-name autoconf) "-wrapper"))
@@ -134,27 +161,26 @@ exec ~a --no-auto-compile \"$0\" \"$@\"
(define-public automake
(package
(name "automake")
(version "1.14")
(version "1.14.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/automake/automake-"
version ".tar.xz"))
(sha256
(base32
"0nc0zqq8j336kamizzd86wb19vhbwywv5avcjh3cyx230xfqy671"))))
"0s86rzdayj1licgj35q0mnynv5xa8f4p32m36blc5jk9id5z1d59"))
(patches
(list (search-patch "automake-skip-amhello-tests.patch")))))
(build-system gnu-build-system)
(inputs
`(("autoconf" ,autoconf-wrapper)
("perl" ,perl)
("patch/skip-amhello"
,(search-patch "automake-skip-amhello-tests.patch"))))
`(("autoconf" ,(autoconf-wrapper))
("perl" ,perl)))
(native-search-paths
(list (search-path-specification
(variable "ACLOCAL_PATH")
(directories '("share/aclocal")))))
(arguments
'(#:patches (list (assoc-ref %build-inputs "patch/skip-amhello"))
#:modules ((guix build gnu-build-system)
'(#:modules ((guix build gnu-build-system)
(guix build utils)
(srfi srfi-1)
(srfi srfi-26)
@@ -203,9 +229,10 @@ exec ~a --no-auto-compile \"$0\" \"$@\"
(home-page "http://www.gnu.org/software/automake/")
(synopsis "Making GNU standards-compliant Makefiles")
(description
"GNU Automake is a tool for automatically generating
`Makefile.in' files compliant with the GNU Coding
Standards. Automake requires the use of Autoconf.")
"Automake the part of the GNU build system for producing
standards-compliant Makefiles. Build requirements are entered in an
intuitive format and then Automake works with Autoconf to produce a robust
Makefile, simplifying the entire process for the developer.")
(license gpl2+))) ; some files are under GPLv3+
(define-public libtool
@@ -218,7 +245,10 @@ Standards. Automake requires the use of Autoconf.")
version ".tar.gz"))
(sha256
(base32
"0649qfpzkswgcj9vqkkr9rn4nlcx80faxpyqscy2k1x9c94f93dk"))))
"0649qfpzkswgcj9vqkkr9rn4nlcx80faxpyqscy2k1x9c94f93dk"))
(patches
(list (search-patch "libtool-skip-tests.patch")
(search-patch "libtool-skip-tests-for-mips.patch")))))
(build-system gnu-build-system)
(native-inputs `(("m4" ,m4)
("perl" ,perl)))
@@ -230,40 +260,34 @@ Standards. Automake requires the use of Autoconf.")
"out")) ; libltdl.so, ltdl.h, etc.
(arguments
`(#:patches (list (assoc-ref %build-inputs "patch/skip-tests"))
,@(if (%current-target-system)
'() ; no `check' phase when cross-building
'(#:phases (alist-cons-before
'check 'pre-check
(lambda* (#:key inputs #:allow-other-keys)
;; Run the test suite in parallel, if possible.
(let ((ncores
(cond
((getenv "NIX_BUILD_CORES")
=>
(lambda (n)
(if (zero? (string->number n))
(number->string (current-processor-count))
n)))
(else "1"))))
(setenv "TESTSUITEFLAGS"
(string-append "-j" ncores)))
(if (%current-target-system)
'() ; no `check' phase when cross-building
'(#:phases (alist-cons-before
'check 'pre-check
(lambda* (#:key inputs #:allow-other-keys)
;; Run the test suite in parallel, if possible.
(let ((ncores
(cond
((getenv "NIX_BUILD_CORES")
=>
(lambda (n)
(if (zero? (string->number n))
(number->string (current-processor-count))
n)))
(else "1"))))
(setenv "TESTSUITEFLAGS"
(string-append "-j" ncores)))
;; Path references to /bin/sh.
(let ((bash (assoc-ref inputs "bash")))
(substitute* "tests/testsuite"
(("/bin/sh")
(string-append bash "/bin/bash")))))
%standard-phases)))))
(inputs `(("patch/skip-tests"
,(search-patch "libtool-skip-tests.patch"))))
;; Path references to /bin/sh.
(let ((bash (assoc-ref inputs "bash")))
(substitute* "tests/testsuite"
(("/bin/sh")
(string-append bash "/bin/bash")))))
%standard-phases))))
(synopsis "Generic shared library support tools")
(description
"GNU libtool is a generic library support script. Libtool hides the
complexity of using shared libraries behind a consistent, portable interface.
To use libtool, add the new generic library building commands to your
Makefile, Makefile.in, or Makefile.am. See the documentation for
details.")
"GNU Libtool helps in the creation and use of shared libraries, by
presenting a single consistent, portable interface that hides the usual
complexity of working with shared libraries across platforms.")
(license gpl3+)
(home-page "http://www.gnu.org/software/libtool/")))
+48 -7
View File
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -21,6 +22,7 @@
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages gdbm)
#:use-module (gnu packages libdaemon)
#:use-module (gnu packages pkg-config)
@@ -38,10 +40,12 @@
version ".tar.gz"))
(sha256
(base32
"0j5b5ld6bjyh3qhd2nw0jb84znq0wqai7fsrdzg7bpg24jdp2wl3"))))
"0j5b5ld6bjyh3qhd2nw0jb84znq0wqai7fsrdzg7bpg24jdp2wl3"))
(patches (list (search-patch "avahi-localstatedir.patch")))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags '("--with-distro=none"
"--localstatedir=/var" ; for the DBus socket
"--disable-python"
"--disable-mono"
"--disable-doxygen-doc"
@@ -53,13 +57,50 @@
`(("expat" ,expat)
("glib" ,glib)
("dbus" ,dbus)
("libdaemon" ,libdaemon)
("intltool" ,intltool)
("pkg-config" ,pkg-config)
("gdbm" ,gdbm)))
(synopsis "Avahi, an mDNS/DNS-SD implementation")
("gdbm" ,gdbm)
("libdaemon" ,libdaemon)))
(native-inputs
`(("intltool" ,intltool)
("glib" ,glib "bin")
("pkg-config" ,pkg-config)))
(synopsis "Implementation of mDNS/DNS-SD protocols")
(description
"Avahi is a system which facilitates service discovery on a local
network. It is an implementation of the mDNS (for \"Multicast DNS\") and
DNS-SD (for \"DNS-Based Service Discovery\") protocols.")
(license lgpl2.1+)))
(define-public nss-mdns
(package
(name "nss-mdns")
(version "0.10")
(source (origin
(method url-fetch)
(uri (list
(string-append
"mirror://debian/pool/main/n/nss-mdns/nss-mdns_"
version ".orig.tar.gz")
"http://pkgs.fedoraproject.org/repo/pkgs/nss-mdns/nss-mdns-0.10.tar.gz/03938f17646efbb50aa70ba5f99f51d7/nss-mdns-0.10.tar.gz"
;; This used to be the canonical URL but it vanished.
;; See <http://bugs.gnu.org/18704>.
;; (string-append
;; "http://0pointer.de/lennart/projects/nss-mdns/nss-mdns-"
;; version ".tar.gz")
))
(sha256
(base32
"0vgs6j0qsl0mwzh5a0m0bykr7x6bx79vnbyn0r3q289rghp3qs0y"))
(file-name (string-append name "-" version ".tar.gz"))))
(build-system gnu-build-system)
;; XXX: Stale URL, missing replacement. See <http://bugs.gnu.org/18704>.
(home-page "http://0pointer.de/lennart/projects/nss-mdns/")
(synopsis "The mDNS Name Service Switch (NSS) plug-in")
(description
"Nss-mdns is a plug-in for the Name Service Switch (NSS) functionality
of the GNU C Library, providing host name resolution via Multicast DNS (mDNS).
It allows for name resolution by programs in the ad-hoc mDNS domain
'.local'.")
(license lgpl2.1+)))
+318
View File
@@ -0,0 +1,318 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages backup)
#:use-module (guix packages)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix download)
#:use-module (guix utils)
#:use-module (guix build utils)
#:use-module (guix build-system gnu)
#:use-module (guix build-system python)
#:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
#:use-module (gnu packages dejagnu)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages linux)
#:use-module (gnu packages mcrypt)
#:use-module (gnu packages nettle)
#:use-module (gnu packages pcre)
#:use-module (gnu packages python)
#:use-module (gnu packages linux)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages rsync)
#:use-module (gnu packages ssh)
#:use-module (gnu packages xml))
(define-public duplicity
(package
(name "duplicity")
(version "0.6.24")
(source
(origin
(method url-fetch)
(uri (string-append "https://code.launchpad.net/duplicity/"
(version-major+minor version)
"-series/" version "/+download/duplicity-"
version ".tar.gz"))
(sha256
(base32
"0l14nrhbgkyjgvh339bbhnm6hrdwrjadphq1jmpi0mcgcdbdfh8x"))
(patches (list (search-patch "duplicity-piped-password.patch")
(search-patch "duplicity-test_selection-tmp.patch")))))
(build-system python-build-system)
(native-inputs
`(("python2-setuptools" ,python2-setuptools)
("util-linux" ,util-linux))) ;setsid command, for the tests
(inputs
`(("python" ,python-2)
("librsync" ,librsync)
("mock" ,python2-mock) ;for testing
("lockfile" ,python2-lockfile)
("gnupg" ,gnupg-1) ;gpg executable needed
("util-linux" ,util-linux) ;for setsid
("tzdata" ,tzdata)))
(arguments
`(#:python ,python-2 ;setup assumes Python 2
#:test-target "test"
#:phases (alist-cons-before
'check 'check-setup
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "testing/functional/__init__.py"
(("/bin/sh") (which "sh")))
(setenv "HOME" (getcwd)) ;gpg needs to write to $HOME
(setenv "TZDIR" ;some timestamp checks need TZDIR
(string-append (assoc-ref inputs "tzdata")
"/share/zoneinfo")))
%standard-phases)))
(home-page "http://duplicity.nongnu.org/index.html")
(synopsis "Encrypted backup using rsync algorithm")
(description
"Duplicity backs up directories by producing encrypted tar-format volumes
and uploading them to a remote or local file server. Because duplicity uses
librsync, the incremental archives are space efficient and only record the
parts of files that have changed since the last backup. Because duplicity
uses GnuPG to encrypt and/or sign these archives, they will be safe from
spying and/or modification by the server.")
(license license:gpl2+)))
(define-public hdup
(package
(name "hdup")
(version "2.0.14")
(source
(origin
(method url-fetch)
;; Source tarballs are not versioned
(uri "http://archive.miek.nl/projects/hdup2/hdup.tar.bz2")
(sha256
(base32
"02bnczg01cyhajmm4rhbnc0ja0dd9ikv9fwv28asxh1rlx9yr0b7"))))
(build-system gnu-build-system)
(native-inputs `(("pkg-config" ,pkg-config)))
(inputs
`(("glib" ,glib)
("tar" ,tar)
("lzop" ,lzop)
("mcrypt" ,mcrypt)
("openssh" ,openssh)
("gnupg" ,gnupg-1)))
(arguments
`(#:configure-flags
`(,(string-append "--sbindir=" (assoc-ref %outputs "out") "/bin"))
#:tests? #f))
(home-page "http://archive.miek.nl/projects/hdup/index.html")
(synopsis "Simple incremental backup tool")
(description
"Hdup2 is a backup utilty, its aim is to make backup really simple. The
backup scheduling is done by means of a cron job. It supports an
include/exclude mechanism, remote backups, encrypted backups and split
backups (called chunks) to allow easy burning to CD/DVD.")
(license license:gpl2)))
(define-public libarchive
(package
(name "libarchive")
(version "3.1.2")
(source
(origin
(method url-fetch)
(uri (string-append "http://libarchive.org/downloads/libarchive-"
version ".tar.gz"))
(sha256
(base32
"0pixqnrcf35dnqgv0lp7qlcw7k13620qkhgxr288v7p4iz6ym1zb"))
(patches
(list (search-patch "libarchive-mtree-filename-length-fix.patch")
(search-patch "libarchive-fix-lzo-test-case.patch")
(search-patch "libarchive-CVE-2013-0211.patch")))))
(build-system gnu-build-system)
(inputs
`(("zlib" ,zlib)
("nettle" ,nettle)
("lzo" ,lzo)
("bzip2" ,bzip2)
("libxml2" ,libxml2)
("xz" ,xz)))
(arguments
`(#:phases
(alist-cons-before
'build 'patch-pwd
(lambda _
(substitute* "Makefile"
(("/bin/pwd") (which "pwd"))))
(alist-replace
'check
(lambda _
;; XXX: The test_owner_parse, test_read_disk, and
;; test_write_disk_lookup tests expect user 'root' to exist, but
;; the chroot's /etc/passwd doesn't have it. Turn off those tests.
;;
;; The tests allow one to disable tests matching a globbing pattern.
(and (zero? (system* "make"
"libarchive_test" "bsdcpio_test" "bsdtar_test"))
;; XXX: This glob disables too much.
(zero? (system* "./libarchive_test" "^test_*_disk*"))
(zero? (system* "./bsdcpio_test" "^test_owner_parse"))
(zero? (system* "./bsdtar_test"))))
%standard-phases))))
(home-page "http://libarchive.org/")
(synopsis "Multi-format archive and compression library")
(description
"Libarchive provides a flexible interface for reading and writing
archives in various formats such as tar and cpio. Libarchive also supports
reading and writing archives compressed using various compression filters such
as gzip and bzip2. The library is inherently stream-oriented; readers
serially iterate through the archive, writers serially add things to the
archive. In particular, note that there is currently no built-in support for
random access nor for in-place modification.")
(license license:bsd-2)))
(define-public rdup
(package
(name "rdup")
(version "1.1.14")
(source
(origin
(method url-fetch)
(uri (string-append "http://archive.miek.nl/projects/rdup/rdup-"
version ".tar.bz2"))
(sha256
(base32
"0aklwd9v7ix0m4ayl762sil685f42cwljzx3jz5skrnjaq32npmj"))
(modules '((guix build utils)))
(snippet
;; Some test scripts are missing shebangs, which cause "could not
;; execute" errors. Add shebangs.
'(for-each
(lambda (testscript)
(with-atomic-file-replacement
(string-append "testsuite/rdup/" testscript)
(lambda (in out)
(begin
(format out "#!/bin/sh\n" )
(dump-port in out)))))
'("rdup.hardlink.helper"
"rdup.hardlink-strip.helper"
"rdup.hardlink-strip2.helper"
"rdup.pipeline.helper")))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
("dejagnu" ,dejagnu)))
(inputs
`(("glib" ,glib)
("pcre" ,pcre)
("libarchive" ,libarchive)
("nettle" ,nettle)))
(arguments
`(#:parallel-build? #f ;race conditions
#:phases (alist-cons-before
'build 'remove-Werror
;; rdup uses a deprecated function from libarchive
(lambda _
(substitute* "GNUmakefile"
(("^(CFLAGS=.*)-Werror" _ front) front)))
(alist-cons-before
'check 'pre-check
(lambda _
(setenv "HOME" (getcwd))
(substitute* "testsuite/rdup/rdup.rdup-up-t-with-file.exp"
(("/bin/cat") (which "cat"))))
%standard-phases))))
(home-page "http://archive.miek.nl/projects/rdup/index.html")
(synopsis "Provide a list of files to backup")
(description
"Rdup is a utility inspired by rsync and the plan9 way of doing backups.
Rdup itself does not backup anything, it only print a list of absolute
filenames to standard output. Auxiliary scripts are needed that act on this
list and implement the backup strategy.")
(license license:gpl3+)))
(define-public btar
(package
(name "btar")
(version "1.1.1")
(source
(origin
(method url-fetch)
(uri (string-append "http://vicerveza.homeunix.net/~viric/soft/btar/"
"btar-" version ".tar.gz"))
(sha256
(base32
"0miklk4bqblpyzh1bni4x6lqn88fa8fjn15x1k1n8bxkx60nlymd"))))
(build-system gnu-build-system)
(inputs
`(("librsync" ,librsync)))
(arguments
`(#:make-flags `(,(string-append "PREFIX=" (assoc-ref %outputs "out"))
"CC=gcc")
#:tests? #f ;test input not distributed
#:phases
(alist-delete
'configure ;no configure phase
%standard-phases)))
(home-page "http://viric.name/cgi-bin/btar/doc/trunk/doc/home.wiki")
(synopsis "Tar-compatible archiver")
(description
"Btar is a tar-compatible archiver which allows arbitrary compression and
ciphering, redundancy, differential backup, indexed extraction, multicore
compression, input and output serialisation, and tolerance to partial archive
errors.")
(license license:gpl3+)))
(define-public rdiff-backup
(package
(name "rdiff-backup")
(version "1.2.8")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://savannah/rdiff-backup/rdiff-backup-"
version ".tar.gz"))
(sha256
(base32
"1nwmmh816f96h0ff1jxk95ad38ilbhbdl5dgibx1d4cl81dsi48d"))))
(build-system python-build-system)
(native-inputs
`(("python2-setuptools" ,python2-setuptools)))
(inputs
`(("python" ,python-2)
("librsync" ,librsync)))
(arguments
`(#:python ,python-2
#:tests? #f))
(home-page "http://www.nongnu.org/rdiff-backup/")
(synopsis "Local/remote mirroring+incremental backup")
(description
"Rdiff-backup backs up one directory to another, possibly over a network.
The target directory ends up a copy of the source directory, but extra reverse
diffs are stored in a special subdirectory of that target directory, so you
can still recover files lost some time ago. The idea is to combine the best
features of a mirror and an incremental backup. Rdiff-backup also preserves
subdirectories, hard links, dev files, permissions, uid/gid ownership,
modification times, extended attributes, acls, and resource forks. Also,
rdiff-backup can operate in a bandwidth efficient manner over a pipe, like
rsync. Thus you can use rdiff-backup and ssh to securely back a hard drive up
to a remote location, and only the differences will be transmitted. Finally,
rdiff-backup is easy to use and settings have sensical defaults.")
(license license:gpl2+)))
+159 -642
View File
File diff suppressed because it is too large Load Diff
+98 -13
View File
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -20,10 +21,85 @@
#:use-module (guix licenses)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages readline)
#:use-module (gnu packages bison)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix utils)
#:use-module (guix build-system gnu))
#:use-module (guix build-system gnu)
#:autoload (guix gnupg) (gnupg-verify*)
#:autoload (guix hash) (port-sha256)
#:autoload (guix base32) (bytevector->nix-base32-string)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (ice-9 format))
(define (patch-url seqno)
"Return the URL of Bash patch number SEQNO."
(format #f "mirror://gnu/bash/bash-4.3-patches/bash43-~3,'0d" seqno))
(define (bash-patch seqno sha256)
"Return the origin of Bash patch SEQNO, with expected hash SHA256"
(origin
(method url-fetch)
(uri (patch-url seqno))
(sha256 sha256)))
(define-syntax-rule (patch-series (seqno hash) ...)
(list (bash-patch seqno (base32 hash))
...))
(define %patch-series-4.3
;; This is the current patches series for 4.3, generated using
;; 'download-patches' below.
(patch-series
(1 "0hip2n2s5hws8p4nfcz37379zn6cak83ljsm64z52rw6ckrdzczc")
(2 "0ashj5d1g3zbyr7zf0r72s5wnk96cz1xj919y3jajadbc9qcvrzf")
(3 "0z88q4daq7dmw93iqd9c5i5d1sndklih3nrh0v75746da2n6w3h0")
(4 "0f0kh9j5k4ym6knshscx31przm50x5cc7ifkwqk0swh6clna982y")
(5 "1ym3b8b7lgmdp3dklp8qaqhyq965wd5392namq8mz7rb0d231j0s")
(6 "04q20igq49py49ynb0f83f6f52cdkyqwd9bpic6akr0m5pkqwr50")
(7 "18zkz23d9myshrwfcwcdjk7qmkqp8az5n91ni9jaixlwqlhy64qi")
(8 "0pprcwvh7ngdli0x95pc1cpssg4qg7layi9xrv2jq6c7965ajhcr")
(9 "19a0pf0alp30d1bjj0zf3zq2f5n0s6y91w7brm9jyswl51kns8n0")
(10 "1dzhr5ammyijisz48cqi5vaw26hfr5vh9smnqxq4qc9p06f7j1ff")
(11 "0fvzdzzi142a8rf3v965r6gbpn0k7fv2gif1yq8a4160vcn40qvw")
(12 "04lcgfcyz7p3zagb4hkia3hkpd7lii9m8ycy9qqwzyrm1c1pj4ry")
(13 "0y9cqi378z6flapkd5k5lfl4lq3ivzg4njj3i3wmw7xb6r9wma5z")
(14 "04xcb0k9fxxq4vashgzb98567xzdnm4655nlm4jvfvjv6si6ykas")
(15 "13ay6lldy1p00xj41nfjpq8lai3vw2qwca79gx6s80z04j53wa8k")
(16 "0wq7bvx3pfw90pnfb86yg5nr9jgjsvm2nq5rrkqxf6zn977hpmlj")
(17 "103p7sibihv6cshqj12k546zsbz0dnd5cv5vlx1719avddfc4rqj")
(18 "0n1x3812y1brb9xbabaj3fvr4cpvm2225iwckmqk2fcpkq5b9a3s")
(19 "08rd1p7zpzgbpmmmnj2im8wj2pcwmbbx51psr9vdc5c049si9ad7")
(20 "163c6g05qpag2plx5q795pmw3f3m904jy7z93xj2i08pgzc8cpna")
(21 "1a90cl3h10dh8k9f2ddrsjmw5ywaw2d5x78xb4fd2sryi039yhs1")
(22 "120s0s4qcqd0q12j1iv0hkpf9fp3w5jnqw646kv66n66jnxlfkgx")
(23 "1m00sfi88p2akgiyrg4hw0gvz3s1586pkzjdr3dm73vs773m1hls")
(24 "0v0gjqzjsqjfgj5x17fq7g649k94jn8zq92qsxkhc2d6l215hl1v")
(25 "0lcj96i659q35f1jcmwwbnw3p7w7vvlxjxqi989vn6d6qksqcl8y") ;CVE-2014-6271
(26 "0k919ir0inwn4wai2vdzpbwqq5h54fnrlkmgccxjg91v3ch15k1f") ;CVE-2014-7169
(27 "1gnsfvq6bhb3srlbh0cannj2hackdsipcg7z0ds7zlk1hp96mdqy")
(28 "17a65c4fn4c5rgsiw9gqqnzhznh3gwnd2xzzv2dppyi48znxpc78") ;CVE-2014-7186
(29 "14k27p28r5l2fz3r03kd0x72vvsq8bja8c6hjz5kxikbzsbs7i2c") ;CVE-2014-6277
(30 "0nrqb0m7s89qsrbfaffpilc5gcf82bx9yvgzld4hr79p5y54yhw5"))) ;CVE-2014-6278
(define (download-patches store count)
"Download COUNT Bash patches into store. Return a list of
number/base32-hash tuples, directly usable in the 'patch-series' form."
(unfold (cut > <> count)
(lambda (number)
(let* ((patch (download-to-store store (patch-url number)))
(sig (download-to-store store
(string-append (patch-url number)
".sig"))))
(unless (gnupg-verify* sig patch)
(error "failed to verify signature" patch))
(list number
(bytevector->nix-base32-string
(call-with-input-file patch port-sha256)))))
1+
1))
(define-public bash
(let* ((cppflags (string-join '("-DSYS_BASHRC='\"/etc/bashrc\"'"
@@ -48,20 +124,30 @@
;; Add a `bash' -> `sh' link.
(let ((out (assoc-ref outputs "out")))
(with-directory-excursion (string-append out "/bin")
(symlink "bash" "sh"))))))
(symlink "bash" "sh")))))
(version "4.3"))
(package
(name "bash")
(version "4.2")
(source (origin
(method url-fetch)
(uri (string-append
"mirror://gnu/bash/bash-" version ".tar.gz"))
(sha256
(base32
"1n5kbblp5ykbz5q8aq88lsif2z0gnvddg9babk33024wxiwi2ym2"))))
"1m14s1f61mf6bijfibcjm9y6pkyvz6gibyl8p4hxq90fisi8gimg"))
(patch-flags '("-p0"))
(patches %patch-series-4.3)
;; The patches above modify 'parse.y', so force a rebuild of the
;; parser.
(snippet '(for-each delete-file
'("y.tab.c" "y.tab.h" "parser-built")))))
(version (string-append version "."
(number->string (length %patch-series-4.3))))
(build-system gnu-build-system)
(native-inputs `(("bison" ,bison))) ;to rebuild the parser
(inputs `(("readline" ,readline)
("ncurses" ,ncurses))) ; TODO: add texinfo
("ncurses" ,ncurses))) ;TODO: add texinfo
(arguments
`(;; When cross-compiling, `configure' incorrectly guesses that job
;; control is missing.
@@ -85,13 +171,12 @@
%standard-phases)))
(synopsis "The GNU Bourne-Again SHell")
(description
"Bash is the shell, or command language interpreter, that will appear in
the GNU operating system. Bash is an sh-compatible shell that incorporates
useful features from the Korn shell (ksh) and C shell (csh). It is intended
to conform to the IEEE POSIX P1003.2/ISO 9945.2 Shell and Tools standard. It
offers functional improvements over sh for both programming and interactive
use. In addition, most sh scripts can be run by Bash without
modification.")
"Bash is the shell, or command-line interpreter, of the GNU system. It
is compatible with the Bourne Shell, but it also integrates useful features
from the Korn Shell and the C Shell and new improvements of its own. It
allows command-line editing, unlimited command history, shell functions and
aliases, and job control while still allowing most sh scripts to be run
without modification.")
(license gpl3+)
(home-page "http://www.gnu.org/software/bash/"))))
-60
View File
@@ -1,60 +0,0 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012 Andreas Enge <andreas@enge.fr>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages bdb)
#:use-module (gnu packages)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu))
(define-public bdb
(package
(name "bdb")
(version "5.3.21")
(source (origin
(method url-fetch)
(uri (string-append "http://download.oracle.com/berkeley-db/db-" version
".tar.gz"))
(sha256 (base32
"1f2g2612lf8djbwbwhxsvmffmf9d7693kh2l20195pqp0f9jmnfx"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; no check target available
#:phases
(alist-replace
'configure
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(zero?
(system* "./dist/configure"
(string-append "--prefix=" out)
(string-append "CONFIG_SHELL=" (which "bash"))
(string-append "SHELL=" (which "bash"))
;; The compatibility mode is needed by some packages,
;; notably iproute2.
"--enable-compat185"))))
%standard-phases)))
(synopsis "db, the Berkeley database")
(description
"Berkeley DB is an embeddable database allowing developers the choice of
SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
(license (bsd-style "file://LICENSE"
"See LICENSE in the distribution."))
(home-page "http://www.oracle.com/us/products/database/berkeley-db/overview/index.html")))
+54 -12
View File
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -20,20 +21,20 @@
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu))
#:use-module (guix build-system gnu)
#:use-module (gnu packages pkg-config))
(define-public libgc
(define-public libgc-7.2
(package
(name "libgc")
(version "7.2d")
(version "7.2f")
(source (origin
(method url-fetch)
(uri (string-append
"http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-"
version ".tar.gz"))
(uri (string-append "http://www.hboehm.info/gc/gc_source/gc-"
version ".tar.gz"))
(sha256
(base32
"0phwa5driahnpn79zqff14w9yc8sn3599cxz91m78hqdcpl0mznr"))))
"119x7p1cqw40mpwj80xfq879l9m1dkc7vbc1f3bz3kvkf8bf6p16"))))
(build-system gnu-build-system)
(arguments
;; Make it so that we don't rely on /proc. This is especially useful in
@@ -57,8 +58,49 @@ simple collector interface.
Alternatively, the garbage collector may be used as a leak detector for
C or C++ programs, though that is not its primary goal.")
(home-page "http://www.hpl.hp.com/personal/Hans_Boehm/gc/")
(home-page "http://www.hboehm.info/gc/")
;; permissive X11-style license:
;; http://www.hpl.hp.com/personal/Hans_Boehm/gc/license.txt
(license x11)))
(license (x11-style (string-append home-page "license.txt")))))
(define-public libatomic-ops
(package
(name "libatomic-ops")
(version "7.4.2")
(source (origin
(method url-fetch)
(uri (string-append
"http://www.ivmaisoft.com/_bin/atomic_ops/libatomic_ops-"
version ".tar.gz"))
(sha256
(base32
"1pdm0h1y7bgkczr8byg20r6bq15m5072cqm5pny4f9crc9gn3yh4"))))
(build-system gnu-build-system)
(outputs '("out" "debug"))
(synopsis "Accessing hardware atomic memory update operations")
(description
"This C library provides semi-portable access to hardware-provided atomic
memory update operations on a number architectures. These might allow you to
write code that does more interesting things in signal handlers, write
lock-free code, experiment with thread programming paradigms, etc.")
(home-page "https://github.com/ivmai/libatomic_ops/")
;; Some source files are X11-style, others are GPLv2+.
(license gpl2+)))
(define-public libgc
(package (inherit libgc-7.2)
(version "7.4.2")
(source (origin
(method url-fetch)
(uri (string-append "http://www.hboehm.info/gc/gc_source/gc-"
version ".tar.gz"))
(sha256
(base32
"18mg28rr6kwr5clc65k4l4hkyy4kd16amx831sjf8q2lqkbhlck3"))))
;; New dependencies.
(native-inputs `(("pkg-config" ,pkg-config)))
(inputs `(("libatomic-ops" ,libatomic-ops)))
;; 'USE_LIBC_PRIVATES' is now the default.
(arguments '())))
+27 -17
View File
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -22,12 +22,15 @@
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages m4)
#:use-module (gnu packages perl))
#:use-module (gnu packages perl)
#:use-module (gnu packages flex)
#:use-module (srfi srfi-1)
#:export (bison))
(define-public bison
(define bison
(package
(name "bison")
(version "2.7.1")
(version "3.0.2")
(source
(origin
(method url-fetch)
@@ -35,22 +38,29 @@
version ".tar.xz"))
(sha256
(base32
"1yx7isx67sdmyijvihgyra1f59fwdz7sqriginvavfj5yb5ss2dl"))))
"0g4gjan477lac18m51kv4xzcsp6wjfsfwvd2dxymcl6vid9fihx2"))))
(build-system gnu-build-system)
(inputs `(("perl" ,perl)))
(native-inputs `(("perl" ,perl)))
(inputs `(("flex" ,flex)))
(propagated-inputs `(("m4" ,m4)))
(home-page "http://www.gnu.org/software/bison/")
(synopsis "Parser generator")
(description
"Bison is a general-purpose parser generator that converts an
annotated context-free grammar into an LALR(1) or GLR parser for
that grammar. Once you are proficient with Bison, you can use
it to develop a wide range of language parsers, from those used
in simple desk calculators to complex programming languages.
Bison is upward compatible with Yacc: all properly-written Yacc
grammars ought to work with Bison with no change. Anyone
familiar with Yacc should be able to use Bison with little
trouble. You need to be fluent in C or C++ programming in order
to use Bison.")
"GNU Bison is a general-purpose parser generator. It can build a
deterministic or generalized LR parser from an annotated, context-free
grammar. It is versatile enough to have many applications, from parsers for
simple tools through complex programming languages.")
(license gpl3+)))
(define-public bison-2.7
(package (inherit bison)
(version "2.7")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/bison/bison-"
version ".tar.xz"))
(sha256
(base32
"1zd77ilmpv5mi3kr55jrj6ncqlcnyhpianhrwzak2q28cv2cbn23"))))))
+90
View File
@@ -0,0 +1,90 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages bittorrent)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module ((guix licenses) #:prefix l:)
#:use-module (gnu packages openssl)
#:use-module (gnu packages libevent)
#:use-module (gnu packages curl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages file)
#:use-module (gnu packages linux)
#:use-module ((gnu packages compression)
#:select (zlib))
#:use-module (gnu packages glib)
#:use-module (gnu packages gtk))
(define-public transmission
(package
(name "transmission")
(version "2.84")
(source (origin
(method url-fetch)
(uri (string-append
"https://transmission.cachefly.net/transmission-"
version ".tar.xz"))
(sha256
(base32
"1sxr1magqb5s26yvr5yhs1f7bmir8gl09niafg64lhgfnhv1kz59"))))
(build-system gnu-build-system)
(outputs '("out" ; library and command-line interface
"gui")) ; graphical user interface
(arguments
'(#:phases (alist-cons-after
'install 'move-gui
(lambda* (#:key outputs #:allow-other-keys)
;; Move the GUI to its own output, so that "out" doesn't
;; depend on GTK+.
(let ((out (assoc-ref outputs "out"))
(gui (assoc-ref outputs "gui")))
(mkdir-p (string-append gui "/bin"))
(rename-file (string-append out "/bin/transmission-gtk")
(string-append gui
"/bin/transmission-gtk"))))
%standard-phases)))
(inputs
`(("inotify-tools" ,inotify-tools)
("libevent" ,libevent)
("curl" ,curl)
("openssl" ,openssl)
("file" ,file)
("zlib" ,zlib)
("gtk+" ,gtk+)))
(native-inputs
`(("intltool" ,intltool)
("pkg-config" ,pkg-config)))
(home-page "http://www.transmissionbt.com/")
(synopsis "Fast and easy BitTorrent client")
(description
"Transmission is a BitTorrent client that comes with graphical,
textual, and Web user interfaces. Transmission also has a daemon for
unattended operationg. It supports local peer discovery, full encryption,
DHT, µTP, PEX and Magnet Links.")
;; COPYING reads:
;;
;; Transmission can be redistributed and/or modified under the terms of
;; the GNU GPLv2 (http://www.gnu.org/licenses/license-list.html#GPLv2),
;; the GNU GPLv3 (http://www.gnu.org/licenses/license-list.html#GNUGPLv3),
;; or any future license endorsed by Mnemosyne LLC.
;;
;; A few files files carry an MIT/X11 license header.
(license l:gpl3+)))
+100
View File
@@ -0,0 +1,100 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 John Darrington <jmd@gnu.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages boost)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages compression)
#:use-module (gnu packages python)
#:use-module (gnu packages tcsh)
#:use-module (gnu packages perl))
(define-public boost
(package
(name "boost")
(version "1.55.0")
(source (origin
(method url-fetch)
(uri (string-append
"mirror://sourceforge/boost/boost_"
(string-map (lambda (x) (if (eq? x #\.) #\_ x)) version)
".tar.bz2"))
(sha256
(base32
"0lkv5dzssbl5fmh2nkaszi8x9qbj80pr4acf9i26sj3rvlih1w7z"))))
(build-system gnu-build-system)
(inputs `(("zlib" ,zlib)))
(native-inputs
`(("perl" ,perl)
("python" ,python-2)
("tcsh" ,tcsh)))
(arguments
(let ((build-flags
`("threading=multi" "link=shared"
;; Boost's 'context' library is not yet supported on mips64, so
;; we disable it. The 'coroutine' library depends on 'context',
;; so we disable that too.
,@(if (equal? "mips64el-linux" (or (%current-target-system)
(%current-system)))
'("--without-context" "--without-coroutine")
'()))))
`(#:phases
(alist-replace
'configure
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(substitute* '("libs/config/configure"
"libs/spirit/classic/phoenix/test/runtest.sh"
"tools/build/v2/doc/bjam.qbk"
"tools/build/v2/engine/execunix.c"
"tools/build/v2/engine/Jambase"
"tools/build/v2/engine/jambase.c")
(("/bin/sh") (which "sh")))
(setenv "SHELL" (which "sh"))
(setenv "CONFIG_SHELL" (which "sh"))
(zero? (system* "./bootstrap.sh"
(string-append "--prefix=" out)
"--with-toolset=gcc"))))
(alist-replace
'build
(lambda _
(zero? (system* "./b2" ,@build-flags)))
(alist-replace
'check
(lambda _ #t)
(alist-replace
'install
(lambda _
(zero? (system* "./b2" "install" ,@build-flags)))
%standard-phases)))))))
(home-page "http://boost.org")
(synopsis "Peer-reviewed portable C++ source libraries")
(description
"A collection of libraries intended to be widely useful, and usable
across a broad spectrum of applications.")
(license (license:x11-style "http://www.boost.org/LICENSE_1_0.txt"
"Some components have other similar licences."))))
+103 -54
View File
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -64,20 +64,36 @@
#:guile %bootstrap-guile
#:system system)))
(define %bootstrap-patch-inputs
;; Packages used when an <origin> has a non-empty 'patches' field.
`(("tar" ,%bootstrap-coreutils&co)
("xz" ,%bootstrap-coreutils&co)
("bzip2" ,%bootstrap-coreutils&co)
("gzip" ,%bootstrap-coreutils&co)
("patch" ,%bootstrap-coreutils&co)))
(let ((orig-method (origin-method source)))
(origin (inherit source)
(method (cond ((eq? orig-method url-fetch)
(boot url-fetch))
(else orig-method))))))
(else orig-method)))
(patch-guile %bootstrap-guile)
(patch-inputs %bootstrap-patch-inputs)
(define (package-from-tarball name* source* program-to-test description*)
"Return a package that correspond to the extraction of SOURCE*.
PROGRAM-TO-TEST is a program to run after extraction of SOURCE*, to
;; Patches can be origins as well, so process them.
(patches (map (match-lambda
((? origin? patch)
(bootstrap-origin patch))
(patch patch))
(origin-patches source))))))
(define (package-from-tarball name source program-to-test description)
"Return a package that correspond to the extraction of SOURCE.
PROGRAM-TO-TEST is a program to run after extraction of SOURCE, to
check whether everything is alright."
(package
(name name*)
(name name)
(version "0")
(source #f)
(build-system trivial-build-system)
(arguments
`(#:guile ,%bootstrap-guile
@@ -101,8 +117,9 @@ check whether everything is alright."
(inputs
`(("tar" ,(search-bootstrap-binary "tar" (%current-system)))
("xz" ,(search-bootstrap-binary "xz" (%current-system)))
("tarball" ,(bootstrap-origin (source* (%current-system))))))
(synopsis description*)
("tarball" ,(bootstrap-origin (source (%current-system))))))
(source #f)
(synopsis description)
(description #f)
(home-page #f)
(license #f)))
@@ -129,7 +146,9 @@ check whether everything is alright."
(native-inputs (map rewritten-input
(package-native-inputs p)))
(propagated-inputs (map rewritten-input
(package-propagated-inputs p)))))))
(package-propagated-inputs p)))
(replacement (and=> (package-replacement p)
package-with-bootstrap-guile))))))
(define* (glibc-dynamic-linker
#:optional (system (or (and=> (%current-target-system)
@@ -139,6 +158,11 @@ check whether everything is alright."
(cond ((string=? system "x86_64-linux") "/lib/ld-linux-x86-64.so.2")
((string=? system "i686-linux") "/lib/ld-linux.so.2")
((string=? system "mips64el-linux") "/lib/ld.so.1")
;; XXX: This one is used bare-bones, without a libc, so add a case
;; here just so we can keep going.
((string=? system "xtensa-elf") "no-ld.so")
(else (error "dynamic linker name not known for this system"
system))))
@@ -147,6 +171,48 @@ check whether everything is alright."
;;; Bootstrap packages.
;;;
(define* (raw-build store name inputs
#:key outputs system search-paths
#:allow-other-keys)
(define (->store file)
(add-to-store store file #t "sha256"
(or (search-bootstrap-binary file
system)
(error "bootstrap binary not found"
file system))))
(let* ((tar (->store "tar"))
(xz (->store "xz"))
(mkdir (->store "mkdir"))
(bash (->store "bash"))
(guile (->store "guile-2.0.9.tar.xz"))
(builder
(add-text-to-store store
"build-bootstrap-guile.sh"
(format #f "
echo \"unpacking bootstrap Guile to '$out'...\"
~a $out
cd $out
~a -dc < ~a | ~a xv
# Sanity check.
$out/bin/guile --version~%"
mkdir xz guile tar)
(list mkdir xz guile tar))))
(derivation store name
bash `(,builder)
#:system system
#:inputs `((,bash) (,builder)))))
(define* (make-raw-bag name
#:key source inputs native-inputs outputs
system target)
(bag
(name name)
(system system)
(build-inputs inputs)
(build raw-build)))
(define %bootstrap-guile
;; The Guile used to run the build scripts of the initial derivations.
;; It is just unpacked from a tarball containing a pre-built binary.
@@ -155,38 +221,9 @@ check whether everything is alright."
;; XXX: Would need libc's `libnss_files2.so' for proper `getaddrinfo'
;; support (for /etc/services).
(let ((raw (build-system
(name "raw")
(description "Raw build system with direct store access")
(build (lambda* (store name source inputs
#:key outputs system search-paths)
(define (->store file)
(add-to-store store file #t "sha256"
(or (search-bootstrap-binary file
system)
(error "bootstrap binary not found"
file system))))
(let* ((tar (->store "tar"))
(xz (->store "xz"))
(mkdir (->store "mkdir"))
(bash (->store "bash"))
(guile (->store "guile-2.0.7.tar.xz"))
(builder
(add-text-to-store store
"build-bootstrap-guile.sh"
(format #f "
echo \"unpacking bootstrap Guile to '$out'...\"
~a $out
cd $out
~a -dc < ~a | ~a xv
# Sanity check.
$out/bin/guile --version~%"
mkdir xz guile tar)
(list mkdir xz guile tar))))
(derivation store name system
bash `(,builder) '()
`((,bash) (,builder)))))))))
(name 'raw)
(description "Raw build system with direct store access")
(lower make-raw-bag))))
(package
(name "guile-bootstrap")
(version "2.0")
@@ -208,16 +245,19 @@ $out/bin/guile --version~%"
(origin
(method url-fetch)
(uri (map (cut string-append <> "/" system
"/20130105/static-binaries.tar.xz")
"/20131110/static-binaries.tar.xz")
%bootstrap-base-urls))
(sha256
(match system
("x86_64-linux"
(base32
"0md23alzy6nc5f16pric7mkagczdzr8xbh074sb3rjzrls06j1ls"))
"0c533p9dhczzcsa1117gmfq3pc8w362g4mx84ik36srpr7cx2bg4"))
("i686-linux"
(base32
"0nzj1lmm9b94g7k737cr4w1dv282w5nmhb53238ikax9r6pkc0yb"))))))
"0s5b3jb315n13m1k8095l0a5hfrsz8g0fv1b6riyc5hnxqyphlak"))
("mips64el-linux"
(base32
"072y4wyfsj1bs80r6vbybbafy8ya4vfy7qj25dklwk97m6g71753"))))))
"true" ; the program to test
"Bootstrap binaries of Coreutils, Awk, etc."))
@@ -227,16 +267,19 @@ $out/bin/guile --version~%"
(origin
(method url-fetch)
(uri (map (cut string-append <> "/" system
"/20130105/binutils-2.22.tar.xz")
"/20131110/binutils-2.23.2.tar.xz")
%bootstrap-base-urls))
(sha256
(match system
("x86_64-linux"
(base32
"1ffmk2yy2pxvkqgzrkzp3s4jpn4qaaksyk3b5nsc5cjwfm7qkgzh"))
"1j5yivz7zkjqfsfmxzrrrffwyayjqyfxgpi89df0w4qziqs2dg20"))
("i686-linux"
(base32
"1rafk6aq4sayvv3r3d2khn93nkyzf002xzh0xadlyci4mznr6b0a"))))))
"14jgwf9gscd7l2pnz610b1zia06dvcm2qyzvni31b8zpgmcai2v9"))
("mips64el-linux"
(base32
"1x8kkhcxmfyzg1ddpz2pxs6fbdl6412r7x0nzbmi5n7mj8zw2gy7"))))))
"ld" ; the program to test
"Bootstrap binaries of the GNU Binutils"))
@@ -278,16 +321,19 @@ $out/bin/guile --version~%"
(origin
(method url-fetch)
(uri (map (cut string-append <> "/" (%current-system)
"/20130105/glibc-2.17.tar.xz")
"/20131110/glibc-2.18.tar.xz")
%bootstrap-base-urls))
(sha256
(match (%current-system)
("x86_64-linux"
(base32
"18kv1z9d8dr1j3hm9w7663kchqw9p6rsx11n1m143jgba2jz6jy3"))
"0jlqrgavvnplj1b083s20jj9iddr4lzfvwybw5xrcis9spbfzk7v"))
("i686-linux"
(base32
"08hv8i0axwnihrcgbz19x0a7s6zyv3yx38x8r29liwl8h82x9g88")))))))))
"1hgrccw1zqdc7lvgivwa54d9l3zsim5pqm0dykxg0z522h6gr05w"))
("mips64el-linux"
(base32
"0k97a3whzx3apsi9n2cbsrr79ad6lh00klxph9hw4fqyp1abkdsg")))))))))
(synopsis "Bootstrap binaries and headers of the GNU C Library")
(description #f)
(home-page #f)
@@ -346,16 +392,19 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \
(origin
(method url-fetch)
(uri (map (cut string-append <> "/" (%current-system)
"/20130105/gcc-4.7.2.tar.xz")
"/20131110/gcc-4.8.2.tar.xz")
%bootstrap-base-urls))
(sha256
(match (%current-system)
("x86_64-linux"
(base32
"1x1p7han5crnbw906iwdifykr6grzm0w27dy9gz75j0q1b32i4px"))
"17ga4m6195n4fnbzdkmik834znkhs53nkypp6557pl1ps7dgqbls"))
("i686-linux"
(base32
"06wqs0xxnpw3hn0xjb4c9cs0899p1xwkcysa2rvzhvpra0c5vsg2")))))))))
"150c1arrf2k8vfy6dpxh59vcgs4p1bgiz2av5m19dynpks7rjnyw"))
("mips64el-linux"
(base32
"1m5miqkyng45l745n0sfafdpjkqv9225xf44jqkygwsipj2cv9ks")))))))))
(native-search-paths
(list (search-path-specification
(variable "CPATH")
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+105
View File
@@ -0,0 +1,105 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 John Darrington <jmd@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages busybox)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages admin)
#:use-module (gnu packages perl)
#:use-module (gnu packages zip))
(define-public busybox
(package
(name "busybox")
(version "1.22.1")
(source (origin
(method url-fetch)
(uri (string-append
"http://www.busybox.net/downloads/" name "-"
version ".tar.bz2"))
(sha256
(base32
"12v7nri79v8gns3inmz4k24q7pcnwi00hybs0wddfkcy1afh42xf"))))
(build-system gnu-build-system)
(arguments
`(#:phases
(alist-replace
'configure
(lambda _ (zero? (system* "make" "defconfig")))
(alist-replace
'check
(lambda _
(substitute* '("testsuite/du/du-s-works"
"testsuite/du/du-works")
(("/bin") "/etc")) ; there is no /bin but there is a /etc
;; There is no /usr/bin or /bin - replace it with /gnu/store
(substitute* "testsuite/cpio.tests"
(("/usr/bin") "/gnu/store")
(("usr") "gnu"))
(substitute* "testsuite/date/date-works-1"
(("/bin/date") (which "date")))
;; The pidof tests assume that pid 1 is called "init" but that is not
;; true in guix build environment
(substitute* "testsuite/pidof.tests"
(("-s init") "-s $(cat /proc/1/comm)"))
(substitute* "testsuite/grep.tests"
;; The subject of this test is buggy. It is known by upstream (fixed in git)
;; So mark it with SKIP_KNOWN_BUGS like the others.
;; Presumably it wasn't known at the time of release ...
;; (It is strange that they release software which they know to have bugs)
(("testing \"grep -w \\^str doesn't match str not at the beginning\"")
"test x\"$SKIP_KNOWN_BUGS\" = x\"\" && testing \"grep -w ^str doesn't match str not at the beginning\""))
;; This test cannot possibly pass.
;; It is trying to test that "which ls" returns "/bin/ls" when PATH is not set.
;; However, this relies on /bin/ls existing. Which it does not in guix.
(delete-file "testsuite/which/which-uses-default-path")
(rmdir "testsuite/which")
(zero? (system* "make"
;; "V=1"
"SKIP_KNOWN_BUGS=1"
"SKIP_INTERNET_TESTS=1"
"check")))
(alist-replace
'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(zero?
(system* "make"
(string-append "CONFIG_PREFIX=" out)
"install"))))
%standard-phases)))))
(native-inputs `(("perl" ,perl) ; needed to generate the man pages (pod2man)
;; The following are needed by the tests.
("inetutils" ,inetutils)
("zip" ,zip)))
(synopsis "Many common UNIX utilities in a single executable")
(description "BusyBox combines tiny versions of many common UNIX utilities
into a single small executable. It provides a fairly complete
environment for any small or embedded system.")
(home-page "http://www.busybox.net")
;; Some files are gplv2+
(license gpl2)))
+49
View File
@@ -0,0 +1,49 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages calcurse)
#:use-module (guix packages)
#:use-module (guix licenses)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages ncurses))
(define-public calcurse
(package
(name "calcurse")
(version "3.2.1")
(source
(origin
(method url-fetch)
(uri (string-append "http://calcurse.org/files/calcurse-"
version ".tar.gz"))
(sha256
(base32
"0g92c4x02iv2wi3c1sm3nz1ay96bi2m7klxq3qyyx3pr11l53m85"))))
(build-system gnu-build-system)
(inputs `(("ncurses" ,ncurses)))
(home-page "http://www.calcurse.org")
(synopsis "Text-based calendar and scheduling")
(description
"Calcurse is a text-based calendar and scheduling application. It helps
keep track of events, appointments and everyday tasks. A configurable
notification system reminds user of upcoming deadlines, and the curses based
interface can be customized to suit user needs. All of the commands are
documented within an online help system.")
(license bsd-2)))
+56
View File
@@ -0,0 +1,56 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages ccache)
#:use-module (guix packages)
#:use-module ((guix licenses) #:select (gpl3+))
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages perl)
#:use-module (gnu packages compression))
(define-public ccache
(package
(name "ccache")
(version "3.1.10")
(source
(origin
(method url-fetch)
(uri (string-append "https://www.samba.org/ftp/ccache/ccache-"
version ".tar.xz"))
(sha256
(base32
"0mr8n1nbykxw4rs55ad8wd6xmfhihn09mxpxb91sn9mlsd1ryhw8"))))
(build-system gnu-build-system)
(native-inputs `(("perl" ,perl))) ;for test.sh
(inputs `(("zlib" ,zlib)))
(arguments
'(#:phases (alist-cons-before
'check 'patch-test-shebangs
(lambda _
(substitute* '("test/test_hashutil.c" "test.sh")
(("#!/bin/sh") (string-append "#!" (which "sh")))))
%standard-phases)))
(home-page "https://ccache.samba.org/")
(synopsis "Compiler cache")
(description
"Ccache is a compiler cache. It speeds up recompilation by caching
previous compilations and detecting when the same compilation is being done
again. Supported languages are C, C++, Objective-C and Objective-C++.")
(license gpl3+)))
+128 -24
View File
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -19,15 +20,19 @@
(define-module (gnu packages cdrom)
#:use-module (guix download)
#:use-module (guix packages)
#:use-module ((guix licenses) #:select (lgpl2.1+ gpl3+))
#:use-module ((guix licenses) #:select (lgpl2.1+ gpl2 gpl2+ gpl3+))
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages acl)
#:use-module (gnu packages compression)
#:use-module (gnu packages readline)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gtk)
#:use-module (gnu packages man)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages help2man)
#:use-module (gnu packages pkg-config))
#:use-module (gnu packages elf)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages readline)
#:use-module (gnu packages which))
(define-public libcddb
(package
@@ -45,7 +50,7 @@
(home-page "http://libcddb.sourceforge.net/")
(synopsis "C library to access data on a CDDB server")
(description
"Libcddb is a C library to access data on a CDDB server (freedb.org). It
"Libcddb is a C library to access data on a CDDB server (freedb.org). It
allows you to:
1. search the database for possible CD matches;
@@ -55,47 +60,52 @@ allows you to:
3. submit new CD entries to the database.
Libcddb supports both the custom CDDB protocol and tunnelling the query and
read operations over plain HTTP. It is also possible to use an HTTP proxy
server. If you want to speed things up, you can make use of the built-in
read operations over plain HTTP. It is also possible to use an HTTP proxy
server. If you want to speed things up, you can make use of the built-in
caching facility provided by the library.")
(license lgpl2.1+)))
(define-public libcdio
(package
(name "libcdio")
(version "0.90")
(version "0.92")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/libcdio/libcdio-"
version ".tar.gz"))
(sha256
(base32
"0kpp6gr5sjr30pb9klncc37fhkw0wi6r41d2fmvmw17cbj176zmg"))))
"1b9zngn8nnxb1yyngi1kwi73nahp4lsx59j17q1bahzz58svydik"))))
(build-system gnu-build-system)
(inputs
`(("ncurses" ,ncurses)
("libcddb" ,libcddb)))
(native-inputs
`(("help2man" ,help2man)
("ncurses" ,ncurses)
("pkg-config" ,pkg-config)
("libcddb" ,libcddb)))
("pkg-config" ,pkg-config)))
(home-page "http://www.gnu.org/software/libcdio/")
(synopsis "CD Input and Control library")
(description
"GNU libcdio is a library for OS-idependent CD-ROM and CD image access.
It includes a library for working with ISO-9660 filesystems (libiso9660), as
well as utility programs such as an audio CD player and an extractor.")
"The GNU Compact Disc Input and Control Library (libcdio) is a library
for CD-ROM and CD image file access. It allows the developer to add CD
access to an application without having to worry about the OS- and
device-dependent properties of CD-ROM or the specific details of CD image
formats. It includes pycdio, a Python interface to libcdio, and
libcdio-paranoia, a library providing jitter-free and error-free audio
extraction from CDs.")
(license gpl3+)))
(define-public xorriso
(package
(name "xorriso")
(version "1.3.0")
(version "1.3.8")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/xorriso/xorriso-"
version ".tar.gz"))
(sha256
(base32
"1gvyf1ppq764hsk8iyffip7h1dnz2b9k2cchf7himnns03aadavn"))))
"0zhhj9lr9z7hnb2alac54mc28w1l0mbanphhpmy3ylsi8rih84lh"))))
(build-system gnu-build-system)
(inputs
`(("acl" ,acl)
@@ -106,10 +116,104 @@ well as utility programs such as an audio CD player and an extractor.")
(home-page "http://www.gnu.org/software/xorriso/")
(synopsis "Create, manipulate, burn ISO-9660 filesystems")
(description
"GNU xorriso copies file objects from POSIX compliant filesystems into
Rock Ridge enhanced ISO 9660 filesystems and allows session-wise manipulation
of such filesystems. It can load the management information of existing ISO
images and it writes the session results to optical media or to filesystem
objects. Vice versa xorriso is able to copy file objects out of ISO 9660
filesystems.")
"GNU Xorriso is a tool for copying files to and from ISO 9660 Rock
Ridge, a.k.a. Compact Disc File System, filesystems and it allows
session-wise manipulation of them. It features a formatter and burner for
CD, DVD and BD. It can operate on existing ISO images or it can create new
ones. xorriso can then be used to copy files directly into or out of ISO
files.")
(license gpl3+)))
(define-public cdparanoia
(package
(name "cdparanoia")
(version "10.2")
(source (origin
(method url-fetch)
(uri (string-append "http://downloads.xiph.org/releases/cdparanoia/cdparanoia-III-"
version ".src.tgz"))
(sha256
(base32
"1pv4zrajm46za0f6lv162iqffih57a8ly4pc69f7y0gfyigb8p80"))
(patches (list (search-patch "cdparanoia-fpic.patch")))))
(build-system gnu-build-system)
(inputs
`(("patchelf" ,patchelf)))
(arguments
`(#:tests? #f ; there is no check target
#:modules ((guix build gnu-build-system)
(guix build utils)
(guix build rpath)
(srfi srfi-26))
#:imported-modules ((guix build gnu-build-system)
(guix build utils)
(guix build rpath))
#:phases
(alist-cons-after
'strip 'add-lib-to-runpath
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(lib (string-append out "/lib")))
;; Add LIB to the RUNPATH of all the executables.
(with-directory-excursion out
(for-each (cut augment-rpath <> lib)
(find-files "bin" ".*")))))
%standard-phases)))
(home-page "http://www.xiph.org/paranoia/")
(synopsis "Audio CD reading utility")
(description "Cdparanoia retrieves audio tracks from CDDA capable CDROM
drives. The data can be saved to a file or directed to standard output
in WAV, AIFF, AIFF-C or raw format. Most ATAPI, SCSI and several
proprietary CDROM drive makes are supported; cdparanoia can determine if the
target drive is CDDA capable. In addition to simple reading, cdparanoia adds
extra-robust data verification, synchronization, error handling and scratch
reconstruction capability.")
(license gpl2))) ; libraries under lgpl2.1
(define-public dvdisaster
(package
(name "dvdisaster")
(version "0.72.6")
(source (origin
(method url-fetch)
(uri (string-append "http://dvdisaster.net/downloads/dvdisaster-"
version ".tar.bz2"))
(sha256
(base32
"0sqrprc5rh3shnfli25m2wy0i5f83db54iv04s5s7bxf77m7sy79"))))
(build-system gnu-build-system)
(inputs
`(("gtk+" ,gtk+-2)))
(native-inputs
`(("gettext" ,gnu-gettext)
("pkg-config" ,pkg-config)
("which" ,which)))
(arguments
`(;; Parallel builds appear to be unsafe, see
;; <http://hydra.gnu.org/build/49331/nixlog/1/raw>.
#:parallel-build? #f
#:tests? #f ; no check target
#:phases
(alist-cons-before
'patch-source-shebangs 'sanitise
(lambda _
;; delete dangling symlink
(delete-file ".#GNUmakefile"))
%standard-phases)))
(home-page "http://dvdisaster.net/en/index.html")
(synopsis "Error correcting codes for optical media images")
(description "Optical media (CD,DVD,BD) keep their data only for a
finite time (typically for many years). After that time, data loss develops
slowly with read errors growing from the outer media region towards the
inside.
Dvdisaster stores data on CD/DVD/BD (supported media) in a way that it is
fully recoverable even after some read errors have developed. This enables
you to rescue the complete data to a new medium.
Data loss is prevented by using error correcting codes. Error correction
data is either added to the medium or kept in separate error correction
files. Dvdisaster works at the image level so that the recovery does not
depend on the file system of the medium. The maximum error correction
capacity is user-selectable.")
(license gpl2+)))
+8 -10
View File
@@ -35,17 +35,15 @@
(base32
"1jkbq97ajcf834z68hbn3xfhiz921zhn39gklml1racf0kb3jzh3"))))
(build-system gnu-build-system)
;; Needed to have cflow-mode.el installed.
(native-inputs `(("emacs" ,emacs)))
(home-page "http://www.gnu.org/software/cflow/")
(synopsis "Create a graph of control flow within a program")
(description
"GNU cflow analyzes a collection of C source files and prints a
graph, charting control flow within the program.
GNU cflow is able to produce both direct and inverted flowgraphs
for C sources. Optionally a cross-reference listing can be
generated. Two output formats are implemented: POSIX and GNU
(extended).
The package also provides Emacs major mode for examining the
produced flowcharts in Emacs.")
"GNU cflow analyzes C source files and produces a graph charting the
control flow of the program. It can output the graph in several styles and
in either the POSIX format or in an extended GNU format. cflow also includes
a major mode for Emacs for examining the flowcharts that it produces.")
(license gpl3+)))
+26 -3
View File
@@ -37,12 +37,35 @@
"1jcahzrvxcnp5chdn2x46l0y4aba8d8yd70lljfin7h5knxrlyhs"))))
(build-system gnu-build-system)
(home-page "http://check.sourceforge.net/")
(synopsis "Check, a unit testing framework for C")
(synopsis "Unit test framework for C")
(description
"Check is a unit testing framework for C. It features a simple
"Check is a unit testing framework for C. It features a simple
interface for defining unit tests, putting little in the way of the
developer. Tests are run in a separate address space, so Check can
catch both assertion failures and code errors that cause segmentation
faults or other signals. The output from unit tests can be used within
faults or other signals. The output from unit tests can be used within
source code editors and IDEs.")
(license lgpl2.1+)))
(define-public cppunit
(package
(name "cppunit")
(version "1.12.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/cppunit/" name "/"
name "-"
version ".tar.gz"))
(sha256
(base32
"0jm49v5rmc5qw34vqs56gy8xja1dhci73bmh23cig4kcir6a0a5c"))))
(build-system gnu-build-system)
(home-page "http://sourceforge.net/projects/cppunit/")
(synopsis "Unit testing framework for C++")
(description "CppUnit is the C++ port of the famous JUnit framework for
unit testing. Test output is in XML for automatic testing and GUI based for
supervised tests.")
(license lgpl2.1))) ; no copyright notices. LGPL2.1 is in the tarball
+56 -24
View File
@@ -1,5 +1,8 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -17,38 +20,40 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages cmake)
#:use-module (guix licenses)
#:use-module ((guix licenses) #:select (bsd-3))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix utils)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages file))
#:use-module (gnu packages backup)
#:use-module (gnu packages compression)
#:use-module (gnu packages curl)
#:use-module (gnu packages file)
#:use-module (gnu packages xml))
(define-public cmake
(package
(name "cmake")
(version "2.8.10.2")
(version "2.8.12")
(source (origin
(method url-fetch)
(uri (string-append
"http://www.cmake.org/files/v"
(substring version 0
(string-index version #\. (+ 1 (string-index version #\.))))
(version-major+minor version)
"/cmake-" version ".tar.gz"))
(sha256
(base32 "1c8fj6i2x9sb39wc9av2ighj415mw33cxfrlfpafcvm0knrlylnf"))))
(base32 "11q21vyrr6c6smyjy81k2k07zmn96ggjia9im9cxwvj0n88bm1fq"))
(patches (list (search-patch "cmake-fix-tests.patch")))))
(build-system gnu-build-system)
(arguments
'(#:test-target "test"
#:patches (list (assoc-ref %build-inputs "fix-tests"))
#:patch-flags '("-p0")
#:phases (alist-replace
'configure
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
;; Replace "/bin/sh" by the right path in... a lot of
;; files.
(substitute*
`(#:test-target "test"
#:phases (alist-cons-before
'configure 'patch-bin-sh
(lambda _
;; Replace "/bin/sh" by the right path in... a lot of
;; files.
(substitute*
'("Modules/CompilerId/Xcode-3.pbxproj.in"
"Modules/CompilerId/Xcode-1.pbxproj.in"
"Modules/CompilerId/Xcode-2.pbxproj.in"
@@ -61,18 +66,45 @@
"Utilities/Release/release_cmake.cmake"
"Utilities/cmlibarchive/libarchive/archive_write_set_format_shar.c"
"Tests/CMakeLists.txt")
(("/bin/sh") (which "sh")))
(zero? (system* "./configure"
(string-append "--prefix=" out)))))
%standard-phases)))
(("/bin/sh") (which "sh"))))
(alist-cons-before
'configure 'set-paths
(lambda _
;; Help cmake's bootstrap process to find system libraries
(begin
(setenv "CMAKE_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
(setenv "CMAKE_INCLUDE_PATH" (getenv "CPATH"))))
(alist-replace
'configure
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(zero? (system*
"./configure"
(string-append "--prefix=" out)
"--system-libs"
;; By default, the man pages and other docs land
;; in PREFIX/man and PREFIX/doc, but we want them
;; in share/{man,doc}. Note that unlike
;; autoconf-generated configure scripts, cmake's
;; configure prepends "PREFIX/" to what we pass
;; to --mandir and --docdir.
"--mandir=share/man"
,(string-append
"--docdir=share/doc/cmake-"
(version-major+minor version))))))
%standard-phases)))))
(inputs
`(("file" ,file)
("fix-tests" ,(search-patch "cmake-fix-tests.patch"))))
`(("file" ,file)
("curl" ,curl)
("zlib" ,zlib)
("expat" ,expat)
("bzip2" ,bzip2)
("libarchive" ,libarchive)))
(home-page "http://www.cmake.org/")
(synopsis "A cross-platform, open-source build system")
(synopsis "Cross-platform build system")
(description
"CMake is a family of tools designed to build, test and package software.
CMake is used to control the software compilation process using simple platform
and compiler independent configuration files. CMake generates native makefiles
and compiler independent configuration files. CMake generates native makefiles
and workspaces that can be used in the compiler environment of your choice.")
(license bsd-3)))
+791
View File
@@ -0,0 +1,791 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages commencement)
#:use-module ((guix licenses)
#:select (gpl3+ lgpl2.0+ public-domain))
#:use-module (gnu packages bootstrap)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages gcc)
#:use-module (gnu packages ed)
#:use-module (gnu packages m4)
#:use-module (gnu packages file)
#:use-module (gnu packages gawk)
#:use-module (gnu packages bison)
#:use-module (gnu packages guile)
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages compression)
#:use-module (gnu packages perl)
#:use-module (gnu packages linux)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages pkg-config)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
#:use-module (guix utils)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (ice-9 vlist)
#:use-module (ice-9 match))
;;; Commentary:
;;;
;;; This is the commencement, this is where things start. Before the
;;; commencement, of course, there's the 'bootstrap' module, which provides us
;;; with the initial binaries. This module uses those bootstrap binaries to
;;; actually build up the whole tool chain that make up the implicit inputs of
;;; 'gnu-build-system'.
;;;
;;; To avoid circular dependencies, this module should not be imported
;;; directly from anywhere.
;;;
;;; Code:
(define gnu-make-boot0
(package-with-bootstrap-guile
(package (inherit gnu-make)
(name "make-boot0")
(location (source-properties->location (current-source-location)))
(arguments
`(#:guile ,%bootstrap-guile
#:implicit-inputs? #f
#:tests? #f ; cannot run "make check"
,@(substitute-keyword-arguments (package-arguments gnu-make)
((#:phases phases)
`(alist-replace
'build (lambda _
(zero? (system* "./build.sh")))
(alist-replace
'install (lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin")))
(mkdir-p bin)
(copy-file "make"
(string-append bin "/make"))))
,phases))))))
(native-inputs '()) ; no need for 'pkg-config'
(inputs %bootstrap-inputs))))
(define diffutils-boot0
(package-with-bootstrap-guile
(let ((p (package-with-explicit-inputs diffutils
`(("make" ,gnu-make-boot0)
,@%bootstrap-inputs)
#:guile %bootstrap-guile)))
(package (inherit p)
(location (source-properties->location (current-source-location)))
(arguments `(#:tests? #f ; the test suite needs diffutils
,@(package-arguments p)))))))
(define findutils-boot0
(package-with-bootstrap-guile
(package-with-explicit-inputs findutils
`(("make" ,gnu-make-boot0)
("diffutils" ,diffutils-boot0) ; for tests
,@%bootstrap-inputs)
(current-source-location)
#:guile %bootstrap-guile)))
(define file-boot0
(package-with-bootstrap-guile
(package-with-explicit-inputs file
`(("make" ,gnu-make-boot0)
,@%bootstrap-inputs)
(current-source-location)
#:guile %bootstrap-guile)))
(define %boot0-inputs
`(("make" ,gnu-make-boot0)
("diffutils" ,diffutils-boot0)
("findutils" ,findutils-boot0)
("file" ,file-boot0)
,@%bootstrap-inputs))
(define* (nix-system->gnu-triplet
#:optional (system (%current-system)) (vendor "unknown"))
"Return an a guess of the GNU triplet corresponding to Nix system
identifier SYSTEM."
(let* ((dash (string-index system #\-))
(arch (substring system 0 dash))
(os (substring system (+ 1 dash))))
(string-append arch
"-" vendor "-"
(if (string=? os "linux")
"linux-gnu"
os))))
(define* (boot-triplet #:optional (system (%current-system)))
;; Return the triplet used to create the cross toolchain needed in the
;; first bootstrapping stage.
(nix-system->gnu-triplet system "guix"))
;; Following Linux From Scratch, build a cross-toolchain in stage 0. That
;; toolchain actually targets the same OS and arch, but it has the advantage
;; of being independent of the libc and tools in %BOOTSTRAP-INPUTS, since
;; GCC-BOOT0 (below) is built without any reference to the target libc.
(define binutils-boot0
(package-with-bootstrap-guile
(package (inherit binutils)
(name "binutils-cross-boot0")
(arguments
`(#:guile ,%bootstrap-guile
#:implicit-inputs? #f
,@(substitute-keyword-arguments (package-arguments binutils)
((#:configure-flags cf)
`(cons ,(string-append "--target=" (boot-triplet))
,cf)))))
(inputs %boot0-inputs))))
(define gcc-boot0
(package-with-bootstrap-guile
(package (inherit gcc-4.8)
(name "gcc-cross-boot0")
(arguments
`(#:guile ,%bootstrap-guile
#:implicit-inputs? #f
#:modules ((guix build gnu-build-system)
(guix build utils)
(ice-9 regex)
(srfi srfi-1)
(srfi srfi-26))
,@(substitute-keyword-arguments (package-arguments gcc-4.8)
((#:configure-flags flags)
`(append (list ,(string-append "--target=" (boot-triplet))
;; No libc yet.
"--without-headers"
;; Disable features not needed at this stage.
"--disable-shared"
"--enable-languages=c,c++"
;; libstdc++ cannot be built at this stage
;; ("Link tests are not allowed after
;; GCC_NO_EXECUTABLES.").
"--disable-libstdc++-v3"
"--disable-threads"
"--disable-libmudflap"
"--disable-libatomic"
"--disable-libsanitizer"
"--disable-libitm"
"--disable-libgomp"
"--disable-libssp"
"--disable-libquadmath"
"--disable-decimal-float")
(remove (cut string-match "--enable-languages.*" <>)
,flags)))
((#:phases phases)
`(alist-cons-after
'unpack 'unpack-gmp&co
(lambda* (#:key inputs #:allow-other-keys)
(let ((gmp (assoc-ref %build-inputs "gmp-source"))
(mpfr (assoc-ref %build-inputs "mpfr-source"))
(mpc (assoc-ref %build-inputs "mpc-source")))
;; To reduce the set of pre-built bootstrap inputs, build
;; GMP & co. from GCC.
(for-each (lambda (source)
(or (zero? (system* "tar" "xvf" source))
(error "failed to unpack tarball"
source)))
(list gmp mpfr mpc))
;; Create symlinks like `gmp' -> `gmp-x.y.z'.
,@(map (lambda (lib)
;; Drop trailing letters, as gmp-6.0.0a unpacks
;; into gmp-6.0.0.
`(symlink ,(string-trim-right
(package-full-name lib)
char-set:letter)
,(package-name lib)))
(list gmp mpfr mpc))))
(alist-cons-after
'install 'symlink-libgcc_eh
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "lib")))
;; Glibc wants to link against libgcc_eh, so provide
;; it.
(with-directory-excursion
(string-append out "/lib/gcc/"
,(boot-triplet)
"/" ,(package-version gcc-4.8))
(symlink "libgcc.a" "libgcc_eh.a"))))
,phases))))))
(inputs `(("gmp-source" ,(package-source gmp))
("mpfr-source" ,(package-source mpfr))
("mpc-source" ,(package-source mpc))
("binutils-cross" ,binutils-boot0)
;; Call it differently so that the builder can check whether
;; the "libc" input is #f.
("libc-native" ,@(assoc-ref %boot0-inputs "libc"))
,@(alist-delete "libc" %boot0-inputs)))
;; No need for Texinfo at this stage.
(native-inputs (alist-delete "texinfo"
(package-native-inputs gcc-4.8))))))
(define perl-boot0
(package-with-bootstrap-guile
(package-with-explicit-inputs perl
%boot0-inputs
(current-source-location)
#:guile %bootstrap-guile)))
(define (linux-libre-headers-boot0)
"Return Linux-Libre header files for the bootstrap environment."
;; Note: this is wrapped in a thunk to nicely handle circular dependencies
;; between (gnu packages linux) and this module.
(package-with-bootstrap-guile
(package (inherit linux-libre-headers)
(arguments `(#:guile ,%bootstrap-guile
#:implicit-inputs? #f
,@(package-arguments linux-libre-headers)))
(native-inputs
`(("perl" ,perl-boot0)
,@%boot0-inputs)))))
(define texinfo-boot0
;; Texinfo used to build libc's manual.
;; We build without ncurses because it fails to build at this stage, and
;; because we don't need the stand-alone Info reader.
;; Also, use %BOOT0-INPUTS to avoid building Perl once more.
(let ((texinfo (package (inherit texinfo)
(inputs (alist-delete "ncurses" (package-inputs texinfo))))))
(package-with-bootstrap-guile
(package-with-explicit-inputs texinfo %boot0-inputs
(current-source-location)
#:guile %bootstrap-guile))))
(define %boot1-inputs
;; 2nd stage inputs.
`(("gcc" ,gcc-boot0)
("binutils-cross" ,binutils-boot0)
;; Keep "binutils" here because the cross-gcc invokes `as', not the
;; cross-`as'.
,@%boot0-inputs))
(define glibc-final-with-bootstrap-bash
;; The final libc, "cross-built". If everything went well, the resulting
;; store path has no dependencies. Actually, the really-final libc is
;; built just below; the only difference is that this one uses the
;; bootstrap Bash.
(package-with-bootstrap-guile
(package (inherit glibc)
(name "glibc-intermediate")
(arguments
`(#:guile ,%bootstrap-guile
#:implicit-inputs? #f
,@(substitute-keyword-arguments (package-arguments glibc)
((#:configure-flags flags)
`(append (list ,(string-append "--host=" (boot-triplet))
,(string-append "--build="
(nix-system->gnu-triplet))
;; Build Sun/ONC RPC support. In particular,
;; install rpc/*.h.
"--enable-obsolete-rpc")
,flags))
((#:phases phases)
`(alist-cons-before
'configure 'pre-configure
(lambda* (#:key inputs #:allow-other-keys)
;; Don't clobber CPATH with the bootstrap libc.
(setenv "NATIVE_CPATH" (getenv "CPATH"))
(unsetenv "CPATH")
;; 'rpcgen' needs native libc headers to be built.
(substitute* "sunrpc/Makefile"
(("sunrpc-CPPFLAGS =.*" all)
(string-append "CPATH = $(NATIVE_CPATH)\n"
"export CPATH\n"
all "\n"))))
,phases)))))
(propagated-inputs `(("linux-headers" ,(linux-libre-headers-boot0))))
(native-inputs
`(("texinfo" ,texinfo-boot0)
("perl" ,perl-boot0)))
(inputs
`(;; The boot inputs. That includes the bootstrap libc. We don't want
;; it in $CPATH, hence the 'pre-configure' phase above.
,@%boot1-inputs
;; A native GCC is needed to build `cross-rpcgen'.
("native-gcc" ,@(assoc-ref %boot0-inputs "gcc"))
;; Here, we use the bootstrap Bash, which is not satisfactory
;; because we don't want to depend on bootstrap tools.
("static-bash" ,@(assoc-ref %boot0-inputs "bash")))))))
(define (cross-gcc-wrapper gcc binutils glibc bash)
"Return a wrapper for the pseudo-cross toolchain GCC/BINUTILS/GLIBC
that makes it available under the native tool names."
(package (inherit gcc-4.8)
(name (string-append (package-name gcc) "-wrapped"))
(source #f)
(build-system trivial-build-system)
(outputs '("out"))
(arguments
`(#:guile ,%bootstrap-guile
#:modules ((guix build utils))
#:builder (begin
(use-modules (guix build utils))
(let* ((binutils (assoc-ref %build-inputs "binutils"))
(gcc (assoc-ref %build-inputs "gcc"))
(libc (assoc-ref %build-inputs "libc"))
(bash (assoc-ref %build-inputs "bash"))
(out (assoc-ref %outputs "out"))
(bindir (string-append out "/bin"))
(triplet ,(boot-triplet)))
(define (wrap-program program)
;; GCC-BOOT0 is a libc-less cross-compiler, so it
;; needs to be told where to find the crt files and
;; the dynamic linker.
(call-with-output-file program
(lambda (p)
(format p "#!~a/bin/bash
exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
bash
gcc triplet program
libc libc
,(glibc-dynamic-linker))))
(chmod program #o555))
(mkdir-p bindir)
(with-directory-excursion bindir
(for-each (lambda (tool)
(symlink (string-append binutils "/bin/"
triplet "-" tool)
tool))
'("ar" "ranlib"))
(for-each wrap-program '("gcc" "g++")))))))
(native-inputs
`(("binutils" ,binutils)
("gcc" ,gcc)
("libc" ,glibc)
("bash" ,bash)))
(inputs '())))
(define bison-boot1
;; XXX: This Bison is needed to rebuild Bash's parser, which is modified by
;; its CVE patches. Remove it when it's no longer needed.
(let* ((m4 (package-with-bootstrap-guile
(package-with-explicit-inputs m4 %boot0-inputs
(current-source-location)
#:guile %bootstrap-guile)))
(bison (package (inherit bison)
(native-inputs `(("perl" ,perl-boot0)))
(propagated-inputs `(("m4" ,m4)))
(inputs '()) ;remove Flex...
(arguments '(#:tests? #f))))) ;... and thus disable tests
(package-with-bootstrap-guile
(package-with-explicit-inputs bison %boot0-inputs
(current-source-location)
#:guile %bootstrap-guile))))
(define static-bash-for-glibc
;; A statically-linked Bash to be embedded in GLIBC-FINAL, for use by
;; system(3) & co.
(let* ((gcc (cross-gcc-wrapper gcc-boot0 binutils-boot0
glibc-final-with-bootstrap-bash
(car (assoc-ref %boot1-inputs "bash"))))
(bash (package (inherit bash-light)
(native-inputs `(("bison" ,bison-boot1)))
(arguments
`(#:guile ,%bootstrap-guile
,@(package-arguments bash-light))))))
(package-with-bootstrap-guile
(package-with-explicit-inputs (static-package bash)
`(("gcc" ,gcc)
("libc" ,glibc-final-with-bootstrap-bash)
,@(fold alist-delete %boot1-inputs
'("gcc" "libc")))
(current-source-location)))))
(define-public glibc-final
;; The final glibc, which embeds the statically-linked Bash built above.
(package (inherit glibc-final-with-bootstrap-bash)
(name "glibc")
(inputs `(("static-bash" ,static-bash-for-glibc)
,@(alist-delete
"static-bash"
(package-inputs glibc-final-with-bootstrap-bash))))
;; The final libc only refers to itself, but the 'debug' output contains
;; references to GCC-BOOT0 and to the Linux headers. XXX: Would be great
;; if 'allowed-references' were per-output.
(arguments
`(#:allowed-references
,(cons* `(,gcc-boot0 "lib") (linux-libre-headers-boot0)
(package-outputs glibc-final-with-bootstrap-bash))
,@(package-arguments glibc-final-with-bootstrap-bash)))))
(define gcc-boot0-wrapped
;; Make the cross-tools GCC-BOOT0 and BINUTILS-BOOT0 available under the
;; non-cross names.
(cross-gcc-wrapper gcc-boot0 binutils-boot0 glibc-final
(car (assoc-ref %boot1-inputs "bash"))))
(define %boot2-inputs
;; 3rd stage inputs.
`(("libc" ,glibc-final)
("gcc" ,gcc-boot0-wrapped)
,@(fold alist-delete %boot1-inputs '("libc" "gcc"))))
(define binutils-final
(package-with-bootstrap-guile
(package (inherit binutils)
(arguments
`(#:guile ,%bootstrap-guile
#:implicit-inputs? #f
#:allowed-references ("out" ,glibc-final)
,@(package-arguments binutils)))
(inputs %boot2-inputs))))
(define libstdc++
;; Intermediate libstdc++ that will allow us to build the final GCC
;; (remember that GCC-BOOT0 cannot build libstdc++.)
(package-with-bootstrap-guile
(package (inherit gcc-4.8)
(name "libstdc++")
(arguments
`(#:guile ,%bootstrap-guile
#:implicit-inputs? #f
#:out-of-source? #t
#:phases (alist-cons-before
'configure 'chdir
(lambda _
(chdir "libstdc++-v3"))
%standard-phases)
#:configure-flags `("--disable-shared"
"--disable-libstdcxx-threads"
"--disable-libstdcxx-pch"
,(string-append "--with-gxx-include-dir="
(assoc-ref %outputs "out")
"/include"
;; "/include/c++/"
;; ,(package-version gcc-4.8)
))))
(outputs '("out"))
(inputs %boot2-inputs)
(native-inputs '())
(propagated-inputs '())
(synopsis "GNU C++ standard library (intermediate)"))))
(define-public gcc-final
;; The final GCC.
(package (inherit gcc-boot0)
(name "gcc")
(location (source-properties->location (current-source-location)))
(arguments
`(#:guile ,%bootstrap-guile
#:implicit-inputs? #f
#:allowed-references ("out" "lib" ,glibc-final)
;; Build again GMP & co. within GCC's build process, because it's hard
;; to do outside (because GCC-BOOT0 is a cross-compiler, and thus
;; doesn't honor $LIBRARY_PATH, which breaks `gnu-build-system'.)
,@(substitute-keyword-arguments (package-arguments gcc-boot0)
((#:configure-flags boot-flags)
(let loop ((args (package-arguments gcc-4.8)))
(match args
((#:configure-flags normal-flags _ ...)
normal-flags)
((_ rest ...)
(loop rest)))))
((#:make-flags flags)
;; Since $LIBRARY_PATH and $CPATH are not honored, add the
;; relevant flags.
`(cons (string-append "CPPFLAGS=-I"
(assoc-ref %build-inputs "libstdc++")
"/include")
(map (lambda (flag)
(if (string-prefix? "LDFLAGS=" flag)
(string-append flag " -L"
(assoc-ref %build-inputs "libstdc++")
"/lib")
flag))
,flags)))
((#:phases phases)
`(alist-delete 'symlink-libgcc_eh ,phases)))))
;; This time we want Texinfo, so we get the manual.
(native-inputs `(("texinfo" ,texinfo-boot0)
,@(package-native-inputs gcc-boot0)))
(inputs `(("gmp-source" ,(package-source gmp))
("mpfr-source" ,(package-source mpfr))
("mpc-source" ,(package-source mpc))
("binutils" ,binutils-final)
("libstdc++" ,libstdc++)
,@%boot2-inputs))))
(define ld-wrapper-boot3
;; A linker wrapper that uses the bootstrap Guile.
(package
(name "ld-wrapper-boot3")
(version "0")
(source #f)
(build-system trivial-build-system)
(inputs `(("binutils" ,binutils-final)
("guile" ,%bootstrap-guile)
("bash" ,@(assoc-ref %boot2-inputs "bash"))
("wrapper" ,(search-path %load-path
"gnu/packages/ld-wrapper.scm"))))
(arguments
`(#:guile ,%bootstrap-guile
#:modules ((guix build utils))
#:builder (begin
(use-modules (guix build utils)
(system base compile))
(let* ((out (assoc-ref %outputs "out"))
(bin (string-append out "/bin"))
(ld (string-append bin "/ld"))
(go (string-append bin "/ld.go")))
(setvbuf (current-output-port) _IOLBF)
(format #t "building ~s/bin/ld wrapper in ~s~%"
(assoc-ref %build-inputs "binutils")
out)
(mkdir-p bin)
(copy-file (assoc-ref %build-inputs "wrapper") ld)
(substitute* ld
(("@GUILE@")
(string-append (assoc-ref %build-inputs "guile")
"/bin/guile"))
(("@BASH@")
(string-append (assoc-ref %build-inputs "bash")
"/bin/bash"))
(("@LD@")
(string-append (assoc-ref %build-inputs "binutils")
"/bin/ld")))
(chmod ld #o555)
(compile-file ld #:output-file go)))))
(synopsis "The linker wrapper")
(description
"The linker wrapper (or `ld-wrapper') wraps the linker to add any
missing `-rpath' flags, and to detect any misuse of libraries outside of the
store.")
(home-page #f)
(license gpl3+)))
(define %boot3-inputs
;; 4th stage inputs.
`(("gcc" ,gcc-final)
("ld-wrapper" ,ld-wrapper-boot3)
,@(alist-delete "gcc" %boot2-inputs)))
(define bash-final
;; Link with `-static-libgcc' to make sure we don't retain a reference
;; to the bootstrap GCC.
(package-with-bootstrap-guile
(package-with-explicit-inputs (static-libgcc-package bash)
%boot3-inputs
(current-source-location)
#:guile %bootstrap-guile)))
(define %boot4-inputs
;; Now use the final Bash.
`(("bash" ,bash-final)
,@(alist-delete "bash" %boot3-inputs)))
(define-public guile-final
(package-with-bootstrap-guile
(package-with-explicit-inputs guile-2.0/fixed
%boot4-inputs
(current-source-location)
#:guile %bootstrap-guile)))
(define gnu-make-final
;; The final GNU Make, which uses the final Guile.
(package-with-bootstrap-guile
(package-with-explicit-inputs gnu-make
`(("guile" ,guile-final)
,@%boot4-inputs)
(current-source-location))))
(define-public ld-wrapper
;; The final `ld' wrapper, which uses the final Guile.
(package (inherit ld-wrapper-boot3)
(name "ld-wrapper")
(inputs `(("guile" ,guile-final)
("bash" ,bash-final)
,@(fold alist-delete (package-inputs ld-wrapper-boot3)
'("guile" "bash"))))))
(define coreutils-final
;; The final Coreutils. Treat them specially because some packages, such as
;; Findutils, keep a reference to the Coreutils they were built with.
(package-with-bootstrap-guile
(package-with-explicit-inputs coreutils
%boot4-inputs
(current-source-location)
;; Use the final Guile, linked against the
;; final libc with working iconv, so that
;; 'substitute*' works well when touching
;; test files in Gettext.
#:guile guile-final)))
(define grep-final
;; The final grep. Gzip holds a reference to it (via zgrep), so it must be
;; built before gzip.
(package-with-bootstrap-guile
(package-with-explicit-inputs grep
%boot4-inputs
(current-source-location)
#:guile guile-final)))
(define %boot5-inputs
;; Now use the final Coreutils.
`(("coreutils" ,coreutils-final)
("grep" ,grep-final)
,@%boot4-inputs))
(define-public %final-inputs
;; Final derivations used as implicit inputs by 'gnu-build-system'. We
;; still use 'package-with-bootstrap-guile' so that the bootstrap tools are
;; used for origins that have patches, thereby avoiding circular
;; dependencies.
(let ((finalize (compose package-with-bootstrap-guile
(cut package-with-explicit-inputs <> %boot5-inputs
(current-source-location)))))
`(,@(map (match-lambda
((name package)
(list name (finalize package))))
`(("tar" ,tar)
("gzip" ,gzip)
("bzip2" ,bzip2)
("xz" ,xz)
("file" ,file)
("diffutils" ,diffutils)
("patch" ,patch)
("sed" ,sed)
("findutils" ,findutils)
("gawk" ,gawk)))
("grep" ,grep-final)
("coreutils" ,coreutils-final)
("make" ,gnu-make-final)
("bash" ,bash-final)
("ld-wrapper" ,ld-wrapper)
("binutils" ,binutils-final)
("gcc" ,gcc-final)
("libc" ,glibc-final))))
(define-public canonical-package
(let ((name->package (fold (lambda (input result)
(match input
((_ package)
(vhash-cons (package-full-name package)
package result))))
vlist-null
`(("guile" ,guile-final)
,@%final-inputs))))
(lambda (package)
"Return the 'canonical' variant of PACKAGE---i.e., if PACKAGE is one of
the implicit inputs of 'gnu-build-system', return that one, otherwise return
PACKAGE.
The goal is to avoid duplication in cases like GUILE-FINAL vs. GUILE-2.0,
COREUTILS-FINAL vs. COREUTILS, etc."
;; XXX: This doesn't handle dependencies of the final inputs, such as
;; libunistring, GMP, etc.
(match (vhash-assoc (package-full-name package) name->package)
((_ . canon)
;; In general we want CANON, except if we're cross-compiling: CANON
;; uses explicit inputs, so it is "anchored" in the bootstrapped
;; process, with dependencies on things that cannot be
;; cross-compiled.
(if (%current-target-system)
package
canon))
(_ package)))))
;;;
;;; GCC toolchain.
;;;
(define (gcc-toolchain gcc)
"Return a complete toolchain for GCC."
(package
(name "gcc-toolchain")
(version (package-version gcc))
(source #f)
(build-system trivial-build-system)
(arguments
'(#:modules ((guix build union))
#:builder (begin
(use-modules (ice-9 match)
(guix build union))
(match %build-inputs
(((names . directories) ...)
(union-build (assoc-ref %outputs "out")
directories)))
(union-build (assoc-ref %outputs "debug")
(list (assoc-ref %build-inputs
"libc-debug"))))))
(native-search-paths (package-native-search-paths gcc))
(search-paths (package-search-paths gcc))
(license (package-license gcc))
(synopsis "Complete GCC tool chain for C/C++ development")
(description
"This package provides a complete GCC tool chain for C/C++ development to
be installed in user profiles. This includes GCC, as well as libc (headers
and binaries, plus debugging symbols in the 'debug' output), and Binutils.")
(home-page "http://gcc.gnu.org/")
(outputs '("out" "debug"))
;; The main raison d'être of this "meta-package" is (1) to conveniently
;; install everything that we need, and (2) to make sure ld-wrapper comes
;; before Binutils' ld in the user's profile.
(inputs `(("gcc" ,gcc)
("ld-wrapper" ,(car (assoc-ref %final-inputs "ld-wrapper")))
("binutils" ,binutils-final)
("libc" ,glibc-final)
("libc-debug" ,glibc-final "debug")))))
(define-public gcc-toolchain-4.8
(gcc-toolchain gcc-final))
(define-public gcc-toolchain-4.9
(gcc-toolchain gcc-4.9))
;;; commencement.scm ends here
+49
View File
@@ -0,0 +1,49 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages complexity)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix licenses)
#:use-module (guix build-system gnu)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages autogen))
(define-public complexity
(package
(name "complexity")
(version "1.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/complexity/complexity-"
version ".tar.gz"))
(sha256
(base32
"1aad7n35ymxbj5dlpvm64dcd71b6i7hbmps0g7nkf47vj53l6y2j"))))
(build-system gnu-build-system)
(native-inputs
`(("texinfo" ,texinfo)
("autogen" ,autogen)))
(home-page "http://www.gnu.org/software/complexity/")
(synopsis "Analyze complexity of C functions")
(description
"GNU complexity provides tools for finding procedures that are
convoluted, overly long or otherwise difficult to understand. This
may help in learning or reviewing unfamiliar code or perhaps
highlighting your own code that seemed comprehensible when you wrote it.")
(license gpl3+)))
+144 -30
View File
@@ -1,5 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -17,11 +19,11 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages compression)
#:use-module ((guix licenses)
#:renamer (symbol-prefix-proc 'license:))
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu))
#:use-module (guix build-system gnu)
#:use-module (gnu packages which))
(define-public zlib
(package
@@ -42,20 +44,25 @@
`(#:phases (alist-replace
'configure
(lambda* (#:key outputs #:allow-other-keys)
;; Zlib's home-made `configure' doesn't fails when passed
;; Zlib's home-made `configure' fails when passed
;; extra flags like `--enable-fast-install', so we need to
;; invoke it with just what it understand.
(let ((out (assoc-ref outputs "out")))
(zero? (system* "./configure"
(string-append "--prefix=" out)))))
;; 'configure' doesn't understand '--host'.
,@(if (%current-target-system)
`((setenv "CHOST" ,(%current-target-system)))
'())
(zero?
(system* "./configure"
(string-append "--prefix=" out)))))
%standard-phases)))
(home-page "http://zlib.net/")
(synopsis "The zlib compression library")
(synopsis "Compression library")
(description
"zlib is designed to be a free, general-purpose, legally unencumbered --
that is, not covered by any patents -- lossless data-compression library for
use on virtually any computer hardware and operating system. The zlib data
format is itself portable across platforms. Unlike the LZW compression method
format is itself portable across platforms. Unlike the LZW compression method
used in Unix compress(1) and in the GIF image format, the compression method
currently used in zlib essentially never expands the data. (LZW can double or
triple the file size in extreme cases.) zlib's memory footprint is also
@@ -80,13 +87,10 @@ in compression.")
;; FIXME: The test suite wants `less', and optionally Perl.
'(#:tests? #f))
(description
"gzip (GNU zip) is a popular data compression program written by Jean-loup
Gailly for the GNU project. Mark Adler wrote the decompression part.
We developed this program as a replacement for compress because of the Unisys
and IBM patents covering the LZW algorithm used by compress. These patents
made it impossible for us to use compress, and we needed a replacement. The
superior compression ratio of gzip is just a bonus.")
"GNU Gzip provides data compression and decompression utilities; the
typical extension is \".gz\". Unlike the \"zip\" format, it compresses a single
file; as a result, it is often used in conjunction with \"tar\", resulting in
\".tar.gz\" or \".tgz\", etc.")
(license license:gpl3+)
(home-page "http://www.gnu.org/software/gzip/")))
@@ -96,7 +100,7 @@ superior compression ratio of gzip is just a bonus.")
'(lambda* (#:key outputs #:allow-other-keys)
(with-directory-excursion (assoc-ref outputs "out")
(mkdir "share")
(rename-file "man" "share"))))
(rename-file "man" "share/man"))))
(build-shared-lib
;; Build a shared library.
'(lambda* (#:key inputs #:allow-other-keys)
@@ -112,7 +116,19 @@ superior compression ratio of gzip is just a bonus.")
base libdir)
(copy-file file
(string-append libdir "/" base))))
(find-files "." "^libbz2\\.so"))))))
(find-files "." "^libbz2\\.so")))))
(set-cross-environment
'(lambda* (#:key target #:allow-other-keys)
(substitute* (find-files "." "Makefile")
(("CC=.*$")
(string-append "CC = " target "-gcc\n"))
(("AR=.*$")
(string-append "AR = " target "-ar\n"))
(("RANLIB=.*$")
(string-append "RANLIB = " target "-ranlib\n"))
(("^all:(.*)test" _ prerequisites)
;; Remove 'all' -> 'test' dependency.
(string-append "all:" prerequisites "\n"))))))
(package
(name "bzip2")
(version "1.0.6")
@@ -129,16 +145,35 @@ superior compression ratio of gzip is just a bonus.")
(guix build utils)
(srfi srfi-1))
#:phases
(alist-cons-before
'build 'build-shared-lib ,build-shared-lib
(alist-cons-after
'install 'fix-man-dir ,fix-man-dir
(alist-cons-after
'install 'install-shared-lib ,install-shared-lib
(alist-delete 'configure %standard-phases))))
,(if (%current-target-system)
;; Cross-compilation: use the cross tools.
`(alist-cons-before
'build 'build-shared-lib ,build-shared-lib
(alist-cons-after
'install 'fix-man-dir ,fix-man-dir
(alist-cons-after
'install 'install-shared-lib ,install-shared-lib
(alist-replace 'configure ,set-cross-environment
%standard-phases))))
;; Native compilation: build the shared library.
`(alist-cons-before
'build 'build-shared-lib ,build-shared-lib
(alist-cons-after
'install 'fix-man-dir ,fix-man-dir
(alist-cons-after
'install 'install-shared-lib ,install-shared-lib
(alist-delete 'configure %standard-phases)))))
#:make-flags (list (string-append "PREFIX="
(assoc-ref %outputs "out")))))
(synopsis "high-quality data compression program")
(assoc-ref %outputs "out")))
;; Don't attempt to run the tests when cross-compiling.
,@(if (%current-target-system)
'(#:tests? #f)
'())))
(synopsis "High-quality data compression program")
(description
"bzip2 is a freely available, patent free (see below), high-quality data
compressor. It typically compresses files to within 10% to 15% of the best
@@ -161,8 +196,7 @@ decompression.")
(base32
"1dl35ca8fdss9z2d6y234gxh24ixq904xksizrjmjr5dimwhax6n"))))
(build-system gnu-build-system)
(synopsis
"XZ, general-purpose data compression software, successor of LZMA")
(synopsis "General-purpose data compression")
(description
"XZ Utils is free general-purpose data compression software with high
compression ratio. XZ Utils were written for POSIX-like systems, but also
@@ -189,9 +223,10 @@ than gzip and 15 % smaller output than bzip2.")
(base32
"0wryshs446s7cclrbjykyj766znhcpnr7s3cxy33ybfn6vwfcygz"))))
(build-system gnu-build-system)
(arguments '(#:configure-flags '("--enable-shared")))
(home-page "http://www.oberhumer.com/opensource/lzo")
(synopsis
"A data compresion library suitable for real-time data de-/compression")
"Data compresion library suitable for real-time data de-/compression")
(description
"LZO is a data compression library which is suitable for data
de-/compression in real-time. This means it favours speed over
@@ -200,3 +235,82 @@ compression ratio.
LZO is written in ANSI C. Both the source code and the compressed data
format are designed to be portable across platforms.")
(license license:gpl2+)))
(define-public lzop
(package
(name "lzop")
(version "1.03")
(source
(origin
(method url-fetch)
(uri (string-append "http://www.lzop.org/download/lzop-"
version ".tar.gz"))
(sha256
(base32
"1jdjvc4yjndf7ihmlcsyln2rbnbaxa86q4jskmkmm7ylfy65nhn1"))))
(build-system gnu-build-system)
(inputs `(("lzo" ,lzo)))
(home-page "http://www.lzop.org/")
(synopsis "Compress or expand files")
(description
"Lzop is a file compressor which is very similar to gzip. Lzop uses the
LZO data compression library for compression services, and its main advantages
over gzip are much higher compression and decompression speed (at the cost of
some compression ratio).")
(license license:gpl2+)))
(define-public lzip
(package
(name "lzip")
(version "1.16")
(source (origin
(method url-fetch)
(uri (string-append "mirror://savannah/lzip/lzip-"
version ".tar.gz"))
(sha256
(base32
"0l9724rw1l3hg2ldr3n7ihqich4m9nc6y7l302bvdj4jmxdw530j"))))
(build-system gnu-build-system)
(home-page "http://www.nongnu.org/lzip/lzip.html")
(synopsis "Lossless data compressor based on the LZMA algorithm")
(description
"Lzip is a lossless data compressor with a user interface similar to the
one of gzip or bzip2. Lzip decompresses almost as fast as gzip and compresses
more than bzip2, which makes it well suited for software distribution and data
archiving. Lzip is a clean implementation of the LZMA algorithm.")
(license license:gpl3+)))
(define-public sharutils
(package
(name "sharutils")
(version "4.14")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/sharutils/sharutils-"
version ".tar.xz"))
(sha256
(base32
"033sq1v0cp0bi1mp320xaqwd4fhakqc5747hh6qa1asjrzpqiqza"))))
(build-system gnu-build-system)
(inputs
`(("which" ,which)))
(arguments
`(#:phases
(alist-cons-after
'patch-source-shebangs 'unpatch-source-shebang
;; revert the patch-shebang phase on a script which is
;; in fact test data
(lambda _
(substitute* "tests/shar-1.ok"
(((which "sh")) "/bin/sh")))
%standard-phases)))
(home-page "http://www.gnu.org/software/sharutils/")
(synopsis "Archives in shell scripts, uuencode/uudecode")
(description
"GNU sharutils is a package for creating and manipulating shell
archives that can be readily emailed. A shell archive is a file that can be
processed by a Bourne-type shell to unpack the original collection of files.
This package is mostly for compatibility and historical interest.")
(license license:gpl3+)))
+86
View File
@@ -0,0 +1,86 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages conkeror)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages gnuzilla))
(define-public conkeror
(package
(name "conkeror")
(version "1.0pre1")
(source (origin
(method url-fetch)
(uri
(string-append "http://repo.or.cz/w/conkeror.git/snapshot/"
"8a26fff5896a3360549e2adfbf06b1d57e909266"
".tar.gz")) ; tag: debian-1.0--pre-1+git140616-1
(sha256
(base32
"1cgjzi7g3g22zcx6bpfnid4i12sb45w6icmxdzjn8d3c0m8qsyp1"))))
(build-system gnu-build-system)
(inputs `(("icecat" ,icecat)))
(arguments
`(#:tests? #f ;no tests
#:make-flags '("CC=gcc")
#:phases
(alist-delete
'configure
(alist-replace
'install
(lambda _
(begin
(use-modules (guix build utils))
(let* ((datadir (string-append %output "/share/conkeror"))
(bindir (string-append %output "/bin"))
(launcher (string-append bindir "/conkeror"))
(spawn (string-append bindir "/conkeror-spawn-helper")))
(copy-recursively "." datadir)
(mkdir-p bindir)
(copy-file "conkeror-spawn-helper" spawn)
(call-with-output-file launcher
(lambda (p)
(format p "#!~a/bin/bash
exec ~a/bin/icecat --app ~a \"$@\"~%"
(assoc-ref %build-inputs "bash") ;implicit input
(assoc-ref %build-inputs "icecat")
(string-append datadir
"/application.ini"))))
(chmod launcher #o555))))
%standard-phases))))
(synopsis "Keyboard focused web browser with Emacs look and feel")
(description "Conkeror is a highly-programmable web browser based on
Mozilla XULRunner which is the base of all Mozilla products including Firefox.
Conkeror has a sophisticated keyboard system for running commands and
interacting with web page content, modelled after Emacs and Lynx. It is
self-documenting and extensible with JavaScript.
It comes with builtin support for several Web 2.0 sites like several Google
services (Search, Gmail, Maps, Reader, etc.), Del.icio.us, Reddit, Last.fm and
YouTube. For easier editing of form fields, it can spawn external editors.")
(home-page "http://conkeror.org")
;; Conkeror is triple licensed.
(license (list license:gpl2
license:lgpl2.1
;; MPL 1.1 -- this license is not GPL compatible
))))
+83
View File
@@ -0,0 +1,83 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 John Darrington <jmd@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages cook)
#:use-module (guix packages)
#:use-module (guix licenses)
#:use-module (guix download)
#:use-module (gnu packages ed)
#:use-module (gnu packages bison)
#:use-module (gnu packages groff)
#:use-module (gnu packages compression)
#:use-module (guix build-system gnu))
(define-public cook
(package
(name "cook")
(version "2.34")
(source
(origin
(method url-fetch)
(uri (string-append
"http://miller.emu.id.au/pmiller/software/cook/cook-" version
".tar.gz"))
(sha256
(base32
"104saqnqql1l7zr2pm3f718fdky3ds8j07c6xvwrs1rfkhrw58yw"))))
(build-system gnu-build-system)
(arguments
`(#:parallel-build? #f ; There are some nasty racy rules in the Makefile.
#:phases
(alist-cons-before
'configure 'pre-conf
(lambda _
(substitute* (append '("common/env.c")
(find-files "test" "\\.sh"))
(("/bin/sh") (which "sh")))
;; Guix's binutils (because it wants bit-reproducable builds) is
;; is configured with the --enable-deterministic-archives flag.
;; This means the timestamp of files appended to an ar archive
;; are automatically and silently mutated to 00:00 1 Jan 1970
;; which plays havoc with this test, for which correct timestamps
;; are very important. Adding the U flag undoes the effect of
;; --enable-deterministic-archives and allows this test to work
;; again.
(substitute* "test/00/t0077a.sh"
(("ar qc") "ar qcU"))
(setenv "SH" (which "sh")))
%standard-phases)))
(native-inputs `(("bison" ,bison)
;; For building the documentation:
("groff" ,groff)
;; For the tests:
("sharutils" ,sharutils)
;; One test wants rsh. However there is no rsh server
;; running in the build environment and so far as I'm
;; aware, it cannot be started without root.
;; This test is therefore just skipped.
;; ("inetutils" ,inetutils)
("ed" ,ed)))
(home-page "http://miller.emu.id.au/pmiller/software/cook")
(synopsis "Tool for constructing files")
(description "Cook is a tool for constructing files. It is given a set of
files to create, and recipes of how to create them. In any non-trivial program
there will be prerequisites to performing the actions necessary to creating
any file, such as include files. Cook provides a mechanism to define these.")
(license gpl3+)))
+13 -23
View File
@@ -27,31 +27,21 @@
(package
(name "cpio")
(version "2.11")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/cpio/cpio-"
version ".tar.bz2"))
(sha256
(base32
"1gavgpzqwgkpagjxw72xgxz52y1ifgz0ckqh8g7cckz7jvyhp0mv"))))
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/cpio/cpio-"
version ".tar.bz2"))
(sha256
(base32
"1gavgpzqwgkpagjxw72xgxz52y1ifgz0ckqh8g7cckz7jvyhp0mv"))
(patches (list (search-patch "cpio-gets-undeclared.patch")))))
(build-system gnu-build-system)
(arguments
`(#:patches (list (assoc-ref %build-inputs
"patch/gets"))))
(inputs
`(("patch/gets" ,(search-patch "cpio-gets-undeclared.patch"))))
(home-page "https://www.gnu.org/software/cpio/")
(synopsis "Manage cpio and tar file archives")
(description
"GNU Cpio copies files into or out of a cpio or tar archive. The
archive can be another file on the disk, a magnetic tape, or a pipe.
GNU Cpio supports the following archive formats: binary, old ASCII, new
ASCII, crc, HPUX binary, HPUX old ASCII, old tar, and POSIX.1 tar. The
tar format is provided for compatability with the tar program. By
default, cpio creates binary format archives, for compatibility with
older cpio programs. When extracting from archives, cpio automatically
recognizes which kind of archive it is reading and can read archives
created on machines with a different byte-order.")
"GNU cpio copies files into or out of cpio or tar archives. Indeed,
many formats are supported, including legacy formats. The format is
determined automatically by the program and is handled appropriately.
Furthermore, the location of the archive is not important. It can be another
file on the drive, a tape, or data on a pipe.")
(license gpl3+)))
+4 -5
View File
@@ -37,9 +37,8 @@
(home-page "http://www.gnu.org/software/cppi/")
(synopsis "Indent C preprocessor directives to reflect nesting and more")
(description
"GNU cppi indents C preprocessor directives to reflect their nesting and
ensure that there is exactly one space character between each #if, #elif,
#define directive and the following token. The number of spaces between the
`#' and the following directive must correspond to the level of nesting of
that directive.")
"GNU Cppi processes C source code files to properly indent the
preprocessor directives to reflect their nesting. It also performs other
standardizations, such as correcting the number of spaces between directives
and the text following them.")
(license gpl3+)))
+155 -105
View File
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -21,6 +21,7 @@
#:use-module (gnu packages)
#:use-module (gnu packages gcc)
#:use-module (gnu packages base)
#:use-module (gnu packages commencement)
#:use-module (gnu packages linux)
#:use-module (guix packages)
#:use-module (guix download)
@@ -44,6 +45,12 @@
`(cons ,(string-append "--target=" target)
,flags))))))
(define (package-with-patch original patch)
"Return package ORIGINAL with PATCH applied."
(package (inherit original)
(source (origin (inherit (package-source original))
(patches (list patch))))))
(define (cross-binutils target)
"Return a cross-Binutils for TARGET."
(let ((binutils (package (inherit binutils)
@@ -63,17 +70,139 @@
;; practice the RUNPATH of target libs only refers to
;; target libs, not native libs, so this is safe.
`(cons "--with-sysroot=/" ,flags)))))))
(cross binutils target)))
;; For Xtensa, apply Qualcomm's patch.
(cross (if (string-prefix? "xtensa-" target)
(package-with-patch binutils
(search-patch
"ath9k-htc-firmware-binutils.patch"))
binutils)
target)))
(define (cross-gcc-arguments target libc)
"Return build system arguments for a cross-gcc for TARGET, using LIBC (which
may be either a libc package or #f.)"
;; Set the current target system so that 'glibc-dynamic-linker' returns the
;; right name.
(parameterize ((%current-target-system target))
(substitute-keyword-arguments (package-arguments gcc-4.8)
((#:configure-flags flags)
`(append (list ,(string-append "--target=" target)
,@(gcc-configure-flags-for-triplet target)
,@(if libc
'()
`( ;; Disable features not needed at this stage.
"--disable-shared" "--enable-static"
;; Disable C++ because libstdc++'s configure
;; script otherwise fails with "Link tests are not
;; allowed after GCC_NO_EXECUTABLES."
"--enable-languages=c"
"--disable-threads" ;libgcc, would need libc
"--disable-libatomic"
"--disable-libmudflap"
"--disable-libgomp"
"--disable-libssp"
"--disable-libquadmath"
"--disable-decimal-float" ;would need libc
)))
,(if libc
flags
`(remove (cut string-match "--enable-languages.*" <>)
,flags))))
((#:make-flags flags)
(if libc
`(let ((libc (assoc-ref %build-inputs "libc")))
;; FLAGS_FOR_TARGET are needed for the target libraries to receive
;; the -Bxxx for the startfiles.
(cons (string-append "FLAGS_FOR_TARGET=-B" libc "/lib")
,flags))
flags))
((#:phases phases)
(let ((phases
`(alist-cons-after
'install 'make-cross-binutils-visible
(lambda* (#:key outputs inputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(libexec (string-append out "/libexec/gcc/"
,target))
(binutils (string-append
(assoc-ref inputs "binutils-cross")
"/bin/" ,target "-")))
(for-each (lambda (file)
(symlink (string-append binutils file)
(string-append libexec "/"
file)))
'("as" "ld" "nm"))
#t))
,phases)))
(if libc
`(alist-cons-before
'configure 'set-cross-path
(lambda* (#:key inputs #:allow-other-keys)
;; Add the cross Linux headers to CROSS_CPATH, and remove them
;; from CPATH.
(let ((libc (assoc-ref inputs "libc"))
(linux (assoc-ref inputs
"libc/linux-headers")))
(define (cross? x)
;; Return #t if X is a cross-libc or cross Linux.
(or (string-prefix? libc x)
(string-prefix? linux x)))
(setenv "CROSS_CPATH"
(string-append libc "/include:"
linux "/include"))
(setenv "CROSS_LIBRARY_PATH"
(string-append libc "/lib"))
(let ((cpath (search-path-as-string->list
(getenv "CPATH")))
(libpath (search-path-as-string->list
(getenv "LIBRARY_PATH"))))
(setenv "CPATH"
(list->search-path-as-string
(remove cross? cpath) ":"))
(setenv "LIBRARY_PATH"
(list->search-path-as-string
(remove cross? libpath) ":"))
#t)))
,phases)
phases)))
((#:strip-binaries? _)
;; Disable stripping as this can break binaries, with object files of
;; libgcc.a showing up as having an unknown architecture. See
;; <http://lists.fedoraproject.org/pipermail/arm/2010-August/000663.html>
;; for instance.
#f))))
(define (cross-gcc-patches target)
"Return GCC patches needed for TARGET."
(cond ((string-prefix? "xtensa-" target)
;; Patch by Qualcomm needed to build the ath9k-htc firmware.
(list (search-patch "ath9k-htc-firmware-gcc.patch")))
(else '())))
(define* (cross-gcc target
#:optional (xbinutils (cross-binutils target)) libc)
"Return a cross-compiler for TARGET, where TARGET is a GNU triplet. Use
XBINUTILS as the associated cross-Binutils. If LIBC is false, then build a
GCC that does not target a libc; otherwise, target that libc."
(package (inherit gcc-4.7)
(package (inherit gcc-4.8)
(name (string-append "gcc-cross-"
(if libc "" "sans-libc-")
target))
(source (origin (inherit (package-source gcc-4.8))
(patches
(cons (search-patch "gcc-cross-environment-variables.patch")
(cross-gcc-patches target)))))
;; For simplicity, use a single output. Otherwise libgcc_s & co. are not
;; found by default, etc.
(outputs '("out"))
(arguments
`(#:implicit-inputs? #f
#:modules ((guix build gnu-build-system)
@@ -81,113 +210,18 @@ GCC that does not target a libc; otherwise, target that libc."
(ice-9 regex)
(srfi srfi-1)
(srfi srfi-26))
#:patches (list (assoc-ref %build-inputs "patch/cross-env-vars"))
,@(substitute-keyword-arguments (package-arguments gcc-4.7)
((#:configure-flags flags)
`(append (list ,(string-append "--target=" target)
,@(gcc-configure-flags-for-triplet target)
,@(if libc
'()
`( ;; Disable features not needed at this stage.
"--disable-shared" "--enable-static"
;; Disable C++ because libstdc++'s
;; configure script otherwise fails with
;; "Link tests are not allowed after
;; GCC_NO_EXECUTABLES."
"--enable-languages=c"
"--disable-threads" ; libgcc, would need libc
"--disable-libmudflap"
"--disable-libgomp"
"--disable-libssp"
"--disable-libquadmath"
"--disable-decimal-float" ; would need libc
)))
,(if libc
flags
`(remove (cut string-match "--enable-languages.*" <>)
,flags))))
((#:make-flags flags)
(if libc
`(let ((libc (assoc-ref %build-inputs "libc")))
;; FLAGS_FOR_TARGET are needed for the target libraries to
;; receive the -Bxxx for the startfiles.
(cons (string-append "FLAGS_FOR_TARGET=-B" libc "/lib")
,flags))
flags))
((#:phases phases)
(let ((phases
`(alist-cons-after
'install 'make-cross-binutils-visible
(lambda* (#:key outputs inputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(libexec (string-append out "/libexec/gcc/"
,target))
(binutils (string-append
(assoc-ref inputs "binutils-cross")
"/bin/" ,target "-")))
(for-each (lambda (file)
(symlink (string-append binutils file)
(string-append libexec "/"
file)))
'("as" "ld" "nm"))
#t))
,phases)))
(if libc
`(alist-cons-before
'configure 'set-cross-path
(lambda* (#:key inputs #:allow-other-keys)
;; Add the cross Linux headers to CROSS_CPATH, and remove
;; them from CPATH.
(let ((libc (assoc-ref inputs "libc"))
(linux (assoc-ref inputs
"libc/cross-linux-headers")))
(define (cross? x)
;; Return #t if X is a cross-libc or cross Linux.
(or (string-prefix? libc x)
(string-prefix? linux x)))
(setenv "CROSS_CPATH"
(string-append libc "/include:"
linux "/include"))
(setenv "CROSS_LIBRARY_PATH"
(string-append libc "/lib"))
(let ((cpath (search-path-as-string->list
(getenv "CPATH")))
(libpath (search-path-as-string->list
(getenv "LIBRARY_PATH"))))
(setenv "CPATH"
(list->search-path-as-string
(remove cross? cpath) ":"))
(setenv "LIBRARY_PATH"
(list->search-path-as-string
(remove cross? libpath) ":"))
#t)))
,phases)
phases)))
((#:strip-binaries? _)
;; Disable stripping as this can break binaries, with object files
;; of libgcc.a showing up as having an unknown architecture. See
;; <http://lists.fedoraproject.org/pipermail/arm/2010-August/000663.html>
;; for instance.
#f))))
,@(cross-gcc-arguments target libc)))
(native-inputs
`(("patch/cross-env-vars"
,(search-patch "gcc-cross-environment-variables.patch"))
("binutils-cross" ,xbinutils)
`(("binutils-cross" ,xbinutils)
;; Call it differently so that the builder can check whether the "libc"
;; input is #f.
("libc-native" ,@(assoc-ref %final-inputs "libc"))
;; Remaining inputs.
,@(let ((inputs (append (package-inputs gcc-4.7)
,@(let ((inputs (append (package-inputs gcc-4.8)
(alist-delete "libc" %final-inputs))))
(if libc
`(("libc" ,libc)
@@ -217,7 +251,9 @@ XBINUTILS and the cross tool chain."
(name (string-append (package-name linux-libre-headers)
"-cross-" target))
(arguments
(substitute-keyword-arguments (package-arguments linux-libre-headers)
(substitute-keyword-arguments
`(#:implicit-cross-inputs? #f
,@(package-arguments linux-libre-headers))
((#:phases phases)
`(alist-replace
'build
@@ -236,7 +272,14 @@ XBINUTILS and the cross tool chain."
(name (string-append "glibc-cross-" target))
(arguments
(substitute-keyword-arguments
`(#:strip-binaries? #f ; disable stripping (see above)
`(;; Disable stripping (see above.)
#:strip-binaries? #f
;; This package is used as a target input, but it should not have
;; the usual cross-compilation inputs since that would include
;; itself.
#:implicit-cross-inputs? #f
,@(package-arguments glibc))
((#:configure-flags flags)
`(cons ,(string-append "--host=" target)
@@ -245,13 +288,16 @@ XBINUTILS and the cross tool chain."
`(alist-cons-before
'configure 'set-cross-linux-headers-path
(lambda* (#:key inputs #:allow-other-keys)
(let ((linux (assoc-ref inputs "cross-linux-headers")))
(let ((linux (assoc-ref inputs "linux-headers")))
(setenv "CROSS_CPATH"
(string-append linux "/include"))
#t))
,phases))))
(propagated-inputs `(("cross-linux-headers" ,xlinux-headers)))
;; Shadow the native "linux-headers" because glibc's recipe expect the
;; "linux-headers" input to point to the right thing.
(propagated-inputs `(("linux-headers" ,xlinux-headers)))
(native-inputs `(("cross-gcc" ,xgcc)
("cross-binutils" ,xbinutils)
,@(package-native-inputs glibc)))))
@@ -267,6 +313,10 @@ XBINUTILS and the cross tool chain."
(cross-binutils triplet)
(cross-libc triplet))))
(define-public xgcc-xtensa
;; Bare-bones Xtensa cross-compiler, used to build the Atheros firmware.
(cross-gcc "xtensa-elf"))
;; (define-public xgcc-armel
;; (let ((triplet "armel-linux-gnueabi"))
;; (cross-gcc triplet
+44
View File
@@ -0,0 +1,44 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 David Thompson <davet@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages crypto)
#:use-module (gnu packages)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu))
(define-public libsodium
(package
(name "libsodium")
(version "1.0.0")
(source (origin
(method url-fetch)
(uri (string-append
"http://download.libsodium.org/libsodium/releases/libsodium-"
version ".tar.gz"))
(sha256
(base32
"19f9vf0shfp4rc4l791r6xjg06z4i8psj1zkjkm3z5b640yzxlff"))))
(build-system gnu-build-system)
(synopsis "Portable NaCl-based crypto library")
(description
"Sodium is a new easy-to-use high-speed software library for network
communication, encryption, decryption, signatures, etc.")
(license isc)
(home-page "http://libsodium.org")))
+7 -8
View File
@@ -17,14 +17,12 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages cryptsetup)
#:use-module ((guix licenses)
#:renamer (symbol-prefix-proc 'license:))
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages lvm)
#:use-module (gnu packages popt)
#:use-module (gnu packages python)
#:use-module (gnu packages linux))
@@ -44,15 +42,16 @@
(inputs
`(("libgcrypt" ,libgcrypt)
("lvm2" ,lvm2)
("popt" ,popt)
("python" ,python)
("util-linux" ,util-linux)))
(synopsis "hard disk encryption tool")
("util-linux" ,util-linux)
("popt" ,popt)))
(native-inputs
`(("python" ,python-wrapper)))
(synopsis "Hard disk encryption tool")
(description
"LUKS (Linux Unified Key Setup)/Cryptsetup provides a standard on-disk
encryption format, which does not only facilitate compatibility among
distributions, but which also provides secure management of multiple user
passwords. In contrast to existing solutions, LUKS stores all setup necessary
passwords. In contrast to existing solutions, LUKS stores all setup necessary
setup information in the partition header, enabling the users to transport
or migrate their data seamlessly.")
(license license:gpl2)
+22 -11
View File
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -17,11 +17,11 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages curl)
#:use-module ((guix licenses)
#:renamer (symbol-prefix-proc 'license:))
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages compression)
#:use-module (gnu packages gnutls)
#:use-module (gnu packages groff)
@@ -30,33 +30,44 @@
#:use-module (gnu packages openldap)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages ssh))
(define-public curl
(package
(name "curl")
(version "7.28.1")
(version "7.37.1")
(source (origin
(method url-fetch)
(uri (string-append "http://curl.haxx.se/download/curl-"
version ".tar.lzma"))
(sha256
(base32
"13bhfs41yf60ys2hrikqxjwfzaj0gm91kqzsgc5fr4grzmpm38nx"))))
"10yfh4hy8wbkj43la238hg6h8i9wyp1cvvk8kl0giac1020imn5d"))))
(build-system gnu-build-system)
(inputs `(("gnutls" ,gnutls)
;; to enable the --manual option and make test 1026 pass
("groff" ,groff)
("gss" ,gss)
("libidn" ,libidn)
("libssh2" ,libssh2)
("openldap" ,openldap)
("perl" ,perl)
("pkg-config" ,pkg-config)
("zlib" ,zlib)))
(native-inputs
`(("perl" ,perl)
;; to enable the --manual option and make test 1026 pass
("groff" ,groff)
("pkg-config" ,pkg-config)
("python" ,python-2)))
(arguments
`(#:configure-flags '("--with-gnutls" "--with-gssapi")))
(synopsis "curl, command line tool for transferring data with URL syntax")
`(#:configure-flags '("--with-gnutls" "--with-gssapi")
;; Add a phase to patch '/bin/sh' occurances in tests/runtests.pl
#:phases
(alist-cons-before
'check 'patch-runtests
(lambda _
(substitute* "tests/runtests.pl"
(("/bin/sh") (which "sh"))))
%standard-phases)))
(synopsis "Command line tool for transferring data with URL syntax")
(description
"curl is a command line tool for transferring data with URL syntax,
supporting DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP,
+53
View File
@@ -0,0 +1,53 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages cursynth)
#:use-module (guix packages)
#:use-module (guix licenses)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages linux))
(define-public cursynth
(package
(name "cursynth")
(version "1.5")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/cursynth/cursynth-"
version ".tar.gz"))
(sha256
(base32 "1dhphsya41rv8z6yqcv9l6fwbslsds4zh1y56zizi39nd996d40v"))
(patches (list (search-patch "cursynth-wave-rand.patch")))))
(build-system gnu-build-system)
(native-inputs `(("pkg-config" ,pkg-config)))
;; TODO: See https://github.com/iyoko/cursynth/issues/4 which currently
;; prevents us from using pulseaudio
(inputs `(("ncurses" ,ncurses)
("alsa" ,alsa-lib)))
(home-page "http://www.gnu.org/software/cursynth")
(synopsis "Polyphonic and MIDI subtractive music synthesizer using curses")
(description "GNU cursynth is a polyphonic synthesizer that runs
graphically in the terminal. It is built on a full-featured subtractive
synthesis engine. Notes and parameter changes may be entered via MIDI or the
computer's keyboard.")
(license gpl3+)))
+17 -8
View File
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;;
;;; This file is part of GNU Guix.
@@ -22,8 +22,7 @@
#:use-module (gnu packages gdbm)
#:use-module (gnu packages mit-krb5)
#:use-module (gnu packages openssl)
#:use-module ((guix licenses)
#:renamer (symbol-prefix-proc 'license:))
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu))
@@ -34,8 +33,12 @@
(version "2.1.26")
(source (origin
(method url-fetch)
(uri (string-append "ftp://ftp.cyrusimap.org/cyrus-sasl/cyrus-sasl-" version
".tar.gz"))
(uri (list (string-append
"http://cyrusimap.org/releases/cyrus-sasl-"
version ".tar.gz")
(string-append
"ftp://ftp.cyrusimap.org/cyrus-sasl/cyrus-sasl-"
version ".tar.gz")))
(sha256 (base32
"1hvvbcsg21nlncbgs0cgn3iwlnb3vannzwsp6rwvnn9ba4v53g4g"))))
(build-system gnu-build-system)
@@ -45,11 +48,17 @@
(arguments
'(#:configure-flags (list (string-append "--with-plugindir="
(assoc-ref %outputs "out")
"/lib/sasl2"))))
(synopsis "Cyrus SASL, an implementation of the Simple Authentication Security Layer framework")
"/lib/sasl2"))
;; The 'plugins' directory has shared source files, such as
;; 'plugin_common.c'. When building the shared libraries there, libtool
;; ends up doing "ln -s plugin_common.lo plugin_common.o", which can
;; fail with EEXIST when building things in parallel.
#:parallel-build? #f))
(synopsis "Simple Authentication Security Layer implementation")
(description
"SASL (Simple Authentication Security Layer) is an Internet
standards-track method for remote computers to authenticate. The Cyrus SASL
standards-track method for remote computers to authenticate. The Cyrus SASL
library makes supporting various SASL mechanisms easy for both client and
server writers.")
(license (license:bsd-style "file://COPYING"
+348
View File
@@ -0,0 +1,348 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2014 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2014 David Thompson <davet@gnu.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages databases)
#:use-module (gnu packages)
#:use-module (gnu packages perl)
#:use-module (gnu packages linux)
#:use-module (gnu packages openssl)
#:use-module (gnu packages compression)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages readline)
#:use-module (gnu packages emacs)
#:use-module (gnu packages check)
#:use-module (gnu packages algebra)
#:use-module (gnu packages curl)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages python)
#:use-module ((guix licenses)
#:select (gpl2 gpl3+ lgpl2.1+ lgpl3+ x11-style bsd-style
public-domain))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system perl)
#:use-module (srfi srfi-26)
#:use-module (ice-9 match))
(define-public bdb
(package
(name "bdb")
(version "5.3.21")
(source (origin
(method url-fetch)
(uri (string-append "http://download.oracle.com/berkeley-db/db-" version
".tar.gz"))
(sha256 (base32
"1f2g2612lf8djbwbwhxsvmffmf9d7693kh2l20195pqp0f9jmnfx"))))
(build-system gnu-build-system)
(outputs '("out" ; programs, libraries, headers
"doc")) ; 94 MiB of HTML docs
(arguments
'(#:tests? #f ; no check target available
#:phases
(alist-replace
'configure
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(doc (assoc-ref outputs "doc")))
;; '--docdir' is not honored, so we need to patch.
(substitute* "dist/Makefile.in"
(("docdir[[:blank:]]*=.*")
(string-append "docdir = " doc "/share/doc/bdb")))
(zero?
(system* "./dist/configure"
(string-append "--prefix=" out)
(string-append "CONFIG_SHELL=" (which "bash"))
(string-append "SHELL=" (which "bash"))
;; The compatibility mode is needed by some packages,
;; notably iproute2.
"--enable-compat185"))))
%standard-phases)))
(synopsis "Berkeley database")
(description
"Berkeley DB is an embeddable database allowing developers the choice of
SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
(license (bsd-style "file://LICENSE"
"See LICENSE in the distribution."))
(home-page
"http://www.oracle.com/us/products/database/berkeley-db/overview/index.html")))
(define-public mysql
(package
(name "mysql")
(version "5.1.73")
(source (origin
(method url-fetch)
(uri (string-append
"http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-"
version ".tar.gz"))
(sha256
(base32
"1dfwi4ck0vq6sdci6gz0031s7zz5lc3pddqlgm0292s00l9y5sq5"))))
(build-system gnu-build-system)
(inputs
`(("procps" ,procps)
("openssl" ,openssl)
("perl" ,perl)
("zlib" ,zlib)
("ncurses" ,ncurses)))
(arguments
'(#:modules ((guix build gnu-build-system)
(guix build utils)
(ice-9 ftw)) ; for "rm -rf"
#:phases (alist-cons-after
'install 'clean-up
(lambda* (#:key outputs #:allow-other-keys)
;; Remove the 112 MiB of tests that get installed.
(let ((out (assoc-ref outputs "out")))
(define (rm-rf dir)
(file-system-fold (const #t) ; enter?
(lambda (file stat result) ; leaf
(delete-file file))
(const #t) ; down
(lambda (dir stat result) ; up
(rmdir dir))
(const #t)
(lambda (file stat errno result)
(format (current-error-port)
"error: ~a: ~a~%"
file (strerror errno)))
#t
(string-append out "/" dir)))
(rm-rf "mysql-test")
(rm-rf "sql-bench")
;; Compress the 14 MiB Info file.
(zero?
(system* "gzip" "--best"
(string-append out "/share/info/mysql.info")))))
%standard-phases)))
(home-page "http://www.mysql.com/")
(synopsis "Fast, easy to use, and popular database")
(description
"MySQL is a fast, reliable, and easy to use relational database
management system that supports the standardized Structured Query
Language.")
(license gpl2)))
(define-public postgresql
(package
(name "postgresql")
(version "9.3.5")
(source (origin
(method url-fetch)
(uri (string-append "http://ftp.postgresql.org/pub/source/v"
version "/postgresql-" version ".tar.gz"))
(sha256
(base32
"08kga00izykgvnx7hn995wc4zjqslspapaa8z63045p1ya14mr4g"))))
(build-system gnu-build-system)
(inputs
`(("readline" ,readline)
("zlib" ,zlib)))
(home-page "http://www.postgresql.org/")
(synopsis "Powerful object-relational database system")
(description
"PostgreSQL is a powerful object-relational database system. It is fully
ACID compliant, has full support for foreign keys, joins, views, triggers, and
stored procedures (in multiple languages). It includes most SQL:2008 data
types, including INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, and
TIMESTAMP. It also supports storage of binary large objects, including
pictures, sounds, or video.")
(license (x11-style "file://COPYRIGHT"))))
(define-public recutils
(package
(name "recutils")
(version "1.7")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/recutils/recutils-"
version ".tar.gz"))
(sha256
(base32
"0cdwa4094x3yx7vn98xykvnlp9rngvd58d19vs3vh5hrvggccg93"))))
(build-system gnu-build-system)
;; Running tests in parallel leads to test failures and crashes in
;; torture/utils.
(arguments '(#:parallel-tests? #f))
(native-inputs `(("emacs" ,emacs)
("bc" ,bc)))
;; TODO: Add more optional inputs.
;; FIXME: Our Bash doesn't have development headers (need for the 'readrec'
;; built-in command), but it's not clear how to get them installed.
;; See <https://lists.gnu.org/archive/html/bug-bash/2014-03/msg00125.html>.
(inputs `(("curl" ,curl)
("libgcrypt" ,libgcrypt)
("check" ,check)))
(synopsis "Manipulate plain text files as databases")
(description
"GNU Recutils is a set of tools and libraries for creating and
manipulating text-based, human-editable databases. Despite being text-based,
databases created with Recutils carry all of the expected features such as
unique fields, primary keys, time stamps and more. Many different field
types are supported, as is encryption.")
(license gpl3+)
(home-page "http://www.gnu.org/software/recutils/")))
(define-public sqlite
(package
(name "sqlite")
(version "3.8.4.3")
(source (origin
(method url-fetch)
;; TODO: Download from sqlite.org once this bug :
;; http://lists.gnu.org/archive/html/bug-guile/2013-01/msg00027.html
;; has been fixed.
(uri (let ((numeric-version
(match (string-split version #\.)
((first-digit other-digits ...)
(string-append first-digit
(string-pad-right
(string-concatenate
(map (cut string-pad <> 2 #\0)
other-digits))
6 #\0))))))
(string-append
"mirror://sourceforge/sqlite.mirror/SQLite%20" version
"/sqlite-autoconf-" numeric-version ".tar.gz")))
(sha256
(base32
"0rcdsk5sz34w8vy0g5yhfms4saiq81i872jxx5m5sjij7bi9bsg0"))
(patches
(list (search-patch "sqlite-large-page-size-fix.patch")))))
(build-system gnu-build-system)
(inputs
`(("readline" ,readline)))
(home-page "http://www.sqlite.org/")
(synopsis "The SQLite database management system")
(description
"SQLite is a software library that implements a self-contained, serverless,
zero-configuration, transactional SQL database engine. SQLite is the most
widely deployed SQL database engine in the world. The source code for SQLite
is in the public domain.")
(license public-domain)))
(define-public tdb
(package
(name "tdb")
(version "1.3.0")
(source (origin
(method url-fetch)
(uri (string-append "http://samba.org/ftp/tdb/tdb-"
version ".tar.gz"))
(sha256
(base32
"085sd2kii72fr0c4pdc7c7m0xk34nc66wnjp21c83dss826y9gh4"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-replace
'configure
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
;; The 'configure' script is a wrapper for Waf and
;; doesn't recognize things like '--enable-fast-install'.
(zero? (system* "./configure"
(string-append "--prefix=" out)))))
%standard-phases)))
(native-inputs
`(;; TODO: Build the documentation.
;; ("docbook-xsl" ,docbook-xsl)
;; ("libxml2" ,libxml2)
;; ("libxslt" ,libxslt)
("python" ,python-2))) ;for the Waf build system
(home-page "http://tdb.samba.org/")
(synopsis "Trivial database")
(description
"TDB is a Trivial Database. In concept, it is very much like GDBM,
and BSD's DB except that it allows multiple simultaneous writers and uses
locking internally to keep writers from trampling on each other. TDB is also
extremely small.")
(license lgpl3+)))
(define-public perl-dbi
(package
(name "perl-dbi")
(version "1.631")
(source (origin
(method url-fetch)
(uri (string-append
"mirror://cpan/authors/id/T/TI/TIMB/DBI-"
version ".tar.gz"))
(sha256
(base32
"04fmrnchhwi7jx4niaiv93vmi343hdm3xj04w9zr2m9hhqh782np"))))
(build-system perl-build-system)
(synopsis "Database independent interface for Perl")
(description "This package provides an database interface for Perl.")
(home-page "http://search.cpan.org/~timb/DBI-1.631/DBI.pm")
(license (package-license perl))))
(define-public perl-dbd-sqlite
(package
(name "perl-dbd-sqlite")
(version "1.42")
(source (origin
(method url-fetch)
(uri (string-append
"mirror://cpan/authors/id/I/IS/ISHIGAKI/DBD-SQLite-"
version ".tar.gz"))
(sha256
(base32
"14x9cjsc8dz8ad1nad0bqiq9cbk1rjfb8h5y0rpk3pdl38y6afxb"))))
(build-system perl-build-system)
(inputs `(("sqlite" ,sqlite)))
(propagated-inputs `(("perl-dbi" ,perl-dbi)))
(synopsis "SQlite interface for Perl")
(description "DBD::SQLite is a Perl DBI driver for SQLite, that includes
the entire thing in the distribution. So in order to get a fast transaction
capable RDBMS working for your Perl project you simply have to install this
module, and nothing else.")
(license (package-license perl))
(home-page "http://search.cpan.org/~ishigaki/DBD-SQLite/lib/DBD/SQLite.pm")))
(define-public unixodbc
(package
(name "unixodbc")
(version "2.3.2")
(source (origin
(method url-fetch)
(uri
(string-append
"ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-" version ".tar.gz"))
(sha256
(base32 "16jw5fq7wgfky6ak1h2j2pqx99jivsdl4q8aq6immpr55xs5jd4w"))))
(build-system gnu-build-system)
(synopsis "Data source abstraction library")
(description "Unixodbc is a library providing an API with which to access
data sources. Data sources include SQL Servers and any software with an ODBC
Driver.")
(license lgpl2.1+)
;; COPYING contains copy of lgpl2.1 - but copyright notices just say "LGPL"
(home-page "http://www.unixodbc.org")))
+48
View File
@@ -0,0 +1,48 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages datamash)
#:use-module (guix packages)
#:use-module (guix licenses)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages perl)
#:use-module (gnu packages which))
(define-public datamash
(package
(name "datamash")
(version "1.0.6")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/datamash/datamash-"
version ".tar.gz"))
(sha256
(base32
"0621a1xyf8gvcks0vb26g72dm4zh1s6y3a4cc5nnnl5m8mfc4m01"))))
(native-inputs
`(("which" ,which) ;for tests
("perl" ,perl))) ;for help2man
(build-system gnu-build-system)
(home-page "https://www.gnu.org/software/datamash/")
(synopsis "Scriptable statistics and data calculation")
(description
"Perform basic numeric, textual and statistical operations on plain text
files. Designed to work within standard pipelines without additional code.")
(license gpl3+)))
+59
View File
@@ -0,0 +1,59 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages dc)
#:use-module (gnu packages)
#:use-module (gnu packages compression)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnutls)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages databases)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module ((guix licenses) #:prefix license:))
(define-public ncdc
(package
(name "ncdc")
(version "1.19")
(source
(origin
(method url-fetch)
(uri (string-append "http://dev.yorhel.nl/download/ncdc-" version
".tar.gz"))
(sha256 (base32
"1wgvqwfxq9kc729h2r528n55821w87sfbm4h21mr6pvkpfw30hf2"))))
(build-system gnu-build-system)
(inputs
`(("bzip2" ,bzip2)
("glib" ,glib)
("gnutls" ,gnutls)
("ncurses" ,ncurses)
("sqlite" ,sqlite)
("zlib" ,zlib)))
(native-inputs
`(("pkg-config" ,pkg-config)))
(home-page "http://dev.yorhel.nl/ncdc")
(synopsis
"Lightweight direct connect client with a friendly ncurses interface")
(description
"Ncdc is a client for the Direct Connect peer-to-peer protocol implemented
using ncurses. It is known for its smaller footprint and ease of use.")
(license license:x11)))

Some files were not shown because too many files have changed in this diff Show More