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

Compare commits

..

300 Commits

Author SHA1 Message Date
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
126 changed files with 7598 additions and 2124 deletions
+1
View File
@@ -76,3 +76,4 @@ stamp-h[0-9]
/nix/scripts/substitute-binary
/doc/images/bootstrap-graph.png
/doc/images/bootstrap-graph.eps
/guix-register
+71 -61
View File
@@ -12,14 +12,25 @@ 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
Then, as always, run ./configure. If you get an error like this one:
./configure: line 6755: `PKG_CHECK_MODULES(GUILE, guile-2.0 >= 2.0.5)'
@@ -32,17 +43,9 @@ 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.
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,68 +78,75 @@ 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]].
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,
@@ -146,7 +156,7 @@ package upgrades. 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.
+11 -26
View File
@@ -60,6 +60,8 @@ MODULES = \
guix/build/download.scm \
guix/build/cmake-build-system.scm \
guix/build/gnu-build-system.scm \
guix/build/gnu-dist.scm \
guix/build/linux-initrd.scm \
guix/build/perl-build-system.scm \
guix/build/python-build-system.scm \
guix/build/utils.scm \
@@ -115,6 +117,13 @@ SH_TESTS = \
tests/guix-hash.sh \
tests/guix-package.sh
if BUILD_DAEMON
SH_TESTS += tests/guix-register.sh
endif BUILD_DAEMON
TESTS = $(SCM_TESTS) $(SH_TESTS)
TEST_EXTENSIONS = .scm .sh
@@ -141,6 +150,7 @@ EXTRA_DIST = \
TODO \
.dir-locals.el \
build-aux/hydra/gnu-system.scm \
build-aux/hydra/guix.scm \
build-aux/check-available-binaries.scm \
build-aux/download.scm \
build-aux/list-packages.scm \
@@ -185,32 +195,7 @@ $(guix_install_go_files): install-nobase_dist_guilemoduleDATA
SUBDIRS = po
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
+107
View File
@@ -10,6 +10,113 @@ Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
Please send Guix bug reports to bug-guix@gnu.org.
* 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)
+6 -13
View File
@@ -33,23 +33,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
+5
View File
@@ -11,8 +11,13 @@ infrastructure help:
Daniel Clark <dclark@pobox.com>
Alexandru Cojocaru <xojoc@gmx.com>
Aleix Conchillo Flaqué <aconchillo@gmail.com>
John Darrington <john@cellform.com>
Rafael Ferreira <rafael.f.f1@gmail.com>
Christian Grothoff <christian@grothoff.org>
Matthew Lien <bluet@bluet.org>
Yutaka Niibe <gniibe@fsij.org>
Alex Sassmannshausen <alex.sassmannshausen@gmail.com>
Cyrill Schenkel <cyrill.schenkel@gmail.com>
Jason Self <jself@gnu.org>
Alen Skondro <askondro@gmail.com>
Matthias Wachs <wachs@net.in.tum.de>
+10 -13
View File
@@ -101,19 +101,6 @@ 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
@@ -129,6 +116,16 @@ Support sophisticated collision handling when building a union: check
whether the colliding files are identical, honor per-package priorities,
etc.
* add GUIX_ALLOW_EXPENSIVE_TESTS
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 package
** add --list-generations, and --delete-generations
+1 -1
View File
@@ -49,7 +49,7 @@
#f))))
(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~%"
+31 -9
View File
@@ -38,6 +38,7 @@
(use-modules (guix store)
(guix packages)
(guix derivations)
((guix utils) #:select (%current-system))
(gnu packages)
(gnu packages base)
@@ -58,7 +59,8 @@
(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))
@@ -79,7 +81,7 @@ SYSTEM."
,(cute package->alist store package system
(cut package-cross-derivation <> <> target <>))))
(define %packages-to-cross-build
(define %core-packages
(list gmp mpfr mpc coreutils findutils diffutils patch sed grep
gawk gettext hello guile-2.0
%bootstrap-binaries-tarball
@@ -89,6 +91,9 @@ SYSTEM."
%guile-bootstrap-tarball
%bootstrap-tarballs))
(define %packages-to-cross-build
%core-packages)
(define %cross-targets
'("mips64el-linux-gnu"
"mips64el-linux-gnuabi64"))
@@ -106,6 +111,11 @@ SYSTEM."
(_
(list (%current-system)))))
(define subset
(match (assoc-ref arguments 'subset)
("core" 'core) ; only build core packages
(_ 'all))) ; build everything
(define job-name
(compose string->symbol package-full-name))
@@ -127,11 +137,23 @@ SYSTEM."
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)))
(case subset
((all)
;; Build everything.
(fold-packages (lambda (package result)
(if (member package base-packages)
result
(cons (package-job store (job-name package)
package system)
result)))
(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))))
systems)))
+113
View File
@@ -0,0 +1,113 @@
;;; 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/>.
;;;
;;; 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)
(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))))))
+227 -59
View File
@@ -5,6 +5,7 @@ exec guile -l "$0" \
!#
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 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,8 +49,13 @@ exec guile -l "$0" \
(equal? (gnu-package-name package) name))
gnu))))
(define (package->sxml package)
"Return HTML-as-SXML representing PACKAGE."
(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 (source-url package)
(let ((loc (package-location package)))
(and loc
@@ -65,7 +72,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) " ("
@@ -78,7 +86,8 @@ exec guile -l "$0" \
(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: "
@@ -89,53 +98,223 @@ exec guile -l "$0" \
(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)
,(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 +332,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
+6 -2
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.4], [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])
@@ -121,6 +121,10 @@ 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
guix/config.scm])
+18
View File
@@ -25,6 +25,8 @@ CLEANFILES += $(BUILT_SOURCES)
noinst_LIBRARIES = libformat.a libutil.a libstore.a
AM_CXXFLAGS = -Wall
libformat_a_SOURCES = \
nix/boost/format/free_funcs.cc \
nix/boost/format/parsing.cc \
@@ -119,6 +121,7 @@ libstore_a_CXXFLAGS = \
$(SQLITE3_CFLAGS) $(LIBGCRYPT_CFLAGS)
bin_PROGRAMS = guix-daemon
sbin_PROGRAMS = guix-register
guix_daemon_SOURCES = \
nix/nix-daemon/nix-daemon.cc \
@@ -135,6 +138,21 @@ guix_daemon_LDADD = \
guix_daemon_headers = \
nix/nix-daemon/shared.hh
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)
libexec_PROGRAMS = nix-setuid-helper
nix_setuid_helper_SOURCES = \
nix/nix-setuid-helper/nix-setuid-helper.cc
+52
View File
@@ -0,0 +1,52 @@
# GNU Guix --- Functional package management for GNU
# Copyright © 2012, 2013 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/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 = \
-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: doc/images/bootstrap-graph.pdf
info-local: doc/images/bootstrap-graph.png
ps-local: doc/images/bootstrap-graph.eps
+230 -69
View File
@@ -23,6 +23,7 @@
@title GNU Guix Reference Manual
@subtitle Using the GNU Guix Functional Package Manager
@author Ludovic Courtès
@author Andreas Enge
@author Nikita Karetnikov
@page
@@ -30,8 +31,9 @@
Edition @value{EDITION} @*
@value{UPDATED} @*
Copyright @copyright{} @value{YEARS} Ludovic Court@`es
Copyright @copyright{} @value{YEARS} Ludovic Court@`es, Andreas Enge, Nikita Karetnikov
@ifinfo
@quotation
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -40,6 +42,8 @@ Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
copy of the license is included in the section entitled ``GNU Free
Documentation License''.
@end quotation
@end ifinfo
@end titlepage
@copying
@@ -64,8 +68,9 @@ Documentation License.''
This document describes GNU Guix version @value{VERSION}, a functional
package management tool written for the GNU system.
@quotation
Copyright @copyright{} @value{YEARS} Ludovic Courtès
Copyright @copyright{} @value{YEARS} Ludovic Courtès, Andreas Enge, Nikita Karetnikov
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -244,6 +249,17 @@ The @code{guix-daemon} program may then be run as @code{root} with:
# guix-daemon --build-users-group=guix-builder
@end example
@noindent
This way, the daemon starts build processes in a chroot, under one of
the @code{guix-builder} users. On GNU/Linux, by default, the chroot
environment contains nothing but the @code{/dev} and @code{/proc}
directories@footnote{On some systems @code{/dev/shm}, which supports
shared memory, is a symlink to another directory such as
@code{/run/shm}, that is @emph{not} is the chroot. When that is the
case, shared memory support is unavailable in the chroot environment.
The workaround is to make sure that @file{/dev/shm} is directly a
@code{tmpfs} mount point.}.
Guix may also be used in a single-user setup, with @command{guix-daemon}
running as an unprivileged user. However, to maximize non-interference
of build processes, the daemon still needs to perform certain operations
@@ -521,9 +537,9 @@ Thus, when installing MPC, the MPFR and GMP libraries also get installed
in the profile; removing MPC also removes MPFR and GMP---unless they had
also been explicitly installed independently.
Besides, packages sometime rely on the definition of environment
Besides, packages sometimes rely on the definition of environment
variables for their search paths (see explanation of
@code{--search-paths} below.) Any missing or possibly incorrect
@code{--search-paths} below). Any missing or possibly incorrect
environment variable definitions are reported here.
@c XXX: keep me up-to-date
@@ -567,9 +583,8 @@ When combined with options such as @code{--install}, roll back occurs
before any other actions.
When rolling back from the first generation that actually contains
installed packages, the profile is made to point to the @dfn{empty
profile}, also known as @dfn{profile zero}---i.e., it contains no files
apart from its own meta-data.
installed packages, the profile is made to point to the @dfn{zeroth
generation}, which contains no files apart from its own meta-data.
Installing, removing, or upgrading packages from a generation that has
been rolled back to overwrites previous future generations. Thus, the
@@ -643,9 +658,9 @@ version: 7.2alpha6
@item --list-installed[=@var{regexp}]
@itemx -I [@var{regexp}]
List currently installed packages in the specified profile. When
@var{regexp} is specified, list only installed packages whose name
matches @var{regexp}.
List the currently installed packages in the specified profile, with the
most recently installed packages shown last. When @var{regexp} is
specified, list only installed packages whose name matches @var{regexp}.
For each installed package, print the following items, separated by
tabs: the package name, its version string, the part of the package that
@@ -663,6 +678,61 @@ For each package, print the following items separated by tabs: its name,
its version string, the parts of the package (@pxref{Packages with
Multiple Outputs}), and the source location of its definition.
@item --list-generations[=@var{pattern}]
@itemx -l [@var{pattern}]
Return a list of generations along with their creation dates; for each
generation, show the installed packages, with the most recently
installed packages shown last. Note that the zeroth generation is never
shown.
For each installed package, print the following items, separated by
tabs: the name of a package, its version string, the part of the package
that is installed (@pxref{Packages with Multiple Outputs}), and the
location of this package in the store.
When @var{pattern} is used, the command returns only matching
generations. Valid patterns include:
@itemize
@item @emph{Integers and comma-separated integers}. Both patterns denote
generation numbers. For instance, @code{--list-generations=1} returns
the first one.
And @code{--list-generations=1,8,2} outputs three generations in the
specified order. Neither spaces nor trailing commas are allowed.
@item @emph{Ranges}. @code{--list-generations=2..9} prints the
specified generations and everything in between. Note that the start of
a range must be lesser than its end.
It is also possible to omit the endpoint. For example,
@code{--list-generations=2..}, returns all generations starting from the
second one.
@item @emph{Durations}. You can also get the last @emph{N}@tie{}days, weeks,
or months by passing an integer along with the first letter of the
duration. For example, @code{--list-generations=20d} lists generations
that are up to 20 days old.
@end itemize
@item --delete-generations[=@var{pattern}]
@itemx -d [@var{pattern}]
When @var{pattern} is omitted, delete all generations except the current
one.
This command accepts the same patterns as @option{--list-generations}.
When @var{pattern} is specified, delete the matching generations. When
@var{pattern} specifies a duration, generations @emph{older} than the
specified duration match. For instance, @code{--delete-generations=1m}
deletes generations that are more than one month old.
If the current generation matches, it is deleted atomically---i.e., by
switching to the previous available generation. Note that the zeroth
generation is never deleted.
Note that deleting generations prevents roll-back to them.
Consequently, this command must be used with care.
@end table
@node Packages with Multiple Outputs
@@ -730,6 +800,12 @@ deleted. The set of garbage collector roots includes default user
profiles, and may be augmented with @command{guix build --root}, for
example (@pxref{Invoking guix build}).
Prior to running @code{guix gc --collect-garbage} to make space, it is
often useful to remove old generations from user profiles; that way, old
package builds referenced by those generations can be reclaimed. This
is achieved by running @code{guix package --delete-generations}
(@pxref{Invoking guix package}).
The @command{guix gc} command has three modes of operation: it can be
used to garbage-collect any dead files (the default), to delete specific
files (the @code{--delete} option), or to print garbage-collector
@@ -971,8 +1047,8 @@ The build actions it prescribes may then be realized by using the
@code{build-derivations} procedure (@pxref{The Store}).
@deffn {Scheme Procedure} package-derivation @var{store} @var{package} [@var{system}]
Return the derivation path and corresponding @code{<derivation>} object
of @var{package} for @var{system} (@pxref{Derivations}).
Return the @code{<derivation>} object of @var{package} for @var{system}
(@pxref{Derivations}).
@var{package} must be a valid @code{<package>} object, and @var{system}
must be a string denoting the target system type---e.g.,
@@ -988,8 +1064,8 @@ package for some other system:
@deffn {Scheme Procedure} package-cross-derivation @var{store} @
@var{package} @var{target} [@var{system}]
Return the derivation path and corresponding @code{<derivation>} object
of @var{package} cross-built from @var{system} to @var{target}.
Return the @code{<derivation>} object of @var{package} cross-built from
@var{system} to @var{target}.
@var{target} must be a valid GNU triplet denoting the target hardware
and operating system, such as @code{"mips64el-linux-gnu"}
@@ -1045,15 +1121,16 @@ argument.
Return @code{#t} when @var{path} is a valid store path.
@end deffn
@deffn {Scheme Procedure} add-text-to-store @var{server} @var{name} @var{text} @var{references}
@deffn {Scheme Procedure} add-text-to-store @var{server} @var{name} @var{text} [@var{references}]
Add @var{text} under file @var{name} in the store, and return its store
path. @var{references} is the list of store paths referred to by the
resulting store path.
@end deffn
@deffn {Scheme Procedure} build-derivations @var{server} @var{derivations}
Build @var{derivations} (a list of derivation paths), and return when
the worker is done building them. Return @code{#t} on success.
Build @var{derivations} (a list of @code{<derivation>} objects or
derivation paths), and return when the worker is done building them.
Return @code{#t} on success.
@end deffn
@c FIXME
@@ -1102,13 +1179,18 @@ derivations as Scheme objects, along with procedures to create and
otherwise manipulate derivations. The lowest-level primitive to create
a derivation is the @code{derivation} procedure:
@deffn {Scheme Procedure} derivation @var{store} @var{name} @var{system} @var{builder} @var{args} @var{env-vars} @var{inputs} [#:outputs '("out")] [#:hash #f] [#:hash-algo #f] [#:hash-mode #f]
Build a derivation with the given arguments. Return the resulting store
path and @code{<derivation>} object.
@deffn {Scheme Procedure} derivation @var{store} @var{name} @var{builder} @var{args} [#:outputs '("out")] [#:hash #f] [#:hash-algo #f] [#:hash-mode #f] [#:inputs '()] [#:env-vars '()] [#:system (%current-system)] [#:references-graphs #f]
Build a derivation with the given arguments, and return the resulting
@code{<derivation>} object.
When @var{hash}, @var{hash-algo}, and @var{hash-mode} are given, a
@dfn{fixed-output derivation} is created---i.e., one whose result is
known in advance, such as a file download.
When @var{references-graphs} is true, it must be a list of file
name/store path pairs. In that case, the reference graph of each store
path is exported in the build environment in the corresponding file, in
a simple text format.
@end deffn
@noindent
@@ -1121,23 +1203,20 @@ to a Bash executable in the store:
(guix store)
(guix derivations))
(call-with-values
(lambda ()
(let ((builder ; add the Bash script to the store
(add-text-to-store store "my-builder.sh"
"echo hello world > $out\n" '())))
(derivation store "foo" (%current-system)
bash `("-e" ,builder)
'(("HOME" . "/homeless")) '())))
list)
@result{} ("/nix/store/@dots{}-foo.drv" #<<derivation> @dots{}>)
(let ((builder ; add the Bash script to the store
(add-text-to-store store "my-builder.sh"
"echo hello world > $out\n" '())))
(derivation store "foo"
bash `("-e" ,builder)
#:env-vars '(("HOME" . "/homeless"))))
@result{} #<derivation /nix/store/@dots{}-foo.drv => /nix/store/@dots{}-foo>
@end lisp
As can be guessed, this primitive is cumbersome to use directly. An
improved variant is @code{build-expression->derivation}, which allows
the caller to directly pass a Guile expression as the build script:
@deffn {Scheme Procedure} build-expression->derivation @var{store} @var{name} @var{system} @var{exp} @var{inputs} [#:outputs '("out")] [#:hash #f] [#:hash-algo #f] [#:env-vars '()] [#:modules '()] [#:guile-for-build #f]
@deffn {Scheme Procedure} build-expression->derivation @var{store} @var{name} @var{system} @var{exp} @var{inputs} [#:outputs '("out")] [#:hash #f] [#:hash-algo #f] [#:env-vars '()] [#:modules '()] [#:references-graphs #f] [#:guile-for-build #f]
Return a derivation that executes Scheme expression @var{exp} as a
builder for derivation @var{name}. @var{inputs} must be a list of
@code{(name drv-path sub-drv)} tuples; when @var{sub-drv} is omitted,
@@ -1158,6 +1237,8 @@ terminates by passing the result of @var{exp} to @code{exit}; thus, when
@var{exp} is built using @var{guile-for-build} (a derivation). When
@var{guile-for-build} is omitted or is @code{#f}, the value of the
@code{%guile-for-build} fluid is used instead.
See the @code{derivation} procedure for the meaning of @var{references-graphs}.
@end deffn
@noindent
@@ -1173,8 +1254,7 @@ containing one file:
(build-expression->derivation store "goo" (%current-system)
builder '()))
@result{} "/nix/store/@dots{}-goo.drv"
@result{} #<<derivation> @dots{}>
@result{} #<derivation /nix/store/@dots{}-goo.drv => @dots{}>
@end lisp
@cindex strata of code
@@ -1484,7 +1564,7 @@ tools that help users exert that freedom.
@menu
* Installing Debugging Files:: Feeding the debugger.
* Package Modules:: Packages from the programmer's viewpoint.
* Adding New Packages:: Growing the distribution.
* Packaging Guidelines:: Growing the distribution.
* Bootstrapping:: GNU/Linux built from scratch.
* Porting:: Targeting another platform or kernel.
@end menu
@@ -1569,41 +1649,14 @@ distribution. The root of this dependency graph is a small set of
bootstrap)} module. For more information on bootstrapping,
@ref{Bootstrapping}.
@node Adding New Packages
@section Adding New Packages
@node Packaging Guidelines
@section Packaging Guidelines
The GNU distribution is nascent and may well lack some of your favorite
packages. This section describes how you can help make the distribution
grow. @ref{Contributing}, for additional information on how you can
grow. @xref{Contributing}, for additional information on how you can
help.
@menu
* Packaging Guidelines:: What goes into the distribution.
* From the Source Tarball to the Package:: The story of a package.
@end menu
@node Packaging Guidelines
@subsection Packaging Guidelines
@c Adapted from http://www.gnu.org/philosophy/philosophy.html.
The GNU operating system has been developed so that users can have
freedom in their computing. GNU is @dfn{free software}, meaning that
users have the @url{http://www.gnu.org/philosophy/free-sw.html,four
essential freedoms}: to run the program, to study and change the program
in source code form, to redistribute exact copies, and to distribute
modified versions. Packages found in the GNU distribution provide only
software that conveys these four freedoms.
In addition, the GNU distribution follow the
@url{http://www.gnu.org/distros/free-system-distribution-guidelines.html,free
software distribution guidelines}. Among other things, these guidelines
reject non-free firmware, recommendations of non-free software, and
discuss ways to deal with trademarks and patents.
@node From the Source Tarball to the Package
@subsection From the Source Tarball, to the Package Definition, to the Binary Package
Free software packages are usually distributed in the form of
@dfn{source code tarballs}---typically @file{tar.gz} files that contain
all the source files. Adding a package to the distribution means
@@ -1649,6 +1702,114 @@ package automatically downloads binaries from there (except when using
needed is to review and apply the patch.
@menu
* Software Freedom:: What may go into the distribution.
* Package Naming:: What's in a name?
* Version Numbers:: When the name is not enough.
* Python Modules:: Taming the snake.
@end menu
@node Software Freedom
@subsection Software Freedom
@c Adapted from http://www.gnu.org/philosophy/philosophy.html.
The GNU operating system has been developed so that users can have
freedom in their computing. GNU is @dfn{free software}, meaning that
users have the @url{http://www.gnu.org/philosophy/free-sw.html,four
essential freedoms}: to run the program, to study and change the program
in source code form, to redistribute exact copies, and to distribute
modified versions. Packages found in the GNU distribution provide only
software that conveys these four freedoms.
In addition, the GNU distribution follow the
@url{http://www.gnu.org/distros/free-system-distribution-guidelines.html,free
software distribution guidelines}. Among other things, these guidelines
reject non-free firmware, recommendations of non-free software, and
discuss ways to deal with trademarks and patents.
@node Package Naming
@subsection Package Naming
A package has actually two names associated with it:
First, there is the name of the @emph{Scheme variable}, the one following
@code{define-public}. By this name, the package can be made known in the
Scheme code, for instance as input to another package. Second, there is
the string in the @code{name} field of a package definition. This name
is used by package management commands such as
@command{guix package} and @command{guix build}.
Both are usually the same and correspond to the lowercase conversion of the
project name chosen upstream. For instance, the GNUnet project is packaged
as @code{gnunet}. We do not add @code{lib} prefixes for library packages,
unless these are already part of the official project name. But see
@ref{Python Modules} for special rules concerning modules for
the Python language.
@node Version Numbers
@subsection Version Numbers
We usually package only the latest version of a given free software
project. But sometimes, for instance for incompatible library versions,
two (or more) versions of the same package are needed. These require
different Scheme variable names. We use the name as defined
in @ref{Package Naming}
for the most recent version; previous versions use the same name, suffixed
by @code{-} and the smallest prefix of the version number that may
distinguish the two versions.
The name inside the package definition is the same for all versions of a
package and does not contain any version number.
For instance, the versions 2.24.20 and 3.9.12 of GTK+ may be packaged as follows:
@example
(define-public gtk+
(package
(name "gtk+")
(version "3.9.12")
...))
(define-public gtk+-2
(package
(name "gtk+")
(version "2.24.20")
...))
@end example
If we also wanted GTK+ 3.8.2, this would be packaged as
@example
(define-public gtk+-3.8
(package
(name "gtk+")
(version "3.8.2")
...))
@end example
@node Python Modules
@subsection Python Modules
We currently package Python 2 and Python 3, under the Scheme variable names
@code{python-2} and @code{python} as explained in @ref{Version Numbers}.
To avoid confusion and naming clashes with other programming languages, it
seems desirable that the name of a package for a Python module contains
the word @code{python}.
Some modules are compatible with only one version of Python, others with both.
If the package Foo compiles only with Python 3, we name it
@code{python-foo}; if it compiles only with Python 2, we name it
@code{python2-foo}. If it is compatible with both versions, we create two
packages with the corresponding names.
If a project already contains the word @code{python}, we drop this;
for instance, the module python-dateutil is packaged under the names
@code{python-dateutil} and @code{python2-dateutil}.
@node Bootstrapping
@section Bootstrapping
@@ -1677,13 +1838,13 @@ Binutils, libc, and the other packages mentioned above---the
@dfn{bootstrap binaries}.
These bootstrap binaries are ``taken for granted'', though we can also
re-create them if needed (more on that later.)
re-create them if needed (more on that later).
@unnumberedsubsec Preparing to Use the Bootstrap Binaries
@c As of Emacs 24.3, Info-mode displays the image, but since it's a
@c large image, it's hard to scroll. Oh well.
@image{images/bootstrap-graph,,,Dependency graph of the early bootstrap derivations}
@image{images/bootstrap-graph,6in,,Dependency graph of the early bootstrap derivations}
The figure above shows the very beginning of the dependency graph of the
distribution, corresponding to the package definitions of the @code{(gnu
@@ -1805,7 +1966,7 @@ In practice, there may be some complications. First, it may be that the
extended GNU triplet that specifies an ABI (like the @code{eabi} suffix
above) is not recognized by all the GNU tools. Typically, glibc
recognizes some of these, whereas GCC uses an extra @code{--with-abi}
configure flag (see @code{gcc.scm} for examples of how to handle this.)
configure flag (see @code{gcc.scm} for examples of how to handle this).
Second, some of the required packages could fail to build for that
platform. Lastly, the generated binaries could be broken for some
reason.
@@ -1818,8 +1979,8 @@ reason.
This project is a cooperative effort, and we need your help to make it
grow! Please get in touch with us on @email{guix-devel@@gnu.org}. We
welcome ideas, bug reports, patches, and anything that may be helpful to
the project. We particularly welcome help on packaging (@pxref{Adding
New Packages}).
the project. We particularly welcome help on packaging
(@pxref{Packaging Guidelines}).
Please see the
@url{http://git.savannah.gnu.org/cgit/guix.git/tree/HACKING,
+28 -5
View File
@@ -24,6 +24,7 @@ GNU_SYSTEM_MODULES = \
gnu/packages.scm \
gnu/packages/acl.scm \
gnu/packages/algebra.scm \
gnu/packages/apr.scm \
gnu/packages/aspell.scm \
gnu/packages/attr.scm \
gnu/packages/autotools.scm \
@@ -53,6 +54,7 @@ GNU_SYSTEM_MODULES = \
gnu/packages/fdisk.scm \
gnu/packages/file.scm \
gnu/packages/flex.scm \
gnu/packages/fonts.scm \
gnu/packages/fontutils.scm \
gnu/packages/freeipmi.scm \
gnu/packages/gawk.scm \
@@ -61,10 +63,14 @@ GNU_SYSTEM_MODULES = \
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/gkrellm.scm \
gnu/packages/glib.scm \
gnu/packages/global.scm \
gnu/packages/gnome.scm \
gnu/packages/gnunet.scm \
gnu/packages/gnupg.scm \
gnu/packages/gnutls.scm \
gnu/packages/gperf.scm \
@@ -74,6 +80,7 @@ GNU_SYSTEM_MODULES = \
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/gv.scm \
@@ -87,7 +94,6 @@ GNU_SYSTEM_MODULES = \
gnu/packages/ld-wrapper.scm \
gnu/packages/less.scm \
gnu/packages/lesstif.scm \
gnu/packages/libapr.scm \
gnu/packages/libdaemon.scm \
gnu/packages/libevent.scm \
gnu/packages/libffi.scm \
@@ -100,6 +106,7 @@ GNU_SYSTEM_MODULES = \
gnu/packages/libunistring.scm \
gnu/packages/libusb.scm \
gnu/packages/libunwind.scm \
gnu/packages/lightning.scm \
gnu/packages/linux.scm \
gnu/packages/linux-initrd.scm \
gnu/packages/lout.scm \
@@ -108,8 +115,9 @@ GNU_SYSTEM_MODULES = \
gnu/packages/lua.scm \
gnu/packages/lvm.scm \
gnu/packages/m4.scm \
gnu/packages/mailutils.scm \
gnu/packages/mail.scm \
gnu/packages/make-bootstrap.scm \
gnu/packages/maths.scm \
gnu/packages/mit-krb5.scm \
gnu/packages/mp3.scm \
gnu/packages/multiprecision.scm \
@@ -120,9 +128,11 @@ GNU_SYSTEM_MODULES = \
gnu/packages/nettle.scm \
gnu/packages/noweb.scm \
gnu/packages/ocaml.scm \
gnu/packages/ocrad.scm \
gnu/packages/oggvorbis.scm \
gnu/packages/openldap.scm \
gnu/packages/openssl.scm \
gnu/packages/package-management.scm \
gnu/packages/parted.scm \
gnu/packages/patchelf.scm \
gnu/packages/pcre.scm \
@@ -155,6 +165,7 @@ GNU_SYSTEM_MODULES = \
gnu/packages/tmux.scm \
gnu/packages/tor.scm \
gnu/packages/unrtf.scm \
gnu/packages/valgrind.scm \
gnu/packages/version-control.scm \
gnu/packages/vim.scm \
gnu/packages/vpn.scm \
@@ -165,18 +176,29 @@ GNU_SYSTEM_MODULES = \
gnu/packages/wordnet.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/dmd.scm \
gnu/system/grub.scm \
gnu/system/linux.scm \
gnu/system/shadow.scm \
gnu/system/vm.scm
patchdir = $(guilemoduledir)/gnu/packages/patches
dist_patch_DATA = \
gnu/packages/patches/apr-skip-getservbyname-test.patch \
gnu/packages/patches/automake-skip-amhello-tests.patch \
gnu/packages/patches/avahi-localstatedir.patch \
gnu/packages/patches/bigloo-gc-shebangs.patch \
gnu/packages/patches/binutils-ld-new-dtags.patch \
gnu/packages/patches/cdparanoia-fpic.patch \
gnu/packages/patches/cmake-fix-tests.patch \
gnu/packages/patches/cpio-gets-undeclared.patch \
gnu/packages/patches/dbus-localstatedir.patch \
gnu/packages/patches/diffutils-gets-undeclared.patch \
gnu/packages/patches/emacs-configure-sh.patch \
gnu/packages/patches/findutils-absolute-paths.patch \
@@ -188,19 +210,18 @@ dist_patch_DATA = \
gnu/packages/patches/glib-tests-homedir.patch \
gnu/packages/patches/glib-tests-prlimit.patch \
gnu/packages/patches/glibc-bootstrap-system.patch \
gnu/packages/patches/glibc-ldd-x86_64.patch \
gnu/packages/patches/glibc-no-ld-so-cache.patch \
gnu/packages/patches/gnutls-fix-tests-on-32-bits-system.patch \
gnu/packages/patches/grub-gets-undeclared.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/hop-bigloo-4.0b.patch \
gnu/packages/patches/libevent-dns-tests.patch \
gnu/packages/patches/libtool-skip-tests.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/mcron-install.patch \
gnu/packages/patches/perl-no-sys-dirs.patch \
@@ -209,10 +230,12 @@ dist_patch_DATA = \
gnu/packages/patches/python-fix-dbm.patch \
gnu/packages/patches/qemu-multiple-smb-shares.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/tcsh-fix-autotest.patch \
gnu/packages/patches/teckit-cstdio.patch \
gnu/packages/patches/valgrind-glibc.patch \
gnu/packages/patches/vpnc-script.patch \
gnu/packages/patches/w3m-fix-compile.patch \
gnu/packages/patches/xpdf-constchar.patch
+6 -32
View File
@@ -32,7 +32,7 @@
(define-public mpfrcx
(package
(name "mpfrcx")
(version "0.4.1")
(version "0.4.2")
(source (origin
(method url-fetch)
(uri (string-append
@@ -40,7 +40,7 @@
version ".tar.gz"))
(sha256
(base32
"1rrc75chxyicqjgg5mfhgbz7p9mx1fgh0qlx14a82m25vfhifnd1"))))
"0grw66b255r574lvll1bqccm5myj2m8ajzsjaygcyq9zjnnbnhhy"))))
(build-system gnu-build-system)
(inputs `(("gmp" ,gmp)
("mpfr" ,mpfr)
@@ -60,14 +60,14 @@ 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)))
@@ -78,43 +78,17 @@ 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.5.4")
(source (origin
(method url-fetch)
(uri (string-append
"http://pari.math.u-bordeaux.fr/pub/pari/unix/pari-"
version ".tar.gz"))
(sha256 (base32
"0zsjccnnv00kwj2gk3ww2v530kjin1rgj8p8hbl4pwcnwc7m68gl"))))
"0gpsj5n8d1gyl7nq2y915sscs3d334ryrv8qgjdwqf3cr95f2dwz"))))
(build-system gnu-build-system)
(inputs `(("gmp" ,gmp)
("perl" ,perl)
@@ -16,7 +16,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,9 +25,9 @@
#:use-module (gnu packages perl)
#:use-module (gnu packages autotools))
(define-public libapr
(define-public apr
(package
(name "libapr")
(name "apr")
(version "1.4.8")
(source (origin
(method url-fetch)
@@ -44,7 +44,7 @@
(inputs `(("perl" ,perl)
("libtool" ,libtool)
("patch/skip-test"
,(search-patch "libapr-skip-getservbyname-test.patch"))))
,(search-patch "apr-skip-getservbyname-test.patch"))))
(home-page "http://apr.apache.org/")
(synopsis "The Apache Portable Runtime Library")
(description
@@ -57,9 +57,9 @@ 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")
(name "apr-util")
(version "1.5.2")
(source (origin
(method url-fetch)
@@ -70,19 +70,19 @@ around or take advantage of platform-specific deficiencies or features.")
"19qjxpckb9p4j9pbk8kcirg6k5vqnjrqhnk9xx2c5m9964p3vkls"))))
(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)))))
(string-append "--with-apr=" apr)))))
%standard-phases)))
(home-page "http://apr.apache.org/")
(synopsis "One of the Apache Portable Runtime Library companions")
+8 -2
View File
@@ -21,6 +21,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)
@@ -42,13 +43,15 @@
(build-system gnu-build-system)
(arguments
'(#:configure-flags '("--with-distro=none"
"--localstatedir=/var" ; for the DBus socket
"--disable-python"
"--disable-mono"
"--disable-doxygen-doc"
"--disable-xmltoman"
"--enable-tests"
"--disable-qt3" "--disable-qt4"
"--disable-gtk" "--disable-gtk3")))
"--disable-gtk" "--disable-gtk3")
#:patches (list (assoc-ref %build-inputs "patch/localstatedir"))))
(inputs
`(("expat" ,expat)
("glib" ,glib)
@@ -56,7 +59,10 @@
("libdaemon" ,libdaemon)
("intltool" ,intltool)
("pkg-config" ,pkg-config)
("gdbm" ,gdbm)))
("gdbm" ,gdbm)
("patch/localstatedir"
,(search-patch "avahi-localstatedir.patch"))))
(synopsis "Avahi, an mDNS/DNS-SD implementation")
(description
"Avahi is a system which facilitates service discovery on a local
+7 -5
View File
@@ -387,14 +387,14 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.")
(define-public glibc
(package
(name "glibc")
(version "2.17")
(version "2.18")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/glibc/glibc-"
version ".tar.xz"))
(sha256
(base32
"0gmjnn4kma9vgizccw1jv979xw55a8n1nkk94gg0l3hy80vy6539"))))
"18spla703zav8dq9fw7rbzkyv9qfisxb26p7amg1x3wjh7iy3d1c"))))
(build-system gnu-build-system)
;; Glibc's <limits.h> refers to <linux/limit.h>, for instance, so glibc
@@ -409,7 +409,8 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.")
(arguments
`(#:out-of-source? #t
#:patches (list (assoc-ref %build-inputs "patch/ld.so.cache"))
#:patches (list (assoc-ref %build-inputs "patch/ld.so.cache")
(assoc-ref %build-inputs "patch/ldd"))
#:configure-flags
(list "--enable-add-ons"
"--sysconfdir=/etc"
@@ -422,7 +423,6 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.")
(assoc-ref %outputs "locales")
"/share/locale")
(string-append "--with-headers="
(assoc-ref %build-inputs "linux-headers")
"/include")
@@ -496,6 +496,8 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.")
(inputs `(("patch/ld.so.cache"
,(search-patch "glibc-no-ld-so-cache.patch"))
("patch/ldd"
,(search-patch "glibc-ldd-x86_64.patch"))
("static-bash" ,(static-package bash-light))))
(synopsis "The GNU C Library")
(description
@@ -566,7 +568,7 @@ with the Linux kernel.")
version ".tar.gz"))
(sha256
(base32
"13xd30ngwhqmj7w216ghd5knvg047hzpc0xca5l297g5cwb62hza"))))))
"1dh7nzmfxs8fps4bzcd2lz5fz24zxy2123a99avxsk34jh6bk7id"))))))
(home-page "http://www.iana.org/time-zones")
(synopsis "Database of current and historical time zones")
(description "The Time Zone Database (often called tz or zoneinfo)
+4 -3
View File
@@ -184,9 +184,10 @@ cd $out
$out/bin/guile --version~%"
mkdir xz guile tar)
(list mkdir xz guile tar))))
(derivation store name system
bash `(,builder) '()
`((,bash) (,builder)))))))))
(derivation store name
bash `(,builder)
#:system system
#:inputs `((,bash) (,builder)))))))))
(package
(name "guile-bootstrap")
(version "2.0")
+71 -2
View File
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -19,15 +20,18 @@
(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 gettext) #:renamer (symbol-prefix-proc 'gnu:))
#:use-module (gnu packages gtk)
#:use-module (gnu packages readline)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages help2man)
#:use-module (gnu packages pkg-config))
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages which))
(define-public libcddb
(package
@@ -113,3 +117,68 @@ 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.")
(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"))))
(build-system gnu-build-system)
(inputs
`(("patch/fpic" ,(search-patch "cdparanoia-fpic.patch"))))
(arguments
`(#:tests? #f ; there is no check target
#:patches (list (assoc-ref %build-inputs "patch/fpic"))))
(home-page "http://www.xiph.org/paranoia/")
(synopsis "audio CD reading utility which includes extra data verification features")
(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.4")
(source (origin
(method url-fetch)
(uri (string-append "http://dvdisaster.net/downloads/dvdisaster-"
version ".tar.bz2"))
(sha256
(base32
"0pm039a78h7m9vvjmmjfkl05ii6qdmfhvbypxjbc7j5w82y66is4"))))
(build-system gnu-build-system)
(inputs
`(("gettext" ,gnu:gettext)
("gtk+" ,gtk+)
("pkg-config" ,pkg-config)
("which" ,which)))
(arguments
`(#:tests? #f)) ; no check target
(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+)))
+22
View File
@@ -189,6 +189,7 @@ 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")
@@ -200,3 +201,24 @@ 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 lzip
(package
(name "lzip")
(version "1.14")
(source (origin
(method url-fetch)
(uri (string-append "mirror://savannah/lzip/lzip-"
version ".tar.gz"))
(sha256
(base32
"1rybhk2pxpfh2789ck9mrkdv3bpx7b7miwndlshb5vb02m9crxbz"))))
(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+)))
+1 -1
View File
@@ -45,7 +45,7 @@
`(("libgcrypt" ,libgcrypt)
("lvm2" ,lvm2)
("popt" ,popt)
("python" ,python)
("python" ,python-wrapper)
("util-linux" ,util-linux)))
(synopsis "hard disk encryption tool")
(description
+7 -6
View File
@@ -20,24 +20,25 @@
#: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 compression) #:select (lzip)))
(define-public ddrescue
(package
(name "ddrescue")
(version "1.16")
(version "1.17")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/ddrescue/ddrescue-"
version ".tar.gz"))
version ".tar.lz"))
(sha256
(base32
"1rixya7p8c4jrn4p0flf6h5dqwybrilf3hrj4r7x41h3zgjz5cvn"))))
"0bvmsbzli2j4czwkabzs978n1y6vx31axh02kpgcf7033cc6rydy"))))
(build-system gnu-build-system)
(home-page
"http://www.gnu.org/software/ddrescue/ddrescue.html")
(home-page "http://www.gnu.org/software/ddrescue/ddrescue.html")
(synopsis "Data recovery utility")
(native-inputs `(("lzip" ,lzip)))
(description
"GNU Ddrescue is a data recovery tool. It copies data from one
file or block device (e.g., hard disk, CD-ROM) to another, trying hard to
+2 -2
View File
@@ -22,6 +22,7 @@
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages gtk)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages gnutls)
@@ -71,8 +72,7 @@
;; TODO: Add the optional dependencies.
("xlibs" ,libx11)
("libXaw" ,libxaw) ; XXX: eventually replace by GTK+
;; ("gtk+" ,gtk+)
("gtk+" ,gtk+)
("libXft" ,libxft)
("libtiff" ,libtiff)
;; ("libungif" ,libungif)
+133
View File
@@ -0,0 +1,133 @@
;;; 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 fonts)
#:use-module ((guix licenses)
#:renamer (symbol-prefix-proc 'license:))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system trivial)
#:use-module ((gnu packages base)
#:select (tar))
#:use-module (gnu packages compression))
(define-public ttf-bitstream-vera
(package
(name "ttf-bitstream-vera")
(version "1.10")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/ttf-bitstream-vera/"
version "/ttf-bitstream-vera-"
version ".tar.bz2"))
(sha256
(base32
"1p3qs51x5327gnk71yq8cvmxc6wgx79sqxfvxcv80cdvgggjfnyv"))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
#:builder (begin
(use-modules (guix build utils)
(srfi srfi-26))
(let ((tar (string-append (assoc-ref %build-inputs
"tar")
"/bin/tar"))
(PATH (string-append (assoc-ref %build-inputs
"bzip2")
"/bin"))
(font-dir (string-append %output
"/share/fonts/truetype"))
(doc-dir (string-append %output "/share/doc/"
,name "-" ,version)))
(setenv "PATH" PATH)
(system* tar "xvf" (assoc-ref %build-inputs "source"))
(mkdir-p font-dir)
(mkdir-p doc-dir)
(chdir (string-append "ttf-bitstream-vera-" ,version))
(for-each (lambda (ttf)
(copy-file ttf
(string-append font-dir "/" ttf)))
(find-files "." "\\.ttf$"))
(for-each (lambda (doc)
(copy-file doc
(string-append doc-dir "/" doc)))
(find-files "." "\\.TXT$"))))))
(native-inputs `(("source" ,source)
("tar" ,tar)
("bzip2" ,bzip2)))
(home-page "https://www-old.gnome.org/fonts/")
(synopsis "Bitstream Vera sans-serif typeface")
(description "Vera is a sans-serif typeface from Bitstream, Inc. This
package provides the TrueType (TTF) files.")
(license
(license:x11-style
"https://www-old.gnome.org/fonts/#Final_Bitstream_Vera_Fonts"))))
(define-public freefont-ttf
(package
(name "freefont-ttf")
(version "20100919")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/freefont/freefont-ttf-"
version ".tar.gz"))
(sha256
(base32
"1q3h5jp1mbdkinkwxy0lfd0a1q7azlbagraydlzaa2ng82836wg4"))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
#:builder (begin
(use-modules (guix build utils)
(srfi srfi-26))
(let ((tar (string-append (assoc-ref %build-inputs
"tar")
"/bin/tar"))
(PATH (string-append (assoc-ref %build-inputs
"gzip")
"/bin"))
(font-dir (string-append %output
"/share/fonts/truetype"))
(doc-dir (string-append %output "/share/doc/"
,name "-" ,version)))
(setenv "PATH" PATH)
(system* tar "xvf" (assoc-ref %build-inputs "source"))
(mkdir-p font-dir)
(mkdir-p doc-dir)
(chdir (string-append "freefont-" ,version))
(for-each (lambda (file)
(let ((dir (if (string-suffix? "ttf" file)
font-dir
doc-dir)))
(copy-file file
(string-append dir "/" file))))
(find-files "." ""))))))
(native-inputs `(("source" ,source)
("tar" ,tar)
("gzip" ,gzip)))
(home-page "http://www.gnu.org/software/freefont/")
(synopsis "Unicode-encoded outline fonts")
(description
"The GNU Freefont project aims to provide a set of free outline
(PostScript Type0, TrueType, OpenType...) fonts covering the ISO
10646/Unicode UCS (Universal Character Set).")
(license license:gpl3+)))
+12 -2
View File
@@ -19,6 +19,7 @@
(define-module (gnu packages fontutils)
#:use-module (gnu packages)
#:use-module (gnu packages compression)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages xml)
#:use-module ((guix licenses) #:renamer (symbol-prefix-proc 'license:))
@@ -64,18 +65,27 @@ anti-aliased glyph bitmap generation with 256 gray levels.")
(define-public fontconfig
(package
(name "fontconfig")
(version "2.10.91")
(version "2.10.93")
(source (origin
(method url-fetch)
(uri (string-append
"http://www.freedesktop.org/software/fontconfig/release/fontconfig-"
version ".tar.bz2"))
(sha256 (base32
"1vk37q3zj8bjppj3l0pkby1psialpwl263jqf6pbih2hx5a7jwm4"))))
"172j5vsgx2xplsk5mrxrspbn5lrswq6gnxkxjgcrx0j8i0kiz47a"))))
(build-system gnu-build-system)
(inputs `(("expat" ,expat)
("freetype" ,freetype)
("gs-fonts" ,gs-fonts)
("pkg-config" ,pkg-config)))
(arguments
`(#:configure-flags
;; point to user profile instead of /usr/share/fonts in /etc/fonts.conf
(list "--with-default-fonts=~/.guix-profile/share/fonts"
;; register gs-fonts
(string-append "--with-add-fonts="
(assoc-ref %build-inputs "gs-fonts")
"/share/fonts"))))
(synopsis "Fontconfig, a library for configuring and customising font access.")
(description
"Fontconfig can discover new fonts when installed automatically;
+2 -2
View File
@@ -221,7 +221,7 @@ used in the GNU system including the GNU/Linux variant.")
(source (origin
(method url-fetch)
(uri (list (string-append
"ftp://ftp.linux.student.kuleuven.be/pub/people/skimo/isl/isl-"
"http://isl.gforge.inria.fr/isl-"
version
".tar.bz2")
(string-append %gcc-infrastructure
@@ -231,7 +231,7 @@ used in the GNU system including the GNU/Linux variant.")
"13d9cqa5rzhbjq0xf0b2dyxag7pqa72xj9dhsa03m8ccr1a4npq9"))))
(build-system gnu-build-system)
(inputs `(("gmp" ,gmp)))
(home-page "http://www.kotnet.org/~skimo/isl/")
(home-page "http://isl.gforge.inria.fr/")
(synopsis
"A library for manipulating sets and relations of integer points bounded
by linear constraints")
+1 -1
View File
@@ -53,7 +53,7 @@
("gmp" ,gmp)
("readline" ,readline)
("ncurses" ,ncurses)
("python" ,python)
("python" ,python-wrapper)
("texinfo" ,texinfo)
("dejagnu" ,dejagnu)))
(home-page "http://www.gnu.org/software/gdb/")
+90
View File
@@ -0,0 +1,90 @@
;;; 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 geeqie)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module ((guix licenses)
#:renamer (symbol-prefix-proc 'l:))
#:use-module (guix build-system gnu)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages glib)
#:use-module (gnu packages gtk)
#:use-module (gnu packages libpng)
#:use-module ((gnu packages ghostscript)
#:select (lcms))
#:use-module (gnu packages compression)
#:use-module (gnu packages xml))
(define-public exiv2 ; XXX: move elsewhere?
(package
(name "exiv2")
(version "0.23")
(source (origin
(method url-fetch)
(uri (string-append "http://www.exiv2.org/exiv2-"
version ".tar.gz"))
(sha256
(base32
"04bbg2cg6mgcyz435zamx37sp5zw44n2alb59ki1daz71f851yl1"))))
(build-system gnu-build-system)
(arguments '(#:tests? #f)) ; no `check' target
(propagated-inputs
`(("expat" ,expat) ("zlib" ,zlib)))
(home-page "http://www.exiv2.org/")
(synopsis "Library and command-line utility to manage image metadata")
(description
"Exiv2 is a C++ library and a command line utility to manage image
metadata. It provides fast and easy read and write access to the Exif, IPTC
and XMP metadata of images in various formats.")
;; Files under `xmpsdk' are a copy of Adobe's XMP SDK, licensed under the
;; 3-clause BSD license: <http://www.adobe.com/devnet/xmp/sdk/eula.html>.
;; The core is GPLv2+: <https://launchpad.net/ubuntu/precise/+source/exiv2/+copyright>.
(license l:gpl2+)))
(define-public geeqie
(package
(name "geeqie")
(version "1.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/geeqie/geeqie-"
version ".tar.gz"))
(sha256
(base32
"1kzy39z9505xkayyx7rjj2wda76xy3ch1s5z35zn8yli54ffhi2m"))))
(build-system gnu-build-system)
(inputs
`(;; ("libchamplain" ,libchamplain)
("intltool" ,intltool)
("lcms" ,lcms)
("exiv2" ,exiv2)
("libpng" ,libpng)
("gtk+" ,gtk+)
("pkg-config" ,pkg-config)))
(home-page "http://geeqie.sourceforge.net")
(synopsis "Lightweight GTK+ based image viewer")
(description
"Geeqie is a lightweight GTK+ based image viewer for Unix like operating
systems. It features: EXIF, IPTC and XMP metadata browsing and editing
interoperability; easy integration with other software; geeqie works on files
and directories, there is no need to import images; fast preview for many raw
image formats; tools for image comparison, sorting and managing photo
collection. Geeqie was initially based on GQview.")
(license l:gpl2+)))
+1 -1
View File
@@ -136,7 +136,7 @@ printing, and psresize, for adjusting page sizes.")
("libtiff" ,libtiff)
("perl" ,perl)
("pkg-config" ,pkg-config) ; needed to find libtiff
("python" ,python)
("python" ,python-wrapper)
("tcl" ,tcl)
("zlib" ,zlib)))
(arguments
+68
View File
@@ -0,0 +1,68 @@
;;; GNU Guix --- Functional package management for GNU
;;; 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/>.
(define-module (gnu packages gkrellm)
#:use-module ((guix licenses)
#:renamer (symbol-prefix-proc 'license:))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module ((gnu packages gettext)
#:renamer (symbol-prefix-proc 'gnu:))
#:use-module (gnu packages gtk)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages xorg))
(define-public gkrellm
(package
(name "gkrellm")
(version "2.3.5")
(source
(origin
(method url-fetch)
(uri (string-append "http://members.dslextreme.com/users/billw/gkrellm/gkrellm-"
version ".tar.bz2"))
(sha256
(base32
"12rc6zaa7kb60b9744lbrlfkxxfniprm6x0mispv63h4kh75navh"))))
(build-system gnu-build-system)
(inputs
`(("gettext" ,gnu:gettext)
("gtk+" ,gtk+)
("libice" ,libice)
("libsm" ,libsm)))
(native-inputs
`(("pkg-config" ,pkg-config)))
(arguments
`(#:tests? #f ; there is no check target
#:phases
(alist-delete
'configure
%standard-phases)
#:make-flags
(let ((out (assoc-ref %outputs "out")))
(list (string-append "INSTALLROOT=" out)
"CC=gcc"
"X11_LIBS = -lX11 -lSM -lICE -lgmodule-2.0"))))
(home-page "http://members.dslextreme.com/users/billw/gkrellm/gkrellm.html")
(synopsis "System monitors")
(description
"GKrellM is a single process stack of system monitors which supports
applying themes to match its appearance to your window manager, Gtk, or any
other theme.")
(license license:gpl3+)))
+95 -6
View File
@@ -34,9 +34,19 @@
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages xml)
#:use-module (gnu packages bash))
#:use-module (gnu packages bash)
#:use-module (gnu packages file)
#:use-module (gnu packages xorg)
(define-public dbus
;; Export variables up-front to allow circular dependency with the 'xorg'
;; module.
#:export (dbus
glib
dbus-glib
intltool
itstool))
(define dbus
(package
(name "dbus")
(version "1.6.4")
@@ -49,9 +59,26 @@
(base32
"1wacqyfkcpayg7f8rvx9awqg275n5pksxq5q7y21lxjx85x6pfjz"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags (list ;; Install the system bus socket under /var.
"--localstatedir=/var"
;; XXX: Fix the following to allow system-wide
;; config.
;; "--sysconfdir=/etc"
"--with-session-socket-dir=/tmp")
#:patches (list (assoc-ref %build-inputs "patch/localstatedir"))))
(inputs
`(("expat" ,expat)
("pkg-config" ,pkg-config)))
("pkg-config" ,pkg-config)
("patch/localstatedir"
,(search-patch "dbus-localstatedir.patch"))
;; Add a dependency on libx11 so that 'dbus-launch' has support for
;; '--autolaunch'.
("libx11" ,libx11)))
(home-page "http://dbus.freedesktop.org/")
(synopsis "Message bus for inter-process communication (IPC)")
(description
@@ -72,7 +99,7 @@ or through unencrypted TCP/IP suitable for use behind a firewall with
shared NFS home directories.")
(license license:gpl2+))) ; or Academic Free License 2.1
(define-public glib
(define glib
(package
(name "glib")
(version "2.37.1")
@@ -91,7 +118,7 @@ shared NFS home directories.")
("gettext" ,guix:gettext)
("libffi" ,libffi)
("pkg-config" ,pkg-config)
("python" ,python)
("python" ,python-wrapper)
("zlib" ,zlib)
("perl" ,perl) ; needed by GIO tests
("dbus" ,dbus) ; for GDBus tests
@@ -144,7 +171,7 @@ dynamic loading, and an object system.")
(home-page "http://developer.gnome.org/glib/")
(license license:lgpl2.0+))) ; some files are under lgpl2.1+
(define-public intltool
(define intltool
(package
(name "intltool")
(version "0.50.2")
@@ -162,6 +189,9 @@ dynamic loading, and an object system.")
;; the `intltool-update' script.
("gettext" ,guix:gettext)
;; `file' is used by `intltool-update' too.
("file" ,file)
("perl-xml-parser" ,perl-xml-parser)
("perl" ,perl)))
(home-page "https://launchpad.net/intltool/+download")
@@ -181,3 +211,62 @@ The intltool collection can be used to do these things:
Merge back the translations from .po files into .xml, .desktop and
oaf files. This merge step will happen at build resp. installation time.")
(license license:gpl2+)))
(define itstool
(package
(name "itstool")
(version "1.2.0")
(source (origin
(method url-fetch)
(uri (string-append "http://files.itstool.org/itstool/itstool-"
version ".tar.bz2"))
(sha256
(base32
"1akq75aflihm3y7js8biy7b5mw2g11vl8yq90gydnwlwp0zxdzj6"))))
(build-system gnu-build-system)
(home-page "http://www.itstool.org")
(synopsis "Tool to translate XML documents with PO files")
(description
"ITS Tool allows you to translate your XML documents with PO files, using
rules from the W3C Internationalization Tag Set (ITS) to determine what to
translate and how to separate it into PO file messages.
PO files are the standard translation format for GNU and other Unix-like
systems. They present translatable information as discrete messages, allowing
each message to be translated independently. In contrast to whole-page
translation, translating with a message-based format like PO means you can
easily track changes to the source document down to the paragraph. When new
strings are added or existing strings are modified, you only need to update the
corresponding messages.
ITS Tool is designed to make XML documents translatable through PO files by
applying standard ITS rules, as well as extension rules specific to ITS Tool.
ITS also provides an industry standard way for authors to override translation
information in their documents, such as whether a particular element should be
translated.")
(license license:gpl3+)))
(define dbus-glib
(package
(name "dbus-glib")
(version "0.100.2")
(source (origin
(method url-fetch)
(uri
(string-append "http://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-"
version ".tar.gz"))
(sha256
(base32
"1ibav91yg70f2l3l18cr0hf4mna1h9d4mrg0c60w4l8zjbd45fx5"))))
(build-system gnu-build-system)
(inputs
`(("dbus" ,dbus)
("expat" ,expat)
("glib" ,glib)
("pkg-config" ,pkg-config)))
(home-page "http://dbus.freedesktop.org/doc/dbus-glib/")
(synopsis "D-Bus GLib bindings")
(description
"GLib bindings for D-Bus. The package is obsolete and superseded
by GDBus included in Glib.")
(license license:gpl2))) ; or Academic Free License 2.1
+57
View File
@@ -0,0 +1,57 @@
;;; GNU Guix --- Functional package management for GNU
;;; 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/>.
(define-module (gnu packages gnome)
#:use-module ((guix licenses) #:select (gpl2+))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages glib)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages xml))
(define-public gnome-doc-utils
(package
(name "gnome-doc-utils")
(version "0.20.10")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/0.20/"
name "-" version ".tar.xz"))
(sha256
(base32
"19n4x25ndzngaciiyd8dd6s2mf9gv6nv3wv27ggns2smm7zkj1nb"))))
(build-system gnu-build-system)
(inputs
`(("intltool" ,intltool)
("libxml2" ,libxml2)
("libxslt" ,libxslt)
("pkg-config" ,pkg-config)
("python-2" ,python-2)))
(arguments
`(#:tests? #f)) ; tries to load http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd
(home-page "https://wiki.gnome.org/GnomeDocUtils")
(synopsis
"Documentation utilities for the Gnome project")
(description
"Gnome-doc-utils is a collection of documentation utilities for the
Gnome project. It includes xml2po tool which makes it easier to translate
and keep up to date translations of documentation.")
(license gpl2+))) ; xslt under lgpl
+138
View File
@@ -0,0 +1,138 @@
;;; GNU Guix --- Functional package management for GNU
;;; 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/>.
(define-module (gnu packages gnunet)
#:use-module (gnu packages autotools)
#:use-module (gnu packages compression)
#:use-module (gnu packages curl)
#:use-module ((gnu packages gettext)
#:renamer (symbol-prefix-proc 'gnu:))
#:use-module (gnu packages glib)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages gnutls)
#:use-module (gnu packages libjpeg)
#:use-module (gnu packages libtiff)
#:use-module (gnu packages oggvorbis)
#:use-module (gnu packages openssl)
#:use-module (gnu packages pkg-config)
#:use-module ((guix licenses)
#:renamer (symbol-prefix-proc 'license:))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu))
(define-public libextractor
(package
(name "libextractor")
(version "1.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/libextractor/libextractor-"
version ".tar.gz"))
(sha256
(base32
"1zvj64ig456c9ya3r8ib48ms42cnli9y7ig5p04xqm16z7vw5dyb"))))
(build-system gnu-build-system)
;; WARNING: Checks require /dev/shm to be in the build chroot, especially
;; not to be a symbolic link to /run/shm.
;; FIXME:
;; The following dependencies are all optional, but should be
;; available for maximum coverage:
;; * libarchive
;; * libavutil / libavformat / libavcodec / libswscale (ffmpeg)
;; * libexiv2
;; * libgif (giflib)
;; * libgtk+ >= 3.0.0 (may probably drop glib then as a propagated input of
;; gtk)
;; * libgsf
;; * libgstreamer
;; * libmagic (file)
;; * libmpeg2
;; * libmp4v2
;; * librpm
;; * libsmf
;; * libtidy
(inputs
`(("gettext" ,gnu:gettext)
("flac" ,flac)
("glib" ,glib)
("libjpeg" ,libjpeg)
("libogg" ,libogg)
("libtiff" ,libtiff)
("libtool" ,libtool)
("libvorbis" ,libvorbis)
("pkg-config" ,pkg-config)
("zlib" ,zlib)))
(synopsis "Library to extract meta-data from media files")
(description
"GNU Libextractor is a library used to extract meta data from files.
The goal is to provide developers of file-sharing networks, browsers or
WWW-indexing bots with a universal library to obtain simple keywords and
meta data to match against queries and to show to users instead of only
relying on filenames. libextractor contains the shell command extract that,
similar to the well-known file command, can extract meta data from a file
and print the results to stdout.
Currently, libextractor supports the following formats: HTML, MAN, PS, DVI,
OLE2 (DOC, XLS, PPT), OpenOffice (sxw), StarOffice (sdw), FLAC,
MP3 (ID3v1 and ID3v2), OGG, WAV, S3M (Scream Tracker 3), XM (eXtended Module),
IT (Impulse Tracker), NSF(E) (NES music), SID (C64 music), EXIV2, JPEG, GIF,
PNG, TIFF, DEB, RPM, TAR(.GZ), LZH, LHA, RAR, ZIP, CAB, 7-ZIP, AR, MTREE,
PAX, CPIO, ISO9660, SHAR, RAW, XAR FLV, REAL, RIFF (AVI), MPEG, QT and ASF.
Also, various additional MIME types are detected.")
(license license:gpl3+)
(home-page "http://www.gnu.org/software/libextractor/")))
(define-public libmicrohttpd
(package
(name "libmicrohttpd")
(version "0.9.29")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/libmicrohttpd/libmicrohttpd-"
version ".tar.gz"))
(sha256
(base32
"169qpbmqprm296kicym63njxqf3qnjkk16qar73b813l7mj4jn8s"))))
(build-system gnu-build-system)
(inputs
`(("curl" ,curl)
("gnutls" ,gnutls)
("libgcrypt" ,libgcrypt)
("openssl" ,openssl)
("zlib" ,zlib)))
(synopsis "C library implementing an HTTP 1.1 server")
(description
"GNU libmicrohttpd is a small C library that is supposed to make it
easy to run an HTTP server as part of another application. Key features
that distinguish GNU Libmicrohttpd from other projects are:
C library is fast and small;
API is simple, expressive and fully reentrant;
implementation is HTTP 1.1 compliant;
HTTP server can listen on multiple ports;
four different threading models (select, poll, pthread, thread pool);
supported platforms include GNU/Linux, FreeBSD, OpenBSD, NetBSD, Android,
OS X, W32, Symbian and z/OS;
support for IPv6;
support for SHOUTcast;
support for incremental processing of POST data (optional);
support for basic and digest authentication (optional);
support for SSL3 and TLS (requires libgcrypt and libgnutls, optional);
binary is only about 32k (without TLS/SSL support and other optional features).")
(license license:lgpl2.1+)
(home-page "http://www.gnu.org/software/libmicrohttpd/")))
+19 -17
View File
@@ -57,14 +57,14 @@ Daemon and possibly more in the future.")
(define-public libgcrypt
(package
(name "libgcrypt")
(version "1.5.2")
(version "1.5.3")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-"
version ".tar.bz2"))
(sha256
(base32
"0gwnzqd64cpwdmk93nll54nidsr74jpimxzj4p4z7502ylwl66p4"))))
"1lar8y3lh61zl5flljpz540d78g99h4d5idfwrfw8lm3gm737xdw"))))
(build-system gnu-build-system)
(propagated-inputs
`(("libgpg-error" ,libgpg-error)))
@@ -106,7 +106,7 @@ provided.")
(define-public libksba
(package
(name "libksba")
(version "1.2.0")
(version "1.3.0")
(source
(origin
(method url-fetch)
@@ -115,7 +115,7 @@ provided.")
version ".tar.bz2"))
(sha256
(base32
"0jwk7hm3x3g4hd7l12z3d79dy7359x7lc88dq6z7q0ixn1jwxbq9"))))
"0w8rfb6yhcwkwzvjafrashcygy4hd9xwwmvlnkfd1m2h0paywqas"))))
(build-system gnu-build-system)
(propagated-inputs
`(("libgpg-error" ,libgpg-error)))
@@ -131,7 +131,7 @@ specifications are building blocks of S/MIME and TLS.")
(define-public gnupg
(package
(name "gnupg")
(version "2.0.20")
(version "2.0.21")
(source
(origin
(method url-fetch)
@@ -139,12 +139,10 @@ specifications are building blocks of S/MIME and TLS.")
".tar.bz2"))
(sha256
(base32
"16mp0j5inrcqcb3fxbn0b3aamascy3n923wiy0y8marc0rzrp53f"))))
"1xgf1q1phdawk6y66haaqcvfnlsqk12jmjin1m2d5x6fqw18kpq0"))))
(build-system gnu-build-system)
(inputs
`(;; TODO: Add missing optional dep libusb.
;; ("libusb" ,libusb)
("bzip2" ,guix:bzip2)
`(("bzip2" ,guix:bzip2)
("curl" ,curl)
("libassuan" ,libassuan)
("libgcrypt" ,libgcrypt)
@@ -191,7 +189,8 @@ S/MIME.")
"1g1jly3wl4ks6h8ydkygyl2c4i7v3z91rg42005m6vm70y1d8b3d"))))
(build-system gnu-build-system)
(inputs `(("perl" ,perl)
("python" ,python)))
("python" ,python-wrapper)
("gpg" ,gnupg)))
(arguments
`(#:tests? #f
#:phases
@@ -203,16 +202,19 @@ S/MIME.")
(lambda* (#:key #:allow-other-keys) #t)
(alist-replace
'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(gpg (string-append (assoc-ref inputs "gpg")
"/bin/gpg2")))
(mkdir out)
(mkdir (string-append out "/bin"))
(for-each
(lambda (filename)
(copy-file filename (string-append out "/bin/" filename)))
'("pius" "pius-keyring-mgr" "pius-party-worksheet"))))
(for-each (lambda (file)
(substitute* file
(("/usr/bin/gpg") gpg))
(copy-file file (string-append out "/bin/" file)))
'("pius" "pius-keyring-mgr" "pius-party-worksheet"))))
%standard-phases)))))
(synopsis "programs to simplify gnupg key signing")
(synopsis "Programs to simplify GnuPG key signing")
(description
"Pius (PGP Individual UID Signer) helps attendees of PGP keysigning
parties. It is the main utility and makes it possible to quickly and easily
+3 -9
View File
@@ -54,7 +54,7 @@ portable, and only require an ANSI C89 platform.")
(define-public gnutls
(package
(name "gnutls")
(version "3.2.1")
(version "3.2.4")
(source (origin
(method url-fetch)
(uri
@@ -64,20 +64,14 @@ portable, and only require an ANSI C89 platform.")
version ".tar.xz"))
(sha256
(base32
"1zi2kq3vcbqdy9khl7r6pgk4hgwibniasm9k6siasdvqjijq3ymb"))))
"0zvhzy87v9dfxfvmg1pl951kw55rp647cqdza8942fxq7spp158i"))))
(build-system gnu-build-system)
(arguments
`(#:patches (list (assoc-ref %build-inputs
"patch/fix-tests"))
#:patch-flags '("-p0")))
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("guile" ,guile-2.0)
("zlib" ,guix:zlib)
("perl" ,perl)
("patch/fix-tests"
,(search-patch "gnutls-fix-tests-on-32-bits-system.patch"))))
("perl" ,perl)))
(propagated-inputs
`(("libtasn1" ,libtasn1)
("nettle" ,nettle)
+28 -2
View File
@@ -29,7 +29,33 @@
#:use-module (gnu packages linux)
#:use-module (gnu packages qemu)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages cdrom))
#:use-module (gnu packages cdrom)
#:use-module (srfi srfi-1))
(define qemu-for-tests
;; Newer QEMU versions, such as 1.5.1, no longer support the 'shutdown'
;; instruction. This leads to test hangs, as reported at
;; <https://bugs.launchpad.net/bugs/947597> and fixed at
;; <http://bzr.savannah.gnu.org/lh/grub/trunk/grub/revision/4828>.
;; Work around it by using an older QEMU.
(package (inherit qemu)
(version "1.3.1")
(source (origin
(method url-fetch)
(uri (string-append "http://wiki.qemu-project.org/download/qemu-"
version ".tar.bz2"))
(sha256
(base32
"1bqfrb5dlsxm8gxhkksz8qzi5fhj3xqhxyfwbqcphhcv1kpyfwip"))))
;; With recent GLib versions, we get a test failure:
;; ERROR:tests/rtc-test.c:176:check_time: assertion failed (ABS(t - s) <= wiggle): (382597824 <= 2)
;; Simply disable the tests.
(arguments `(#:tests? #f
,@(package-arguments qemu)))
;; The manual fails to build with Texinfo 5.x.
(native-inputs (alist-delete "texinfo" (package-native-inputs qemu)))))
(define-public grub
(package
@@ -70,7 +96,7 @@
;; Dependencies for the test suite. The "real" QEMU is needed here,
;; because several targets are used.
("qemu" ,qemu)
("qemu" ,qemu-for-tests)
("xorriso" ,xorriso)))
(home-page "http://www.gnu.org/software/grub/")
(synopsis "GRand unified boot loader")
+109
View File
@@ -0,0 +1,109 @@
;;; GNU Guix --- Functional package management for GNU
;;; 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/>.
(define-module (gnu packages gstreamer)
#:use-module ((guix licenses) #:select (lgpl2.0+))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages bison)
#:use-module (gnu packages flex)
#:use-module (gnu packages glib)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python))
(define-public gstreamer
(package
(name "gstreamer")
(version "1.0.10")
(source
(origin
(method url-fetch)
(uri (string-append "http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-"
version ".tar.xz"))
(sha256
(base32
"0c0irk85jd2cihm5pmf4zxhlpg08qpxjcqv1l9qn2n3h2gsaj2lf"))))
(build-system gnu-build-system)
(inputs
`(("bison" ,bison)
("flex" ,flex)
("glib" ,glib)
("perl" ,perl)
("pkg-config" ,pkg-config)
("python-wrapper" ,python-wrapper)))
(home-page "http://gstreamer.freedesktop.org/")
(synopsis
"Multimedia library")
(description
"GStreamer is a library for constructing graphs of media-handling
components. The applications it supports range from simple Ogg/Vorbis
playback, audio/video streaming to complex audio (mixing) and video
(non-linear editing) processing.
Applications can take advantage of advances in codec and filter technology
transparently. Developers can add new codecs and filters by writing a
simple plugin with a clean, generic interface.
This package provides the core library and elements.")
(license lgpl2.0+)))
(define-public gst-plugins-base
(package
(name "gst-plugins-base")
(version "1.0.10")
(source
(origin
(method url-fetch)
(uri (string-append "http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-"
version ".tar.xz"))
(sha256
(base32
"1s4pphbb5kpdh4rrmb8rala4sp499k4by59925k15xiz58xyhm4p"))))
(build-system gnu-build-system)
;; FIXME: Add more dependencies for further plugins.
(inputs
`(("glib" ,glib)
("gstreamer" ,gstreamer)
("pkg-config" ,pkg-config)
("python-wrapper" ,python-wrapper)))
(arguments
`(#:tests? #f))
;; All tests pass except for one:
;; Running suite(s): pbutils library
;; 85%: Checks: 7, Failures: 1, Errors: 0
;; libs/pbutils.c:522:F:general:test_pb_utils_install_plugins:0: gst_install_plugins_sync() failed ;; with unexpected ret 201, which is neither HELPER_MISSING nor 1
;; FAIL: libs/pbutils
;; According to the documentation, "gst_install_plugins_sync (...)
;; should almost never be used".
(home-page "http://gstreamer.freedesktop.org/")
(synopsis
"Plugins for the gstreamer multimedia library")
(description
"GStreamer is a library for constructing graphs of media-handling
components. The applications it supports range from simple Ogg/Vorbis
playback, audio/video streaming to complex audio (mixing) and video
(non-linear editing) processing.
Applications can take advantage of advances in codec and filter technology
transparently. Developers can add new codecs and filters by writing a
simple plugin with a clean, generic interface.
This package provides an essential exemplary set of elements.")
(license lgpl2.0+)))
+7 -7
View File
@@ -60,14 +60,14 @@ tools have full access to view and control running applications.")
(define-public cairo
(package
(name "cairo")
(version "1.12.14")
(version "1.12.16")
(source (origin
(method url-fetch)
(uri (string-append "http://cairographics.org/releases/cairo-"
version ".tar.xz"))
(sha256
(base32
"04xcykglff58ygs0dkrmmnqljmpjwp2qgwcz8sijqkdpz7ix3l4n"))))
"0inqwsylqkrzcjivdirkjx5nhdgxbdc62fq284c3xppinfg9a195"))))
(build-system gnu-build-system)
(propagated-inputs
`(("fontconfig" ,fontconfig)
@@ -83,7 +83,7 @@ tools have full access to view and control running applications.")
("libspectre" ,libspectre)
("pkg-config" ,pkg-config)
("poppler" ,poppler)
("python" ,python)
("python" ,python-wrapper)
("xextproto" ,xextproto)
("zlib" ,zlib)))
(arguments
@@ -110,20 +110,20 @@ affine transformation (scale, rotation, shear, etc.)")
(define-public harfbuzz
(package
(name "harfbuzz")
(version "0.9.18")
(version "0.9.21")
(source (origin
(method url-fetch)
(uri (string-append "http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-"
version ".tar.bz2"))
(sha256
(base32
"026rlwspf1zn5akds9fwibpqpn47kmlnmqm5fi0cp4k4dnygpw7y"))))
"1s6sffgf6ndy12fyln2bdnkn3cb1qfkch0rakdgkgwlq7n46zlx0"))))
(build-system gnu-build-system)
(inputs
`(("cairo" ,cairo)
("icu4c" ,icu4c)
("pkg-config" ,pkg-config)
("python" ,python)))
("python" ,python-wrapper)))
(synopsis "opentype text shaping engine")
(description
"HarfBuzz is an OpenType text shaping engine.")
@@ -211,7 +211,7 @@ in the GNOME project.")
(("SUBDIRS = theme-bits . tests") "SUBDIRS = theme-bits ."))
(apply configure args)))
%standard-phases)))
(synopsis "multi-platform toolkit for creating graphical user interfaces")
(synopsis "Cross-platform toolkit for creating graphical user interfaces")
(description
"GTK+, or the GIMP Toolkit, is a multi-platform toolkit for creating
graphical user interfaces. Offering a complete set of widgets, GTK+ is
+35 -1
View File
@@ -250,7 +250,7 @@ many readers as needed).")
(arguments
'(#:configure-flags (list (string-append "--with-guilesitedir="
(assoc-ref %outputs "out")
"/share/guile/site"))
"/share/guile/site/2.0"))
#:phases (alist-cons-after
'install 'post-install
(lambda* (#:key outputs #:allow-other-keys)
@@ -298,4 +298,38 @@ flexibility in specifying when jobs should be run. Mcron was written by Dale
Mellor.")
(license gpl3+)))
(define-public guile-lib
(package
(name "guile-lib")
(version "0.2.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://savannah/guile-lib/guile-lib-"
version ".tar.gz"))
(sha256
(base32
"1f9n2b5b5r75lzjinyk6zp6g20g60msa0jpfrk5hhg4j8cy0ih4b"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-cons-before
'configure 'patch-module-dir
(lambda _
(substitute* "src/Makefile.in"
(("^moddir[[:blank:]]*=[[:blank:]]*([[:graph:]]+)" _ rhs)
(string-append "moddir = " rhs "/2.0\n"))))
%standard-phases)))
(inputs `(("guile" ,guile-2.0)))
(home-page "http://www.nongnu.org/guile-lib/")
(synopsis "Collection of useful Guile Scheme modules")
(description
"guile-lib is intended as an accumulation place for pure-scheme Guile
modules, allowing for people to cooperate integrating their generic Guile
modules into a coherent library. Think \"a down-scaled, limited-scope CPAN
for Guile\".")
;; The whole is under GPLv3+, but some modules are under laxer
;; distribution terms such as LGPL and public domain. See `COPYING' for
;; details.
(license gpl3+)))
;;; guile.scm ends here
+2 -2
View File
@@ -37,14 +37,14 @@
(define-public imagemagick
(package
(name "imagemagick")
(version "6.8.6-0")
(version "6.8.6-9")
(source (origin
(method url-fetch)
(uri (string-append "mirror://imagemagick/ImageMagick-"
version ".tar.xz"))
(sha256
(base32
"1qmwpnq2mcxjnp0rjyb2g7v87lhmll19imx3iys6kplh8amrmqnv"))))
"1bpj8676mph5cvyjsdgf27i6yg2iw9iskk5c69mvpxkyawgjw1vg"))))
(build-system gnu-build-system)
(arguments
`(#:phases (alist-cons-before
+3 -2
View File
@@ -18,7 +18,8 @@
(define-module (gnu packages indent)
#:use-module (gnu packages)
#:use-module (guix licenses)
#:use-module ((guix licenses)
#:renamer (symbol-prefix-proc 'license:))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu))
@@ -40,5 +41,5 @@
from one style of writing C to another. Indent understands a substantial
amount about the syntax of C, but it also attempts to cope with incomplete
and misformed syntax. The GNU style of indenting is the default.")
(license gpl3+)
(license license:gpl3+)
(home-page "http://www.gnu.org/software/indent/")))
+1 -1
View File
@@ -44,7 +44,7 @@
;; Dependencies used for the tests and for `event_rpcgen.py'.
("which" ,which)
("python" ,python)))
("python" ,python-wrapper)))
(arguments
'(#:patches (list (assoc-ref %build-inputs "patch/dns-tests"))))
(home-page "http://libevent.org/")
+44
View File
@@ -0,0 +1,44 @@
;;; 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 lightning)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (guix licenses))
(define-public lightning
(package
(name "lightning")
(version "2.0.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/lightning/lightning-"
version ".tar.gz"))
(sha256
(base32
"0m0hc9aqw72wsg2sq2hx8zwhfvz814rfr7rz9qcyn3n4qv2kc5z4"))))
(build-system gnu-build-system)
(synopsis "Library for generating assembly code at runtime")
(description
"GNU lightning is a library that generates assembly language code at
run-time; it is very fast, making it ideal for Just-In-Time compilers, and it
abstracts over the target CPU, as it exposes to the clients a standardized
RISC instruction set inspired by the MIPS and SPARC chips.")
(home-page "http://www.gnu.org/software/lightning/")
(license gpl3+)))
+196 -80
View File
@@ -19,10 +19,14 @@
(define-module (gnu packages linux-initrd)
#:use-module (guix utils)
#:use-module (guix licenses)
#:use-module (guix build-system)
#:use-module ((guix derivations)
#:select (imported-modules compiled-modules %guile-for-build))
#:use-module (gnu packages)
#:use-module (gnu packages cpio)
#:use-module (gnu packages compression)
#:use-module (gnu packages linux)
#:use-module (gnu packages guile)
#:use-module ((gnu packages make-bootstrap)
#:select (%guile-static-stripped))
#:use-module (guix packages)
@@ -38,6 +42,49 @@
;;; Code:
(define-syntax-rule (raw-build-system (store system name inputs) body ...)
"Lift BODY to a package build system."
;; TODO: Generalize.
(build-system
(name "raw")
(description "Raw build system")
(build (lambda* (store name source inputs #:key system #:allow-other-keys)
(parameterize ((%guile-for-build (package-derivation store
guile-2.0)))
body ...)))))
(define (module-package modules)
"Return a package that contains all of MODULES, a list of Guile module
names."
(package
(name "guile-modules")
(version "0")
(source #f)
(build-system (raw-build-system (store system name inputs)
(imported-modules store modules
#:name name
#:system system)))
(synopsis "Set of Guile modules")
(description synopsis)
(license gpl3+)
(home-page "http://www.gnu.org/software/guix/")))
(define (compiled-module-package modules)
"Return a package that contains the .go files corresponding to MODULES, a
list of Guile module names."
(package
(name "guile-compiled-modules")
(version "0")
(source #f)
(build-system (raw-build-system (store system name inputs)
(compiled-modules store modules
#:name name
#:system system)))
(synopsis "Set of compiled Guile modules")
(description synopsis)
(license gpl3+)
(home-page "http://www.gnu.org/software/guix/")))
(define* (expression->initrd exp
#:key
(guile %guile-static-stripped)
@@ -45,12 +92,13 @@
(gzip gzip)
(name "guile-initrd")
(system (%current-system))
(modules '())
(linux #f)
(linux-modules '()))
"Return a package that contains a Linux initrd (a gzipped cpio archive)
containing GUILE and that evaluates EXP upon booting. LINUX-MODULES is a list
of `.ko' file names to be copied from LINUX into the initrd."
;; TODO: Add a `modules' parameter.
of `.ko' file names to be copied from LINUX into the initrd. MODULES is a
list of Guile module names to be embedded in the initrd."
;; General Linux overview in `Documentation/early-userspace/README' and
;; `Documentation/filesystems/ramfs-rootfs-initramfs.txt'.
@@ -67,12 +115,22 @@ of `.ko' file names to be copied from LINUX into the initrd."
(rnrs bytevectors)
((system foreign) #:select (sizeof)))
(let ((guile (assoc-ref %build-inputs "guile"))
(cpio (string-append (assoc-ref %build-inputs "cpio")
"/bin/cpio"))
(gzip (string-append (assoc-ref %build-inputs "gzip")
"/bin/gzip"))
(out (assoc-ref %outputs "out")))
(let ((guile (assoc-ref %build-inputs "guile"))
(cpio (string-append (assoc-ref %build-inputs "cpio")
"/bin/cpio"))
(gzip (string-append (assoc-ref %build-inputs "gzip")
"/bin/gzip"))
(modules (assoc-ref %build-inputs "modules"))
(gos (assoc-ref %build-inputs "modules/compiled"))
(scm-dir (string-append "share/guile/" (effective-version)))
(go-dir (format #f ".cache/guile/ccache/~a-~a-~a-~a"
(effective-version)
(if (eq? (native-endianness) (endianness little))
"LE"
"BE")
(sizeof '*)
(effective-version)))
(out (assoc-ref %outputs "out")))
(mkdir out)
(mkdir "contents")
(with-directory-excursion "contents"
@@ -84,19 +142,23 @@ of `.ko' file names to be copied from LINUX into the initrd."
(chmod "init" #o555)
(chmod "bin/guile" #o555)
;; Compile `init'.
(let ((go-dir (format #f ".cache/guile/ccache/~a-~a-~a-~a"
(effective-version)
(if (eq? (native-endianness) (endianness little))
"LE"
"BE")
(sizeof '*)
(effective-version))))
(mkdir-p go-dir)
(compile-file "init"
#:opts %auto-compilation-options
#:output-file (string-append go-dir "/init.go")))
;; Copy Guile modules.
(chmod scm-dir #o777)
(copy-recursively modules scm-dir
#:follow-symlinks? #t)
(copy-recursively gos (string-append "lib/guile/"
(effective-version) "/ccache")
#:follow-symlinks? #t)
;; Compile `init'.
(mkdir-p go-dir)
(set! %load-path (cons modules %load-path))
(set! %load-compiled-path (cons gos %load-compiled-path))
(compile-file "init"
#:opts %auto-compilation-options
#:output-file (string-append go-dir "/init.go"))
;; Copy Linux modules.
(let* ((linux (assoc-ref %build-inputs "linux"))
(module-dir (and linux
(string-append linux "/lib/modules"))))
@@ -161,6 +223,8 @@ of `.ko' file names to be copied from LINUX into the initrd."
(inputs `(("guile" ,guile)
("cpio" ,cpio)
("gzip" ,gzip)
("modules" ,(module-package modules))
("modules/compiled" ,(compiled-module-package modules))
,@(if linux
`(("linux" ,linux))
'())))
@@ -174,26 +238,18 @@ the Linux kernel.")
(define-public qemu-initrd
(expression->initrd
'(begin
(use-modules (rnrs io ports)
(srfi srfi-1)
(use-modules (srfi srfi-1)
(srfi srfi-26)
(ice-9 match)
((system foreign) #:select (string->pointer))
((system base compile) #:select (compile-file)))
((system base compile) #:select (compile-file))
(guix build utils)
(guix build linux-initrd))
(display "Welcome, this is GNU/Guile!\n")
(display "Welcome, this is GNU's early boot Guile.\n")
(display "Use '--repl' for an initrd REPL.\n\n")
(mkdir "/proc")
(mount "none" "/proc" "proc")
(mkdir "/sys")
(mount "none" "/sys" "sysfs")
(let* ((command (string-trim-both
(call-with-input-file "/proc/cmdline"
get-string-all)))
(args (string-split command char-set:blank))
(mount-essential-file-systems)
(let* ((args (linux-command-line))
(option (lambda (opt)
(let ((opt (string-append opt "=")))
(and=> (find (cut string-prefix? opt <>)
@@ -206,34 +262,16 @@ the Linux kernel.")
(when (member "--repl" args)
((@ (system repl repl) start-repl)))
(let ((slurp (lambda (module)
(call-with-input-file
(string-append "/modules/" module)
get-bytevector-all))))
(display "loading CIFS and companion modules...\n")
(for-each (compose load-linux-module slurp)
(list "md4.ko" "ecb.ko" "cifs.ko")))
(display "loading CIFS and companion modules...\n")
(for-each (compose load-linux-module*
(cut string-append "/modules/" <>))
(list "md4.ko" "ecb.ko" "cifs.ko"))
;; See net/slirp.c for default QEMU networking values.
(display "configuring network...\n")
(let* ((sock (socket AF_INET SOCK_STREAM 0))
(address (make-socket-address AF_INET
(inet-pton AF_INET
"10.0.2.10")
0))
(flags (network-interface-flags sock "eth0")))
(set-network-interface-address sock "eth0" address)
(set-network-interface-flags sock "eth0"
(logior flags IFF_UP))
(if (logand (network-interface-flags sock "eth0") IFF_UP)
(display "network interface is up\n")
(display "network interface is DOWN\n"))
(unless (configure-qemu-networking)
(display "network interface is DOWN\n"))
(mkdir "/etc")
(call-with-output-file "/etc/resolv.conf"
(lambda (p)
(display "nameserver 10.0.2.3\n" p)))
(sleep 1))
;; Make /dev nodes.
(make-essential-device-nodes)
;; Prepare the real root file system under /root.
(unless (file-exists? "/root")
@@ -241,27 +279,31 @@ the Linux kernel.")
(if root
(mount root "/root" "ext3")
(mount "none" "/root" "tmpfs"))
(mkdir "/root/proc")
(mount "none" "/root/proc" "proc")
(mkdir "/root/sys")
(mount "none" "/root/sys" "sysfs")
(mkdir "/root/xchg")
(mkdir "/root/nix")
(mkdir "/root/nix/store")
(mount-essential-file-systems #:root "/root")
(mkdir "/root/dev")
(let ((makedev (lambda (major minor)
(+ (* major 256) minor))))
(mknod "/root/dev/null" 'char-special #o666 (makedev 1 3))
(mknod "/root/dev/zero" 'char-special #o666 (makedev 1 5)))
(mkdir "/root/xchg")
(mkdir-p "/root/nix/store")
(unless (file-exists? "/root/dev")
(mkdir "/root/dev")
(make-essential-device-nodes #:root "/root"))
;; Mount the host's store and exchange directory.
(display "mounting QEMU's SMB shares...\n")
(let ((server "10.0.2.4"))
(mount (string-append "//" server "/store") "/root/nix/store" "cifs" 0
(string->pointer "guest,sec=none"))
(mount (string-append "//" server "/xchg") "/root/xchg" "cifs" 0
(string->pointer "guest,sec=none")))
(mount-qemu-smb-share "/store" "/root/nix/store")
(mount-qemu-smb-share "/xchg" "/root/xchg")
;; Copy the directories that contain .scm and .go files so that the
;; child process in the chroot can load modules (we would bind-mount
;; them but for some reason that fails with EINVAL -- XXX).
(mkdir "/root/share")
(mkdir "/root/lib")
(mount "none" "/root/share" "tmpfs")
(mount "none" "/root/lib" "tmpfs")
(copy-recursively "/share" "/root/share"
#:log (%make-void-port "w"))
(copy-recursively "/lib" "/root/lib"
#:log (%make-void-port "w"))
(if to-load
(begin
@@ -272,7 +314,10 @@ the Linux kernel.")
(match (primitive-fork)
(0
(chroot "/root")
(load-compiled "/loader.go"))
(load-compiled "/loader.go")
;; TODO: Remove /lib, /share, and /loader.go.
)
(pid
(format #t "boot file loaded under PID ~a~%" pid)
(let ((status (waitpid pid)))
@@ -282,7 +327,78 @@ the Linux kernel.")
(display "entering a warm and cozy REPL\n")
((@ (system repl repl) start-repl))))))
#:name "qemu-initrd"
#:modules '((guix build utils)
(guix build linux-initrd))
#:linux linux-libre
#:linux-modules '("cifs.ko" "md4.ko" "ecb.ko")))
(define-public gnu-system-initrd
;; Initrd for the GNU system itself, with nothing QEMU-specific.
(expression->initrd
'(begin
(use-modules (srfi srfi-1)
(srfi srfi-26)
(ice-9 match)
(guix build utils)
(guix build linux-initrd))
(display "Welcome, this is GNU's early boot Guile.\n")
(display "Use '--repl' for an initrd REPL.\n\n")
(mount-essential-file-systems)
(let* ((args (linux-command-line))
(option (lambda (opt)
(let ((opt (string-append opt "=")))
(and=> (find (cut string-prefix? opt <>)
args)
(lambda (arg)
(substring arg (+ 1 (string-index arg #\=))))))))
(to-load (option "--load"))
(root (option "--root")))
(when (member "--repl" args)
((@ (system repl repl) start-repl)))
;; Make /dev nodes.
(make-essential-device-nodes)
;; Prepare the real root file system under /root.
(mkdir-p "/root")
(if root
;; Assume ROOT has a usable /dev tree.
(mount root "/root" "ext3")
(begin
(mount "none" "/root" "tmpfs")
(make-essential-device-nodes #:root "/root")))
(mount-essential-file-systems #:root "/root")
(mkdir-p "/root/tmp")
(mount "none" "/root/tmp" "tmpfs")
;; XXX: We don't copy our fellow Guile modules to /root (see
;; 'qemu-initrd'), so if TO-LOAD tries to load a module (which can
;; happen if it throws, to display the exception!), then we're
;; screwed. Hopefully TO-LOAD is a simple expression that just does
;; '(execlp ...)'.
(if to-load
(begin
(format #t "loading '~a'...\n" to-load)
(chroot "/root")
(primitive-load to-load)
(format (current-error-port)
"boot program '~a' terminated, rebooting~%"
to-load)
(sleep 2)
(reboot))
(begin
(display "no init file passed via '--exec'\n")
(display "entering a warm and cozy REPL\n")
((@ (system repl repl) start-repl))))))
#:name "qemu-system-initrd"
#:modules '((guix build linux-initrd)
(guix build utils))
#:linux linux-libre))
;;; linux-initrd.scm ends here
+111 -21
View File
@@ -29,6 +29,9 @@
#:use-module (gnu packages bdb)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages algebra)
#:use-module ((gnu packages gettext)
#:renamer (symbol-prefix-proc 'g:))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu))
@@ -119,24 +122,16 @@
(base32
"0jxnz9ahfic79rp93l5wxcbgh4pkv85mwnjlbv1gz3jawv5cvwp1"))))
(build-system gnu-build-system)
(inputs
;; The upstream tarball lacks man pages, and building them would require
;; DocBook & co. Thus, use Gentoo's pre-built man pages.
`(("man-pages"
,(origin
(method url-fetch)
(uri (string-append
"http://distfiles.gentoo.org/distfiles/module-init-tools-" version
"-man.tar.bz2"))
(sha256
(base32
"1j1nzi87kgsh4scl645fhwhjvljxj83cmdasa4n4p5krhasgw358"))))))
(arguments
;; FIXME: The upstream tarball lacks man pages, and building them would
;; require DocBook & co. We used to use Gentoo's pre-built man pages,
;; but they vanished. In the meantime, fake it.
'(#:phases (alist-cons-before
'unpack 'unpack-man-pages
(lambda* (#:key inputs #:allow-other-keys)
(let ((man-pages (assoc-ref inputs "man-pages")))
(zero? (system* "tar" "xvf" man-pages))))
'configure 'fake-docbook
(lambda _
(substitute* "Makefile.in"
(("^DOCBOOKTOMAN.*$")
"DOCBOOKTOMAN = true\n")))
%standard-phases)))
(home-page "http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/")
(synopsis "Tools for loading and managing Linux kernel modules")
@@ -146,7 +141,7 @@
(license gpl2+)))
(define-public linux-libre
(let* ((version* "3.3.8")
(let* ((version* "3.11")
(build-phase
'(lambda* (#:key system #:allow-other-keys #:rest args)
(let ((arch (car (string-split system #\-))))
@@ -192,9 +187,10 @@
(uri (linux-libre-urls version))
(sha256
(base32
"0jkfh0z1s6izvdnc3njm39dhzp1cg8i06jv06izwqz9w9qsprvnl"))))
"1vlk04xkvyy1kc9zz556md173rn1qzlnvhz7c9sljv4bpk3mdspl"))))
(build-system gnu-build-system)
(native-inputs `(("perl" ,perl)
("bc" ,bc)
("module-init-tools" ,module-init-tools)))
(arguments
`(#:modules ((guix build gnu-build-system)
@@ -212,6 +208,11 @@
(license gpl2)
(home-page "http://www.gnu.org/software/linux-libre/"))))
;;;
;;; Pluggable authentication modules (PAM).
;;;
(define-public linux-pam
(package
(name "linux-pam")
@@ -235,9 +236,15 @@
;; ("cracklib" ,cracklib)
))
(arguments
;; XXX: Tests won't run in chroot, presumably because /etc/pam.d
;; isn't available.
'(#:tests? #f))
'(;; Most users, such as `shadow', expect the headers to be under
;; `security'.
#:configure-flags (list (string-append "--includedir="
(assoc-ref %outputs "out")
"/include/security"))
;; XXX: Tests won't run in chroot, presumably because /etc/pam.d
;; isn't available.
#:tests? #f))
(home-page "http://www.linux-pam.org/")
(synopsis "Pluggable authentication modules for Linux")
(description
@@ -247,6 +254,11 @@ be used through the PAM API to perform tasks, like authenticating a user
at login. Local and dynamic reconfiguration are its key features")
(license bsd-3)))
;;;
;;; Miscellaneous.
;;;
(define-public psmisc
(package
(name "psmisc")
@@ -548,3 +560,81 @@ controls IPv4 and IPv6 configuration and tc stands for traffic control. Both
tools print detailed usage messages and are accompanied by a set of
manpages.")
(license gpl2+)))
(define-public net-tools
;; XXX: This package is basically unmaintained, but it provides a few
;; commands not yet provided by Inetutils, such as 'route', so we have to
;; live with it.
(package
(name "net-tools")
(version "1.60")
(home-page "http://www.tazenda.demon.co.uk/phil/net-tools/")
(source (origin
(method url-fetch)
(uri (string-append home-page "/" name "-"
version ".tar.bz2"))
(sha256
(base32
"0yvxrzk0mzmspr7sa34hm1anw6sif39gyn85w4c5ywfn8inxvr3s"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-replace
'patch
(lambda* (#:key inputs #:allow-other-keys)
(define (apply-patch file)
(zero? (system* "patch" "-p1" "--batch"
"--input" file)))
(let ((patch.gz (assoc-ref inputs "patch")))
(format #t "applying Debian patch set '~a'...~%"
patch.gz)
(system (string-append "gunzip < " patch.gz " > the-patch"))
(pk 'here)
(and (apply-patch "the-patch")
(for-each apply-patch
(find-files "debian/patches"
"\\.patch")))))
(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 "/sbin"))
;; Pretend we have everything...
(system "yes | make config")
;; ... except we don't have libdnet, so remove that
;; definition.
(substitute* '("config.make" "config.h")
(("^.*HAVE_AFDECnet.*$") ""))))
%standard-phases))
;; Binaries that depend on libnet-tools.a don't declare that
;; dependency, making it parallel-unsafe.
#:parallel-build? #f
#:tests? #f ; no test suite
#:make-flags (list "CC=gcc"
(string-append "BASEDIR="
(assoc-ref %outputs "out")))))
;; Use the big Debian patch set (the thing does not even compile out of
;; the box.)
(inputs `(("patch" ,(origin
(method url-fetch)
(uri
"http://ftp.de.debian.org/debian/pool/main/n/net-tools/net-tools_1.60-24.2.diff.gz")
(sha256
(base32
"0p93lsqx23v5fv4hpbrydmfvw1ha2rgqpn2zqbs2jhxkzhjc030p"))))))
(native-inputs `(("gettext" ,g:gettext)))
(synopsis "Tools for controlling the network subsystem in Linux")
(description
"This package includes the important tools for controlling the network
subsystem of the Linux kernel. This includes arp, hostname, ifconfig,
netstat, rarp and route. Additionally, this package contains utilities
relating to particular network hardware types (plipconfig, slattach) and
advanced aspects of IP configuration (iptunnel, ipmaddr).")
(license gpl2+)))
+6 -10
View File
@@ -26,14 +26,14 @@
(define-public m4
(package
(name "m4")
(version "1.4.16")
(version "1.4.17")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/m4/m4-"
version ".tar.bz2"))
(sha256
(base32
"035r7ma272j2cwni2961jp22k6bn3n9xwn3b3qbcn2yrvlghql22"))))
"0w0da1chh12mczxa5lnwzjk9czi3dq6gnnndbpa6w4rj76b1yklf"))))
(build-system gnu-build-system)
(arguments
;; XXX: Disable tests on those platforms with know issues.
@@ -41,10 +41,8 @@
'("x86_64-darwin"
"i686-cygwin"
"i686-sunos")))
#:patches (list (assoc-ref %build-inputs "patch/s_isdir")
(assoc-ref %build-inputs
"patch/readlink-EINVAL")
(assoc-ref %build-inputs "patch/gets"))
#:patches (list (assoc-ref %build-inputs
"patch/readlink-EINVAL"))
#:phases (alist-cons-before
'check 'pre-check
(lambda* (#:key inputs #:allow-other-keys)
@@ -57,10 +55,8 @@
(("/bin/sh")
(format #f "~a/bin/bash" bash)))))
%standard-phases)))
(inputs `(("patch/s_isdir" ,(search-patch "m4-s_isdir.patch"))
("patch/readlink-EINVAL"
,(search-patch "m4-readlink-EINVAL.patch"))
("patch/gets" ,(search-patch "m4-gets-undeclared.patch"))))
(inputs `(("patch/readlink-EINVAL"
,(search-patch "m4-readlink-EINVAL.patch"))))
(synopsis "Macro processor")
(description
"GNU M4 is an implementation of the traditional Unix macro processor. It
@@ -16,20 +16,24 @@
;;; 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 mailutils)
(define-module (gnu packages mail)
#:use-module (gnu packages)
#:use-module (gnu packages linux)
#:use-module (gnu packages gnutls)
#:use-module (gnu packages gdbm)
#:use-module (gnu packages guile)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages readline)
#:use-module (gnu packages dejagnu)
#:use-module (gnu packages m4)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages mysql)
#:use-module (gnu packages autotools)
#:use-module (guix licenses)
#:use-module (gnu packages cyrus-sasl)
#:use-module (gnu packages dejagnu)
#:use-module (gnu packages gdbm)
#:use-module (gnu packages gnutls)
#:use-module (gnu packages guile)
#:use-module (gnu packages linux)
#:use-module (gnu packages m4)
#:use-module (gnu packages mysql)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages openssl)
#:use-module (gnu packages perl)
#:use-module (gnu packages readline)
#:use-module (gnu packages texinfo)
#:use-module ((guix licenses)
#:select (gpl2+ gpl3+ lgpl3+))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu))
@@ -104,3 +108,69 @@ message handling system.")
(license
;; Libraries are under LGPLv3+, and programs under GPLv3+.
(list gpl3+ lgpl3+))))
(define-public fetchmail
(package
(name "fetchmail")
(version "6.3.26")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/fetchmail/branch_6.3/fetchmail-"
version ".tar.xz"))
(sha256
(base32
"0l78ayvi9dm8hd190gl139cs2xqsrf7r9ncilslw20mgvd6cbd3r"))))
(build-system gnu-build-system)
(inputs
`(("openssl" ,openssl)))
(arguments
`(#:configure-flags (list (string-append "--with-ssl="
(assoc-ref %build-inputs "openssl")))))
(home-page "http://fetchmail.berlios.de/")
(synopsis "Remote-mailr etrieval and forwarding utility")
(description
"Fetchmail is a full-featured, robust, well-documented remote-mail
retrieval and forwarding utility intended to be used over on-demand
TCP/IP links (such as SLIP or PPP connections). It supports every
remote-mail protocol now in use on the Internet: POP2, POP3, RPOP, APOP,
KPOP, all flavors of IMAP, ETRN, and ODMR. It can even support IPv6
and IPSEC.
Fetchmail retrieves mail from remote mail servers and forwards it via SMTP,
so it can then be read by normal mail user agents such as mutt, elm
or BSD Mail. It allows all your system MTA's filtering, forwarding, and
aliasing facilities to work just as they would on normal mail.")
(license gpl2+))) ; most files are actually public domain or x11
(define-public mutt
(package
(name "mutt")
(version "1.5.21")
(source (origin
(method url-fetch)
(uri (string-append "ftp://ftp.mutt.org/mutt/devel/mutt-"
version ".tar.gz"))
(sha256
(base32
"1864cwz240gh0zy56fb47qqzwyf6ghg01037rb4p2kqgimpg6h91"))))
(build-system gnu-build-system)
(inputs
`(("cyrus-sasl" ,cyrus-sasl)
("ncurses" ,ncurses)
("openssl" ,openssl)
("perl" ,perl)))
(arguments
`(#:configure-flags '("--enable-smtp"
"--enable-imap"
"--enable-pop"
"--with-ssl"
"--with-sasl"
;; so that mutt does not check whether the path
;; exists, which it does not in the chroot
"--with-mailpath=/var/mail")))
(home-page "http://www.mutt.org/")
(synopsis "Mail client")
(description
"Mutt is a small but very powerful text-based mail client for Unix
operating systems.")
(license gpl2+)))
+29 -9
View File
@@ -44,7 +44,7 @@
;;; Commentary:
;;;
;;; This modules provides tools to build tarballs of the "bootstrap binaries"
;;; This module provides tools to build tarballs of the "bootstrap binaries"
;;; used in (gnu packages bootstrap). These statically-linked binaries are
;;; taken for granted and used as the root of the whole bootstrap procedure.
;;;
@@ -127,7 +127,10 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
;; cross-compiling).
(inputs (match (assoc "perl" (package-inputs coreutils))
(#f '())
(x (list x))))))
(x (list x))))
;; Remove the `debug' output.
(outputs '("out"))))
(bzip2 (package (inherit bzip2)
(arguments
(substitute-keyword-arguments (package-arguments bzip2)
@@ -451,6 +454,7 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
;; than in hard-coded configure-time paths.
(let* ((guile (package (inherit guile-2.0)
(name (string-append (package-name guile-2.0) "-static"))
(synopsis "Statically-linked and relocatable Guile")
(inputs
`(("patch/relocatable"
,(search-patch "guile-relocatable.patch"))
@@ -511,8 +515,10 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
(let ()
(use-modules (guix build utils))
(let ((in (assoc-ref %build-inputs "guile"))
(out (assoc-ref %outputs "out")))
(let* ((in (assoc-ref %build-inputs "guile"))
(out (assoc-ref %outputs "out"))
(guile1 (string-append in "/bin/guile"))
(guile2 (string-append out "/bin/guile")))
(mkdir-p (string-append out "/share/guile/2.0"))
(copy-recursively (string-append in "/share/guile/2.0")
(string-append out "/share/guile/2.0"))
@@ -522,12 +528,26 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
(string-append out "/lib/guile/2.0/ccache"))
(mkdir (string-append out "/bin"))
(copy-file (string-append in "/bin/guile")
(string-append out "/bin/guile"))
(remove-store-references (string-append out "/bin/guile"))
#t))))
(copy-file guile1 guile2)
;; Does the relocated Guile work?
(and ,(if (%current-target-system)
#t
'(zero? (system* guile2 "--version")))
(begin
;; Strip store references.
(remove-store-references guile2)
;; Does the stripped Guile work? If it aborts, it could be
;; that it tries to open iconv descriptors and fails because
;; libc's iconv data isn't available (see
;; `guile-default-utf8.patch'.)
,(if (%current-target-system)
#t
'(zero? (system* guile2 "--version")))))))))
(inputs `(("guile" ,%guile-static)))
(outputs '("out"))))
(outputs '("out"))
(synopsis "Minimal statically-linked and relocatable Guile")))
(define (tarball-package pkg)
"Return a package containing a tarball of PKG."
+146
View File
@@ -0,0 +1,146 @@
;;; GNU Guix --- Functional package management for GNU
;;; 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/>.
(define-module (gnu packages maths)
#:use-module (gnu packages)
#:use-module ((guix licenses)
#:renamer (symbol-prefix-proc 'license:))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages compression)
#:use-module ((gnu packages gettext)
#:renamer (symbol-prefix-proc 'gnu:))
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages readline)
#:use-module (gnu packages xml))
(define-public units
(package
(name "units")
(version "2.01")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/units/units-" version
".tar.gz"))
(sha256 (base32
"1wl8kaxgk4l5jgc1f71mx1rwa6ib84krjmzyzn2f987z1g3i52qk"))))
(build-system gnu-build-system)
(synopsis "Conversion between thousands of scales")
(description
"GNU Units converts quantities expressed in various systems of
measurement to their equivalents in other systems of measurement. Like
many similar programs, it can handle multiplicative scale changes. It can
also handle nonlinear conversions such as Fahrenheit to Celsius or wire
gauge, and it can convert from and to sums of units, such as converting
between meters and feet plus inches.
Beyond simple unit conversions, GNU Units can be used as a general-purpose
scientific calculator that keeps track of units in its calculations. You
can form arbitrary complex mathematical expressions of dimensions including
sums, products, quotients, powers, and even roots of dimensions. Thus you
can ensure accuracy and dimensional consistency when working with long
expressions that involve many different units that may combine in complex
ways.
The units are defined in an external data file. You can use the extensive
data file that comes with this program, or you can provide your own data
file to suit your needs. You can also use your own data file to supplement
the standard data file.")
(license license:gpl3+)
(home-page "http://www.gnu.org/software/units/")))
(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)
(arguments
`(#:phases
(alist-replace
'configure
(lambda* (#:key target system outputs #:allow-other-keys #:rest args)
(let ((configure (assoc-ref %standard-phases 'configure)))
;; disable numerically unstable test on i686, see thread at
;; http://lists.gnu.org/archive/html/bug-gsl/2011-11/msg00019.html
(if (string=? (or target system) "i686-linux")
(substitute* "ode-initval2/Makefile.in"
(("TESTS = \\$\\(check_PROGRAMS\\)") "TESTS =")))
(apply configure args)))
%standard-phases)))
(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 license:gpl3+)))
(define-public pspp
(package
(name "pspp")
(version "0.8.1")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/pspp/pspp-"
version ".tar.gz"))
(sha256
(base32
"0qhxsdbwxd3cn1shc13wxvx2lg32lp4z6sz24kv3jz7p5xfi8j7x"))))
(build-system gnu-build-system)
(inputs
`(("gettext" ,gnu:gettext)
("gsl" ,gsl)
("libxml2" ,libxml2)
("readline" ,readline)
("zlib" ,zlib)))
(native-inputs
`(("perl" ,perl)
("pkg-config" ,pkg-config)))
(arguments
`(#:configure-flags
`("--without-cairo" ; FIXME: tests currently fail for lack of font
"--without-gui"))) ; FIXME: package missing dependencies
(home-page "http://www.gnu.org/software/pspp/")
(synopsis "Statistical analysis")
(description
"PSPP is a program for statistical analysis of sampled data. It is a
free replacement for the proprietary program SPSS, and appears very similar
to it.
PSPP can perform descriptive statistics, T-tests, anova, linear and logistic
regression, cluster analysis, factor analysis, non-parametric tests and
more. Its backend is designed to perform its analyses as fast as possible,
regardless of the size of the input data. You can use PSPP with its
graphical interface or the more traditional syntax commands.")
(license license:gpl3+)))
+60
View File
@@ -19,8 +19,13 @@
(define-module (gnu packages mp3)
#:use-module ((guix licenses)
#:renamer (symbol-prefix-proc 'license:))
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages cdrom)
#:use-module (gnu packages compression)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages glib)
#:use-module (gnu packages gtk)
#:use-module (gnu packages oggvorbis)
#:use-module (gnu packages pcre)
#:use-module (gnu packages pkg-config)
@@ -205,3 +210,58 @@ This package contains the binary.")
frontends, as an mp3 player and as an mp3 to wave file decoder (primarily for
use with CD-recording software).")
(license license:gpl2)))
(define-public lame
(package
(name "lame")
(version "3.99.5")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/lame/lame/3.99/lame-"
version ".tar.gz"))
(sha256
(base32
"1zr3kadv35ii6liia0bpfgxpag27xcivp571ybckpbz4b10nnd14"))))
(build-system gnu-build-system)
(home-page "http://lame.sourceforge.net/")
(synopsis "MPEG Audio Layer III (MP3) encoder")
(description "LAME is a high quality MPEG Audio Layer III (MP3) encoder.")
(license license:lgpl2.0)))
(define-public ripperx
(package
(name "ripperx")
(version "2.7.3")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/ripperx/ripperx/"
version "/ripperX-"
version ".tar.gz"))
(sha256
(base32
"130rsb2ly0l6hz728m9qr605ir4073xfl2acvf83id63kxfzjn3x"))))
(build-system gnu-build-system)
(propagated-inputs
`(("gs-fonts" ,gs-fonts)
("cdparanoia" ,cdparanoia)
("flac" ,flac)
("lame" ,lame)
("vorbis-tools" ,vorbis-tools)))
(inputs
`(("patch/libm" ,(search-patch "ripperx-libm.patch"))
("glib" ,glib)
("gtk+" ,gtk+)
("id3lib" ,id3lib)
("pkg-config" ,pkg-config)))
(arguments
`(#:patches
;; see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=713684
(list (assoc-ref %build-inputs "patch/libm"))))
(synopsis "GTK program to rip and encode CD audio tracks")
(description
"RipperX is a GTK program to rip CD audio tracks and encode them to the
Ogg, MP3, or FLAC formats. It's goal is to be easy to use, requiring only
a few mouse clicks to convert an entire album. It supports CDDB lookups
for album and track information.")
(license license:gpl2)
(home-page "http://sourceforge.net/projects/ripperx/")))
+1 -1
View File
@@ -57,7 +57,7 @@
("libxml2" ,libxml2)
("perl" ,perl)
("pkg-config" ,pkg-config)
("python" ,python)
("python" ,python-wrapper)
("zlib" ,zlib)))
(arguments
`(#:phases
+53
View File
@@ -0,0 +1,53 @@
;;; 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 ocrad)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module ((gnu packages compression)
#:select (lzip)))
(define-public ocrad
(package
(name "ocrad")
(version "0.22")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/ocrad/ocrad-"
version ".tar.lz"))
(sha256
(base32
"1zcqa4ydcmmhzyg730wywnmkjv2x2av3r875vwz69k69yjydrjfn"))))
(build-system gnu-build-system)
(native-inputs `(("lzip" ,lzip)))
(home-page "http://www.gnu.org/software/ocrad/")
(synopsis "Optical character recognition based on feature extraction")
(description
"GNU Ocrad is an OCR (Optical Character Recognition) program based on a
feature extraction method. It reads images in pbm (bitmap), pgm
(greyscale) or ppm (color) formats and produces text in byte (8-bit)
or UTF-8 formats.
Also includes a layout analyser able to separate the columns or blocks of text
normally found on printed pages.
Ocrad can be used as a stand-alone console application, or as a backend to
other programs.")
(license gpl3+)))
+1 -1
View File
@@ -191,7 +191,7 @@ meaning that audio is compressed in FLAC without any loss in quality.")
("libogg" ,libogg)
("libpng" ,libpng)
("pkg-config" ,pkg-config)
("python" ,python)
("python" ,python-wrapper)
("zlib" ,zlib)))
(synopsis "kate, a karaoke and text codec for embedding in ogg")
(description
+119
View File
@@ -0,0 +1,119 @@
;;; 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 package-management)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module ((guix licenses) #:select (gpl3+))
#:use-module (gnu packages guile)
#:use-module ((gnu packages compression) #:select (bzip2 gzip))
#:use-module (gnu packages gnupg)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages pkg-config))
(define-public guix
(package
(name "guix")
(version "0.3")
(source (origin
(method url-fetch)
(uri (string-append "ftp://alpha.gnu.org/gnu/guix/guix-"
version ".tar.gz"))
(sha256
(base32
"0xpfdmlfkkpmgrb8lpaqs5wxx31m4jslajs6b9waz5wp91zk7fix"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags (list
"--localstatedir=/var"
(string-append "--with-libgcrypt-prefix="
(assoc-ref %build-inputs
"libgcrypt")))
#:phases (alist-cons-before
'configure 'copy-bootstrap-guile
(lambda* (#:key system inputs #:allow-other-keys)
(define (copy arch)
(let ((guile (assoc-ref inputs
(string-append "boot-guile/"
arch)))
(target (string-append "gnu/packages/bootstrap/"
arch "-linux/"
"/guile-2.0.7.tar.xz")))
(copy-file guile target)))
(copy "i686")
(copy "x86_64")
#t)
%standard-phases)))
(inputs
(let ((boot-guile (lambda (arch hash)
(origin
(method url-fetch)
(uri (string-append
"http://alpha.gnu.org/gnu/guix/bootstrap/"
arch "-linux"
"/20130105/guile-2.0.7.tar.xz"))
(sha256 hash)))))
`(("bzip2" ,bzip2)
("gzip" ,gzip)
("sqlite" ,sqlite)
("libgcrypt" ,libgcrypt)
("guile" ,guile-2.0)
("pkg-config" ,pkg-config)
("boot-guile/i686"
,(boot-guile "i686"
(base32
"0z11rlyclnh9palrsk0xhgm84rmvzza0gkwvlsiazsjnqpscd9zr")))
("boot-guile/x86_64"
,(boot-guile "x86_64"
(base32
"0b5a2ngd9a7z2wnm01wc27rlwb61x854ndadxwmj8v8lrl6j2hxw"))))))
(home-page "http://www.gnu.org/software/guix")
(synopsis "Managing installed software packages and versions")
(description
"GNU Guix is a purely functional package manager for the GNU system,
and a distribution thereof.
In addition to standard package management features, Guix supports
transactional upgrades and roll-backs, unprivileged package management,
per-user profiles, and garbage collection.
It provides Guile Scheme APIs, including high-level embedded domain-specific
languages (EDSLs), to describe how packages are built and composed.
A user-land free software distribution for GNU/Linux comes as part of Guix.
Guix is based on the Nix package manager.")
(license gpl3+)))
(define-public guix-0.4
;; XXX: Hack to allow the use of a 0.4ish tarball. This assumes that you
;; have run 'make dist' in your build tree. Remove when 0.4 is out.
(let* ((builddir (dirname
(canonicalize-path
(dirname (search-path %load-path
"guix/config.scm")))))
(tarball (string-append builddir "/guix-0.4.tar.gz")))
(package (inherit guix)
(version "0.4rc")
(source (if (file-exists? tarball)
tarball
(package-source guix))))))
@@ -0,0 +1,12 @@
Don't "mkdir $(localstatedir)" since we can't do it (/var).
--- avahi-0.6.27/avahi-daemon/Makefile.in 2010-07-13 05:06:35.000000000 +0200
+++ avahi-0.6.27/avahi-daemon/Makefile.in 2010-07-13 18:03:45.000000000 +0200
@@ -1554,7 +1554,6 @@ xmllint:
done
install-data-local:
- test -z "$(localstatedir)/run" || $(mkdir_p) "$(DESTDIR)$(localstatedir)/run"
update-systemd:
curl http://cgit.freedesktop.org/systemd/plain/src/sd-daemon.c > sd-daemon.c
+10 -9
View File
@@ -1,17 +1,18 @@
Patch shebangs in source that gets unpacked by `configure'.
--- bigloo3.9a/gc/install-gc-7.2d 2013-01-14 15:24:01.000000000 +0100
+++ bigloo3.9a/gc/install-gc-7.2d 2013-01-14 15:23:51.000000000 +0100
@@ -29,9 +29,11 @@ fi
--- bigloo4.0b/gc/install-gc-7.3alpha3-20130330 2013-08-19 10:45:20.000000000 +0200
+++ bigloo4.0b/gc/install-gc-7.3alpha3-20130330 2013-08-19 10:46:36.000000000 +0200
@@ -29,10 +29,12 @@ fi
# untar the two versions of the GC
$tar xfz $src -C ../gc || (echo "$tar xfz $src failed"; exit 1)
/bin/rm -rf "../gc/$gc"_fth
+find ../gc/gc-7.2 -perm /111 -type f | xargs sed -i -e"s|/bin/sh|`type -P bash`|g"
mv ../gc/gc-7.2 "../gc/$gc"_fth || (echo "mv gc-7.2 failed"; exit 1)
-/bin/rm -rf "../gc/$gc"_fth
+rm -rf "../gc/$gc"_fth
+find ../gc/$gc -perm /111 -type f | xargs sed -i -e"s|/bin/sh|`type -P sh`|g"
mv ../gc/$gc "../gc/$gc"_fth || (echo "mv $gc failed"; exit 1)
$tar xfz $src -C ../gc || (echo "$tar xfz $src failed"; exit 1)
+find ../gc/gc-7.2 -perm /111 -type f | xargs sed -i -e"s|/bin/sh|`type -P bash`|g"
mv ../gc/gc-7.2 "../gc/$gc"
+find ../gc/$gc -perm /111 -type f | xargs sed -i -e"s|/bin/sh|`type -P sh`|g"
# general Bigloo patch
(cd "../gc/$gc"_fth && $patch -p1 < ../$gc.patch > /dev/null)
@@ -0,0 +1,60 @@
diff -r -u cdparanoia-III-10.2.old/interface/Makefile.in cdparanoia-III-10.2.new/interface/Makefile.in
--- cdparanoia-III-10.2.old/interface/Makefile.in 2008-08-21 18:08:54.000000000 +0200
+++ cdparanoia-III-10.2.new/interface/Makefile.in 2013-08-07 18:48:32.000000000 +0200
@@ -7,7 +7,7 @@
srcdir=@srcdir@
@SET_MAKE@
-FLAGS=@SBPCD_H@ @UCDROM_H@ @TYPESIZES@ @CFLAGS@
+FLAGS=@SBPCD_H@ @UCDROM_H@ @TYPESIZES@ @CFLAGS@ -fPIC
OPT=@OPT@ $(FLAGS)
DEBUG=@DEBUG@ -DCDDA_TEST
CC=@CC@
@@ -33,7 +33,7 @@
slib:
$(MAKE) lessmessy
- $(MAKE) libcdda_interface.so CFLAGS="$(OPT) -fpic"
+ $(MAKE) libcdda_interface.so CFLAGS="$(OPT)"
[ -e libcdda_interface.so.0 ] || ln -s libcdda_interface.so libcdda_interface.so.0
test:
@@ -46,7 +46,7 @@
$(RANLIB) libcdda_interface.a
libcdda_interface.so: $(OFILES)
- $(CC) -fpic -shared -o libcdda_interface.so.0.$(VERSION) -Wl,-soname -Wl,libcdda_interface.so.0 $(OFILES) $(LIBS)
+ $(CC) -fPIC -shared -o libcdda_interface.so.0.$(VERSION) -Wl,-soname -Wl,libcdda_interface.so.0 $(OFILES) $(LIBS)
[ -e libcdda_interface.so.0 ] || ln -s libcdda_interface.so.0.$(VERSION) libcdda_interface.so.0
[ -e libcdda_interface.so ] || ln -s libcdda_interface.so.0.$(VERSION) libcdda_interface.so
diff -r -u cdparanoia-III-10.2.old/paranoia/Makefile.in cdparanoia-III-10.2.new/paranoia/Makefile.in
--- cdparanoia-III-10.2.old/paranoia/Makefile.in 2008-09-04 21:02:47.000000000 +0200
+++ cdparanoia-III-10.2.new/paranoia/Makefile.in 2013-08-07 18:49:54.000000000 +0200
@@ -9,7 +9,7 @@
@SET_MAKE@
FLAGS=@TYPESIZES@ @CFLAGS@
-OPT=@OPT@ $(FLAGS)
+OPT=@OPT@ $(FLAGS) -fPIC
DEBUG=@DEBUG@
CC=@CC@
LD=@CC@
@@ -34,7 +34,7 @@
slib:
$(MAKE) lessmessy
- $(MAKE) libcdda_paranoia.so CFLAGS="$(OPT) -fpic"
+ $(MAKE) libcdda_paranoia.so CFLAGS="$(OPT)"
#test: $(TFILES)
#
@@ -44,7 +44,7 @@
$(RANLIB) libcdda_paranoia.a
libcdda_paranoia.so: $(OFILES)
- $(CC) -fpic -shared -o libcdda_paranoia.so.0.$(VERSION) -Wl,-soname -Wl,libcdda_paranoia.so.0 $(OFILES) -L ../interface -lcdda_interface
+ $(CC) -fPIC -shared -o libcdda_paranoia.so.0.$(VERSION) -Wl,-soname -Wl,libcdda_paranoia.so.0 $(OFILES) -L ../interface -lcdda_interface
[ -e libcdda_paranoia.so.0 ] || ln -s libcdda_paranoia.so.0.$(VERSION) libcdda_paranoia.so.0
[ -e libcdda_paranoia.so ] || ln -s libcdda_paranoia.so.0.$(VERSION) libcdda_paranoia.so
@@ -0,0 +1,30 @@
Do not try to create $localstatedir and $sysconfdir since we cannot do this
when they are /var and /etc.
--- dbus-1.6.4/bus/Makefile.in 2013-09-11 16:15:13.000000000 +0200
+++ dbus-1.6.4/bus/Makefile.in 2013-09-11 16:15:15.000000000 +0200
@@ -1510,9 +1510,6 @@ clean-local:
/bin/rm *.bb *.bbg *.da *.gcov || true
install-data-hook:
- $(mkinstalldirs) $(DESTDIR)$(localstatedir)/run/dbus
- $(mkinstalldirs) $(DESTDIR)$(configdir)/system.d
- $(mkinstalldirs) $(DESTDIR)$(configdir)/session.d
$(mkinstalldirs) $(DESTDIR)$(datadir)/dbus-1/services
$(mkinstalldirs) $(DESTDIR)$(datadir)/dbus-1/system-services
# Install dbus.socket as default implementation of a D-Bus stack.
--- dbus-1.6.4/tools/Makefile.in 2013-09-11 16:10:31.000000000 +0200
+++ dbus-1.6.4/tools/Makefile.in 2013-09-11 16:10:32.000000000 +0200
@@ -757,11 +757,6 @@ uninstall-am: uninstall-binPROGRAMS
# create the /var/lib/dbus directory for dbus-uuidgen
-install-data-local:
- $(MKDIR_P) $(DESTDIR)$(localstatedir)/lib/dbus
-
-installcheck-local:
- test -d $(DESTDIR)$(localstatedir)/lib/dbus
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
@@ -0,0 +1,10 @@
By default, 'RTDLLIST' in 'ldd' refers to 'lib64/ld-linux-x86-64.so', whereas
it's in 'lib/' for us. This patch fixes that.
--- glibc-2.17/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed 2012-12-25 04:02:13.000000000 +0100
+++ glibc-2.17/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed 2013-09-15 23:08:03.000000000 +0200
@@ -1,3 +1,3 @@
/LD_TRACE_LOADED_OBJECTS=1/a\
add_env="$add_env LD_LIBRARY_VERSION=\\$verify_out"
-s_^\(RTLDLIST=\)\(.*lib\)\(\|64\|x32\)\(/[^/]*\)\(-x86-64\|-x32\)\(\.so\.[0-9.]*\)[ ]*$_\1"\2\4\6 \264\4-x86-64\6 \2x32\4-x32\6"_
+s_^\(RTLDLIST=\)\(.*lib\)\(\|64\|x32\)\(/[^/]*\)\(-x86-64\|-x32\)\(\.so\.[0-9.]*\)[ ]*$_\1"\2\4\6 \2\4-x86-64\6 \2x32\4-x32\6"_
@@ -1,36 +0,0 @@
From b12040aeab5fbaf02677571db1d8bf1995bd5ee0 Mon Sep 17 00:00:00 2001
From: Nikos Mavrogiannopoulos <nmav@gnutls.org>
Date: Sun, 2 Jun 2013 12:10:06 +0200
Subject: [PATCH] Avoid comparing the expiration date to prevent false positive
error in 32-bit systems.
---
tests/cert-tests/pem-decoding | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/tests/cert-tests/pem-decoding b/tests/cert-tests/pem-decoding
index fe769ec..f8c6372 100755
--- tests/cert-tests/pem-decoding
+++ tests/cert-tests/pem-decoding
@@ -61,7 +61,9 @@ if test "$rc" != "0"; then
exit $rc
fi
-diff $srcdir/complex-cert.pem tmp-pem.pem
+cat $srcdir/complex-cert.pem |grep -v "Not After:" >tmp1
+cat $srcdir/tmp-pem.pem |grep -v "Not After:" >tmp2
+diff tmp1 tmp2
rc=$?
if test "$rc" != "0"; then
@@ -69,6 +71,6 @@ if test "$rc" != "0"; then
exit $rc
fi
-rm -f tmp-pem.pem
+rm -f tmp-pem.pem tmp1 tmp2
exit 0
--
1.7.1
@@ -109,3 +109,14 @@ index 5d0db23..8266247 100644
(enum iconv_ilseq_handler) handler, NULL,
&buf, &len);
--- guile-2.0.9/libguile/ports.c 2013-08-21 11:08:50.000000000 +0200
+++ guile-2.0.9/libguile/ports.c 2013-08-21 11:09:47.000000000 +0200
@@ -2512,7 +2512,7 @@ scm_i_port_iconv_descriptors (SCM port,
const char *precise_encoding;
if (!pt->encoding)
- pt->encoding = "ISO-8859-1";
+ pt->encoding = "UTF-8";
/* If the specified encoding is UTF-16 or UTF-32, then make
that more precise by deciding what byte order to use. */
+122
View File
@@ -0,0 +1,122 @@
Bigloo 4.0b removes `xml-attribute-encode', which leads to a build failure
in Hop.
This patch allows Hop to be compiled with Bigloo 4.0b.
changeset: 3327:3515f7f1aef2
branch: 2.4.x
user: Manuel Serrano <Manuel.Serrano@inria.fr>
date: Wed Jul 31 12:41:10 2013 +0200
summary: Fix serialization bug
diff -r 7244c4d30ad4 -r 3515f7f1aef2 runtime/js_comp.scm
--- a/runtime/js_comp.scm Fri Jul 19 08:28:13 2013 +0200
+++ b/runtime/js_comp.scm Wed Jul 31 12:41:10 2013 +0200
@@ -143,10 +143,17 @@
(display "{ " op)
(display-seq fields op
(lambda (f op)
+ (let ((iv (class-field-info f)))
(display "'" op)
(display (class-field-name f) op)
(display "': " op)
- (compile ((class-field-accessor f) obj) op)))
+ (cond
+ ((and (pair? iv) (memq :client iv))
+ =>
+ (lambda (x)
+ (compile (when (pair? (cdr x)) (cadr x)) op)))
+ (else
+ (compile ((class-field-accessor f) obj) op))))))
(display "}" op))
(let ((klass (object-class obj)))
diff -r 7244c4d30ad4 -r 3515f7f1aef2 runtime/xml.scm
--- a/runtime/xml.scm Fri Jul 19 08:28:13 2013 +0200
+++ b/runtime/xml.scm Wed Jul 31 12:41:10 2013 +0200
@@ -55,6 +55,7 @@
(generic xml-write-attribute ::obj ::obj ::output-port ::xml-backend)
(generic xml-write-expression ::obj ::output-port)
(xml-write-attributes ::pair-nil ::output-port ::xml-backend)
+ (xml-attribute-encode obj)
(xml->string ::obj ::xml-backend)
@@ -613,6 +614,52 @@
(display ">" p))))
;*---------------------------------------------------------------------*/
+;* xml-attribute-encode ... */
+;*---------------------------------------------------------------------*/
+(define (xml-attribute-encode obj)
+ (if (not (string? obj))
+ obj
+ (let ((ol (string-length obj)))
+ (define (count str ol)
+ (let loop ((i 0)
+ (j 0))
+ (if (=fx i ol)
+ j
+ (let ((c (string-ref str i)))
+ ;; attribute values should escape &#...
+ (if (or (char=? c #\') (char=? c #\&))
+ (loop (+fx i 1) (+fx j 5))
+ (loop (+fx i 1) (+fx j 1)))))))
+ (define (encode str ol nl)
+ (if (=fx nl ol)
+ obj
+ (let ((nstr (make-string nl)))
+ (let loop ((i 0)
+ (j 0))
+ (if (=fx j nl)
+ nstr
+ (let ((c (string-ref str i)))
+ (case c
+ ((#\')
+ (string-set! nstr j #\&)
+ (string-set! nstr (+fx j 1) #\#)
+ (string-set! nstr (+fx j 2) #\3)
+ (string-set! nstr (+fx j 3) #\9)
+ (string-set! nstr (+fx j 4) #\;)
+ (loop (+fx i 1) (+fx j 5)))
+ ((#\&)
+ (string-set! nstr j #\&)
+ (string-set! nstr (+fx j 1) #\#)
+ (string-set! nstr (+fx j 2) #\3)
+ (string-set! nstr (+fx j 3) #\8)
+ (string-set! nstr (+fx j 4) #\;)
+ (loop (+fx i 1) (+fx j 5)))
+ (else
+ (string-set! nstr j c)
+ (loop (+fx i 1) (+fx j 1))))))))))
+ (encode obj ol (count obj ol)))))
+
+;*---------------------------------------------------------------------*/
;* xml-write-attributes ... */
;*---------------------------------------------------------------------*/
(define (xml-write-attributes attr p backend)
diff -r 7244c4d30ad4 -r 3515f7f1aef2 share/hop-serialize.js
--- a/share/hop-serialize.js Fri Jul 19 08:28:13 2013 +0200
+++ b/share/hop-serialize.js Wed Jul 31 12:41:10 2013 +0200
@@ -942,7 +942,7 @@
case 0x2e /* . */: return null;
case 0x3c /* < */: return read_cnst();
case 0x22 /* " */: return read_string( s );
- case 0x25 /* " */: return decodeURIComponent( read_string( s ) );
+ case 0x25 /* % */: return decodeURIComponent( read_string( s ) );
case 0x55 /* U */: return read_string( s );
case 0x5b /* [ */: return read_vector( read_size( s ) );
case 0x28 /* ( */: return read_list( read_size( s ) );
diff -r 7244c4d30ad4 -r 3515f7f1aef2 src/main.scm
--- a/src/main.scm Fri Jul 19 08:28:13 2013 +0200
+++ b/src/main.scm Wed Jul 31 12:41:10 2013 +0200
@@ -59,8 +59,6 @@
(for-each register-srfi! (cons 'hop-server (hop-srfis)))
;; set the library load path
(bigloo-library-path-set! (hop-library-path))
- ;; define the Hop macros
- (hop-install-expanders!)
;; setup the hop readers
(bigloo-load-reader-set! hop-read)
(bigloo-load-module-set!
-14
View File
@@ -1,14 +0,0 @@
Fails to build with glibc 2.12.1 without this patch.
http://lists.gnu.org/archive/html/bug-m4/2010-05/msg00002.html
--- a/src/path.c
+++ b/src/path.c
@@ -22,6 +22,7 @@
/* Handling of path search of included files via the builtins "include"
and "sinclude". */
#include "m4.h"
+#include "sys/stat.h"
struct includes
+12
View File
@@ -0,0 +1,12 @@
diff -r -u ripperX-2.7.3.old/src/Makefile.in ripperX-2.7.3.new/src/Makefile.in
--- ripperX-2.7.3.old/src/Makefile.in 2008-01-25 10:53:50.000000000 +0100
+++ ripperX-2.7.3.new/src/Makefile.in 2013-08-07 16:14:21.000000000 +0200
@@ -43,7 +43,7 @@
ripperX_LDADD = \
$(INTLLIBS) \
- $(GTK_LIBS)
+ $(GTK_LIBS) -lm
AM_CPPFLAGS = \
-DG_LOG_DOMAIN=\"ripperX\" \
+78
View File
@@ -0,0 +1,78 @@
commit 3781ac11ff374b3517011c1710ec517d52f25cd2
Author: tom <tom@a5019735-40e9-0310-863c-91ae7b9d1cf9>
Date: Mon Jan 14 09:48:49 2013 +0000
Accept glibc 2.17 as valid.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13228 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/configure.in b/configure.in
index e0fb12d..0f3b3df 100644
--- a/configure.in
+++ b/configure.in
@@ -906,6 +906,13 @@ case "${GLIBC_VERSION}" in
DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
;;
+ 2.17)
+ AC_MSG_RESULT(2.17 family)
+ AC_DEFINE([GLIBC_2_17], 1, [Define to 1 if you're using glibc 2.17.x])
+ DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+ ;;
darwin)
AC_MSG_RESULT(Darwin)
AC_DEFINE([DARWIN_LIBC], 1, [Define to 1 if you're using Darwin])
@@ -919,7 +926,7 @@ case "${GLIBC_VERSION}" in
*)
AC_MSG_RESULT([unsupported version ${GLIBC_VERSION}])
- AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.16])
+ AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.17])
AC_MSG_ERROR([or Darwin libc])
;;
esac
diff -ur valgrind-3.8.1/config.h.in valgrind-3.8.1/config.h.in
--- valgrind-3.8.1/config.h.in 2013-01-16 17:15:33.531018561 +0100
+++ valgrind-3.8.1/config.h.in 2013-01-16 17:19:21.000000000 +0100
@@ -48,6 +48,9 @@
/* Define to 1 if you're using glibc 2.16.x */
#undef GLIBC_2_16
+/* Define to 1 if you're using glibc 2.17.x */
+#undef GLIBC_2_17
+
/* Define to 1 if you're using glibc 2.2.x */
#undef GLIBC_2_2
diff -ur valgrind-3.8.1/configure valgrind-3.8.1/configure
--- valgrind-3.8.1/configure 2013-01-16 17:15:33.563018480 +0100
+++ valgrind-3.8.1/configure 2013-01-16 17:19:21.373643238 +0100
@@ -6610,6 +6610,16 @@
DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
;;
+ 2.17)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.17 family" >&5
+$as_echo "2.17 family" >&6; }
+
+$as_echo "#define GLIBC_2_17 1" >>confdefs.h
+
+ DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+ ;;
darwin)
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin" >&5
$as_echo "Darwin" >&6; }
@@ -6630,7 +6640,7 @@
*)
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported version ${GLIBC_VERSION}" >&5
$as_echo "unsupported version ${GLIBC_VERSION}" >&6; }
- as_fn_error "Valgrind requires glibc version 2.2 - 2.16" "$LINENO" 5
+ as_fn_error "Valgrind requires glibc version 2.2 - 2.17" "$LINENO" 5
as_fn_error "or Darwin libc" "$LINENO" 5
;;
esac
+300 -15
View File
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -18,22 +19,28 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages python)
#:use-module ((guix licenses) #:select (bsd-3 psfl x11))
#:use-module ((guix licenses) #:select (bsd-3 bsd-style psfl x11))
#:use-module ((guix licenses) #:select (zlib)
#:renamer (symbol-prefix-proc 'license:))
#:use-module (gnu packages)
#:use-module (gnu packages compression)
#:use-module (gnu packages gdbm)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages readline)
#:use-module (gnu packages openssl)
#:use-module (gnu packages patchelf)
#:use-module (gnu packages sqlite)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix utils)
#:use-module (guix build-system gnu)
#:use-module (guix build-system python))
#:use-module (guix build-system python)
#:use-module (guix build-system trivial))
(define-public python
(define-public python-2
(package
(name "python")
(version "2.7.4")
(version "2.7.5")
(source
(origin
(method url-fetch)
@@ -41,10 +48,52 @@
version "/Python-" version ".tar.xz"))
(sha256
(base32
"0bdn4dylm92n2dsvqvjfyask9jbz88aan5hi4lgkawkxs2v6wqmn"))))
"1c8xan2dlsqfq8q82r3mhl72v3knq3qyn71fjq89xikx2smlqg7k"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; XXX: some tests fail
`(#:tests? #f
;; 258 tests OK.
;; 103 tests failed:
;; test_bz2 test_distutils test_file test_file2k test_popen2
;; test_shutil test_signal test_site test_slice test_smtplib
;; test_smtpnet test_socket test_socketserver test_softspace
;; test_sort test_sqlite test_ssl test_startfile test_str
;; test_strftime test_string test_stringprep test_strop test_strptime
;; test_strtod test_struct test_structmembers test_structseq
;; test_subprocess test_sunaudiodev test_sundry test_symtable
;; test_syntax test_sys test_sys_setprofile test_sys_settrace
;; test_sysconfig test_tarfile test_tcl test_telnetlib test_tempfile
;; test_textwrap test_thread test_threaded_import
;; test_threadedtempfile test_threading test_threading_local
;; test_threadsignals test_time test_timeout test_tk test_tokenize
;; test_tools test_trace test_traceback test_transformer
;; test_ttk_guionly test_ttk_textonly test_tuple test_typechecks
;; test_ucn test_unary test_undocumented_details test_unicode
;; test_unicode_file test_unicodedata test_univnewlines
;; test_univnewlines2k test_unpack test_urllib test_urllib2
;; test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse
;; test_userdict test_userlist test_userstring test_uu test_uuid
;; test_wait3 test_wait4 test_warnings test_wave test_weakref
;; test_weakset test_whichdb test_winreg test_winsound test_with
;; test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c
;; test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile
;; test_zipfile64 test_zipimport test_zipimport_support test_zlib
;; 31 tests skipped:
;; test_aepack test_al test_applesingle test_ascii_formatd test_bsddb
;; test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn
;; test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr
;; test_codecmaps_tw test_ctypes test_curses test_dl test_gdb test_gl
;; test_imageop test_imgfile test_ioctl test_kqueue
;; test_linuxaudiodev test_macos test_macostools test_msilib
;; test_multiprocessing test_ossaudiodev test_pep277
;; test_scriptpackages
;; 7 skips unexpected on linux2:
;; test_ascii_formatd test_bsddb test_bsddb3 test_ctypes test_gdb
;; test_ioctl test_multiprocessing
;; One of the typical errors:
;; test_unicode
;; test test_unicode crashed -- <type 'exceptions.OSError'>: [Errno 2] No such file or directory
#:test-target "test"
#:configure-flags
(let ((bz2 (assoc-ref %build-inputs "bzip2"))
(gdbm (assoc-ref %build-inputs "gdbm"))
@@ -108,9 +157,50 @@ packages; exception-based error handling; and very high level dynamic
data types.")
(license psfl)))
(define-public pytz
(define-public python
(package (inherit python-2)
(version "3.3.2")
(source
(origin
(method url-fetch)
(uri (string-append "http://www.python.org/ftp/python/"
version "/Python-" version ".tar.xz"))
(sha256
(base32
"0hsbwqjnhr85a2w252c8d3yj8d9i5sy8s6a6cfk6zqqhp3234nvl"))))
(native-search-paths
(list (search-path-specification
(variable "PYTHONPATH")
(directories '("lib/python3.3/site-packages")))))))
(define-public python-wrapper
(package (inherit python)
(name "python-wrapper")
(source #f)
(build-system trivial-build-system)
(inputs `(("python" ,python)))
(arguments
`(#:modules ((guix build utils))
#:builder
(begin
(use-modules (guix build utils))
(let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
(python (string-append (assoc-ref %build-inputs "python") "/bin/")))
(mkdir-p bin)
(for-each
(lambda (old new)
(symlink (string-append python old)
(string-append bin "/" new)))
`("python3", "pydoc3", "idle3")
`("python", "pydoc", "idle"))))))
(description (string-append (package-description python)
"\n\nThis wrapper package provides symbolic links to the python binaries
without version suffix."))))
(define-public python-pytz
(package
(name "pytz")
(name "python-pytz")
(version "2013b")
(source
(origin
@@ -121,6 +211,7 @@ data types.")
(base32
"19giwgfcrg0nr1gdv49qnmf2jb2ilkcfc7qyqvfpz4dp0p64ksv5"))))
(build-system python-build-system)
(arguments `(#:tests? #f)) ; no test target
(home-page "https://launchpad.net/pytz")
(synopsis "The Python timezone library.")
(description
@@ -128,22 +219,28 @@ data types.")
using Python 2.4 or higher and provides access to the Olson timezone database.")
(license x11)))
(define-public babel
(define-public python2-pytz
(package-with-python2 python-pytz))
(define-public python-babel
(package
(name "babel")
(version "0.9.6")
(name "python-babel")
(version "1.3")
(source
(origin
(method url-fetch)
(uri (string-append "http://ftp.edgewall.com/pub/babel/Babel-"
(uri (string-append "https://pypi.python.org/packages/source/B/Babel/Babel-"
version ".tar.gz"))
(sha256
(base32
"03vmr54jq5vf3qw6kpdv7cdk7x7i2jhzyf1mawv2gk8zrxg0hfja"))))
"0bnin777lc53nxd1hp3apq410jj5wx92n08h7h4izpl4f4sx00lz"))))
(build-system python-build-system)
(inputs
`(("pytz" ,pytz)))
(home-page "http://babel.edgewall.org/")
`(("python-pytz" ,python-pytz)
("python-setuptools" ,python-setuptools)))
(arguments `(#:tests? #f)) ; no test target
(home-page "http://babel.pocoo.org/")
(synopsis
"Tools for internationalizing Python applications")
(description
@@ -153,3 +250,191 @@ using Python 2.4 or higher and provides access to the Olson timezone database.")
access to various locale display names, localized number and date formatting,
etc. ")
(license bsd-3)))
(define-public python2-babel
(package-with-python2 python-babel))
(define-public python-setuptools
(package
(name "python-setuptools")
(version "1.1.4")
(source
(origin
(method url-fetch)
(uri (string-append "https://pypi.python.org/packages/source/s/setuptools/setuptools-"
version ".tar.gz"))
(sha256
(base32
"0hl9sa5xr9bi2ifq51wy1bawsjv5nzvpbac7m9z1ciz778874csf"))))
(build-system python-build-system)
(arguments
`(#:tests? #f))
;;FIXME: test_sdist_with_utf8_encoded_filename fails in
;; /tmp/nix-build-python2-setuptools-1.1.4.drv-0/setuptools-1.1.4/setuptools/tests/test_sdist.py"
;; line 354
;; The tests pass with Python 2.7.5.
(home-page "https://pypi.python.org/pypi/setuptools")
(synopsis
"Library designed to facilitate packaging Python projects")
(description
"Setuptools is a fully-featured, stable library designed to facilitate
packaging Python projects, where packaging includes:
Python package and module definitions,
distribution package metadata,
test hooks,
project installation,
platform-specific details,
Python 3 support.")
(license psfl)))
(define-public python2-setuptools
(package-with-python2 python-setuptools))
(define-public python-dateutil
(package
(name "python-dateutil")
(version "1.5") ; last version for python < 3
(source
(origin
(method url-fetch)
(uri (string-append "http://labix.org/download/python-dateutil/python-dateutil-"
version ".tar.gz"))
(sha256
(base32
"0fqfglhy5khbvsipr3x7m6bcaqljh8xl5cw33vbfxy7qhmywm2n0"))))
(build-system python-build-system)
(inputs
`(("python-setuptools" ,python-setuptools)))
(home-page "http://labix.org/python-dateutil")
(synopsis
"Extensions to the standard datetime module, available in Python 2.3+")
(description
"The dateutil module provides powerful extensions to the standard
datetime module, available in Python 2.3+.")
(license psfl)))
(define-public python2-dateutil
(package-with-python2 python-dateutil))
(define-public python2-pysqlite
(package
(name "python2-pysqlite")
(version "2.6.3")
(source
(origin
(method url-fetch)
(uri (string-append "http://pysqlite.googlecode.com/files/pysqlite-"
version ".tar.gz"))
(sha256
(base32
"0nsqqfp072rgqbls100rdvbzkjkin7li3kprhfxlfqvzf608hlqd"))))
(build-system python-build-system)
(inputs
`(("sqlite" ,sqlite)))
(arguments
`(#:python ,python-2 ; incompatible with Python 3
#:tests? #f)) ; no test target
(home-page "http://labix.org/python-dateutil")
(synopsis
"SQLite bindings for Python.")
(description
"Pysqlite provides SQLite bindings for Python that comply to the
Database API 2.0T.")
(license license:zlib)))
(define-public python2-mechanize
(package
(name "python2-mechanize")
(version "0.2.5")
(source
(origin
(method url-fetch)
(uri (string-append "https://pypi.python.org/packages/source/m/mechanize/mechanize-"
version ".tar.gz"))
(sha256
(base32
"0rj7r166i1dyrq0ihm5rijfmvhs8a04im28lv05c0c3v206v4rrf"))))
(build-system python-build-system)
(inputs
`(("python2-setuptools" ,python2-setuptools)))
(arguments
`(#:python ,python-2 ; apparently incompatible with Python 3
#:tests? #f))
;; test fails with message
;; AttributeError: 'module' object has no attribute 'test_pullparser'
;; (python-3.3.2) or
;; AttributeError: 'module' object has no attribute 'test_urllib2_localnet'
;; (python-2.7.5).
;; The source code is from March 2011 and probably not up-to-date
;; with respect to python unit tests.
(home-page "http://wwwsearch.sourceforge.net/mechanize/")
(synopsis
"Stateful programmatic web browsing in Python")
(description
"Mechanize implements stateful programmatic web browsing in Python,
after Andy Lesters Perl module WWW::Mechanize.")
(license (bsd-style "file://COPYING"
"See COPYING in the distribution."))))
(define-public python-simplejson
(package
(name "python-simplejson")
(version "3.3.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://pypi.python.org/packages/source/s/simplejson/simplejson-"
version ".tar.gz"))
(sha256
(base32
"07wsry5j44l5zzm74l4j2bvasiq8n5m32f31n2p7c68i5vc6p2ks"))))
(build-system python-build-system)
(home-page "http://simplejson.readthedocs.org/en/latest/")
(synopsis
"Json library for Python")
(description
"JSON (JavaScript Object Notation) is a subset of JavaScript syntax
(ECMA-262 3rd edition) used as a lightweight data interchange format.
Simplejson exposes an API familiar to users of the standard library marshal
and pickle modules. It is the externally maintained version of the json
library contained in Python 2.6, but maintains compatibility with Python 2.5
and (currently) has significant performance advantages, even without using
the optional C extension for speedups. Simplejson is also supported on
Python 3.3+.")
(license x11)))
(define-public python2-simplejson
(package-with-python2 python-simplejson))
(define-public python2-pyicu
(package
(name "python2-pyicu")
(version "1.5")
(source
(origin
(method url-fetch)
(uri (string-append "https://pypi.python.org/packages/source/P/PyICU/PyICU-"
version ".tar.gz"))
(sha256
(base32
"011vwflpir8wvh48mvi6d9a7vw0f43bkwv0w6bzxbzmvz20ax5vm"))))
(build-system python-build-system)
(inputs
`(("icu4c" ,icu4c)))
(arguments
`(#:python ,python-2 ; Python 3 works also, but needs special care for
; linking with libpython3.3m
#:tests? #f)) ; no check target
(home-page "http://pyicu.osafoundation.org/")
(synopsis
"Python extension wrapping the ICU C++ API.")
(description
"PyICU is a python extension wrapping the ICU C++ API.")
(license x11)))
+52 -61
View File
@@ -24,6 +24,7 @@
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages glib)
#:use-module (gnu packages python)
@@ -37,17 +38,18 @@
#:use-module (gnu packages xorg)
#:use-module (gnu packages perl))
(define-public qemu-kvm
(define-public qemu
;; Since QEMU 1.3, it incorporates KVM support formerly found in QEMU-KVM.
(package
(name "qemu-kvm")
(version "1.2.0")
(name "qemu")
(version "1.5.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/kvm/qemu-kvm/"
version "/qemu-kvm-" version ".tar.gz"))
(uri (string-append "http://wiki.qemu-project.org/download/qemu-"
version ".tar.bz2"))
(sha256
(base32
"018vb5nmk2fsm143bs2bl2wirhasd4b10d7jchl32zik4inbk2p9"))))
"1s7316pgizpayr472la8p8a4vhv7ymmzd5qlbkmq6y9q5zpa25ac"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-replace
@@ -59,6 +61,10 @@
(samba (assoc-ref inputs "samba")))
(setenv "SHELL" (which "bash"))
;; While we're at it, patch for tests.
(substitute* "tests/libqtest.c"
(("/bin/sh") (which "sh")))
;; The binaries need to be linked against -lrt.
(setenv "LDFLAGS" "-lrt")
(zero?
@@ -67,12 +73,28 @@
(string-append "--prefix=" out)
(string-append "--smbd=" samba
"/sbin/smbd")))))
%standard-phases)))
(alist-cons-after
'install 'install-info
(lambda* (#:key inputs outputs #:allow-other-keys)
;; Install the Info manual, unless Texinfo is missing.
(or (not (assoc-ref inputs "texinfo"))
(let ((out (assoc-ref outputs "out")))
(and (zero? (system* "make" "info"))
(let ((infodir (string-append out "/share/info")))
(mkdir-p infodir)
(for-each (lambda (info)
(copy-file
info
(string-append infodir "/" info)))
(find-files "." "\\.info$"))
#t)))))
%standard-phases))))
(inputs ; TODO: Add optional inputs.
`(;; ("mesa" ,mesa)
;; ("libaio" ,libaio)
("glib" ,glib)
("python" ,python)
("python" ,python-2) ; incompatible with Python 3 according to error message
("ncurses" ,ncurses)
("libpng" ,libpng)
("libjpeg" ,libjpeg-8)
@@ -86,66 +108,35 @@
("zlib" ,zlib)
("attr" ,attr)
("samba" ,samba))) ; an optional dependency
(home-page "http://www.linux-kvm.org/")
(synopsis
"Virtualization for Linux on x86 hardware containing virtualization extensions")
(description
"KVM (for Kernel-based Virtual Machine) is a full virtualization solution
for Linux on x86 hardware containing virtualization extensions (Intel VT or
AMD-V). It consists of a loadable kernel module, kvm.ko, that provides the
core virtualization infrastructure and a processor specific module,
kvm-intel.ko or kvm-amd.ko. KVM also requires a modified QEMU although work is
underway to get the required changes upstream.")
(native-inputs `(("texinfo" ,texinfo)
("perl" ,perl)))
;; Many files are GPLv2+, but some are GPLv2-only---e.g., `memory.c'.
(license gpl2)))
(define-public qemu-kvm/smb-shares
;; A patched QEMU-KVM where `-net smb' yields two shares instead of one: one
;; for the store, and another one for exchanges with the host.
(package (inherit qemu-kvm)
(name "qemu-kvm-with-multiple-smb-shares")
(inputs `(,@(package-inputs qemu-kvm)
("patch/smb-shares"
,(search-patch "qemu-multiple-smb-shares.patch"))))
(arguments
`(#:patches (list (assoc-ref %build-inputs "patch/smb-shares"))
,@(package-arguments qemu-kvm)))))
(define-public qemu
;; The real one, with a complete target list.
(package (inherit qemu-kvm)
(name "qemu")
(version "1.5.1")
(location (source-properties->location (current-source-location)))
(source (origin
(method url-fetch)
(uri (string-append "http://wiki.qemu-project.org/download/qemu-"
version ".tar.bz2"))
(sha256
(base32
"1s7316pgizpayr472la8p8a4vhv7ymmzd5qlbkmq6y9q5zpa25ac"))))
(arguments
(substitute-keyword-arguments (package-arguments qemu-kvm)
((#:phases phases)
`(alist-cons-before
'build 'pre-build
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "tests/libqtest.c"
(("/bin/sh") (which "sh"))))
,phases))))
(native-inputs `(("perl" ,perl)))
(home-page "http://www.qemu-project.org")
(synopsis "Machine emulator and virtualizer")
(description
"QEMU is a generic and open source machine emulator and virtualizer.
"QEMU is a generic machine emulator and virtualizer.
When used as a machine emulator, QEMU can run OSes and programs made for one
machine (e.g. an ARM board) on a different machine
(e.g. your own PC). By using dynamic translation, it achieves very good
performance.
machine (e.g. an ARM board) on a different machine---e.g., your own PC. By
using dynamic translation, it achieves very good performance.
When used as a virtualizer, QEMU achieves near native performances by
executing the guest code directly on the host CPU. QEMU supports
virtualization when executing under the Xen hypervisor or using
the KVM kernel module in Linux. When using KVM, QEMU can virtualize x86,
server and embedded PowerPC, and S390 guests.")))
server and embedded PowerPC, and S390 guests.")
;; Many files are GPLv2+, but some are GPLv2-only---e.g., `memory.c'.
(license gpl2)))
(define-public qemu/smb-shares
;; A patched QEMU where `-net smb' yields two shares instead of one: one for
;; the store, and another one for exchanges with the host.
(package (inherit qemu)
(name "qemu-with-multiple-smb-shares")
(inputs `(,@(package-inputs qemu)
("patch/smb-shares"
,(search-patch "qemu-multiple-smb-shares.patch"))))
(arguments
`(#:patches (list (assoc-ref %build-inputs "patch/smb-shares"))
,@(package-arguments qemu)))))
+1 -1
View File
@@ -150,7 +150,7 @@ anywhere.")
("patchelf" ,patchelf))) ; for (guix build rpath)
(native-inputs ; for the test suite
`(("perl" ,perl)
("python" ,python)))
("python" ,python-wrapper)))
(home-page "http://www.samba.org/")
(synopsis
"The standard Windows interoperability suite of programs for GNU and Unix")
+36 -27
View File
@@ -32,6 +32,7 @@
#:use-module (gnu packages avahi)
#:use-module (gnu packages libphidget)
#:use-module (gnu packages glib)
#:use-module (gnu packages gtk)
#:use-module (gnu packages libffi)
#:use-module (gnu packages libjpeg)
#:use-module ((gnu packages gtk) #:select (cairo pango))
@@ -118,14 +119,14 @@ development cycle.")
(define-public bigloo
(package
(name "bigloo")
(version "4.0a")
(version "4.0b")
(source (origin
(method url-fetch)
(uri (string-append "ftp://ftp-sop.inria.fr/indes/fp/Bigloo/bigloo"
version ".tar.gz"))
(sha256
(base32
"1771z43nmf9awjvlvrpjfhzcfxsbw2qipir8g9r47sygf2vn59yl"))))
"1fck2h48f0bvh8fl437cagmp0syfxy9lqacy1zwsis20fc76jvzi"))))
(build-system gnu-build-system)
(arguments
`(#:patches (list (assoc-ref %build-inputs "patch/shebangs"))
@@ -150,8 +151,14 @@ development cycle.")
"/lib/bigloo/" ,version)))
;; Those variables are used by libgc's `configure'.
(setenv "SHELL" (which "bash"))
(setenv "CONFIG_SHELL" (which "bash"))
(setenv "SHELL" (which "sh"))
(setenv "CONFIG_SHELL" (which "sh"))
;; ... but they turned out to be overridden later, so work
;; around that.
(substitute* (find-files "gc" "^configure-gc")
(("sh=/bin/sh")
(string-append "sh=" (which "sh"))))
;; The `configure' script doesn't understand options
;; of those of Autoconf.
@@ -162,21 +169,14 @@ development cycle.")
(string-append"--mv=" (which "mv"))
(string-append "--rm=" (which "rm"))))))
(alist-cons-after
'patch 'patch-absolute-file-names
(lambda _
(substitute* (cons "configure"
(find-files "gc" "^install-gc"))
(("/bin/rm") (which "rm"))
(("/bin/mv") (which "mv"))))
(alist-cons-after
'install 'install-emacs-modes
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(dir (string-append out "/share/emacs/site-lisp")))
(zero? (system* "make" "-C" "bmacs" "all" "install"
(string-append "EMACSBRAND=emacs24")
(string-append "EMACSDIR=" dir)))))
%standard-phases)))))
'install 'install-emacs-modes
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(dir (string-append out "/share/emacs/site-lisp")))
(zero? (system* "make" "-C" "bmacs" "all" "install"
(string-append "EMACSBRAND=emacs24")
(string-append "EMACSDIR=" dir)))))
%standard-phases))))
(inputs
`(("emacs" ,emacs)
("patch/shebangs" ,(search-patch "bigloo-gc-shebangs.patch"))
@@ -252,6 +252,7 @@ between Scheme and C# programs.")
"\\.so$")))))
%standard-phases))
#:tests? #f ; no test suite
#:patches (list (assoc-ref %build-inputs "patch/bigloo-4.0b"))
#:modules ((guix build gnu-build-system)
(guix build utils)
(ice-9 popen)
@@ -260,7 +261,10 @@ between Scheme and C# programs.")
(srfi srfi-1))))
(inputs `(("bigloo" ,bigloo)
("which" ,which)
("patchelf" ,patchelf)))
("patchelf" ,patchelf)
("patch/bigloo-4.0b"
,(search-patch "hop-bigloo-4.0b.patch"))))
(home-page "http://hop.inria.fr/")
(synopsis "A multi-tier programming language for the Web 2.0")
(description
@@ -355,12 +359,15 @@ implementation techniques and as an expository tool.")
'(#:phases
(let* ((gui-libs
(lambda (inputs)
;; FIXME: Add GTK+ and GDK for DrRacket.
(let ((glib (string-append (assoc-ref inputs "glib") "/lib"))
(cairo (string-append (assoc-ref inputs "cairo") "/lib"))
(pango (string-append (assoc-ref inputs "pango") "/lib"))
(libjpeg (string-append (assoc-ref inputs "libjpeg") "/lib")))
(list glib cairo pango libjpeg)))))
(define (lib input)
(string-append (assoc-ref inputs input) "/lib"))
(list (lib "glib")
(lib "cairo")
(lib "pango")
(lib "libjpeg")
(lib "gtk")
(lib "gdk-pixbuf")))))
(alist-cons-before
'configure 'pre-configure
(lambda* (#:key inputs #:allow-other-keys)
@@ -394,7 +401,9 @@ implementation techniques and as an expository tool.")
("glib" ,glib) ; for DrRacket
("cairo" ,cairo)
("pango" ,pango)
("libjpeg" ,libjpeg-8)))
("libjpeg" ,libjpeg-8)
("gdk-pixbuf" ,gdk-pixbuf)
("gtk" ,gtk+)))
(home-page "http://racket-lang.org")
(synopsis "Implementation of Scheme and related languages")
(description
+229 -2
View File
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -20,9 +21,88 @@
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix 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 ncurses))
#:use-module (gnu packages ncurses)
#:use-module (gnu packages linux)
#:use-module (gnu packages guile)
#:use-module ((gnu packages base)
#:select (tar))
#:use-module ((gnu packages compression)
#:select (gzip))
#:use-module (gnu packages pkg-config))
(define-public dmd
(package
(name "dmd")
(version "-0.4")
(source (origin
(method url-fetch)
(uri (string-append "ftp://alpha.gnu.org/gnu/dmd/dmd-"
version ".tar.gz"))
(sha256
(base32
"094ja3xvk9ljghhxmy39if67cfjd1hy6m4svnp399n0wpxvaryvy"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags '("--localstatedir=/var")))
(inputs `(("pkg-config" ,pkg-config)
("guile" ,guile-2.0)))
(synopsis "Daemon managing daemons")
(description "'DMD' is a \"Daemon managing Daemons\" (or
\"Daemons-managing Daemon\"?)---i.e. a service manager that provides a
replacement for the service-managing capabilities of SysV-init (or any other
init) with a both powerful and beautiful dependency-based system with a
convenient interface. It is intended for use on GNU/Hurd, but it is supposed
to work on every POSIX-like system where Guile is available. In particular,
it has been tested on GNU/Linux.")
(license gpl3+)
(home-page "http://www.gnu.org/software/dmd/")))
(define-public dfc
(package
(name "dfc")
(version "3.0.3")
(source
(origin
(method url-fetch)
(uri (string-append
"http://projects.gw-computing.net/attachments/download/78/dfc-"
version ".tar.gz"))
(sha256
(base32
"1b4hfqv23l87cb37fxwzfk2sgspkyxpr3ig2hsd23hr6mm982j7z"))))
(build-system cmake-build-system)
(arguments '(#:tests? #f)) ; There are no tests.
(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.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/htop/"
version "/htop-" version ".tar.gz"))
(sha256
(base32
"18fqrhvnm7h4c3939av8lpiwrwxbyw6hcly0jvq0vkjf0ixnaq7f"))))
(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
@@ -87,3 +167,150 @@ ftp(d), hostname, ifconfig, inetd, logger, ping, rcp, rexec(d),
rlogin(d), rsh(d), syslogd, talk(d), telnet(d), tftp(d), traceroute,
uucpd, and whois.")
(license gpl3+)))
(define-public shadow
(package
(name "shadow")
(version "4.1.5.1")
(source (origin
(method url-fetch)
(uri (string-append
"http://pkg-shadow.alioth.debian.org/releases/shadow-"
version ".tar.bz2"))
(sha256
(base32
"1yvqx57vzih0jdy3grir8vfbkxp0cl0myql37bnmi2yn90vk6cma"))))
(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.1")
(source (origin
(method url-fetch)
(uri (string-append
"http://ftp.de.debian.org/debian/pool/main/n/netbase/netbase_"
version ".tar.gz"))
(sha256
(base32
"17l8xk2x632id5f9x9v5fs9wqc650hldd2lf3dh90r1zisj1ya8d"))))
(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"))
(gzip (assoc-ref %build-inputs "gzip"))
(output (assoc-ref %outputs "out"))
(etc (string-append output "/etc")))
(setenv "PATH" (string-append gzip "/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)
("gzip" ,gzip)))
(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)))
+28 -22
View File
@@ -25,7 +25,9 @@
#:use-module (gnu packages)
#:use-module (gnu packages compression)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages gd)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages gtk)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages libpng)
#:use-module (gnu packages pdf)
@@ -41,42 +43,45 @@
(define texlive-extra-src
(origin
(method url-fetch)
(uri "ftp://tug.org/historic/systems/texlive/2012/texlive-20120701-extra.tar.xz")
(uri "ftp://tug.org/historic/systems/texlive/2013/texlive-20130530-extra.tar.xz")
(sha256 (base32
"0cb8fnv4x281gy5ka779f00ssdmdpjj4x3pkh9j9vq45hrwg3522"))))
"15r1qyn7x1iamiiycylx8vzsg27h1r962v6dz9q70f9pdp2rjr6s"))))
(define texlive-texmf-src
(origin
(method url-fetch)
(uri "ftp://tug.org/historic/systems/texlive/2012/texlive-20120701-texmf.tar.xz")
(uri "ftp://tug.org/historic/systems/texlive/2013/texlive-20130530-texmf.tar.xz")
(sha256 (base32
"1fn1dg9k7pnh8a80j23zfkbrfnqyc4c2w4ss30dpkqj490nxsywq"))))
"09kza0ha0x9cm4k2qm9w31h3g94y9hy17jahnnsirqyy8rpdqgwg"))))
(define-public texlive
(package
(name "texlive")
(version "2012")
(version "2013")
(source (origin
(method url-fetch)
(uri "ftp://tug.org/historic/systems/texlive/2012/texlive-20120701-source.tar.xz")
(uri "ftp://tug.org/historic/systems/texlive/2013/texlive-20130530-source.tar.xz")
(sha256 (base32
"10bcrdfsqnc6y3gqcb8ndnjy07i5kz63as39irbq4gmcbmyn2rln"))))
"1m3ripkmra53jwkaqcxxhabc3yvqrfm7pfxldnqirp849hp861d9"))))
(build-system gnu-build-system)
(inputs `(("texlive-extra-src" ,texlive-extra-src)
("texlive-texmf-src" ,texlive-texmf-src)
("cairo" ,cairo)
("fontconfig" ,fontconfig)
("freetype" ,freetype)
("gd" ,gd)
("icu4c" ,icu4c)
("ghostscript" ,ghostscript)
("libpng" ,libpng)
("libxaw" ,libxaw)
("libxt" ,libxt)
("perl" ,perl)
("pixman" ,pixman)
("poppler" ,poppler)
("pkg-config" ,pkg-config)
;; FIXME: Add interpreters fontforge and ruby,
;; once they are available.
("python" ,python)
("python" ,python-2) ; incompatible with Python 3 (print syntax)
("tcsh" ,tcsh)
("teckit" ,teckit)
("t1lib" ,t1lib)
@@ -87,18 +92,21 @@
`(#:out-of-source? #t
#:configure-flags
`("--disable-native-texlive-build"
;; Although the texmf and texmf-dist data is taken from
;; texlive-texmf, setting datarootdir is still useful:
;; Although the texmf-dist data is taken from texlive-texmf,
;; setting datarootdir is still useful:
;; "make install" creates symbolic links to scripts in this place.
,(string-append "--datarootdir=" (assoc-ref %outputs "data"))
,(string-append "--infodir=" (assoc-ref %outputs "out") "/share/info")
,(string-append "--mandir=" (assoc-ref %outputs "out") "/share/man")
"--with-system-cairo"
"--with-system-freetype2"
;; "--with-system-gd"
;; "--with-system-graphite"
"--with-system-gd"
;; "--with-system-graphite2" ; requires cmake build system
;; "--with-system-harfbuzz" ; requires --with-system-graphite2
"--with-system-icu"
"--with-system-libgs"
"--with-system-libpng"
"--with-system-pixman"
"--with-system-poppler"
"--with-system-t1lib"
"--with-system-teckit"
@@ -131,9 +139,8 @@
'("latex" "pdflatex" "xelatex" "lualatex")))
(with-directory-excursion (string-append out "/share/man/man1/")
(symlink "luatex.1" "lualatex.1"))
;; Delete texmf and texmf-dist from "data", since they
;; will be reinstalled from texlive-texmf.
(system* "rm" "-r" (string-append data "/texmf"))
;; Delete texmf-dist from "data", since it will be reinstalled
;; from texlive-texmf.
(system* "rm" "-r" (string-append data "/texmf-dist"))
;; Unpack texlive-extra and install tlpkg.
(mkdir "texlive-extra")
@@ -148,18 +155,17 @@
(apply unpack (list #:source texlive-texmf))
(apply patch-source-shebangs (list #:source texlive-texmf))
;; Register "data" for kpathsea in texmf.cnf.
(substitute* "texmf/web2c/texmf.cnf"
(substitute* "texmf-dist/web2c/texmf.cnf"
(("TEXMFROOT = \\$SELFAUTOPARENT")
(string-append "TEXMFROOT = " data)))
(system* "mv" "texmf" data)
(system* "mv" "texmf-dist" data)
(chdir ".."))
;; texmf.cnf must also be placed in "out", since kpsewhich does
;; not know about "data" until it has found this file.
(mkdir (string-append out "/share/texmf"))
(mkdir (string-append out "/share/texmf/web2c"))
(copy-file (string-append data "/texmf/web2c/texmf.cnf")
(string-append out "/share/texmf/web2c/texmf.cnf"))))
(mkdir (string-append out "/share/texmf-dist"))
(mkdir (string-append out "/share/texmf-dist/web2c"))
(copy-file (string-append data "/texmf-dist/web2c/texmf.cnf")
(string-append out "/share/texmf-dist/web2c/texmf.cnf"))))
(alist-cons-after 'patch-shebangs 'texconfig
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
@@ -196,7 +202,7 @@ world.")
(build-system gnu-build-system)
(arguments '(#:tests? #f)) ; no `check' target
(inputs `(("texinfo" ,texinfo)
("python" ,python)
("python" ,python-2) ; incompatible with Python 3 (print syntax)
("which" ,which)))
(home-page "https://launchpad.net/rubber")
(synopsis "Rubber, a wrapper for LaTeX and friends")
+67
View File
@@ -0,0 +1,67 @@
;;; 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 valgrind)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (guix licenses)
#:use-module (gnu packages gdb)
#:use-module (gnu packages perl)
#:use-module (gnu packages))
(define-public valgrind
(package
(name "valgrind")
(version "3.8.1")
(source (origin
(method url-fetch)
(uri (string-append "http://valgrind.org/downloads/valgrind-"
version ".tar.bz2"))
(sha256
(base32
"1nsqk70ry3221sd62s4f0njcrncppszs4xxjcak13lxyfq2y0fs7"))))
(build-system gnu-build-system)
(arguments
'(#:patches (list (assoc-ref %build-inputs "patch/glibc-2.17"))
#:phases (alist-cons-after
'install 'patch-suppression-files
(lambda* (#:key outputs #:allow-other-keys)
;; Don't assume the FHS.
(let* ((out (assoc-ref outputs "out"))
(dir (string-append out "/lib/valgrind")))
(substitute* (find-files dir "\\.supp$")
(("obj:/lib") "obj:*/lib")
(("obj:/usr/X11R6/lib") "obj:*/lib")
(("obj:/usr/lib") "obj:*/lib"))
#t))
%standard-phases)))
(inputs `(;; GDB is needed to provide a sane default for `--db-command'.
("gdb" ,gdb)
("patch/glibc-2.17"
,(search-patch "valgrind-glibc.patch"))))
(native-inputs `(("perl" ,perl)))
(home-page "http://www.valgrind.org/")
(synopsis "Debugging and profiling tool suite")
(description
"Valgrind is an instrumentation framework for building dynamic analysis
tools. There are Valgrind tools that can automatically detect many memory
management and threading bugs, and profile your programs in detail. You can
also use Valgrind to build new tools.")
(license gpl2+)))
+54 -6
View File
@@ -2,6 +2,7 @@
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -19,7 +20,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages version-control)
#:use-module ((guix licenses) #:select (asl2.0 gpl1+ gpl2+ gpl3+))
#:use-module ((guix licenses) #:select (asl2.0 gpl1+ gpl2 gpl2+ gpl3+))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
@@ -27,12 +28,15 @@
#:use-module (guix build utils)
#:use-module ((gnu packages gettext)
#:renamer (symbol-prefix-proc 'guix:))
#:use-module (gnu packages libapr)
#:use-module (gnu packages apr)
#:use-module (gnu packages curl)
#:use-module (gnu packages nano)
#:use-module (gnu packages openssl)
#:use-module (gnu packages perl)
#:use-module (gnu packages python)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages system)
#:use-module (gnu packages xml)
#:use-module (gnu packages emacs)
#:use-module (gnu packages compression))
@@ -54,7 +58,9 @@
;; require Zsh.
`(("gettext" ,guix:gettext)))
(arguments
`(#:tests? #f)) ; no test target
`(#:tests? #f ; no test target
#:python ,python-2)) ; Python 3 apparently not yet supported, see
; https://answers.launchpad.net/bzr/+question/229048
(home-page "https://gnu.org/software/bazaar")
(synopsis "Decentralized revision control system")
(description
@@ -64,6 +70,48 @@ organize their workspace in whichever way they want. It is possible to work
from a command line or use a GUI application.")
(license gpl2+)))
(define-public git
(package
(name "git")
(version "1.8.4")
(source (origin
(method url-fetch)
(uri (string-append "http://git-core.googlecode.com/files/git-"
version ".tar.gz"))
(sha256
(base32
"156bwqqgaw65rsvbb4wih5jfg94bxyf6p16mdwf0ky3f4ln55s2i"))))
(build-system gnu-build-system)
(inputs
`(("curl" ,curl)
("expat" ,expat)
("gettext" ,guix:gettext)
("openssl" ,openssl)
("perl" ,perl)
("python" ,python-2) ; CAVEAT: incompatible with python-3 according to INSTALL
("zlib" ,zlib)))
(arguments
`(#:make-flags `("V=1") ; more verbose compilation
#:test-target "test"
#:tests? #f ; FIXME: Many tests are failing
#:phases
(alist-replace
'configure
(lambda* (#:key #:allow-other-keys #:rest args)
(let ((configure (assoc-ref %standard-phases 'configure)))
(and (apply configure args)
(substitute* "Makefile"
(("/bin/sh") (which "sh"))
(("/usr/bin/perl") (which "perl"))
(("/usr/bin/python") (which "python"))))))
%standard-phases)))
(synopsis "Distributed version control system")
(description
"Git is a free distributed version control system designed to handle
everything from small to very large projects with speed and efficiency.")
(license gpl2)
(home-page "http://git-scm.com/")))
(define-public subversion
(package
(name "subversion")
@@ -77,10 +125,10 @@ from a command line or use a GUI application.")
"11inl9n1riahfnbk1fax0dysm2swakzhzhpmm2zvga6fikcx90zw"))))
(build-system gnu-build-system)
(inputs
`(("libapr" ,libapr)
("libaprutil" ,libaprutil)
`(("apr" ,apr)
("apr-util" ,apr-util)
("perl" ,perl)
("python" ,python)
("python" ,python-2) ; incompatible with Python 3 (print syntax)
("sqlite" ,sqlite)
("zlib" ,zlib)))
(home-page "http://subversion.apache.org/")
+28 -3
View File
@@ -28,7 +28,8 @@
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system perl))
#:use-module (guix build-system perl)
#:use-module (gnu packages linux))
(define-public expat
(package
@@ -65,7 +66,7 @@ things the parser might find in the XML document (like start tags).")
(home-page "http://www.xmlsoft.org/")
(synopsis "libxml2, a C parser for XML")
(inputs `(("perl" ,perl)
("python" ,python)
("python" ,python-2) ; incompatible with Python 3 (print syntax)
("zlib" ,zlib)))
(arguments
`(#:phases
@@ -101,7 +102,7 @@ things the parser might find in the XML document (like start tags).")
(synopsis "libxslt, a C library for applying XSLT stylesheets to XML documents")
(inputs `(("libgcrypt" ,libgcrypt)
("libxml2" ,libxml2)
("python" ,python)
("python" ,python-wrapper)
("zlib" ,zlib)))
(description
"Libxslt is an XSLT C library developed for the GNOME project. It is
@@ -138,3 +139,27 @@ then passed on to the Expat object on each parse call. They can also be given
as extra arguments to the parse methods, in which case they override options
given at XML::Parser creation time.")
(home-page "http://search.cpan.org/~toddr/XML-Parser-2.41/Parser.pm")))
(define-public xmlto
(package
(name "xmlto")
(version "0.0.25")
(source
(origin
(method url-fetch)
(uri (string-append
"https://fedorahosted.org/releases/x/m/xmlto/xmlto-"
version ".tar.bz2"))
(sha256
(base32
"0dp5nxq491gymq806za0dk4hngfmq65ysrqbn0ypajqbbl6vf71n"))))
(build-system gnu-build-system)
(inputs
`(("util-linux" ,util-linux)))
(home-page "http://cyberelk.net/tim/software/xmlto/")
(synopsis "Front-end to an XSL toolchain")
(description
"Xmlto is a front-end to an XSL toolchain. It chooses an appropriate
stylesheet for the conversion you want and applies it using an external
XSL-T processor. It also performs any necessary post-processing.")
(license license:gpl2+)))
+58
View File
@@ -0,0 +1,58 @@
;;; 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 xnee)
#:use-module (guix packages)
#:use-module (guix licenses)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages xorg)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages gtk))
(define-public xnee
(package
(name "xnee")
(version "3.16")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/xnee/xnee-"
version ".tar.gz"))
(sha256
(base32
"1zkn66zpnbxryrb76cc3r2via6216868l1xsnl3vdymbsy23sf87"))))
(build-system gnu-build-system)
(inputs
`(("recordproto" ,recordproto)
("pkg-config" ,pkg-config)
("inputproto" ,inputproto)
("libxi" ,libxi)
("gtk+" ,gtk+)
("libxtst" ,libxtst)
("xextproto" ,xextproto)
("libxext" ,libxext)
("xproto" ,xproto)
("libx11" ,libx11)))
(home-page "http://www.gnu.org/software/xnee/")
(synopsis "Record, replay and distribute user actions under X11")
(description
"GNU Xnee is a suite of programs that can record, replay and distribute
user actions under the X11 environment. Think of it as a robot that can
imitate the job you just did. Xnee can be used to automate tests, demonstrate
programs, distribute actions, record & replay \"macros\", retype a file.")
(license gpl3+)))
+96 -483
View File
@@ -29,11 +29,11 @@
#:use-module ((gnu packages gettext)
#:renamer (symbol-prefix-proc 'gnu:))
#:use-module (gnu packages glib)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages gperf)
#:use-module (gnu packages libpng)
#:use-module (gnu packages linux)
#:use-module (gnu packages m4)
#:use-module (gnu packages openssl)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
@@ -100,7 +100,7 @@ rasterisation.")
(define-public libdrm
(package
(name "libdrm")
(version "2.4.42")
(version "2.4.46")
(source
(origin
(method url-fetch)
@@ -110,7 +110,7 @@ rasterisation.")
".tar.bz2"))
(sha256
(base32
"1qbnpi64hyqzd650hj6jki1d50pzypdhj3rw9m3whwbqly110rz0"))))
"1wah4qmrrcv0gnx65lhrlxb6gprxch92wy8lhxv6102fml6k5krk"))))
(build-system gnu-build-system)
(inputs
`(("libpciaccess" ,libpciaccess)
@@ -184,25 +184,6 @@ tracking.")
;; compiles only on macos
;; (define-public applewmproto
;; (package
;; (name "applewmproto")
;; (version "1.4.2")
;; (source
;; (origin
;; (method url-fetch)
;; (uri (string-append
;; "mirror://xorg/X11R7.7/src/everything/applewmproto-"
;; version
;; ".tar.bz2"))
;; (sha256
;; (base32
;; "1zi4p07mp6jmk030p4gmglwxcwp0lzs5mi31y1b4rp8lsqxdxizw"))))
;; (build-system gnu-build-system)
;; (inputs `(("pkg-config" ,pkg-config)))
;; (home-page "http://www.x.org/wiki/")
;; (synopsis "xorg implementation of the X Window System")
;; (description "X.org provides an implementation of the X Window System")
;; (license license:x11)))
(define-public bdftopcf
@@ -384,6 +365,11 @@ tracking.")
("font-util", font-util)
("mkfontdir" ,mkfontdir)
("pkg-config" ,pkg-config)))
(arguments
`(#:configure-flags (list
;; install fonts into subdirectory of package output instead of
;; font-util-?.?.?/share/fonts/X11
(string-append "--with-fontrootdir=" %output "/share/fonts/X11"))))
(home-page "http://www.x.org/wiki/")
(synopsis "xorg implementation of the X Window System")
(description "X.org provides an implementation of the X Window System")
@@ -410,73 +396,19 @@ tracking.")
("font-util", font-util)
("mkfontdir" ,mkfontdir)
("pkg-config" ,pkg-config)))
(arguments
`(#:configure-flags (list
(string-append "--with-fontrootdir=" %output "/share/fonts/X11"))))
(home-page "http://www.x.org/wiki/")
(synopsis "xorg implementation of the X Window System")
(description "X.org provides an implementation of the X Window System")
(license license:x11)))
;; non-free license
;; (define-public font-adobe-utopia100dpi
;; (package
;; (name "font-adobe-utopia100dpi")
;; (version "1.0.4")
;; (source
;; (origin
;; (method url-fetch)
;; (uri (string-append
;; "mirror://xorg/X11R7.7/src/everything/font-adobe-utopia-100dpi-"
;; version
;; ".tar.bz2"))
;; (sha256
;; (base32
;; "19dd9znam1ah72jmdh7i6ny2ss2r6m21z9v0l43xvikw48zmwvyi"))))
;; (build-system gnu-build-system)
;; (home-page "http://www.x.org/wiki/")
;; (synopsis "xorg implementation of the X Window System")
;; (description "X.org provides an implementation of the X Window System")
;; (license non-free)))
;;
;;
;; (define-public font-adobe-utopia75dpi
;; (package
;; (name "font-adobe-utopia75dpi")
;; (version "1.0.4")
;; (source
;; (origin
;; (method url-fetch)
;; (uri (string-append
;; "mirror://xorg/X11R7.7/src/everything/font-adobe-utopia-75dpi-"
;; version
;; ".tar.bz2"))
;; (sha256
;; (base32
;; "152wigpph5wvl4k9m3l4mchxxisgsnzlx033mn5iqrpkc6f72cl7"))))
;; (build-system gnu-build-system)
;; (home-page "http://www.x.org/wiki/")
;; (synopsis "xorg implementation of the X Window System")
;; (description "X.org provides an implementation of the X Window System")
;; (license non-free)))
;;
;;
;; (define-public font-adobe-utopia-type1
;; (package
;; (name "font-adobe-utopia-type1")
;; (version "1.0.4")
;; (source
;; (origin
;; (method url-fetch)
;; (uri (string-append
;; "mirror://xorg/X11R7.7/src/everything/font-adobe-utopia-type1-"
;; version
;; ".tar.bz2"))
;; (sha256
;; (base32
;; "0xw0pdnzj5jljsbbhakc6q9ha2qnca1jr81zk7w70yl9bw83b54p"))))
;; (build-system gnu-build-system)
;; (home-page "http://www.x.org/wiki/")
;; (synopsis "xorg implementation of the X Window System")
;; (description "X.org provides an implementation of the X Window System")
;; (license non-free)))
(define-public font-alias
@@ -526,187 +458,15 @@ tracking.")
(license license:x11)))
;; non-free license
;; (define-public font-bh100dpi
;; (package
;; (name "font-bh100dpi")
;; (version "1.0.3")
;; (source
;; (origin
;; (method url-fetch)
;; (uri (string-append
;; "mirror://xorg/X11R7.7/src/everything/font-bh-100dpi-"
;; version
;; ".tar.bz2"))
;; (sha256
;; (base32
;; "10cl4gm38dw68jzln99ijix730y7cbx8np096gmpjjwff1i73h13"))))
;; (build-system gnu-build-system)
;; (home-page "http://www.x.org/wiki/")
;; (synopsis "xorg implementation of the X Window System")
;; (description "X.org provides an implementation of the X Window System")
;; (license non-free)))
;;
;;
;; (define-public font-bh75dpi
;; (package
;; (name "font-bh75dpi")
;; (version "1.0.3")
;; (source
;; (origin
;; (method url-fetch)
;; (uri (string-append
;; "mirror://xorg/X11R7.7/src/everything/font-bh-75dpi-"
;; version
;; ".tar.bz2"))
;; (sha256
;; (base32
;; "073jmhf0sr2j1l8da97pzsqj805f7mf9r2gy92j4diljmi8sm1il"))))
;; (build-system gnu-build-system)
;; (home-page "http://www.x.org/wiki/")
;; (synopsis "xorg implementation of the X Window System")
;; (description "X.org provides an implementation of the X Window System")
;; (license non-free)))
;;
;;
;; (define-public font-bh-lucidatypewriter100dpi
;; (package
;; (name "font-bh-lucidatypewriter100dpi")
;; (version "1.0.3")
;; (source
;; (origin
;; (method url-fetch)
;; (uri (string-append
;; "mirror://xorg/X11R7.7/src/everything/font-bh-lucidatypewriter-100dpi-"
;; version
;; ".tar.bz2"))
;; (sha256
;; (base32
;; "1fqzckxdzjv4802iad2fdrkpaxl4w0hhs9lxlkyraq2kq9ik7a32"))))
;; (build-system gnu-build-system)
;; (home-page "http://www.x.org/wiki/")
;; (synopsis "xorg implementation of the X Window System")
;; (description "X.org provides an implementation of the X Window System")
;; (license non-free)))
;;
;;
;; (define-public font-bh-lucidatypewriter75dpi
;; (package
;; (name "font-bh-lucidatypewriter75dpi")
;; (version "1.0.3")
;; (source
;; (origin
;; (method url-fetch)
;; (uri (string-append
;; "mirror://xorg/X11R7.7/src/everything/font-bh-lucidatypewriter-75dpi-"
;; version
;; ".tar.bz2"))
;; (sha256
;; (base32
;; "0cfbxdp5m12cm7jsh3my0lym9328cgm7fa9faz2hqj05wbxnmhaa"))))
;; (build-system gnu-build-system)
;; (home-page "http://www.x.org/wiki/")
;; (synopsis "xorg implementation of the X Window System")
;; (description "X.org provides an implementation of the X Window System")
;; (license non-free)))
;;
;;
;; (define-public font-bh-ttf
;; (define-public font-bh-type1
;; (package
;; (name "font-bh-type1")
;; (version "1.0.3")
;; (source
;; (origin
;; (method url-fetch)
;; (uri (string-append
;; "mirror://xorg/X11R7.7/src/everything/font-bh-ttf-"
;; version
;; ".tar.bz2"))
;; (sha256
;; (base32
;; "0pyjmc0ha288d4i4j0si4dh3ncf3jiwwjljvddrb0k8v4xiyljqv"))))
;; (build-system gnu-build-system)
;; (inputs
;; `(("mkfontscale" ,mkfontscale)
;; ("mkfontdir" ,mkfontdir)
;; ("pkg-config" ,pkg-config)))
;; (home-page "http://www.x.org/wiki/")
;; (synopsis "xorg implementation of the X Window System")
;; (description "X.org provides an implementation of the X Window System")
;; (license non-free)))
;;
;;
;; (define-public font-bitstream100dpi
;; (package
;; (name "font-bitstream100dpi")
;; (version "1.0.3")
;; (source
;; (origin
;; (method url-fetch)
;; (uri (string-append
;; "mirror://xorg/X11R7.7/src/everything/font-bh-ttf-"
;; version
;; ".tar.bz2"))
;; (sha256
;; (base32
;; "0pyjmc0ha288d4i4j0si4dh3ncf3jiwwjljvddrb0k8v4xiyljqv"))))
;; (build-system gnu-build-system)
;; (inputs
;; `(("mkfontscale" ,mkfontscale)
;; ("mkfontdir" ,mkfontdir)
;; ("pkg-config" ,pkg-config)))
;; (home-page "http://www.x.org/wiki/")
;; (synopsis "xorg implementation of the X Window System")
;; (description "X.org provides an implementation of the X Window System")
;; (license non-free)))
;;
;;
;; (define-public font-bitstream75dpi
;; (package
;; (name "font-bitstream75dpi")
;; (version "1.0.3")
;; (source
;; (origin
;; (method url-fetch)
;; (uri (string-append
;; "mirror://xorg/X11R7.7/src/everything/font-bh-ttf-"
;; version
;; ".tar.bz2"))
;; (sha256
;; (base32
;; "0pyjmc0ha288d4i4j0si4dh3ncf3jiwwjljvddrb0k8v4xiyljqv"))))
;; (build-system gnu-build-system)
;; (inputs
;; `(("mkfontscale" ,mkfontscale)
;; ("mkfontdir" ,mkfontdir)
;; ("pkg-config" ,pkg-config)))
;; (home-page "http://www.x.org/wiki/")
;; (synopsis "xorg implementation of the X Window System")
;; (description "X.org provides an implementation of the X Window System")
;; (license non-free)))
(define-public font-bitstream-type1
(package
(name "font-bitstream-type1")
(version "1.0.3")
(source
(origin
(method url-fetch)
(uri (string-append
"mirror://xorg/X11R7.7/src/everything/font-bh-ttf-"
version
".tar.bz2"))
(sha256
(base32
"0pyjmc0ha288d4i4j0si4dh3ncf3jiwwjljvddrb0k8v4xiyljqv"))))
(build-system gnu-build-system)
(inputs
`(("mkfontdir" ,mkfontdir)
("pkg-config" ,pkg-config)))
(home-page "http://www.x.org/wiki/")
(synopsis "xorg implementation of the X Window System")
(description "X.org provides an implementation of the X Window System")
(license license:x11)))
(define-public font-cronyx-cyrillic
@@ -734,55 +494,11 @@ tracking.")
(license license:x11)))
;; no license
;; (define-public font-cursor-misc
;; (package
;; (name "font-cursor-misc")
;; (version "1.0.3")
;; (source
;; (origin
;; (method url-fetch)
;; (uri (string-append
;; "mirror://xorg/X11R7.7/src/everything/font-cursor-misc-"
;; version
;; ".tar.bz2"))
;; (sha256
;; (base32
;; "0dd6vfiagjc4zmvlskrbjz85jfqhf060cpys8j0y1qpcbsrkwdhp"))))
;; (build-system gnu-build-system)
;; (inputs
;; `(("mkfontscale" ,mkfontscale)
;; ("mkfontdir" ,mkfontdir)
;; ("bdftopcf" ,bdftopcf)
;; ("pkg-config" ,pkg-config)))
;; (home-page "http://www.x.org/wiki/")
;; (synopsis "xorg implementation of the X Window System")
;; (description "X.org provides an implementation of the X Window System")
;; (license none)))
;;
;;
;; non-free license
;; (define-public font-daewoo-misc
;; (package
;; (name "font-daewoo-misc")
;; (version "1.0.3")
;; (source
;; (origin
;; (method url-fetch)
;; (uri (string-append
;; "mirror://xorg/X11R7.7/src/everything/font-daewoo-misc-"
;; version
;; ".tar.bz2"))
;; (sha256
;; (base32
;; "1s2bbhizzgbbbn5wqs3vw53n619cclxksljvm759h9p1prqdwrdw"))))
;; (build-system gnu-build-system)
;; (inputs
;; `(("mkfontdir" ,mkfontdir)
;; ("bdftopcf" ,bdftopcf)
;; ("pkg-config" ,pkg-config)))
;; (home-page "http://www.x.org/wiki/")
;; (synopsis "xorg implementation of the X Window System")
;; (description "X.org provides an implementation of the X Window System")
;; (license non-free)))
(define-public font-dec-misc
@@ -810,30 +526,8 @@ tracking.")
(license license:x11)))
;; non-free license
;; (define-public font-ibm-type1
;; (package
;; (name "font-ibm-type1")
;; (version "1.0.3")
;; (source
;; (origin
;; (method url-fetch)
;; (uri (string-append
;; "mirror://xorg/X11R7.7/src/everything/font-cronyx-cyrillic-"
;; version
;; ".tar.bz2"))
;; (sha256
;; (base32
;; "1pyjll4adch3z5cg663s6vhi02k8m6488f0mrasg81ssvg9jinzx"))))
;; (build-system gnu-build-system)
;; (inputs
;; `(("mkfontdir" ,mkfontdir)
;; ("bdftopcf" ,bdftopcf)
;; ("pkg-config" ,pkg-config)))
;; (home-page "http://www.x.org/wiki/")
;; (synopsis "xorg implementation of the X Window System")
;; (description "X.org provides an implementation of the X Window System")
;; (license non-free)))
(define-public font-isas-misc
(package
@@ -860,29 +554,8 @@ tracking.")
(license license:x11)))
;; non-free license
;; (define-public font-jis-misc
;; (package
;; (name "font-jis-misc")
;; (version "1.0.3")
;; (source
;; (origin
;; (method url-fetch)
;; (uri (string-append
;; "mirror://xorg/X11R7.7/src/everything/font-jis-misc-"
;; version
;; ".tar.bz2"))
;; (sha256
;; (base32
;; "0rdc3xdz12pnv951538q6wilx8mrdndpkphpbblszsv7nc8cw61b"))))
;; (build-system gnu-build-system)
;; (inputs
;; `(("mkfontdir" ,mkfontdir)
;; ("bdftopcf" ,bdftopcf)
;; ("pkg-config" ,pkg-config)))
;; (home-page "http://www.x.org/wiki/")
;; (synopsis "xorg implementation of the X Window System")
;; (description "X.org provides an implementation of the X Window System")
;; (license non-free)))
(define-public font-micro-misc
@@ -959,29 +632,8 @@ tracking.")
(license license:x11)))
;; non-free license
;; (define-public font-misc-meltho
;; (package
;; (name "font-misc-meltho")
;; (version "1.0.3")
;; (source
;; (origin
;; (method url-fetch)
;; (uri (string-append
;; "mirror://xorg/X11R7.7/src/everything/font-misc-meltho-"
;; version
;; ".tar.bz2"))
;; (sha256
;; (base32
;; "148793fqwzrc3bmh2vlw5fdiwjc2n7vs25cic35gfp452czk489p"))))
;; (build-system gnu-build-system)
;; (inputs
;; `(("mkfontscale" ,mkfontscale)
;; ("mkfontdir" ,mkfontdir)
;; ("pkg-config" ,pkg-config)))
;; (home-page "http://www.x.org/wiki/")
;; (synopsis "xorg implementation of the X Window System")
;; (description "X.org provides an implementation of the X Window System")
;; (license non-free)))
(define-public font-misc-misc
@@ -1004,6 +656,9 @@ tracking.")
("font-util" ,font-util)
("bdftopcf" ,bdftopcf)
("pkg-config" ,pkg-config)))
(arguments
`(#:configure-flags (list
(string-append "--with-fontrootdir=" %output "/share/fonts/X11"))))
(home-page "http://www.x.org/wiki/")
(synopsis "xorg implementation of the X Window System")
(description "X.org provides an implementation of the X Window System")
@@ -1055,6 +710,9 @@ tracking.")
("font-util" ,font-util)
("bdftopcf" ,bdftopcf)
("pkg-config" ,pkg-config)))
(arguments
`(#:configure-flags (list
(string-append "--with-fontrootdir=" %output "/share/fonts/X11"))))
(home-page "http://www.x.org/wiki/")
(synopsis "xorg implementation of the X Window System")
(description "X.org provides an implementation of the X Window System")
@@ -1321,30 +979,6 @@ tracking.")
;; requires applewmproto, which compiles only on macos
;; (define-public libapplewm
;; (package
;; (name "libapplewm")
;; (version "1.4.1")
;; (source
;; (origin
;; (method url-fetch)
;; (uri (string-append
;; "mirror://xorg/X11R7.7/src/everything/libAppleWM-"
;; version
;; ".tar.bz2"))
;; (sha256
;; (base32
;; "0r8x28n45q89x91mz8mv0zkkcxi8wazkac886fyvflhiv2y8ap2y"))))
;; (build-system gnu-build-system)
;; (inputs
;; `(("xextproto" ,xextproto)
;; ("libxext" ,libxext)
;; ("libx11" ,libx11)
;; ("applewmproto" ,applewmproto)
;; ("pkg-config" ,pkg-config)))
;; (home-page "http://www.x.org/wiki/")
;; (synopsis "xorg implementation of the X Window System")
;; (description "X.org provides an implementation of the X Window System")
;; (license license:x11)))
(define-public libdmx
@@ -2223,7 +1857,7 @@ tracking.")
"0ds4qg6slidrzyz6q9ckq0a19hn6blzpnvciy4brh741gn49jpdd"))))
(build-system gnu-build-system)
(inputs
`(("pkg-config" ,pkg-config) ("python" ,python)))
`(("pkg-config" ,pkg-config) ("python" ,python-wrapper)))
(home-page "http://www.x.org/wiki/")
(synopsis "xorg implementation of the X Window System")
(description "X.org provides an implementation of the X Window System")
@@ -2295,6 +1929,11 @@ tracking.")
`(("libxcursor" ,libxcursor)
("pkg-config" ,pkg-config)
("xcursorgen" ,xcursorgen)))
(arguments
`(#:configure-flags
(list (string-append "--with-cursordir="
(assoc-ref %outputs "out")
"/share/icons"))))
(home-page "http://www.x.org/wiki/")
(synopsis "xorg implementation of the X Window System")
(description "X.org provides an implementation of the X Window System")
@@ -2457,7 +2096,6 @@ tracking.")
(license license:x11)))
;; FIXME: Tries to install file joystick-properties.h into ...--xorg-server-1.12.2/include/xorg
(define-public xf86-input-joystick
(package
(name "xf86-input-joystick")
@@ -2475,6 +2113,11 @@ tracking.")
(build-system gnu-build-system)
(inputs `(("pkg-config" ,pkg-config)
("xorg-server" ,xorg-server)))
(arguments
`(#:configure-flags
(list (string-append "--with-sdkdir="
(assoc-ref %outputs "out")
"/include/xorg"))))
(home-page "http://www.x.org/wiki/")
(synopsis "xorg implementation of the X Window System")
(description "X.org provides an implementation of the X Window System")
@@ -2547,13 +2190,20 @@ tracking.")
("mtdev" ,mtdev)
("pkg-config" ,pkg-config)
("xorg-server" ,xorg-server)))
(arguments
`(#:configure-flags
(list (string-append "--with-sdkdir="
(assoc-ref %outputs "out")
"/include/xorg")
(string-append "--with-xorg-conf-dir="
(assoc-ref %outputs "out")
"/share/X11/xorg.conf.d"))))
(home-page "http://www.x.org/wiki/")
(synopsis "xorg implementation of the X Window System")
(description "X.org provides an implementation of the X Window System")
(license license:x11)))
;; FIXME: Installation tries to create ...-xorg-server-1.12.2/share/X11/xorg.conf.d
(define-public xf86-input-vmmouse
(package
(name "xf86-input-vmmouse")
@@ -2571,6 +2221,11 @@ tracking.")
(build-system gnu-build-system)
(inputs `(("pkg-config" ,pkg-config)
("xorg-server" ,xorg-server)))
(arguments
`(#:configure-flags
(list(string-append "--with-xorg-conf-dir="
(assoc-ref %outputs "out")
"/share/X11/xorg.conf.d"))))
(home-page "http://www.x.org/wiki/")
(synopsis "xorg implementation of the X Window System")
(description "X.org provides an implementation of the X Window System")
@@ -2694,26 +2349,8 @@ tracking.")
(license license:x11)))
;; non-free license
;; (define-public xf86-video-dummy
;; (package
;; (name "xf86-video-dummy")
;; (version "0.3.5")
;; (source
;; (origin
;; (method url-fetch)
;; (uri (string-append
;; "mirror://xorg/X11R7.7/src/everything/xf86-video-dummy-"
;; version
;; ".tar.bz2"))
;; (sha256
;; (base32
;; "0pyr50kqh7g84r4p0x09ay5kxax20dip9sh8h3cbd4xv8cswdbfm"))))
;; (build-system gnu-build-system)
;; (inputs `(("pkg-config" ,pkg-config)))
;; (home-page "http://www.x.org/wiki/")
;; (synopsis "xorg implementation of the X Window System")
;; (description "X.org provides an implementation of the X Window System")
;; (license non-free)))
(define-public xf86-video-fbdev
@@ -3227,26 +2864,8 @@ tracking.")
(license license:x11)))
;; no license
;; (define-public xf86-video-v4l
;; (package
;; (name "xf86-video-v4l")
;; (version "0.2.0")
;; (source
;; (origin
;; (method url-fetch)
;; (uri (string-append
;; "mirror://xorg/X11R7.7/src/everything/xf86-video-v4l-"
;; version
;; ".tar.bz2"))
;; (sha256
;; (base32
;; "0pcjc75hgbih3qvhpsx8d4fljysfk025slxcqyyhr45dzch93zyb"))))
;; (build-system gnu-build-system)
;; (inputs `(("pkg-config" ,pkg-config)))
;; (home-page "http://www.x.org/wiki/")
;; (synopsis "xorg implementation of the X Window System")
;; (description "X.org provides an implementation of the X Window System")
;; (license none)))
(define-public xf86-video-vesa
@@ -3323,26 +2942,6 @@ tracking.")
;; Only relevant for the frame buffer on BSD systems.
;; (define-public xf86-video-wsfb
;; (package
;; (name "xf86-video-wsfb")
;; (version "0.4.0")
;; (source
;; (origin
;; (method url-fetch)
;; (uri (string-append
;; "mirror://xorg/X11R7.7/src/everything/xf86-video-wsfb-"
;; version
;; ".tar.bz2"))
;; (sha256
;; (base32
;; "0hr8397wpd0by1hc47fqqrnaw3qdqd8aqgwgzv38w5k3l3jy6p4p"))))
;; (build-system gnu-build-system)
;; (inputs `(("pkg-config" ,pkg-config)
;; ("xorg-server" ,xorg-server)))
;; (home-page "http://www.x.org/wiki/")
;; (synopsis "xorg implementation of the X Window System")
;; (description "X.org provides an implementation of the X Window System")
;; (license license:bsd-2)))
(define-public xf86bigfontproto
@@ -3531,9 +3130,9 @@ tracking.")
(license license:x11)))
(define-public xkbcomp
(define xkbcomp-intermediate ; used as input for xkeyboard-config
(package
(name "xkbcomp")
(name "xkbcomp-intermediate")
(version "1.2.4")
(source
(origin
@@ -3556,6 +3155,18 @@ tracking.")
(description "X.org provides an implementation of the X Window System")
(license license:x11)))
(define-public xkbcomp ; using xkeyboard-config as input
(package (inherit xkbcomp-intermediate)
(name "xkbcomp")
(inputs
`(,@(package-inputs xkbcomp-intermediate)
("xkeyboard-config" ,xkeyboard-config)))
(arguments
`(#:configure-flags
(list (string-append "--with-xkb-config-root="
(assoc-ref %build-inputs "xkeyboard-config")
"/share/X11/xkb"))))))
(define-public xkbevd
(package
@@ -3629,7 +3240,7 @@ tracking.")
("intltool" ,intltool)
("libx11" ,libx11)
("pkg-config" ,pkg-config)
("xkbcomp" ,xkbcomp)))
("xkbcomp-intermediate" ,xkbcomp-intermediate)))
(home-page "http://www.x.org/wiki/")
(synopsis "xorg implementation of the X Window System")
(description "X.org provides an implementation of the X Window System")
@@ -3734,26 +3345,8 @@ tracking.")
(license license:x11)))
;; no license
;; (define-public xorg-docs
;; (package
;; (name "xorg-docs")
;; (version "1.7")
;; (source
;; (origin
;; (method url-fetch)
;; (uri (string-append
;; "mirror://xorg/X11R7.7/src/everything/xorg-docs-"
;; version
;; ".tar.bz2"))
;; (sha256
;; (base32
;; "0prphdba6kgr1bxk7r07wxxx6x6pqjw6prr5qclypsb5sf5r3cdr"))))
;; (build-system gnu-build-system)
;; (inputs `(("pkg-config" ,pkg-config)))
;; (home-page "http://www.x.org/wiki/")
;; (synopsis "xorg implementation of the X Window System")
;; (description "X.org provides an implementation of the X Window System")
;; (license none)))
(define-public xorg-sgml-doctools
@@ -4579,9 +4172,9 @@ tracking.")
(define-public mesa
(package
(name "mesa")
;; In newer versions (9.0.5 and 9.1 tested), "make" results in an
;; In newer versions (9.0.5, 9.1 and 9.2 tested), "make" results in an
;; infinite configure loop, see
;; https://bugs.freedesktop.org/show_bug.cgi?id=61527
;; https://bugs.freedesktop.org/show_bug.cgi?id=58812
(version "8.0.5")
(source
(origin
@@ -4609,7 +4202,7 @@ tracking.")
("libxml2" ,libxml2)
("makedepend" ,makedepend)
("pkg-config" ,pkg-config)
("python" ,python)))
("python" ,python-2))) ; incompatible with Python 3 (print syntax)
(arguments
`(#:configure-flags
`("--with-gallium-drivers=r600,svga,swrast") ; drop r300 from the default list as it requires llvm
@@ -4655,7 +4248,7 @@ emulation to complete hardware acceleration for modern GPUs.")
`(("xcb-proto" ,xcb-proto)
("libxslt" ,libxslt)
("pkg-config" ,pkg-config)
("python" ,python)))
("python" ,python-wrapper)))
(home-page "http://www.x.org/wiki/")
(synopsis "xorg implementation of the X Window System")
(description "X.org provides an implementation of the X Window System")
@@ -4697,6 +4290,7 @@ emulation to complete hardware acceleration for modern GPUs.")
("dbus" ,dbus)
("dmxproto" ,dmxproto)
("libdmx" ,libdmx)
("libgcrypt" ,libgcrypt)
("libxau" ,libxau)
("libxaw" ,libxaw)
("libxdmcp" ,libxdmcp)
@@ -4708,9 +4302,8 @@ emulation to complete hardware acceleration for modern GPUs.")
("libxt" ,libxt)
("libxv" ,libxv)
("mesa" ,mesa)
("openssl" ,openssl)
("pkg-config" ,pkg-config)
("python" ,python)
("python" ,python-wrapper)
("recordproto" ,recordproto)
("resourceproto" ,resourceproto)
("scrnsaverproto" ,scrnsaverproto)
@@ -4719,10 +4312,30 @@ emulation to complete hardware acceleration for modern GPUs.")
("xf86dgaproto" ,xf86dgaproto)
("xf86driproto" ,xf86driproto)
("xf86vidmodeproto" ,xf86vidmodeproto)
;; ("xkbutils" ,xkbutils)
;; ("xkeyboard-config" ,xkeyboard-config)
("xkbcomp" ,xkbcomp)
("xkeyboard-config" ,xkeyboard-config)
("xtrans" ,xtrans)
("zlib" ,zlib)))
(arguments
`(#:configure-flags
(list (string-append "--with-xkb-path="
(assoc-ref %build-inputs "xkeyboard-config")
"/share/X11/xkb")
(string-append "--with-xkb-output="
"/tmp") ; FIXME: This is a bit doubtful; where should
; the compiled keyboard maps go?
(string-append "--with-xkb-bin-directory="
(assoc-ref %build-inputs "xkbcomp")
"/bin"))
#:phases
(alist-replace
'configure
(lambda* (#:key outputs #:allow-other-keys #:rest args)
(let ((configure (assoc-ref %standard-phases 'configure)))
(substitute* (find-files "." "\\.c$")
(("/bin/sh") (which "sh")))
(apply configure args)))
%standard-phases)))
(home-page "http://www.x.org/wiki/")
(synopsis "xorg implementation of the X Window System")
(description "X.org provides an implementation of the X Window System")
+55
View File
@@ -0,0 +1,55 @@
;;; GNU Guix --- Functional package management for GNU
;;; 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/>.
(define-module (gnu packages yasm)
#:use-module (gnu packages)
#:use-module ((guix licenses)
#:renamer (symbol-prefix-proc 'license:))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages python)
#:use-module (gnu packages xml))
(define-public yasm
(package
(name "yasm")
(version "1.2.0")
(source
(origin
(method url-fetch)
(uri (string-append "http://www.tortall.net/projects/yasm/releases/yasm-"
version ".tar.gz"))
(sha256
(base32
"0cfg7ji3ia2in628w42wrfvw2ixmmm4rghwmv2k202mraysgm3vn"))))
(build-system gnu-build-system)
(inputs
`(("python" ,python-wrapper)
("xmlto" ,xmlto)))
(home-page "http://yasm.tortall.net/")
(synopsis "Rewrite of the NASM assembler")
(description
"Yasm is a complete rewrite of the NASM assembler.
Yasm currently supports the x86 and AMD64 instruction sets, accepts NASM
and GAS assembler syntaxes, outputs binary, ELF32, ELF64, 32 and 64-bit
Mach-O, RDOFF2, COFF, Win32, and Win64 object formats, and generates source
debugging information in STABS, DWARF 2, and CodeView 8 formats.")
(license (license:bsd-style "file://COPYING"
"See COPYING in the distribution."))))
+23 -11
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.
;;;
@@ -24,25 +24,37 @@
#:use-module (gnu packages bdw-gc)
#:use-module (gnu packages perl)
#:use-module (gnu packages help2man)
#:use-module (gnu packages ncurses))
#:use-module (gnu packages ncurses)
#:use-module (gnu packages bash))
(define-public zile
(package
(name "zile")
(version "2.4.9")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/zile/zile-"
version ".tar.gz"))
(sha256
(base32
"0j801c28ypm924rw3lqyb6khxyslg6ycrv16wmmwcam0mk3mj6f7"))))
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/zile/zile-"
version ".tar.gz"))
(sha256
(base32
"0j801c28ypm924rw3lqyb6khxyslg6ycrv16wmmwcam0mk3mj6f7"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-cons-before
'configure 'patch-/bin/sh
(lambda* (#:key inputs #:allow-other-keys)
(let ((bash (assoc-ref inputs "bash")))
;; Refer to the actual shell.
(substitute* '("lib/spawni.c" "src/funcs.c")
(("/bin/sh")
(string-append bash "/bin/sh")))))
%standard-phases)))
(inputs
`(("boehm-gc" ,libgc)
("ncurses" ,ncurses)
("perl" ,perl)
("bash" ,bash)))
(native-inputs
`(("perl" ,perl)
("help2man" ,help2man)))
(home-page "http://www.gnu.org/software/zile/")
(synopsis "Zile is lossy Emacs, a lightweight Emacs clone")
+2 -1
View File
@@ -120,7 +120,8 @@ UnZip recreates the stored directory structure by default.")
(build-system gnu-build-system)
(inputs `(("perl" ,perl) ; for the documentation
("pkg-config" ,pkg-config)
("python" ,python) ; for the documentation
("python" ,python-2) ; for the documentation; Python 3 not supported,
; http://forums.gentoo.org/viewtopic-t-863161-start-0.html
("zip" ,zip) ; to create test files
("zlib" ,zlib)))
(arguments
+215
View File
@@ -0,0 +1,215 @@
;;; 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 system dmd)
#:use-module (guix store)
#:use-module (guix packages)
#:use-module (guix derivations)
#:use-module (guix records)
#:use-module ((gnu packages base)
#:select (glibc-final))
#:use-module ((gnu packages system)
#:select (mingetty inetutils))
#:use-module ((gnu packages package-management)
#:select (guix))
#:use-module ((gnu packages linux)
#:select (net-tools))
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
#:export (service?
service
service-provision
service-requirement
service-respawn?
service-start
service-stop
service-inputs
host-name-service
syslog-service
mingetty-service
nscd-service
guix-service
static-networking-service
dmd-configuration-file))
;;; Commentary:
;;;
;;; System services as cajoled by dmd.
;;;
;;; Code:
(define-record-type* <service>
service make-service
service?
(provision service-provision) ; list of symbols
(requirement service-requirement ; list of symbols
(default '()))
(respawn? service-respawn? ; Boolean
(default #t))
(start service-start) ; expression
(stop service-stop ; expression
(default #f))
(inputs service-inputs ; list of inputs
(default '())))
(define (host-name-service store name)
"Return a service that sets the host name to NAME."
(service
(provision '(host-name))
(start `(lambda _
(sethostname ,name)))
(respawn? #f)))
(define (mingetty-service store tty)
"Return a service to run mingetty on TTY."
(let* ((mingetty-drv (package-derivation store mingetty))
(mingetty-bin (string-append (derivation->output-path mingetty-drv)
"/sbin/mingetty")))
(service
(provision (list (symbol-append 'term- (string->symbol tty))))
;; Since the login prompt shows the host name, wait for the 'host-name'
;; service to be done.
(requirement '(host-name))
(start `(make-forkexec-constructor ,mingetty-bin "--noclear" ,tty))
(inputs `(("mingetty" ,mingetty))))))
(define* (nscd-service store
#:key (glibc glibc-final))
"Return a service that runs libc's name service cache daemon (nscd)."
(let ((nscd (string-append (package-output store glibc) "/sbin/nscd")))
(service
(provision '(nscd))
(start `(make-forkexec-constructor ,nscd "-f" "/dev/null"))
;; XXX: Local copy of 'make-kill-destructor' because the one upstream
;; uses the broken 'opt-lambda' macro.
(stop `(lambda* (#:optional (signal SIGTERM))
(lambda (pid . args)
(kill pid signal)
#f)))
(respawn? #f)
(inputs `(("glibc" ,glibc))))))
(define (syslog-service store)
"Return a service that runs 'syslogd' with reasonable default settings."
(define syslog.conf
;; Snippet adapted from the GNU inetutils manual.
(add-text-to-store store "syslog.conf" "
# Log all kernel messages, authentication messages of
# level notice or higher and anything of level err or
# higher to the console.
# Don't log private authentication messages!
*.err;kern.*;auth.notice;authpriv.none /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none /var/log/messages
# Same, in a different place.
*.info;mail.none;authpriv.none /dev/tty12
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* /var/log/maillog
"))
(let* ((inetutils-drv (package-derivation store inetutils))
(syslogd (string-append (derivation->output-path inetutils-drv)
"/libexec/syslogd")))
(service
(provision '(syslogd))
(start `(make-forkexec-constructor ,syslogd
"--rcfile" ,syslog.conf))
(inputs `(("inetutils" ,inetutils)
("syslog.conf" ,syslog.conf))))))
(define* (guix-service store #:key (guix guix) (builder-group "guixbuild"))
"Return a service that runs the build daemon from GUIX."
(let* ((drv (package-derivation store guix))
(daemon (string-append (derivation->output-path drv)
"/bin/guix-daemon")))
(service
(provision '(guix-daemon))
(start `(make-forkexec-constructor ,daemon
"--build-users-group"
,builder-group))
(inputs `(("guix" ,guix))))))
(define* (static-networking-service store interface ip
#:key
gateway
(inetutils inetutils)
(net-tools net-tools))
"Return a service that starts INTERFACE with address IP. If GATEWAY is
true, it must be a string specifying the default network gateway."
;; TODO: Eventually we should do this using Guile's networking procedures,
;; like 'configure-qemu-networking' does, but the patch that does this is
;; not yet in stock Guile.
(let ((ifconfig (string-append (package-output store inetutils)
"/bin/ifconfig"))
(route (string-append (package-output store net-tools)
"/sbin/route")))
(service
(provision '(networking))
(start `(lambda _
(and (zero? (system* ,ifconfig ,interface ,ip "up"))
,(if gateway
`(begin
(sleep 3) ; XXX
(zero? (system* ,route "add" "-net" "default"
"gw" ,gateway)))
#t))))
(stop `(lambda _
(system* ,ifconfig ,interface "down")
(system* ,route "del" "-net" "default")))
(respawn? #f)
(inputs `(("inetutils" ,inetutils)
,@(if gateway
`(("net-tools" ,net-tools))
'()))))))
(define (dmd-configuration-file store services)
"Return the dmd configuration file for SERVICES."
(define config
`(begin
(register-services
,@(map (match-lambda
(($ <service> provision requirement respawn? start stop)
`(make <service>
#:provides ',provision
#:requires ',requirement
#:respawn? ,respawn?
#:start ,start
#:stop ,stop)))
services))
(for-each start ',(append-map service-provision services))))
(add-text-to-store store "dmd.conf"
(object->string config)))
;;; dmd.scm ends here
+84
View File
@@ -0,0 +1,84 @@
;;; 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 system grub)
#:use-module (guix store)
#:use-module (guix packages)
#:use-module (guix derivations)
#:use-module (guix records)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
#:export (menu-entry
menu-entry?
grub-configuration-file))
;;; Commentary:
;;;
;;; Configuration of GNU GRUB.
;;;
;;; Code:
(define-record-type* <menu-entry>
menu-entry make-menu-entry
menu-entry?
(label menu-entry-label)
(linux menu-entry-linux)
(linux-arguments menu-entry-linux-arguments
(default '()))
(initrd menu-entry-initrd))
(define* (grub-configuration-file store entries
#:key (default-entry 1) (timeout 5)
(system (%current-system)))
"Return the GRUB configuration file in STORE for ENTRIES, a list of
<menu-entry> objects, defaulting to DEFAULT-ENTRY and with the given TIMEOUT."
(define prologue
(format #f "
set default=~a
set timeout=~a
search.file ~a~%"
default-entry timeout
(any (match-lambda
(($ <menu-entry> _ linux)
(let* ((drv (package-derivation store linux system))
(out (derivation->output-path drv)))
(string-append out "/bzImage"))))
entries)))
(define entry->text
(match-lambda
(($ <menu-entry> label linux arguments initrd)
(let ((linux-drv (package-derivation store linux system))
(initrd-drv (package-derivation store initrd system)))
;; XXX: Assume that INITRD is a directory containing an 'initrd' file.
(format #f "menuentry ~s {
linux ~a/bzImage ~a
initrd ~a/initrd
}~%"
label
(derivation->output-path linux-drv)
(string-join arguments)
(derivation->output-path initrd-drv))))))
(add-text-to-store store "grub.cfg"
(string-append prologue
(string-concatenate
(map entry->text entries)))
'()))
;;; grub.scm ends here
+152
View File
@@ -0,0 +1,152 @@
;;; 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 system linux)
#:use-module (guix store)
#:use-module (guix records)
#:use-module (guix derivations)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module ((guix utils) #:select (%current-system))
#:export (pam-service
pam-entry
pam-services->directory
%pam-other-services
unix-pam-service))
;;; Commentary:
;;;
;;; Configuration of Linux-related things, including pluggable authentication
;;; modules (PAM).
;;;
;;; Code:
;; PAM services (see
;; <http://www.linux-pam.org/Linux-PAM-html/sag-configuration-file.html>.)
(define-record-type* <pam-service> pam-service
make-pam-service
pam-service?
(name pam-service-name) ; string
;; The four "management groups".
(account pam-service-account ; list of <pam-entry>
(default '()))
(auth pam-service-auth
(default '()))
(password pam-service-password
(default '()))
(session pam-service-session
(default '())))
(define-record-type* <pam-entry> pam-entry
make-pam-entry
pam-entry?
(control pam-entry-control) ; string
(module pam-entry-module) ; file name
(arguments pam-entry-arguments ; list of strings
(default '())))
(define (pam-service->configuration service)
"Return the configuration string for SERVICE, to be dumped in
/etc/pam.d/NAME, where NAME is the name of SERVICE."
(define (entry->string type entry)
(match entry
(($ <pam-entry> control module (arguments ...))
(string-append type " "
control " " module " "
(string-join arguments)
"\n"))))
(match service
(($ <pam-service> name account auth password session)
(string-concatenate
(append (map (cut entry->string "account" <>) account)
(map (cut entry->string "auth" <>) auth)
(map (cut entry->string "password" <>) password)
(map (cut entry->string "session" <>) session))))))
(define (pam-services->directory store services)
"Return the derivation to build the configuration directory to be used as
/etc/pam.d for SERVICES."
(let ((names (map pam-service-name services))
(files (map (match-lambda
((and service ($ <pam-service> name))
(let ((config (pam-service->configuration service)))
(add-text-to-store store
(string-append name ".pam")
config '()))))
services)))
(define builder
'(begin
(use-modules (ice-9 match))
(let ((out (assoc-ref %outputs "out")))
(mkdir out)
(for-each (match-lambda
((name . file)
(symlink file (string-append out "/" name))))
%build-inputs)
#t)))
(build-expression->derivation store "pam.d" (%current-system)
builder
(zip names files))))
(define %pam-other-services
;; The "other" PAM configuration, which denies everything (see
;; <http://www.linux-pam.org/Linux-PAM-html/sag-configuration-example.html>.)
(let ((deny (pam-entry
(control "required")
(module "pam_deny.so"))))
(pam-service
(name "other")
(account (list deny))
(auth (list deny))
(password (list deny))
(session (list deny)))))
(define unix-pam-service
(let ((unix (pam-entry
(control "required")
(module "pam_unix.so"))))
(lambda* (name #:key allow-empty-passwords? motd)
"Return a standard Unix-style PAM service for NAME. When
ALLOW-EMPTY-PASSWORDS? is true, allow empty passwords. When MOTD is true, it
should be the name of a file used as the message-of-the-day."
;; See <http://www.linux-pam.org/Linux-PAM-html/sag-configuration-example.html>.
(let ((name* name))
(pam-service
(name name*)
(account (list unix))
(auth (list (if allow-empty-passwords?
(pam-entry
(control "required")
(module "pam_unix.so")
(arguments '("nullok")))
unix)))
(password (list unix))
(session (if motd
(list unix
(pam-entry
(control "optional")
(module "pam_motd.so")
(arguments (list (string-append "motd=" motd)))))
(list unix))))))))
;;; linux.scm ends here
+141
View File
@@ -0,0 +1,141 @@
;;; 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 system shadow)
#:use-module (guix store)
#:use-module (guix records)
#:use-module (guix packages)
#:use-module ((gnu packages system)
#:select (shadow))
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (ice-9 match)
#:use-module (ice-9 format)
#:export (user-account
user-account?
user-account-name
user-account-pass
user-account-uid
user-account-gid
user-account-comment
user-account-home-directory
user-account-shell
user-group
user-group?
user-group-name
user-group-password
user-group-id
user-group-members
passwd-file
group-file
guix-build-accounts))
;;; Commentary:
;;;
;;; Utilities for configuring the Shadow tool suite ('login', 'passwd', etc.)
;;;
;;; Code:
(define-record-type* <user-account>
user-account make-user-account
user-account?
(name user-account-name)
(password user-account-pass (default ""))
(uid user-account-uid)
(gid user-account-gid)
(comment user-account-comment (default ""))
(home-directory user-account-home-directory)
(shell user-account-shell (default "/bin/sh")))
(define-record-type* <user-group>
user-group make-user-group
user-group?
(name user-group-name)
(password user-group-password (default #f))
(id user-group-id)
(members user-group-members (default '())))
(define (group-file store groups)
"Return a /etc/group file for GROUPS, a list of <user-group> objects."
(define contents
(let loop ((groups groups)
(result '()))
(match groups
((($ <user-group> name _ gid (users ...)) rest ...)
;; XXX: Ignore the group password.
(loop rest
(cons (string-append name "::" (number->string gid)
":" (string-join users ","))
result)))
(()
(string-join (reverse result) "\n" 'suffix)))))
(add-text-to-store store "group" contents))
(define* (passwd-file store accounts #:key shadow?)
"Return a password file for ACCOUNTS, a list of <user-account> objects. If
SHADOW? is true, then it is a /etc/shadow file, otherwise it is a /etc/passwd
file."
;; XXX: The resulting file is world-readable, so beware when SHADOW? is #t!
(define contents
(let loop ((accounts accounts)
(result '()))
(match accounts
((($ <user-account> name pass uid gid comment home-dir shell)
rest ...)
(loop rest
(cons (if shadow?
(string-append name
":" ; XXX: use (crypt PASS …)?
":::::::")
(string-append name
":" "x"
":" (number->string uid)
":" (number->string gid)
":" comment ":" home-dir ":" shell))
result)))
(()
(string-join (reverse result) "\n" 'suffix)))))
(add-text-to-store store (if shadow? "shadow" "passwd")
contents '()))
(define* (guix-build-accounts store count #:key
(first-uid 30001)
(gid 30000)
(shadow shadow))
"Return a list of COUNT user accounts for Guix build users, with UIDs
starting at FIRST-UID, and under GID."
(let* ((gid* gid)
(no-login (string-append (package-output store shadow) "/sbin/nologin")))
(unfold (cut > <> count)
(lambda (n)
(user-account
(name (format #f "guixbuilder~2,'0d" n))
(password "!")
(uid (+ first-uid n -1))
(gid gid*)
(comment (format #f "Guix Build User ~2d" n))
(home-directory "/var/empty")
(shell no-login)))
1+
1)))
;;; shadow.scm ends here
+488 -117
View File
@@ -17,21 +17,39 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu system vm)
#:use-module (guix config)
#:use-module (guix store)
#:use-module (guix derivations)
#:use-module (guix packages)
#:use-module ((gnu packages base) #:select (%final-inputs guile-final))
#:use-module ((gnu packages base)
#:select (%final-inputs
guile-final gcc-final glibc-final
coreutils findutils grep sed))
#:use-module (gnu packages guile)
#:use-module (gnu packages bash)
#:use-module (gnu packages qemu)
#:use-module (gnu packages parted)
#:use-module (gnu packages zile)
#:use-module (gnu packages grub)
#:use-module (gnu packages linux)
#:use-module (gnu packages linux-initrd)
#:use-module (gnu packages package-management)
#:use-module ((gnu packages make-bootstrap)
#:select (%guile-static-stripped))
#:use-module (gnu packages system)
#:use-module (gnu system shadow)
#:use-module (gnu system linux)
#:use-module (gnu system grub)
#:use-module (gnu system dmd)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (ice-9 match)
#:export (expression->derivation-in-linux-vm
qemu-image))
qemu-image
system-qemu-image))
;;; Commentary:
@@ -40,17 +58,20 @@
;;;
;;; Code:
(define* (expression->derivation-in-linux-vm store name system exp inputs
(define* (expression->derivation-in-linux-vm store name exp
#:key
(system (%current-system))
(inputs '())
(linux linux-libre)
(initrd qemu-initrd)
(qemu qemu-kvm/smb-shares)
(qemu qemu/smb-shares)
(env-vars '())
(modules '())
(guile-for-build
(%guile-for-build))
(make-disk-image? #f)
(references-graphs #f)
(disk-image-size
(* 100 (expt 2 20))))
"Evaluate EXP in a QEMU virtual machine running LINUX with INITRD. In the
@@ -59,13 +80,26 @@ its output files in the `/xchg' directory, which is copied to the derivation's
output when the VM terminates.
When MAKE-DISK-IMAGE? is true, then create a QEMU disk image of
DISK-IMAGE-SIZE bytes and return it."
DISK-IMAGE-SIZE bytes and return it.
When REFERENCES-GRAPHS is true, it must be a list of file name/store path
pairs, as for `derivation'. The files containing the reference graphs are
made available under the /xchg CIFS share."
;; FIXME: Allow use of macros from other modules, as done in
;; `build-expression->derivation'.
(define input-alist
(map (match-lambda
((input package)
((input (? package? package))
`(,input . ,(package-output store package "out" system)))
((input package sub-drv)
`(,input . ,(package-output store package sub-drv system))))
((input (? package? package) sub-drv)
`(,input . ,(package-output store package sub-drv system)))
((input (? derivation? drv))
`(,input . ,(derivation->output-path drv)))
((input (? derivation? drv) sub-drv)
`(,input . ,(derivation->output-path drv sub-drv)))
((input (and (? string?) (? store-path?) file))
`(,input . ,file)))
inputs))
(define exp*
@@ -75,8 +109,10 @@ DISK-IMAGE-SIZE bytes and return it."
(define builder
;; Code that launches the VM that evaluates EXP.
`(begin
(use-modules (guix build utils))
`(let ()
(use-modules (guix build utils)
(srfi srfi-1)
(ice-9 rdelim))
(let ((out (assoc-ref %outputs "out"))
(cu (string-append (assoc-ref %build-inputs "coreutils")
@@ -102,6 +138,17 @@ DISK-IMAGE-SIZE bytes and return it."
'(begin))
(mkdir "xchg")
;; Copy the reference-graph files under xchg/ so EXP can access it.
(begin
,@(match references-graphs
(((graph-files . _) ...)
(map (lambda (file)
`(copy-file ,file
,(string-append "xchg/" file)))
graph-files))
(#f '())))
(and (zero?
(system* qemu "-nographic" "-no-reboot"
"-net" "nic,model=e1000"
@@ -132,132 +179,456 @@ DISK-IMAGE-SIZE bytes and return it."
("coreutils" ,(->drv coreutils))
("builder" ,user-builder)
,@(map (match-lambda
((name package sub-drv ...)
((name (? package? package)
sub-drv ...)
`(,name ,(->drv package)
,@sub-drv)))
,@sub-drv))
((name (? string? file))
`(,name ,file))
(tuple tuple))
inputs))
#:env-vars env-vars
#:modules `((guix build utils)
,@modules)
#:guile-for-build guile-for-build)))
#:modules (delete-duplicates
`((guix build utils)
,@modules))
#:guile-for-build guile-for-build
#:references-graphs references-graphs)))
(define* (qemu-image store #:key
(name "qemu-image")
(system (%current-system))
(disk-image-size (* 100 (expt 2 20)))
(linux linux-libre)
(initrd qemu-initrd)
(inputs '()))
"Return a bootable, stand-alone QEMU image."
grub-configuration
(initialize-store? #f)
(populate #f)
(inputs '())
(inputs-to-copy '()))
"Return a bootable, stand-alone QEMU image. The returned image is a full
disk image, with a GRUB installation that uses GRUB-CONFIGURATION as its
configuration file.
INPUTS-TO-COPY is a list of inputs (as for packages) whose closure is copied
into the image being built. When INITIALIZE-STORE? is true, initialize the
store database in the image so that Guix can be used in the image.
POPULATE is a list of directives stating directories or symlinks to be created
in the disk image partition. It is evaluated once the image has been
populated with INPUTS-TO-COPY. It can be used to provide additional files,
such as /etc files."
(define input->name+derivation
(match-lambda
((name (? package? package))
`(,name . ,(derivation->output-path
(package-derivation store package system))))
((name (? package? package) sub-drv)
`(,name . ,(derivation->output-path
(package-derivation store package system)
sub-drv)))
((name (? derivation? drv))
`(,name . ,(derivation->output-path drv)))
((name (? derivation? drv) sub-drv)
`(,name . ,(derivation->output-path drv sub-drv)))
((input (and (? string?) (? store-path?) file))
`(,input . ,file))))
(expression->derivation-in-linux-vm
store "qemu-image" system
`(let ((parted (string-append (assoc-ref %build-inputs "parted")
"/sbin/parted"))
(mkfs (string-append (assoc-ref %build-inputs "e2fsprogs")
"/sbin/mkfs.ext3"))
(grub (string-append (assoc-ref %build-inputs "grub")
"/sbin/grub-install"))
(umount (string-append (assoc-ref %build-inputs "util-linux")
"/bin/umount")) ; XXX: add to Guile
(initrd (string-append (assoc-ref %build-inputs "initrd")
"/initrd"))
(linux (string-append (assoc-ref %build-inputs "linux")
"/bzImage"))
(makedev (lambda (major minor)
(+ (* major 256) minor))))
store "qemu-image"
`(let ()
(use-modules (ice-9 rdelim)
(srfi srfi-1)
(guix build utils)
(guix build linux-initrd))
;; GRUB is full of shell scripts.
(setenv "PATH"
(string-append (dirname grub) ":"
(assoc-ref %build-inputs "coreutils") "/bin:"
(assoc-ref %build-inputs "findutils") "/bin:"
(assoc-ref %build-inputs "sed") "/bin:"
(assoc-ref %build-inputs "grep") "/bin:"
(assoc-ref %build-inputs "gawk") "/bin"))
(let ((parted (string-append (assoc-ref %build-inputs "parted")
"/sbin/parted"))
(mkfs (string-append (assoc-ref %build-inputs "e2fsprogs")
"/sbin/mkfs.ext3"))
(grub (string-append (assoc-ref %build-inputs "grub")
"/sbin/grub-install"))
(umount (string-append (assoc-ref %build-inputs "util-linux")
"/bin/umount")) ; XXX: add to Guile
(grub.cfg (assoc-ref %build-inputs "grub.cfg")))
(display "creating partition table...\n")
(mknod "/dev/vda" 'block-special #o644 (makedev 8 0))
(and (zero? (system* parted "/dev/vda" "mklabel" "msdos"
"mkpart" "primary" "ext2" "1MiB"
,(format #f "~aB"
(- disk-image-size
(* 5 (expt 2 20))))))
(begin
(display "creating ext3 partition...\n")
(mknod "/dev/vda1" 'block-special #o644 (makedev 8 1))
(and (zero? (system* mkfs "-F" "/dev/vda1"))
(begin
(display "mounting partition...\n")
(mkdir "/fs")
(mount "/dev/vda1" "/fs" "ext3")
(mkdir "/fs/boot")
(mkdir "/fs/boot/grub")
(copy-file linux "/fs/boot/bzImage")
(copy-file initrd "/fs/boot/initrd")
(call-with-output-file "/fs/boot/grub/grub.cfg"
(lambda (p)
(display "
set timeout=10
search.file /boot/bzImage
(define (read-reference-graph port)
;; Return a list of store paths from the reference graph at PORT.
;; The data at PORT is the format produced by #:references-graphs.
(let loop ((line (read-line port))
(result '()))
(cond ((eof-object? line)
(delete-duplicates result))
((string-prefix? "/" line)
(loop (read-line port)
(cons line result)))
(else
(loop (read-line port)
result)))))
menuentry \"Boot-to-Guile! Happy Birthday Guile 2.0! (Guile, Guix & co.)\" {
linux /boot/bzImage --repl
initrd /boot/initrd
}" p)))
(and (zero?
(system* grub "--no-floppy"
"--boot-directory" "/fs/boot"
"/dev/vda"))
(zero?
(system* umount "/fs"))))))))
`(("parted" ,parted)
("grub" ,grub)
("e2fsprogs" ,e2fsprogs)
("linux" ,linux-libre)
("initrd" ,qemu-initrd)
(define (things-to-copy)
;; Return the list of store files to copy to the image.
(define (graph-from-file file)
(call-with-input-file file
read-reference-graph))
;; For shell scripts.
("sed" ,(car (assoc-ref %final-inputs "sed")))
("grep" ,(car (assoc-ref %final-inputs "grep")))
("coreutils" ,(car (assoc-ref %final-inputs "coreutils")))
("findutils" ,(car (assoc-ref %final-inputs "findutils")))
("gawk" ,(car (assoc-ref %final-inputs "gawk")))
("util-linux" ,util-linux))
,(match inputs-to-copy
(((graph-files . _) ...)
`(let* ((graph-files ',(map (cut string-append "/xchg/" <>)
graph-files))
(paths (append-map graph-from-file graph-files)))
(delete-duplicates paths)))
(#f ''())))
;; GRUB is full of shell scripts.
(setenv "PATH"
(string-append (dirname grub) ":"
(assoc-ref %build-inputs "coreutils") "/bin:"
(assoc-ref %build-inputs "findutils") "/bin:"
(assoc-ref %build-inputs "sed") "/bin:"
(assoc-ref %build-inputs "grep") "/bin:"
(assoc-ref %build-inputs "gawk") "/bin"))
(display "creating partition table...\n")
(and (zero? (system* parted "/dev/vda" "mklabel" "msdos"
"mkpart" "primary" "ext2" "1MiB"
,(format #f "~aB"
(- disk-image-size
(* 5 (expt 2 20))))))
(begin
(display "creating ext3 partition...\n")
(and (zero? (system* mkfs "-F" "/dev/vda1"))
(let ((store (string-append "/fs" ,%store-directory)))
(display "mounting partition...\n")
(mkdir "/fs")
(mount "/dev/vda1" "/fs" "ext3")
(mkdir-p "/fs/boot/grub")
(symlink grub.cfg "/fs/boot/grub/grub.cfg")
;; Populate the image's store.
(mkdir-p store)
(chmod store #o1775)
(for-each (lambda (thing)
(copy-recursively thing
(string-append "/fs"
thing)))
(cons grub.cfg (things-to-copy)))
;; Populate /dev.
(make-essential-device-nodes #:root "/fs")
;; Optionally, register the inputs in the image's store.
(let* ((guix (assoc-ref %build-inputs "guix"))
(register (string-append guix
"/sbin/guix-register")))
,@(if initialize-store?
(match inputs-to-copy
(((graph-files . _) ...)
(map (lambda (closure)
`(system* register "--prefix" "/fs"
,(string-append "/xchg/"
closure)))
graph-files)))
'(#f)))
;; Evaluate the POPULATE directives.
,@(let loop ((directives populate)
(statements '()))
(match directives
(()
(reverse statements))
((('directory name) rest ...)
(loop rest
(cons `(mkdir-p ,(string-append "/fs" name))
statements)))
((('directory name uid gid) rest ...)
(let ((dir (string-append "/fs" name)))
(loop rest
(cons* `(chown ,dir ,uid ,gid)
`(mkdir-p ,dir)
statements))))
(((new '-> old) rest ...)
(loop rest
(cons `(symlink ,old
,(string-append "/fs" new))
statements)))))
(and=> (assoc-ref %build-inputs "populate")
(lambda (populate)
(chdir "/fs")
(primitive-load populate)
(chdir "/")))
(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
;; /nix/store, which is the host,
;; read-only store.
(unless (eq? (stat:type s) 'symlink)
(utime file 0 0 0 0))))
(find-files "/fs" ".*"))
(and (zero?
(system* grub "--no-floppy"
"--boot-directory" "/fs/boot"
"/dev/vda"))
(zero? (system* umount "/fs"))
(reboot))))))))
#:system system
#:inputs `(("parted" ,parted)
("grub" ,grub)
("e2fsprogs" ,e2fsprogs)
("grub.cfg" ,grub-configuration)
;; For shell scripts.
("sed" ,(car (assoc-ref %final-inputs "sed")))
("grep" ,(car (assoc-ref %final-inputs "grep")))
("coreutils" ,(car (assoc-ref %final-inputs "coreutils")))
("findutils" ,(car (assoc-ref %final-inputs "findutils")))
("gawk" ,(car (assoc-ref %final-inputs "gawk")))
("util-linux" ,util-linux)
,@(if initialize-store?
`(("guix" ,guix-0.4))
'())
,@inputs-to-copy)
#:make-disk-image? #t
#:disk-image-size disk-image-size))
#:disk-image-size disk-image-size
#:references-graphs (map input->name+derivation inputs-to-copy)
#:modules '((guix build utils)
(guix build linux-initrd))))
;;;
;;; Guile 2.0 potluck examples.
;;; Stand-alone VM image.
;;;
(define (example1)
(let ((store #f))
(dynamic-wind
(lambda ()
(set! store (open-connection)))
(lambda ()
(parameterize ((%guile-for-build (package-derivation store guile-final)))
(expression->derivation-in-linux-vm
store "vm-test" (%current-system)
'(begin
(display "hello from boot!\n")
(call-with-output-file "/xchg/hello"
(lambda (p)
(display "world" p))))
'())))
(lambda ()
(close-connection store)))))
(define* (union store inputs
#:key (guile (%guile-for-build)) (system (%current-system))
(name "union"))
"Return a derivation that builds the union of INPUTS. INPUTS is a list of
input tuples."
(define builder
`(begin
(use-modules (guix build union))
(define (example2)
(let ((store #f))
(dynamic-wind
(lambda ()
(set! store (open-connection)))
(lambda ()
(parameterize ((%guile-for-build (package-derivation store guile-final)))
(qemu-image store #:disk-image-size (* 30 (expt 2 20)))))
(lambda ()
(close-connection store)))))
(setvbuf (current-output-port) _IOLBF)
(setvbuf (current-error-port) _IOLBF)
(let ((output (assoc-ref %outputs "out"))
(inputs (map cdr %build-inputs)))
(format #t "building union `~a' with ~a packages...~%"
output (length inputs))
(union-build output inputs))))
(build-expression->derivation store name system builder
(map (match-lambda
((name (? package? p))
`(,name ,(package-derivation store p
system)))
((name (? package? p) output)
`(,name ,(package-derivation store p
system)
,output))
(x x))
inputs)
#:modules '((guix build union))
#:guile-for-build guile))
(define (system-qemu-image store)
"Return the derivation of a QEMU image of the GNU system."
(define motd
(add-text-to-store store "motd" "
Happy birthday, GNU! http://www.gnu.org/gnu30
"))
(define %pam-services
;; Services known to PAM.
(list %pam-other-services
(unix-pam-service "login"
#:allow-empty-passwords? #t
#:motd motd)))
(define %dmd-services
;; Services run by dmd.
(list (host-name-service store "gnu")
(mingetty-service store "tty1")
(mingetty-service store "tty2")
(mingetty-service store "tty3")
(mingetty-service store "tty4")
(mingetty-service store "tty5")
(mingetty-service store "tty6")
(syslog-service store)
(guix-service store #:guix guix-0.4)
(nscd-service store)
;; QEMU networking settings.
(static-networking-service store "eth0" "10.0.2.10"
#:gateway "10.0.2.2")))
(define build-user-gid 30000)
(define build-accounts
(guix-build-accounts store 10 #:gid build-user-gid))
(define resolv.conf
;; Name resolution for default QEMU settings.
(add-text-to-store store "resolv.conf"
"nameserver 10.0.2.3\n"))
(define etc-services
(string-append (package-output store net-base) "/etc/services"))
(define etc-protocols
(string-append (package-output store net-base) "/etc/protocols"))
(define etc-rpc
(string-append (package-output store net-base) "/etc/rpc"))
(parameterize ((%guile-for-build (package-derivation store guile-final)))
(let* ((bash-drv (package-derivation store bash))
(bash-file (string-append (derivation->output-path bash-drv)
"/bin/bash"))
(dmd-drv (package-derivation store dmd))
(dmd-file (string-append (derivation->output-path dmd-drv)
"/bin/dmd"))
(dmd-conf (dmd-configuration-file store %dmd-services))
(accounts (cons* (user-account
(name "root")
(password "")
(uid 0) (gid 0)
(comment "System administrator")
(home-directory "/")
(shell bash-file))
(user-account
(name "guest")
(password "")
(uid 1000) (gid 100)
(comment "Guest of GNU")
(home-directory "/home/guest")
(shell bash-file))
build-accounts))
(passwd (passwd-file store accounts))
(shadow (passwd-file store accounts #:shadow? #t))
(group (group-file store
(list (user-group
(name "root")
(id 0))
(user-group
(name "users")
(id 100)
(members '("guest")))
(user-group
(name "guixbuild")
(id build-user-gid)
(members (map user-account-name
build-accounts))))))
(pam.d-drv (pam-services->directory store %pam-services))
(pam.d (derivation->output-path pam.d-drv))
(packages `(("coreutils" ,coreutils)
("bash" ,bash)
("guile" ,guile-2.0)
("dmd" ,dmd)
("gcc" ,gcc-final)
("libc" ,glibc-final)
("inetutils" ,inetutils)
("findutils" ,findutils)
("grep" ,grep)
("sed" ,sed)
("procps" ,procps)
("psmisc" ,psmisc)
("zile" ,zile)
("guix" ,guix-0.4)))
;; TODO: Replace with a real profile with a manifest.
;; TODO: Generate bashrc from packages' search-paths.
(profile-drv (union store packages
#:name "default-profile"))
(profile (derivation->output-path profile-drv))
(bashrc (add-text-to-store store "bashrc"
(string-append "
export PS1='\\u@\\h\\$ '
export PATH=$HOME/.guix-profile/bin:" profile "/bin:" profile "/sbin
export CPATH=$HOME/.guix-profile/include:" profile "/include
export LIBRARY_PATH=$HOME/.guix-profile/lib:" profile "/lib
alias ls='ls -p --color'
alias ll='ls -l'
")))
(issue (add-text-to-store store "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.
"))
(populate `((directory "/nix/store" 0 ,build-user-gid)
(directory "/etc")
(directory "/var/log") ; for dmd
(directory "/var/run/nscd")
("/etc/shadow" -> ,shadow)
("/etc/passwd" -> ,passwd)
("/etc/group" -> ,group)
("/etc/login.defs" -> "/dev/null")
("/etc/pam.d" -> ,pam.d)
("/etc/resolv.conf" -> ,resolv.conf)
("/etc/profile" -> ,bashrc)
("/etc/issue" -> ,issue)
("/etc/services" -> ,etc-services)
("/etc/protocols" -> ,etc-protocols)
("/etc/rpc" -> ,etc-rpc)
(directory "/var/nix/gcroots")
("/var/nix/gcroots/default-profile" -> ,profile)
(directory "/tmp")
(directory "/var/nix/profiles/per-user/root" 0 0)
(directory "/var/nix/profiles/per-user/guest"
1000 100)
(directory "/home/guest" 1000 100)))
(out (derivation->output-path
(package-derivation store mingetty)))
(boot (add-text-to-store store "boot"
(object->string
`(execl ,dmd-file "dmd"
"--config" ,dmd-conf))
(list out)))
(entries (list (menu-entry
(label (string-append
"GNU System with Linux-Libre "
(package-version linux-libre)
" (technology preview)"))
(linux linux-libre)
(linux-arguments `("--root=/dev/vda1"
,(string-append "--load=" boot)))
(initrd gnu-system-initrd))))
(grub.cfg (grub-configuration-file store entries)))
(qemu-image store
#:grub-configuration grub.cfg
#:populate populate
#:disk-image-size (* 550 (expt 2 20))
#:initialize-store? #t
#:inputs-to-copy `(("boot" ,boot)
("linux" ,linux-libre)
("initrd" ,gnu-system-initrd)
("pam.d" ,pam.d-drv)
("profile" ,profile-drv)
;; Configuration.
("dmd.conf" ,dmd-conf)
("etc-pam.d" ,pam.d-drv)
("etc-passwd" ,passwd)
("etc-shadow" ,shadow)
("etc-group" ,group)
("etc-resolv.conf" ,resolv.conf)
("etc-bashrc" ,bashrc)
("etc-issue" ,issue)
("etc-motd" ,motd)
("net-base" ,net-base)
,@(append-map service-inputs
%dmd-services))))))
;;; vm.scm ends here
+11 -4
View File
@@ -35,13 +35,20 @@
;;
;; Code:
(define (default-cmake)
"Return the default CMake package."
;; Do not use `@' to avoid introducing circular dependencies.
(let ((module (resolve-interface '(gnu packages cmake))))
(module-ref module 'cmake)))
(define* (cmake-build store name source inputs
#:key (guile #f)
(outputs '("out")) (configure-flags ''())
(search-paths '())
(make-flags ''())
(patches ''()) (patch-flags ''("--batch" "-p1"))
(cmake (@ (gnu packages cmake) cmake))
(cmake (default-cmake))
(out-of-source? #f)
(tests? #t)
(test-target "test")
@@ -65,9 +72,9 @@ provides a 'CMakeLists.txt' file as its build system."
(define builder
`(begin
(use-modules ,@modules)
(cmake-build #:source ,(if (and source (derivation-path? source))
(derivation-path->output-path source)
source)
(cmake-build #:source ,(if (derivation? source)
(derivation->output-path source)
source)
#:system ,system
#:outputs %outputs
#:inputs %build-inputs
+53 -13
View File
@@ -32,7 +32,8 @@
package-with-explicit-inputs
package-with-extra-configure-variable
static-libgcc-package
static-package))
static-package
dist-package))
;; Commentary:
;;
@@ -41,6 +42,11 @@
;;
;; Code:
(define %default-modules
;; Build-side modules imported and used by default.
'((guix build gnu-build-system)
(guix build utils)))
(define* (package-with-explicit-inputs p inputs
#:optional
(loc (current-source-location))
@@ -152,6 +158,38 @@ use `--strip-all' as the arguments to `strip'."
''("--strip-all")
flags)))))))
(define* (dist-package p source)
"Return a package that runs takes source files from the SOURCE directory,
runs `make distcheck' and whose result is one or more source tarballs."
(let ((s source))
(package (inherit p)
(name (string-append (package-name p) "-dist"))
(source s)
(arguments
;; Use the right phases and modules.
(let* ((args (default-keyword-arguments (package-arguments p)
`(#:phases #f
#:modules ,%default-modules
#:imported-modules ,%default-modules))))
(substitute-keyword-arguments args
((#:modules modules)
`((guix build gnu-dist)
,@modules))
((#:imported-modules modules)
`((guix build gnu-dist)
,@modules))
((#:phases _)
'%dist-phases))))
(native-inputs
;; Add autotools & co. as inputs.
(let ((ref (lambda (module var)
(module-ref (resolve-interface module) var))))
`(("autoconf" ,(ref '(gnu packages autotools) 'autoconf))
("automake" ,(ref '(gnu packages autotools) 'automake))
("libtool" ,(ref '(gnu packages autotools) 'libtool) "bin")
("gettext" ,(ref '(gnu packages gettext) 'gettext))
("texinfo" ,(ref '(gnu packages texinfo) 'texinfo))))))))
(define %store
;; Store passed to STANDARD-INPUTS.
@@ -227,10 +265,8 @@ System: GCC, GNU Make, Bash, Coreutils, etc."
(phases '%standard-phases)
(system (%current-system))
(implicit-inputs? #t) ; useful when bootstrapping
(imported-modules '((guix build gnu-build-system)
(guix build utils)))
(modules '((guix build gnu-build-system)
(guix build utils))))
(imported-modules %default-modules)
(modules %default-modules))
"Return a derivation called NAME that builds from tarball SOURCE, with
input derivation INPUTS, using the usual procedure of the GNU Build
System. The builder is run with GUILE, or with the distro's final Guile
@@ -255,8 +291,8 @@ which could lead to gratuitous input divergence."
(define builder
`(begin
(use-modules ,@modules)
(gnu-build #:source ,(if (and source (derivation-path? source))
(derivation-path->output-path source)
(gnu-build #:source ,(if (derivation? source)
(derivation->output-path source)
source)
#:system ,system
#:outputs %outputs
@@ -283,8 +319,8 @@ which could lead to gratuitous input divergence."
(match guile
((? package?)
(package-derivation store guile system))
((and (? string?) (? derivation-path?))
guile)
;; ((and (? string?) (? derivation-path?))
;; guile)
(#f ; the default
(let* ((distro (resolve-interface '(gnu packages base)))
(guile (module-ref distro 'guile-final)))
@@ -402,6 +438,8 @@ platform."
(let ()
(define %build-host-inputs
',(map (match-lambda
((name (? derivation? drv) sub ...)
`(,name . ,(apply derivation->output-path drv sub)))
((name (? derivation-path? drv-path) sub ...)
`(,name . ,(apply derivation-path->output-path
drv-path sub)))
@@ -411,6 +449,8 @@ platform."
(define %build-target-inputs
',(map (match-lambda
((name (? derivation? drv) sub ...)
`(,name . ,(apply derivation->output-path drv sub)))
((name (? derivation-path? drv-path) sub ...)
`(,name . ,(apply derivation-path->output-path
drv-path sub)))
@@ -418,8 +458,8 @@ platform."
`(,name . ,path)))
(append (or implicit-target-inputs '()) inputs)))
(gnu-build #:source ,(if (and source (derivation-path? source))
(derivation-path->output-path source)
(gnu-build #:source ,(if (derivation? source)
(derivation->output-path source)
source)
#:system ,system
#:target ,target
@@ -452,8 +492,8 @@ platform."
(match guile
((? package?)
(package-derivation store guile system))
((and (? string?) (? derivation-path?))
guile)
;; ((and (? string?) (? derivation-path?))
;; guile)
(#f ; the default
(let* ((distro (resolve-interface '(gnu packages base)))
(guile (module-ref distro 'guile-final)))
+2 -2
View File
@@ -62,8 +62,8 @@ provides a `Makefile.PL' file as its build system."
`(begin
(use-modules ,@modules)
(perl-build #:name ,name
#:source ,(if (and source (derivation-path? source))
(derivation-path->output-path source)
#:source ,(if (derivation? source)
(derivation->output-path source)
source)
#:search-paths ',(map search-path-specification->sexp
(append perl-search-paths
+58 -8
View File
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;;
;;; This file is part of GNU Guix.
@@ -25,7 +26,9 @@
#:use-module (guix build-system)
#:use-module (guix build-system gnu)
#:use-module (ice-9 match)
#:export (python-build
#:use-module (srfi srfi-26)
#:export (package-with-python2
python-build
python-build-system))
;; Commentary:
@@ -39,13 +42,60 @@
"Return the default Python package."
;; Lazily resolve the binding to avoid a circular dependency.
(let ((python (resolve-interface '(gnu packages python))))
(module-ref python 'python)))
(module-ref python 'python-wrapper)))
(define (default-python2)
"Return the default Python 2 package."
(let ((python (resolve-interface '(gnu packages python))))
(module-ref python 'python-2)))
(define (package-with-explicit-python p python old-prefix new-prefix)
"Create a package with the same fields as P, which is assumed to use
PYTHON-BUILD-SYSTEM, such that it is compiled with PYTHON instead. The
inputs are changed recursively accordingly. If the name of P starts with
OLD-PREFIX, this is replaced by NEW-PREFIX; otherwise, NEW-PREFIX is
prepended to the name."
(let* ((build-system (package-build-system p))
(rewrite-if-package
(lambda (content)
;; CONTENT may be a string (e.g., for patches), in which case it
;; is returned, or a package, which is rewritten with the new
;; PYTHON and NEW-PREFIX.
(if (package? content)
(package-with-explicit-python content python
old-prefix new-prefix)
content)))
(rewrite
(match-lambda
((name content . rest)
(append (list name (rewrite-if-package content)) rest)))))
(package (inherit p)
(name
(let ((name (package-name p)))
(if (eq? build-system python-build-system)
(string-append new-prefix
(if (string-prefix? old-prefix name)
(substring name (string-length old-prefix))
name))
name)))
(arguments
(let ((arguments (package-arguments p)))
(if (eq? build-system python-build-system)
(if (member #:python arguments)
(substitute-keyword-arguments arguments ((#:python p) python))
(append arguments `(#:python ,python)))
arguments)))
(inputs
(map rewrite (package-inputs p)))
(native-inputs
(map rewrite (package-native-inputs p))))))
(define package-with-python2
(cut package-with-explicit-python <> (default-python2) "python-" "python2-"))
(define* (python-build store name source inputs
#:key
(python (default-python))
(python-version
(string-take (package-version (default-python)) 3))
(tests? #t)
(configure-flags ''())
(phases '(@ (guix build python-build-system)
@@ -58,10 +108,10 @@
(guix build gnu-build-system)
(guix build utils)))
(modules '((guix build python-build-system)
(guix build gnu-build-system)
(guix build utils))))
"Build SOURCE using PYTHON, and with INPUTS. This assumes that SOURCE
provides a 'setup.py' file as its build system."
(define python-search-paths
(append (package-native-search-paths python)
(standard-search-paths)))
@@ -70,15 +120,15 @@ provides a 'setup.py' file as its build system."
`(begin
(use-modules ,@modules)
(python-build #:name ,name
#:source ,(if (and source (derivation-path? source))
(derivation-path->output-path source)
#:source ,(if (derivation? source)
(derivation->output-path source)
source)
#:configure-flags ,configure-flags
#:system ,system
#:test-target "test"
#:tests? ,tests?
#:phases ,phases
#:outputs %outputs
#:python-version ,python-version
#:search-paths ',(map search-path-specification->sexp
(append python-search-paths
search-paths))
+8 -2
View File
@@ -42,7 +42,10 @@
search-paths)
"Run build expression BUILDER, an expression, for SYSTEM. SOURCE is
ignored."
(build-expression->derivation store name system builder inputs
(build-expression->derivation store name system builder
(if source
`(("source" ,source) ,@inputs)
inputs)
#:outputs outputs
#:modules modules
#:guile-for-build
@@ -54,7 +57,10 @@ ignored."
search-paths native-search-paths)
"Like `trivial-build', but in a cross-compilation context."
(build-expression->derivation store name system builder
(append native-inputs inputs)
(let ((inputs (append native-inputs inputs)))
(if source
`(("source" ,source) ,@inputs)
inputs))
#:outputs outputs
#:modules modules
#:guile-for-build
+95
View File
@@ -0,0 +1,95 @@
;;; 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 (guix build gnu-dist)
#:use-module (guix build utils)
#:use-module (guix build gnu-build-system)
#:use-module (srfi srfi-1)
#:export (%dist-phases))
;;; Commentary:
;;;
;;; Build phases to build a source tarball with the GNU build system, as with
;;; "make distcheck".
;;;
;;; Code:
(define* (copy-source #:key source #:allow-other-keys)
(copy-recursively source "."))
(define* (autoreconf #:rest args)
(letrec-syntax ((try-files (syntax-rules (else)
((_ (else fallback ...))
(begin fallback ...))
((_ file files ... (else fallback ...))
(if (file-exists? file)
(begin
(format #t "bootstrapping with `~a'...~%"
file)
(zero?
(system* (string-append "./" file))))
(try-files files ...
(else fallback ...)))))))
(try-files "bootstrap" "bootstrap.sh" "autogen" "autogen.sh"
(else
(format #t "bootstrapping with `autoreconf'...~%")
(zero? (system* "autoreconf" "-vfi"))))))
(define* (build #:key build-before-dist? make-flags (dist-target "distcheck")
#:allow-other-keys
#:rest args)
(and (or (not build-before-dist?)
(let ((build (assq-ref %standard-phases 'build)))
(apply build args)))
(begin
(format #t "building target `~a'~%" dist-target)
(zero? (apply system* "make" dist-target make-flags)))))
(define* (install-dist #:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(meta (string-append out "/nix-support")) ; Hydra meta-data
(tarballs (find-files "." "\\.tar\\.")))
(mkdir out)
(for-each (lambda (tarball)
(copy-file tarball (string-append out "/" tarball)))
out)
(mkdir meta)
(call-with-output-file (string-append out "/hydra-build-products")
(lambda (port)
(for-each (lambda (tarball)
;; This tells Hydra's what kind of build products we have,
;; so it can represent them nicely. See `product-list.tt'
;; in Hydra for details.
(format port "file source-dist ~a/~a~%" out tarball))
tarballs)))
#t))
(define %dist-phases
;; Phases for building a source tarball.
(alist-replace
'unpack copy-source
(alist-cons-before
'configure 'autoreconf autoreconf
(alist-replace
'build build
(alist-replace
'install install-dist
(alist-delete 'strip %standard-phases))))))
;;; gnu-dist.scm ends here
+152
View File
@@ -0,0 +1,152 @@
;;; 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 (guix build linux-initrd)
#:use-module (rnrs io ports)
#:use-module (system foreign)
#:export (mount-essential-file-systems
linux-command-line
make-essential-device-nodes
configure-qemu-networking
mount-qemu-smb-share
bind-mount
load-linux-module*
device-number))
;;; 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 (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* (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 QEMU's hard disk and partitions.
(mknod (scope "dev/vda") 'block-special #o644 (device-number 8 0))
(mknod (scope "dev/vda1") 'block-special #o644 (device-number 8 1))
(mknod (scope "dev/vda2") 'block-special #o644 (device-number 8 2))
;; TTYs.
(mknod (scope "dev/tty") 'char-special #o600
(device-number 5 0))
(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)))))
;; 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.
(mknod (scope "dev/null") 'char-special #o666 (device-number 1 3))
(mknod (scope "dev/zero") 'char-special #o666 (device-number 1 5)))
(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))
(unless (file-exists? "/etc")
(mkdir "/etc"))
(call-with-output-file "/etc/resolv.conf"
(lambda (p)
(display "nameserver 10.0.2.3\n" p)))
(logand (network-interface-flags sock interface) IFF_UP)))
(define (mount-qemu-smb-share share mount-point)
"Mount QEMU's CIFS/SMB SHARE at MOUNT-POINT.
Vanilla QEMU's `-smb' option just exports a /qemu share, whereas our
`qemu-with-multiple-smb-shares' package exports the /xchg and /store shares
(the latter allows the store to be shared between the host and guest.)"
(format #t "mounting QEMU's SMB share `~a'...\n" share)
(let ((server "10.0.2.4"))
(mount (string-append "//" server share) mount-point "cifs" 0
(string->pointer "guest,sec=none"))))
(define (bind-mount source target)
"Bind-mount SOURCE at TARGET."
(define MS_BIND 4096) ; from libc's <sys/mount.h>
(mount source target "" MS_BIND))
(define (load-linux-module* file)
"Load Linux module from FILE, the name of a `.ko' file."
(define (slurp module)
(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))
;;; linux-initrd.scm ends here
+49 -22
View File
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;;
;;; This file is part of GNU Guix.
@@ -34,26 +35,49 @@
;;
;; Code:
(define* (install #:key outputs (configure-flags '())
#:allow-other-keys)
"Install a given Python package."
(let ((out (assoc-ref outputs "out")))
(if (file-exists? "setup.py")
(let ((args `("setup.py" "install" ,(string-append "--prefix=" out)
,@configure-flags)))
(format #t "running 'python' with arguments ~s~%" args)
(zero? (apply system* "python" args)))
(error "no setup.py found"))))
(define* (check #:key outputs #:allow-other-keys)
"Run the test suite of a given Python package."
(define (call-setuppy command params)
(if (file-exists? "setup.py")
(let ((args `("setup.py" "check")))
(format #t "running 'python' with arguments ~s~%" args)
(zero? (apply system* "python" args)))
(begin
(format #t "running \"python setup.py\" with command ~s and parameters ~s~%"
command params)
(zero? (apply system* "python" "setup.py" command params)))
(error "no setup.py found")))
(define* (wrap #:key outputs python-version #:allow-other-keys)
(define* (build #:rest empty)
"Build a given Python package."
(call-setuppy "build" '()))
(define* (check #:key tests? test-target #:allow-other-keys)
"Run the test suite of a given Python package."
(if tests?
(call-setuppy test-target '())
#t))
(define (get-python-version python)
(string-take (string-take-right python 5) 3))
(define* (install #:key outputs inputs (configure-flags '())
#:allow-other-keys)
"Install a given Python package."
(let* ((out (assoc-ref outputs "out"))
(params (append (list (string-append "--prefix=" out))
configure-flags))
(python-version (get-python-version (assoc-ref inputs "python")))
(old-path (getenv "PYTHONPATH"))
(add-path (string-append out "/lib/python" python-version
"/site-packages/")))
;; create the module installation directory and add it to PYTHONPATH
;; to make setuptools happy
(mkdir-p add-path)
(setenv "PYTHONPATH"
(string-append (if old-path
(string-append old-path ":")
"")
add-path))
(call-setuppy "install" params)))
(define* (wrap #:key inputs outputs #:allow-other-keys)
(define (list-of-files dir)
(map (cut string-append dir "/" <>)
(or (scandir dir (lambda (f)
@@ -69,9 +93,11 @@
outputs))
(let* ((out (assoc-ref outputs "out"))
(python (assoc-ref inputs "python"))
(var `("PYTHONPATH" prefix
,(cons (string-append out "/lib/python"
python-version "/site-packages")
(get-python-version python)
"/site-packages")
(search-path-as-string->list
(or (getenv "PYTHONPATH") ""))))))
(for-each (lambda (dir)
@@ -87,11 +113,12 @@
'install 'wrap
wrap
(alist-replace
'check check
(alist-replace 'install install
(alist-delete 'configure
(alist-delete 'build
gnu:%standard-phases))))))
'build build
(alist-replace
'check check
(alist-replace 'install install
(alist-delete 'configure
gnu:%standard-phases))))))
(define* (python-build #:key inputs (phases %standard-phases)
#:allow-other-keys #:rest args)
+25 -4
View File
@@ -105,7 +105,22 @@ single leaf."
the DIRECTORIES."
(define (file-tree dir)
;; Return the contents of DIR as a tree.
(match (file-system-fold (const #t)
(define (others-have-it? subdir)
;; Return #t if other elements of DIRECTORIES have SUBDIR.
(let ((subdir (substring subdir (string-length dir))))
(any (lambda (other)
(and (not (string=? other dir))
(file-exists? (string-append other "/" subdir))))
directories)))
(match (file-system-fold (lambda (subdir stat result) ; enter?
;; No need to traverse DIR since there's
;; nothing to union it with. Thus, we avoid
;; creating a gazillon symlinks (think
;; share/emacs/24.3, share/texmf, etc.)
(or (string=? subdir dir)
(others-have-it? subdir)))
(lambda (file stat result) ; leaf
(match result
(((siblings ...) rest ...)
@@ -117,7 +132,12 @@ the DIRECTORIES."
(((leaves ...) (siblings ...) rest ...)
`(((,(basename dir) ,@leaves) ,@siblings)
,@rest))))
(const #f) ; skip
(lambda (dir stat result) ; skip
;; DIR is not available elsewhere, so treat it
;; as a leaf.
(match result
(((siblings ...) rest ...)
`((,dir ,@siblings) ,@rest))))
(lambda (file stat errno result)
(format (current-error-port) "union-build: ~a: ~a~%"
file (strerror errno)))
@@ -158,8 +178,9 @@ the DIRECTORIES."
(mkdir output)
(let loop ((tree (delete-duplicate-leaves
(cons "."
(tree-union (append-map (compose tree-leaves file-tree)
directories)))
(tree-union
(append-map (compose tree-leaves file-tree)
(delete-duplicates directories))))
leaf=?
resolve-collision))
(dir '()))
+21 -18
View File
@@ -185,29 +185,32 @@ but ignore errors."
lstat))
(define (find-files dir regexp)
"Return the list of files under DIR whose basename matches REGEXP."
"Return the lexicographically sorted list of files under DIR whose basename
matches REGEXP."
(define file-rx
(if (regexp? regexp)
regexp
(make-regexp regexp)))
(file-system-fold (const #t)
(lambda (file stat result) ; leaf
(if (regexp-exec file-rx (basename file))
(cons file result)
result))
(lambda (dir stat result) ; down
result)
(lambda (dir stat result) ; up
result)
(lambda (file stat result) ; skip
result)
(lambda (file stat errno result)
(format (current-error-port) "find-files: ~a: ~a~%"
file (strerror errno))
#f)
'()
dir))
;; Sort the result to get deterministic results.
(sort (file-system-fold (const #t)
(lambda (file stat result) ; leaf
(if (regexp-exec file-rx (basename file))
(cons file result)
result))
(lambda (dir stat result) ; down
result)
(lambda (dir stat result) ; up
result)
(lambda (file stat result) ; skip
result)
(lambda (file stat errno result)
(format (current-error-port) "find-files: ~a: ~a~%"
file (strerror errno))
#f)
'()
dir)
string<?))
;;;
+144 -55
View File
@@ -19,6 +19,7 @@
(define-module (guix derivations)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-9)
#:use-module (srfi srfi-9 gnu)
#:use-module (srfi srfi-26)
#:use-module (rnrs io ports)
#:use-module (rnrs bytevectors)
@@ -36,6 +37,7 @@
derivation-system
derivation-builder-arguments
derivation-builder-environment-vars
derivation-file-name
derivation-prerequisites
derivation-prerequisites-to-build
@@ -56,20 +58,26 @@
read-derivation
write-derivation
derivation->output-path
derivation->output-paths
derivation-path->output-path
derivation-path->output-paths
derivation
%guile-for-build
imported-modules
compiled-modules
build-expression->derivation
imported-files))
imported-files)
#:replace (build-derivations))
;;;
;;; Nix derivations, as implemented in Nix's `derivations.cc'.
;;;
(define-record-type <derivation>
(make-derivation outputs inputs sources system builder args env-vars)
(make-derivation outputs inputs sources system builder args env-vars
file-name)
derivation?
(outputs derivation-outputs) ; list of name/<derivation-output> pairs
(inputs derivation-inputs) ; list of <derivation-input>
@@ -77,7 +85,8 @@
(system derivation-system) ; string
(builder derivation-builder) ; store path
(args derivation-builder-arguments) ; list of strings
(env-vars derivation-builder-environment-vars)) ; list of name/value pairs
(env-vars derivation-builder-environment-vars) ; list of name/value pairs
(file-name derivation-file-name)) ; the .drv file name
(define-record-type <derivation-output>
(make-derivation-output path hash-algo hash)
@@ -92,6 +101,17 @@
(path derivation-input-path) ; store path
(sub-derivations derivation-input-sub-derivations)) ; list of strings
(set-record-type-printer! <derivation>
(lambda (drv port)
(format port "#<derivation ~a => ~a ~a>"
(derivation-file-name drv)
(string-join
(map (match-lambda
((_ . output)
(derivation-output-path output)))
(derivation-outputs drv)))
(number->string (object-address drv) 16))))
(define (fixed-output-derivation? drv)
"Return #t if DRV is a fixed-output derivation, such as the result of a
download with a fixed hash (aka. `fetchurl')."
@@ -260,7 +280,8 @@ that second value is the empty list."
(make-input-drvs input-drvs)
input-srcs
system builder args
(fold-right alist-cons '() var value)))
(fold-right alist-cons '() var value)
(port-filename drv-port)))
(_
(error "failed to parse derivation" drv-port result)))))
((? (cut eq? <> comma))
@@ -402,25 +423,30 @@ that form."
port)
(display ")" port))))
(define* (derivation->output-path drv #:optional (output "out"))
"Return the store path of its output OUTPUT."
(let ((outputs (derivation-outputs drv)))
(and=> (assoc-ref outputs output) derivation-output-path)))
(define (derivation->output-paths drv)
"Return the list of name/path pairs of the outputs of DRV."
(map (match-lambda
((name . output)
(cons name (derivation-output-path output))))
(derivation-outputs drv)))
(define derivation-path->output-path
;; This procedure is called frequently, so memoize it.
(memoize
(lambda* (path #:optional (output "out"))
"Read the derivation from PATH (`/nix/store/xxx.drv'), and return the store
path of its output OUTPUT."
(let* ((drv (call-with-input-file path read-derivation))
(outputs (derivation-outputs drv)))
(and=> (assoc-ref outputs output) derivation-output-path)))))
(derivation->output-path (call-with-input-file path read-derivation)))))
(define (derivation-path->output-paths path)
"Read the derivation from PATH (`/nix/store/xxx.drv'), and return the
list of name/path pairs of its outputs."
(let* ((drv (call-with-input-file path read-derivation))
(outputs (derivation-outputs drv)))
(map (match-lambda
((name . output)
(cons name (derivation-output-path output))))
outputs)))
(derivation->output-paths (call-with-input-file path read-derivation)))
;;;
@@ -468,7 +494,8 @@ in SIZE bytes."
(make-derivation-input hash sub-drvs))))
inputs))
(drv (make-derivation outputs inputs sources
system builder args env-vars)))
system builder args env-vars
#f)))
;; XXX: At this point this remains faster than `port-sha256', because
;; the SHA256 port's `write' method gets called for every single
@@ -497,12 +524,20 @@ the derivation called NAME with hash HASH."
name
(string-append name "-" output))))
(define* (derivation store name system builder args env-vars inputs
#:key (outputs '("out")) hash hash-algo hash-mode)
"Build a derivation with the given arguments. Return the resulting
store path and <derivation> object. When HASH, HASH-ALGO, and HASH-MODE
are given, a fixed-output derivation is created---i.e., one whose result is
known in advance, such as a file download."
(define* (derivation store name builder args
#:key
(system (%current-system)) (env-vars '())
(inputs '()) (outputs '("out"))
hash hash-algo hash-mode
references-graphs)
"Build a derivation with the given arguments, and return the resulting
<derivation> object. When HASH, HASH-ALGO, and HASH-MODE are given, a
fixed-output derivation is created---i.e., one whose result is known in
advance, such as a file download.
When REFERENCES-GRAPHS is true, it must be a list of file name/store path
pairs. In that case, the reference graph of each store path is exported in
the build environment in the corresponding file, in a simple text format."
(define direct-store-path?
(let ((len (+ 1 (string-length (%store-prefix)))))
(lambda (p)
@@ -535,9 +570,25 @@ known in advance, such as a file download."
(or (and=> (assoc-ref outputs name)
derivation-output-path)
value))))
env-vars))))))
env-vars)
#f)))))
(define (env-vars-with-empty-outputs)
(define (user+system-env-vars)
;; Some options are passed to the build daemon via the env. vars of
;; derivations (urgh!). We hide that from our API, but here is the place
;; where we kludgify those options.
(match references-graphs
(((file . path) ...)
(let ((value (map (cut string-append <> " " <>)
file path)))
;; XXX: This all breaks down if an element of FILE or PATH contains
;; white space.
`(("exportReferencesGraph" . ,(string-join value " "))
,@env-vars)))
(#f
env-vars)))
(define (env-vars-with-empty-outputs env-vars)
;; Return a variant of ENV-VARS where each OUTPUTS is associated with an
;; empty string, even outputs that do not appear in ENV-VARS.
(let ((e (map (match-lambda
@@ -553,12 +604,26 @@ known in advance, such as a file download."
e
outputs)))
(define (set-file-name drv file)
;; Set FILE as the 'file-name' field of DRV.
(match drv
(($ <derivation> outputs inputs sources system builder
args env-vars)
(make-derivation outputs inputs sources system builder
args env-vars file))))
(let* ((outputs (map (lambda (name)
;; Return outputs with an empty path.
(cons name
(make-derivation-output "" hash-algo hash)))
outputs))
(inputs (map (match-lambda
(((? derivation? drv))
(make-derivation-input (derivation-file-name drv)
'("out")))
(((? derivation? drv) sub-drvs ...)
(make-derivation-input (derivation-file-name drv)
sub-drvs))
(((? direct-store-path? input))
(make-derivation-input input '("out")))
(((? direct-store-path? input) sub-drvs ...)
@@ -569,7 +634,7 @@ known in advance, such as a file download."
#t "sha256" input)))
(make-derivation-input path '()))))
(delete-duplicates inputs)))
(env-vars (env-vars-with-empty-outputs))
(env-vars (env-vars-with-empty-outputs (user+system-env-vars)))
(drv-masked (make-derivation outputs
(filter (compose derivation-path?
derivation-input-path)
@@ -579,17 +644,29 @@ known in advance, such as a file download."
(and (not (derivation-path? p))
p)))
inputs)
system builder args env-vars))
system builder args env-vars #f))
(drv (add-output-paths drv-masked)))
;; (write-derivation drv-masked (current-error-port))
;; (newline (current-error-port))
(values (add-text-to-store store (string-append name ".drv")
(call-with-output-string
(cut write-derivation drv <>))
(map derivation-input-path
inputs))
drv)))
(let ((file (add-text-to-store store (string-append name ".drv")
(call-with-output-string
(cut write-derivation drv <>))
(map derivation-input-path
inputs))))
(set-file-name drv file))))
;;;
;;; Store compatibility layer.
;;;
(define (build-derivations store derivations)
"Build DERIVATIONS, a list of <derivation> objects or .drv file names."
(let ((build (@ (guix store) build-derivations)))
(build store (map (match-lambda
((? string? file) file)
((and drv ($ <derivation>))
(derivation-file-name drv)))
derivations))))
;;;
@@ -681,7 +758,7 @@ they can refer to each other."
#:system system
#:guile guile
#:module-path module-path))
(module-dir (derivation-path->output-path module-drv))
(module-dir (derivation->output-path module-drv))
(files (map (lambda (m)
(let ((f (string-join (map symbol->string m)
"/")))
@@ -720,7 +797,8 @@ they can refer to each other."
hash hash-algo
(env-vars '())
(modules '())
guile-for-build)
guile-for-build
references-graphs)
"Return a derivation that executes Scheme expression EXP as a builder
for derivation NAME. INPUTS must be a list of (NAME DRV-PATH SUB-DRV)
tuples; when SUB-DRV is omitted, \"out\" is assumed. MODULES is a list
@@ -737,23 +815,27 @@ builder terminates by passing the result of EXP to `exit'; thus, when
EXP returns #f, the build is considered to have failed.
EXP is built using GUILE-FOR-BUILD (a derivation). When GUILE-FOR-BUILD is
omitted or is #f, the value of the `%guile-for-build' fluid is used instead."
omitted or is #f, the value of the `%guile-for-build' fluid is used instead.
See the `derivation' procedure for the meaning of REFERENCES-GRAPHS."
(define guile-drv
(or guile-for-build (%guile-for-build)))
(define guile
(string-append (derivation-path->output-path guile-drv)
(string-append (derivation->output-path guile-drv)
"/bin/guile"))
(define module-form?
(match-lambda
(((or 'define-module 'use-modules) _ ...) #t)
(_ #f)))
(((or 'define-module 'use-modules) _ ...) #t)
(_ #f)))
(define source-path
;; When passed an input that is a source, return its path; otherwise
;; return #f.
(match-lambda
((_ (? derivation?) _ ...)
#f)
((_ path _ ...)
(and (not (derivation-path? path))
path))))
@@ -778,10 +860,13 @@ omitted or is #f, the value of the `%guile-for-build' fluid is used instead."
(() "out")
((x) x))))
(cons name
(if (derivation-path? drv)
(derivation-path->output-path drv
sub)
drv)))))
(cond
((derivation? drv)
(derivation->output-path drv sub))
((derivation-path? drv)
(derivation-path->output-path drv
sub))
(else drv))))))
inputs))
,@(if (null? modules)
@@ -826,29 +911,33 @@ omitted or is #f, the value of the `%guile-for-build' fluid is used instead."
#:guile guile-drv
#:system system)))
(mod-dir (and mod-drv
(derivation-path->output-path mod-drv)))
(derivation->output-path mod-drv)))
(go-drv (and (pair? modules)
(compiled-modules store modules
#:guile guile-drv
#:system system)))
(go-dir (and go-drv
(derivation-path->output-path go-drv))))
(derivation store name system guile
(derivation->output-path go-drv))))
(derivation store name guile
`("--no-auto-compile"
,@(if mod-dir `("-L" ,mod-dir) '())
,builder)
#:system system
#:inputs `((,(or guile-for-build (%guile-for-build)))
(,builder)
,@(map cdr inputs)
,@(if mod-drv `((,mod-drv) (,go-drv)) '()))
;; When MODULES is non-empty, shamelessly clobber
;; $GUILE_LOAD_COMPILED_PATH.
(if go-dir
`(("GUILE_LOAD_COMPILED_PATH" . ,go-dir)
,@(alist-delete "GUILE_LOAD_COMPILED_PATH"
env-vars))
env-vars)
#:env-vars (if go-dir
`(("GUILE_LOAD_COMPILED_PATH" . ,go-dir)
,@(alist-delete "GUILE_LOAD_COMPILED_PATH"
env-vars))
env-vars)
`((,(or guile-for-build (%guile-for-build)))
(,builder)
,@(map cdr inputs)
,@(if mod-drv `((,mod-drv) (,go-drv)) '()))
#:hash hash #:hash-algo hash-algo
#:outputs outputs)))
#:outputs outputs
#:references-graphs references-graphs)))
+16 -20
View File
@@ -25,7 +25,6 @@
#:use-module ((guix build download) #:renamer (symbol-prefix-proc 'build:))
#:use-module (guix utils)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-26)
#:export (%mirrors
url-fetch
@@ -99,7 +98,9 @@
"http://ramses.wh2.tu-dresden.de/pub/mirrors/kernel.org/"
"http://linux-kernel.uio.no/pub/"
"http://kernel.osuosl.org/pub/"
"ftp://ftp.funet.fi/pub/mirrors/ftp.kernel.org/pub/")
"ftp://ftp.funet.fi/pub/mirrors/ftp.kernel.org/pub/"
"http://ftp.be.debian.org/pub/"
"http://mirror.linux.org.au/")
(apache ; from http://www.apache.org/mirrors/dist.html
"http://www.eu.apache.org/dist/"
"http://www.us.apache.org/dist/"
@@ -210,27 +211,22 @@ must be a list of symbol/URL-list pairs."
((url ...)
(any https? url)))))
(let*-values (((gnutls-drv-path gnutls-drv)
(if need-gnutls?
(gnutls-derivation store system)
(values #f #f)))
((gnutls)
(and gnutls-drv
(derivation-output-path
(assoc-ref (derivation-outputs gnutls-drv)
"out"))))
((env-vars)
(if gnutls
(let ((dir (string-append gnutls "/share/guile/site")))
;; XXX: `GUILE_LOAD_COMPILED_PATH' is overridden
;; by `build-expression->derivation', so we can't
;; set it here.
`(("GUILE_LOAD_PATH" . ,dir)))
'())))
(let* ((gnutls-drv (if need-gnutls?
(gnutls-derivation store system)
(values #f #f)))
(gnutls (and gnutls-drv
(derivation->output-path gnutls-drv "out")))
(env-vars (if gnutls
(let ((dir (string-append gnutls "/share/guile/site")))
;; XXX: `GUILE_LOAD_COMPILED_PATH' is overridden
;; by `build-expression->derivation', so we can't
;; set it here.
`(("GUILE_LOAD_PATH" . ,dir)))
'())))
(build-expression->derivation store (or name file-name) system
builder
(if gnutls-drv
`(("gnutls" ,gnutls-drv-path))
`(("gnutls" ,gnutls-drv))
'())
#:hash-algo hash-algo
#:hash hash

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