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

Compare commits

..

254 Commits

Author SHA1 Message Date
Ludovic Courtès 3253830d46 Update NEWS. 2013-07-17 15:33:48 +02:00
Ludovic Courtès 6023cc7429 gnu: linux-libre: Add alternate URLs.
Fixes <http://bugs.gnu.org/14851>.
Reported by Andreas Enge <andreas@enge.fr>.

* gnu/packages/linux.scm (linux-libre-urls): New procedure.
  (linux-libre-headers, linux-libre): Use it.
2013-07-17 15:32:52 +02:00
Ludovic Courtès 1855577207 gnu: tzdata: Update hash.
Fixes <http://bugs.gnu.org/14890>.
Reported by Andreas Enge <andreas@enge.fr>.

* gnu/packages/base.scm (tzdata): Update hash.
2013-07-17 14:22:05 +02:00
Ludovic Courtès b81e194706 doc: Add "Adding New Packages".
* doc/guix.texi (Adding New Packages): New section.
  (Packaging Guidelines): Make a subsection thereof.
  (From the Source Tarball to the Package): New subsection.
  (Contributing): Link to "Adding New Packages".
  (Package Modules): Link to modules in Guile's manual.
2013-07-17 11:59:48 +02:00
Ludovic Courtès c71493c8b9 build: Check the availability of i686-linux binaries.
* build-aux/check-available-binaries.scm (%supported-systems): New
  variable.
  (native): Map over these.
2013-07-17 11:07:28 +02:00
Ludovic Courtès 1959fb04dc build: Provide a replacement (srfi srfi-37) when the user's one is broken.
* srfi/srfi-37.scm.in: New file, taken from Guile 2.0.9.
* m4/guix.m4: New macro.
* configure.ac: Use it.  Define Automake conditional `INSTALL_SRFI_37'.
* Makefile.am (nobase_nodist_guilemodule_DATA)[INSTALL_SRFI_37]: Add
  srfi/srfi-37.scm.
  (GOBJECTS)[INSTALL_SRFI_37]: Add srfi/srfi-37.go.
  (srfi/srfi-37.scm)[INSTALL_SRFI_37]: New target.
  (EXTRA_DIST): Add srfi/srfi-37.scm.in.
2013-07-17 11:05:19 +02:00
Ludovic Courtès 4a328f7342 doc: Mark 2.0.5 as being the minimum Guile version.
* doc/guix.texi (Requirements): Require Guile 2.0.5+.
* README: Ditto.
2013-07-17 11:01:42 +02:00
Ludovic Courtès 88ebd5e699 Update .po files. 2013-07-17 11:00:28 +02:00
Ludovic Courtès 5939006b9b Update NEWS. 2013-07-16 23:46:01 +02:00
Ludovic Courtès 63f6004b95 doc: Refer to guix-devel@gnu.org.
* doc/guix.texi (Contributing): Refer to guix-devel@gnu.org.
2013-07-16 23:13:04 +02:00
Ludovic Courtès e23dc82c29 gnu: subversion: Fetch over plain HTTP.
* gnu/packages/version-control.scm (subversion): Use the http:// URL
  to work around <http://bugs.gnu.org/14884>.  Reported by Mark Weaver
  and Andreas Enge.
2013-07-16 23:12:38 +02:00
Ludovic Courtès 73d9f3c5b6 list-packages: Add links to hydra.gnu.org.
* build-aux/list-packages.scm (package->sxml)[status]: New procedure.
  Use it at the end of each description.
  (packages->sxml): Add link to hydra.gnu.org.
2013-07-16 22:28:06 +02:00
Ludovic Courtès c5a1902ae4 gnu: libphidget: Add "debug" output.
* gnu/packages/libphidget.scm (libphidget): Add `outputs' field.
2013-07-16 22:15:23 +02:00
Ludovic Courtès 4ec09bb410 hydra: Fix typo.
* build-aux/hydra/gnu-system.scm (hydra-jobs): Use `cons', not `append'.
2013-07-16 15:27:15 +02:00
Ludovic Courtès 77bed84246 hydra: Build for all the specified systems.
* build-aux/hydra/gnu-system.scm (hydra-jobs): Pick all the `system'
  keys in ARGUMENTS.
  [cross-jobs]: Turn into a procedure, with a `system' parameter.
  Build packages for all of SYSTEMS and %CROSS-TARGETS.
2013-07-16 13:42:34 +02:00
Ludovic Courtès 195e81aa52 hydra: Distinguish between jobs for different system types.
* build-aux/hydra/gnu-system.scm (package-job, package-cross-job):
  Append `.SYSTEM' to the job name.
2013-07-16 09:59:25 +02:00
Ludovic Courtès 4b7f3407e9 hydra: Honor the `system' argument.
* build-aux/hydra/gnu-system.scm (hydra-jobs): Really look up the
  `system' symbol in ARGUMENTS.
2013-07-16 09:47:48 +02:00
Andreas Enge d409c8ab88 gnu: libapr, libaprutil: Upgrade.
* gnu/packages/libapr.scm (libapr): Upgrade to 1.4.8.
* gnu/packages/libapr.scm (libaprutil): Upgrade to 1.5.2.
2013-07-16 07:50:34 +02:00
Ludovic Courtès 079d127391 guix package: Allow separate install of several outputs of the same package.
* guix/scripts/package.scm (guix-package)[process-actions](same-package?):
  New procedure.  Use it instead of `alist-delete' when filtering out
  duplicate packages from the profile.
2013-07-15 23:51:28 +02:00
Ludovic Courtès 56fbf2629f build: Check for the availability of binaries upon "distcheck".
* build-aux/check-available-binaries.scm: New file.
* Makefile.am (EXTRA_DIST): Add it.
  (distcheck-hook, assert-binaries-available): New target.
2013-07-15 23:51:28 +02:00
Ludovic Courtès 50af57901a Thank the translators. 2013-07-15 23:51:27 +02:00
Ludovic Courtès a0daf4a04e Add `pt_BR' translation. 2013-07-15 23:51:27 +02:00
Andreas Enge 4169a4bcb5 gnu: pango, gtk+: Propagate inputs.
* gnu/packages/gtk.scm (pango): Propagate input cairo.
* gnu/packages/gtk.scm (gtk+): Propagate inputs atk, gdk-pixbuf and pango;
    drop input cairo, propagated through pango.
2013-07-15 23:15:45 +02:00
Andreas Enge cf2135ff48 Add gtk+.
* gnu/packages/gtk.scm (pango): Propagate input harfbuzz.
* gnu/packages/gtk.scm (gtk+): New variable.
2013-07-15 22:41:19 +02:00
Ludovic Courtès ffd2093440 gnu: make-bootstrap: Skip tests for the statically-linked gawk.
* gnu/packages/make-bootstrap.scm (%static-inputs)[gawk]: Add #:tests? #f.
2013-07-14 16:58:43 +02:00
Ludovic Courtès 614bdaffbf Update `eo.po'. 2013-07-14 16:44:15 +02:00
Ludovic Courtès 3b8258c569 Rename (guix web) to (guix http-client).
* guix/web.scm: Rename to...
* guix/http-client.scm: ... this.
* guix/gnu-maintenance.scm, guix/scripts/substitute-binary.scm,
  Makefile.am, po/POTFILES.in: Update accordingly.
2013-07-14 16:44:15 +02:00
Nikita Karetnikov 84dbbc7651 doc: Add "Building from Git" to 'HACKING'. 2013-07-13 21:35:14 +00:00
Ludovic Courtès 2096b516e0 guix package: Fix handling of `-e'.
This fixes a bug whereby a command like

  guix package -e '(@@ (gnu packages base) gnu-make-boot0)'

would only succeed when the outputs of that package are available, and
otherwise fail with "/nix/store/... is not valid".

* guix/scripts/package.scm (guix-package)[process-action](package->tuple):
  Leave P as is in the result.  Move `package->tuple' call from INSTALL*
  to INSTALL.
2013-07-12 23:27:35 +02:00
Ludovic Courtès e14c39291b ui: Ignore SIGPIPE and catch `system-error' exceptions.
* guix/ui.scm (initialize-guix): Call `sigaction'.
  (call-with-error-handling): Wrap `thunk' in a (catch 'system-error ...).
2013-07-12 23:01:18 +02:00
Ludovic Courtès e3ccdf9e96 guix package: Reuse FTP connections for subsequent `latest-release' calls.
* guix/gnu-maintenance.scm (latest-release): Add `ftp-close' and
  `ftp-open' keyword parameters.
* guix/scripts/package.scm (ftp-open*): New variable.
  (check-package-freshness): Call `latest-release' with `ftp-open*' and
  a no-op procedure.
2013-07-12 22:59:33 +02:00
Ludovic Courtès 1f495e04c1 gnu-maintenance: `latest-release' closes its connection.
* guix/gnu-maintenance.scm (latest-release): Close CONN before
  returning.
2013-07-12 22:26:24 +02:00
Ludovic Courtès 8e5e7299d1 gnu: plotutils: Allow compilation with newer libpng.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/patches/plotutils-libpng-jmpbuf.patch: New file.
* gnu/packages/plotutils.scm (plotutils): Add
  `plotutils-libpng-jmpbuf.patch' as an input, and apply it.
2013-07-12 22:25:30 +02:00
Ludovic Courtès f50ad3e777 gnu: freeipmi: Upgrade to 1.2.8.
* gnu/packages/freeipmi.scm (freeipmi): Upgrade to 1.2.8.
2013-07-12 01:05:27 +02:00
Ludovic Courtès d4781e8c23 gnu: libidn: Upgrade to 1.28.
* gnu/packages/libidn.scm (libidn): Upgrade to 1.28.
2013-07-12 01:05:06 +02:00
Ludovic Courtès e0bb2e6be1 gnu: gnupg: Upgrade support libraries.
* gnu/packages/gnupg.scm (libgpg-error): Upgrade to 1.12.
  (libassuan): Upgrade to 2.1.1.
2013-07-12 01:04:32 +02:00
Ludovic Courtès ce689ccf18 substitute-binary: Directly replace the global `regexp-exec'.
* guix/scripts/substitute-binary.scm (%regexp-exec-mutex, string->uri):
  Remove.
  (regexp-exec): Replace this global binding by a thread-safety wrapper.
  (fields->alist): Remove `with-mutex', and directly alias `recutils->alist'.
2013-07-11 22:42:41 +02:00
Ludovic Courtès 6a012c5f51 gnu: help2man: Upgrade to 1.43.3.
* gnu/packages/help2man.scm (help2man): Upgrade to 1.43.3.
2013-07-11 22:30:46 +02:00
Ludovic Courtès d934fd65af gnu: xorriso: Upgrade to 1.3.0.
* gnu/packages/cdrom.scm (xorriso): Upgrade to 1.3.0.
2013-07-11 22:30:13 +02:00
Ludovic Courtès 8b79e2e641 substitute-binary: Increase the default timeout.
* guix/scripts/substitute-binary.scm (%fetch-timeout): Set to 5 seconds.
2013-07-11 22:22:22 +02:00
Ludovic Courtès 35935b8a1d gnu: automake: Upgrade to 1.14.
* gnu/packages/autotools.scm (automake): Upgrade to 1.14.
2013-07-11 22:21:47 +02:00
Ludovic Courtès 560d4787f4 guix refresh: Keep only the newest versions of packages as upgrade candidates.
* guix/scripts/refresh.scm (guix-refresh)[keep-newest]: New procedure.
  Use it to keep only once copy of each package.
2013-07-11 19:56:30 +02:00
Ludovic Courtès d04434c067 list-packages: Show the package logo, when available.
* build-aux/list-packages.scm (lookup-gnu-package): New procedure.
  (package->sxml): Add the package logo, when available, next to the
  description.
2013-07-10 23:16:07 +02:00
Ludovic Courtès 6a3380dfbf Update eo.po. 2013-07-10 22:34:05 +02:00
Ludovic Courtès c4ca9411f9 gnu-maintenance: Add `doc-description' field to <gnu-package-descriptor>.
* guix/gnu-maintenance.scm (%gsrc-package-list-url): New variable.
  (<gnu-package-descriptor>): Add `doc-description' field.
  (official-gnu-packages)[group-package-fields]: Rename to...
  [read-records]: ... this.  Reverse the result.
  [gsrc-description]: New procedure.
  Add the "description" field to the alist passed to `alist->record'.
2013-07-10 22:34:03 +02:00
Ludovic Courtès 836d10f154 records: recutils->alist' recognizes lines starting with a +'.
* guix/records.scm (%recutils-plus-rx): New variable.
  (recutils->alist): Use it to read + lines.
* tests/records.scm ("recutils->alist with + lines"): New test.
2013-07-10 21:53:29 +02:00
Ludovic Courtès b0efe83a8f gnu-maintenance: Use `recutils->alist'.
* guix/gnu-maintenance.scm (official-gnu-packages)[group-package-fields]:
  Rewrite in terms of `recutils->alist'.  Remove `state' parameter.
  Specify "doc-url" and "language" as multiple-value keys in the
  `alist->record' call.
2013-07-10 21:52:55 +02:00
Ludovic Courtès c8772a7a21 records: `alist->record' supports multiple-field occurrences.
* guix/records.scm (alist->record): Add `multiple-value-keys'
  parameter.  Update docstring, and honor it.
* tests/records.scm ("alist->record"): New record.
2013-07-10 21:52:51 +02:00
Ludovic Courtès b7b8828801 records: `recutils->alist' recognizes comments.
* guix/records.scm (%recutils-comment-rx): New variable.
  (recutils->alist): Match comments.
* tests/records.scm ("recutils->alist"): Add comments.
2013-07-10 18:01:12 +02:00
Ludovic Courtès fdc1bf659d records: Add `recutils->alist' for public consumption.
* guix/records.scm (%recutils-field-rx): New variable.
  (recutils->alist): New procedure, formerly known as `fields->alist'.
* guix/scripts/substitute-binary.scm (fields->alist): Use it.
* tests/records.scm ("recutils->alist"): New test.
2013-07-10 17:01:08 +02:00
Ludovic Courtès c0edcc3c19 gnu: libpng: Upgrade to 1.5.17.
* gnu/packages/libpng.scm (libpng): Upgrade to 1.5.17.
2013-07-10 15:55:39 +02:00
Ludovic Courtès edd258fd6b list-packages: Write out the HTML page as UTF-8.
* build-aux/list-packages.scm (list-packages): Install the "C" locale.
  Write out as UTF-8.
2013-07-10 11:52:35 +02:00
Ludovic Courtès 03aedf8d7a tests: Fix guix-package.sh in the presence of multiple-output `make'.
* tests/guix-package.sh: For $boot_make_drv, take only the "out" output.
  Reported by Nikita Karetnikov <nikita@karetnikov.org>.
2013-07-10 01:00:19 +02:00
Ludovic Courtès b592f7113e Add `build-aux/list-packages.scm'.
* build-aux/list-packages.scm: New file.
* Makefile.am (EXTRA_DIST): Add it.
2013-07-10 00:27:53 +02:00
Ludovic Courtès c769406010 Merge branch 'core-updates' 2013-07-09 22:17:18 +02:00
Ludovic Courtès 91ef73d464 doc: Add "Installing Debugging Files".
* doc/guix.texi (Installing Debugging Files): New node.
  (Packages with Multiple Outputs): Add cross-reference.
2013-07-09 00:24:54 +02:00
Ludovic Courtès 6e721c4d02 doc: Add "Packages with Multiple Outputs" section.
* doc/guix.texi (Packages with Multiple Outputs): New node.
  (Invoking guix package): Refer to it.
2013-07-08 23:49:43 +02:00
Ludovic Courtès ee48b283fa tests: Adjust `package-field-location' test for Guile <= 2.0.6.
* tests/packages.scm ("package-field-location"): Check the result of
  `read-at' against both VALUE and (FIELD VALUE).
  Reported by Matthew Lien - 練喆明" <bluet@bluet.org>.
2013-07-08 22:53:31 +02:00
Ludovic Courtès caddc24fa4 build: Set the umask to 0022 before running the daemon for tests.
* test-env.in: Run "umask 0022" before running the daemon.
  Reported by Matthew Lien - 練喆明 <bluet@bluet.org>
2013-07-08 22:43:53 +02:00
Ludovic Courtès 4ca0cefd1b build: Set the umask to 0022 before running the daemon for tests.
* test-env.in: Run "umask 0022" before running the daemon.
  Reported by Matthew Lien - 練喆明 <bluet@bluet.org>
2013-07-08 22:37:02 +02:00
Ludovic Courtès 2c9143a1f3 gnu: gettext: Upgrade to 0.18.3.
* gnu/packages/gettext.scm (gettext): Upgrade to 0.18.3.
  Remove patch.  Change `patch-tests' phase to use (which "sh'); keep it
  regardless of whether we're cross compiling.
2013-07-08 00:13:15 +02:00
Ludovic Courtès acf428dd0b gnu: tzdata: Upgrade to 2013d.
* gnu/packages/base.scm (tzdata): Upgrade to 2013d.
2013-07-07 23:40:36 +02:00
Ludovic Courtès b208a00501 doc: Move the packaging guidelines to the manual.
* HACKING (Packaging Guidelines): Remove.
* doc/guix.texi (Packaging Guidelines): New node.
2013-07-07 23:26:31 +02:00
Ludovic Courtès 8b315a6dd5 doc: Add a "Porting" section.
* HACKING (Porting the Guix distro on a new platform): Remove.
* doc/guix.texi (Porting): New node.  Describe cross-compilation as the
  only approach.
2013-07-07 01:03:03 +02:00
Ludovic Courtès 401c53c469 doc: Add a "Boostrapping" section.
* doc/guix.texi (Package Modules): New node, with material formerly
  under "GNU Distribution".
  (Bootstrapping): New node.
* Makefile.am (EXTRA_DIST): Add doc/images/bootstrap-graph.dot and
  doc/images/bootstrap-graph.eps.
  (infoimagedir, dist_infoimage_DATA, DOT_OPTIONS): New variable.
  (.dot.png, .dot.eps, doc/guix.pdf, doc/guix.info, doc/guix.ps): New
  targets.
* doc/images/bootstrap-graph.dot: New file.
2013-07-07 00:29:50 +02:00
Ludovic Courtès c8ebc82187 gnu: gcc: Add Texinfo to the native inputs.
* gnu/packages/gcc.scm (gcc-4.7): Add `native-inputs' field.
  (gcc-4.8): Remove outdated comment.
* gnu/packages/base.scm (gcc-boot0): Add `native-inputs' field.
2013-07-06 18:08:29 +02:00
Ludovic Courtès b97556d75c build: Bail out on unsupported platforms; add `--with-courage'.
* m4/guix.m4 (GUIX_ASSERT_SUPPORTED_SYSTEM): New macro.
* configure.ac: Use it.
2013-07-05 21:54:52 +02:00
Ludovic Courtès 3a4ebc1124 gnu: make-bootstrap: guile-static-stripped has no "debug" output.
* gnu/packages/make-bootstrap.scm (%guile-static-stripped): Add
  `outputs' field.
2013-07-05 14:39:47 +02:00
Ludovic Courtès eb25a30a42 build: Correctly determine the system type for non-Linux systems.
* m4/guix.m4 (GUIX_SYSTEM_TYPE): Find `sed'.  Fix sed pattern in the
  non-Linux case.
2013-07-05 14:14:21 +02:00
Ludovic Courtès 8c95b27ce6 store: Deal with unsupported `setsockopt' operation on GNU/Hurd.
* guix/store.scm (open-connection): Silently ignore ENOPROTOOPT on
  `setsockopt' calls, for the sake of GNU/Hurd.
  Reported by Matthew Lien <bluet@bluet.org> at
  <http://lists.gnu.org/archive/html/bug-guix/2013-07/msg00020.html>.
2013-07-04 22:49:00 +02:00
Ludovic Courtès 5363abb776 daemon: Make argp usage compatible with libc on GNU/Hurd.
* nix/nix-daemon/guix-daemon.cc (parse_opt): Cast return value to
  `error_t' for the sake of GNU/Hurd.
  Reported by Matthew Lien <bluet@bluet.org> at
  <http://lists.gnu.org/archive/html/bug-guix/2013-07/msg00002.html>.
2013-07-04 22:46:26 +02:00
Ludovic Courtès a1c39ede7d Import (guix hash) in build-aux/download.scm.
* build-aux/download.scm: Import (guix hash).
  Reported by Matthew Lien <bluet@bluet.org>.
2013-07-04 13:44:24 +02:00
Ludovic Courtès 82f9b17687 build-system/gnu: Remove the "debug" output when `strip-binaries?' is #f.
* guix/build-system/gnu.scm (gnu-build, gnu-cross-build): Delete "debug"
  from OUTPUTS when STRIP-BINARIES? is false.
* gnu/packages/cross-base.scm (cross-libc): Leave `outputs' unchanged.
  This reverts commit a4627d4.
2013-07-04 13:26:35 +02:00
Ludovic Courtès a4627d498a gnu: cross-libc: Remove the "debug" output.
* gnu/packages/cross-base.scm (cross-libc): Remove "debug" from the
  `outputs' field.
2013-07-04 11:08:28 +02:00
Ludovic Courtès 9bf62d9b1d gnu: Add a "debug" output for some packages.
* gnu/packages/base.scm (coreutils, gnu-make, glibc): Add a "debug" output.
* gnu/packages/bdw-gc.scm (libgc): Likewise.
* gnu/packages/guile.scm (guile-2.0): Likewise.
* gnu/packages/libffi.scm (libffi): Likewise.
* gnu/packages/multiprecision.scm (gmp, mpfr, mpc): Likewise.
2013-07-03 23:55:04 +02:00
Ludovic Courtès be58d01a7e build-system/gnu: Write debug files to the "debug" sub-derivation, if any.
* guix/build/gnu-build-system.scm (strip): Add `objcopy-command' keyword
  parameter.
  [debug-output, debug-file-extension]: New variables.
  [debug-file, make-debug-file, add-debug-link]: New procedures.
  [strip-dir]: Use them.
2013-07-03 23:53:31 +02:00
Ludovic Courtès d475b25953 utils: Re-export alist-cons' and alist-delete'.
* guix/build/utils.scm: Re-export `alist-cons' and `alist-delete'.
2013-07-03 23:08:41 +02:00
Ludovic Courtès 6d73e17bb4 gnu: Add noweb.
* gnu/packages/noweb.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2013-07-03 15:10:34 +02:00
Ludovic Courtès 2b2fdd45bb gnu: qemu: Upgrade to 1.5.1.
* gnu/packages/qemu.scm (qemu-kvm): Add `--cc' configure option.
  Add PIXMAN and ALSA-LIB as inputs.
  (qemu): Upgrade to 1.5.1  Remove autotool hack for pixman.  Patch
  tests/libqtest.c.  Remove Autoconf, Automake, and Libtool from the
  inputs.  Fix `home-page'.
2013-07-03 01:18:28 +02:00
Ludovic Courtès 423002544d Update NEWS' and TODO'. 2013-07-03 01:18:28 +02:00
Ludovic Courtès b0fad8a2d4 Use port-sha256' and open-sha256-port'.
* guix/derivations.scm (derivation-hash): Add comment as to why we keep
  the plain `sha256' call.
* guix/scripts/download.scm (guix-download): Use `port-sha256' instead
  of (compose sha256 get-bytevector-all).
* guix/scripts/refresh.scm (update-package): Likewise.
2013-07-03 01:18:24 +02:00
Ludovic Courtès 69927e78de hash: Add `open-sha256-port'.
* guix/hash.scm (GCRY_MD_SHA256): New macro.
  (sha256): Use it.
  (open-sha256-md, md-write, md-read, md-close, open-sha256-port,
  port-sha256): New procedures.
* tests/hash.scm: New file.
* Makefile.am (SCM_TESTS): Add it.
2013-07-02 22:38:03 +02:00
Ludovic Courtès 72626a71a9 Move `sha256' to (guix hash).
* guix/utils.scm (sha256): Move to...
* guix/hash.scm: ... here.  New file.
* Makefile.am (MODULES): Add it.
* guix/derivations.scm, guix/scripts/download.scm,
  guix/scripts/hash.scm, guix/scripts/refresh.scm, tests/base32.scm,
  tests/derivations.scm, tests/store.scm: Use (guix hash).
2013-07-01 23:28:21 +02:00
Ludovic Courtès 82323a8085 gnu: liboop: Fix & improve meta-data.
* gnu/packages/lsh.scm (liboop): Fix home page.  Improve `synopsis' and
  `description'.  Thanks to carl hansen <carlhansen1234@gmail.com>, who
  raised it on bug-gsrc@gnu.org.
2013-07-01 11:43:23 +02:00
Ludovic Courtès 1a8b783470 ui: Don't make substituter-related RPCs at all when substitutes are disabled.
Reported by Nikita Karetnikov and Cyril Roelandt.

* guix/ui.scm (show-what-to-build): Call `substitutable-path-info'
  only when USE-SUBSTITUTES? is true.
2013-07-01 00:30:44 +02:00
Ludovic Courtès a4572a1720 gnu: Add GNU vc-dwim.
* gnu/packages/version-control.scm (vc-dwim): New variable.
2013-07-01 00:18:36 +02:00
Ludovic Courtès d3066a0d13 gnu: Add GNU Rush.
* gnu/packages/rush.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
2013-06-29 22:20:25 +02:00
Ludovic Courtès bb7dcaea57 substitute-binary: Avoid dangling connections to the server.
* guix/web.scm (open-socket-for-uri): New procedure.
  (http-fetch): Add `port' keyword parameter; use it.
* guix/scripts/substitute-binary.scm (%random-state): New variable.
  (with-timeout): Wait a little before retrying.
  (fetch): Use `open-socket-for-uri', and keep a copy of the socket in
  variable `port'.  Close PORT upon timeout.
2013-06-29 22:20:25 +02:00
Cyril Roelandt 013ce67b19 gnutls: fix the test-suite for 32 bits systems.
* gnu/packages/patches/gnutls-fix-tests-on-32-bits-system.patch: New file.
* gnu-system.am: Add it here...
* gnu/packages/gnutls.scm (gnutls): ... and use it here.

Thanks to Nikos Mavrogiannopoulos for providing this patch:
http://permalink.gmane.org/gmane.comp.encryption.gpg.gnutls.devel/6778
2013-06-28 17:26:49 +02:00
Ludovic Courtès 88a0b7b051 gnu: lout: Upgrade to 3.40.
* gnu/packages/lout.scm (lout): Upgrade to 3.40.
2013-06-27 22:36:41 +02:00
Ludovic Courtès 3bba7b0a8f download: Add Savannah's master site.
* guix/download.scm (%mirrors): Add the "-noredirect" version of
  Savannah.
2013-06-27 22:36:23 +02:00
Ludovic Courtès 96a8259a9d gnu: lsh: Upgrade to 2.1.
* gnu/packages/lsh.scm (lsh): Upgrade to 2.1.  Add Nettle as an input.
  Remove now unneeded patches.
* gnu/packages/patches/lsh-guile-compat.patch,
  gnu/packages/patches/lsh-no-root-login.patch,
  gnu/packages/patches/lsh-pam-service-name.patch: Remove.
* gnu-system.am (dist_patch_DATA): Remove them.
2013-06-27 22:27:26 +02:00
Ludovic Courtès ca16cb9606 gnu: gcc: Use `gcc-configure-flags-for-triplet' when cross-compiling GCC.
* gnu/packages/cross-base.scm (gcc-configure-flags-for-triplet): Move to...
* gnu/packages/gcc.scm (gcc-configure-flags-for-triplet): ... here.  New
  procedure.
  (gcc-4.7): Use it when (%current-target-system) is true.
2013-06-26 23:02:49 +02:00
Ludovic Courtès 58ab9f9b8e build: Add "mips64el-linux-gnuabi64" as a cross build target.
* build-aux/hydra/gnu-system.scm (%packages-to-cross-build): Add
  %bootstrap-tarballs.
  (%cross-targets): Add "mips64el-linux-gnuabi64".
2013-06-26 22:41:09 +02:00
Ludovic Courtès beda99e882 gnu: cross-base: Add support for `mips64el-linux-gnu-gnuabi64' (N64 ABI).
* gnu/packages/cross-base.scm (gcc-configure-flags-for-triplet): New
  procedure.
  (cross-gcc): Use it.
  (xgcc-mips64el): Use *-gnuabi64 instead of the N32 ABI.
2013-06-26 22:39:21 +02:00
Ludovic Courtès 5708485357 gnu: make-bootstrap: Fix cross compilation of binutils-static.
* gnu/packages/make-bootstrap.scm (%binutils-static): Inherit configure
  flags from BINUTILS.
2013-06-26 17:23:56 +02:00
Ludovic Courtès 11acdf1747 gnu: make-bootstrap: Have %gcc-static actually static when cross building.
* gnu/packages/make-bootstrap.scm (%gcc-static): Pass `-static' through
  `LDFLAGS' when cross-compiling.
2013-06-26 17:01:10 +02:00
Ludovic Courtès de1d41f980 gnu: gcc: Allow cross-compilation of GCC itself.
* gnu/packages/gcc.scm (gcc-4.7): Define `CC_FOR_TARGET',
  `AR_FOR_TARGET', etc. when cross-compiling.
2013-06-26 16:51:39 +02:00
Ludovic Courtès e7133c7680 gnu: cross-base: Make `glibc-dynamic-linker' do the right thing.
* gnu/packages/bootstrap.scm (glibc-dynamic-linker): Determine SYSTEM
  based on (%current-target-system) when it's true.
* gnu/packages/cross-base.scm (cross-gcc): Directly call
  (package-arguments gcc-4.7) from the body of `arguments'.
2013-06-26 16:27:51 +02:00
Ludovic Courtès c8fa51f2d6 gnu: cross-base: Build Binutils with `--with-sysroot=/'.
* gnu/packages/cross-base.scm (cross-binutils): Use `--with-sysroot=/'.
2013-06-26 14:31:24 +02:00
Ludovic Courtès 9306d350b2 build: Build the bootstrap tarballs on Hydra.
* build-aux/hydra/gnu-system.scm (%packages-to-cross-build): Uncomment
  the bootstrap tarball packages.
2013-06-25 23:45:34 +02:00
Ludovic Courtès a410a0105d gnu: make-bootstrap: Allow cross-compilation of the bootstrap tarballs.
* gnu/packages/make-bootstrap.scm (package-with-relocatable-glibc): Turn
  `inputs' into a thunk.  Add `native-inputs', and pass it to
  `package-with-explicit-inputs'.
  (%static-inputs): Add %BASH-STATIC as an input to gawk when cross
  building.
  (%glibc-stripped): When cross compiling,
  use (glibc-for-bootstrap (cross-libc)) as the basis.
  (%gcc-static): Base on GCC-4.7, not GCC-FINAL.
  (tarball-package): TAR and XZ are native inputs.  Choose the tarball
  file name based on (%current-target-system) too.
2013-06-25 23:39:14 +02:00
Ludovic Courtès a3cff41dd1 build-system/gnu: `package-with-explicit-inputs' skips non-GBS packages.
* guix/build-system/gnu.scm (package-with-explicit-inputs)[rewritten-input]:
  Leave P unchanged if its build system is not GNU-BUILD-SYSTEM.
2013-06-25 23:04:32 +02:00
Ludovic Courtès 0de71c233c gnu: cross-base: Make the cross tools native inputs.
* gnu/packages/cross-base.scm (cross-gcc): Change `inputs' to
  `native-inputs', and set `inputs' to the empty list.
  (cross-libc): Likewise.
2013-06-25 20:57:14 +02:00
Ludovic Courtès 7e873a6708 build-system/gnu: Augment `package-with-explicit-inputs' for cross builds.
* guix/build-system/gnu.scm (package-with-explicit-inputs): Add
  `native-inputs' keyword parameter.  Allow INPUTS and NATIVE-INPUTS to
  be thunks.
2013-06-25 20:54:56 +02:00
Ludovic Courtès 6e1c4093d2 gnu: bigloo: Explicitly link libbigloopthread against libgc.
* gnu/packages/scheme.scm (bigloo): In `configure' phase, change
  api/thread/src/Makefile to explicitly link against libgc.
2013-06-25 20:31:10 +02:00
Ludovic Courtès ac5c1cec86 build-system/trivial: Don't bind `%target' in the builder.
* guix/build-system/trivial.scm (trivial-cross-build): Don't bind
  `%target' here since this causes problem when BUILDER
  contains (use-modules ...) clauses, and can be achieved differently
  anyway.
2013-06-25 00:06:31 +02:00
Ludovic Courtès 1e4310f1f2 gnu: gawk: Allow cross-compilation.
* gnu/packages/gawk.scm (gawk)[arguments]: Annihilate the
  `check-for-shared-lib-support' target when cross-compiling.
2013-06-25 00:00:09 +02:00
Ludovic Courtès f7c3429073 build-system/gnu: Disable test suite when cross building.
* guix/build-system/gnu.scm (gnu-cross-build): Change #:tests? to
  default to #f.
2013-06-24 23:26:50 +02:00
Andreas Enge 527e796125 gnu: Add gdk-pixbuf.
* gnu/packages/gtk.scm (gdk-pixbuf): New variable.
2013-06-23 22:03:57 +02:00
Ludovic Courtès ea2ddd3334 gnu: ed: Upgrade to 1.9.
* gnu/packages/ed.scm (ed): Upgrade to 1.9.
2013-06-22 19:03:35 +02:00
Ludovic Courtès 2c034e1bd0 gnu: gcc-4.8: Upgrade to 4.8.1.
* gnu/packages/gcc.scm (gcc-4.8): Upgrade to 4.8.1.
2013-06-22 19:03:10 +02:00
Ludovic Courtès a62b83d52f gnu: libffi: Upgrade to 3.0.13.
* gnu/packages/libffi.scm (libffi): Upgrade to 3.0.13.
2013-06-22 16:47:09 +02:00
Ludovic Courtès b15669f37d utils: set-path-environment-variable' calls unsetenv' for empty values.
* guix/build/utils.scm (set-path-environment-variable): When VALUE is
  the empty string, call `unsetenv' instead of `setenv'.
* gnu/packages/guile.scm (guile-2.0)[arguments]: Remove `unsetenv'
  trick.
2013-06-22 16:42:46 +02:00
Ludovic Courtès ee26820636 gnu: acl, attr: Make `gettext' a native input.
* gnu/packages/acl.scm (acl): Make `gettext' a native input, always.
* gnu/packages/attr.scm (attr): Likewise.
2013-06-22 16:32:30 +02:00
Ludovic Courtès 8572bf5e0c gnu: gmp: Upgrade to 5.1.2.
* gnu/packages/multiprecision.scm (gmp): Update to 5.1.2.
2013-06-22 16:29:40 +02:00
Ludovic Courtès d16368cf41 gnu: gawk: Upgrade to 4.1.0.
* gnu/packages/gawk.scm (gawk): Update to 4.1.0.  Remove wrong-headed
  comments.
2013-06-22 16:29:19 +02:00
Ludovic Courtès 2a511f7a1a gnu: gzip: Upgrade to 1.6.
* gnu/packages/compression.scm (gzip): Upgrade.
2013-06-22 16:27:13 +02:00
Ludovic Courtès 2f41f51c40 build-system/gnu: Set #:tests? to #f when cross-compiling.
* guix/build/gnu-build-system.scm (check): Add `target' formal
  parameter.  Change `tests?' to default to (not target).
2013-06-22 16:15:23 +02:00
Ludovic Courtès 91a7fde456 download: Don't fail when abbreviating `file://' URIs.
* guix/build/download.scm (uri-abbreviation)[elide-path]: Handle the
  case where URI has no `host' part.
2013-06-22 16:10:25 +02:00
Ludovic Courtès 4ca968eb95 build-system/gnu: Save `environment-variables' after each phase.
* guix/build/gnu-build-system.scm (set-paths): Move `system' call to...
  (gnu-build): ... here.
2013-06-21 00:32:07 +02:00
Ludovic Courtès 56c092ce94 build-system/gnu: Unify with (guix build-system gnu-cross-build).
* guix/build/gnu-build-system.scm (set-paths): Add `native-inputs' and
  `native-search-paths' keyword parameters.  Honor them.
  (configure): Add `target' and `native-inputs' keyword parameters.
  Look for Bash in NATIVE-INPUTS or INPUTS.  Pass `--host' when TARGET
  is true.
  (strip): Add `strip-command' keyword parameter.  Use it.
* guix/build/gnu-cross-build.scm: Remove.
* Makefile.am (MODULES): Adjust accordingly.
* gnu/packages/acl.scm, gnu/packages/attr.scm, gnu/packages/base.scm,
  gnu/packages/bash.scm, gnu/packages/gawk.scm,
  gnu/packages/gettext.scm, gnu/packages/guile.scm,
  gnu/packages/libffi.scm, gnu/packages/libsigsegv.scm,
  gnu/packages/linux.scm, gnu/packages/ncurses.scm,
  gnu/packages/readline.scm, guix/build-system/gnu.scm: Replace
  `%standard-cross-phases' by `%standard-phases'.  Remove references
  to (guix build gnu-cross-build).
2013-06-21 00:25:54 +02:00
Ludovic Courtès d501fad11c Merge branch 'master' into core-updates
Conflicts:
	gnu/packages/make-bootstrap.scm
2013-06-20 23:51:00 +02:00
Ludovic Courtès 4db00e4210 gnu: libgc: Always build with -DUSE_LIBC_PRIVATES.
* gnu/packages/bdw-gc.scm (libgc): Add `arguments' field.
* gnu/packages/make-bootstrap.scm (%guile-static): Remove local `libgc'.
2013-06-20 23:47:22 +02:00
Ludovic Courtès fba96c4885 gnu: libgc: Switch to 7.2d.
* gnu/packages/bdw-gc.scm (libgc): Upgrade to 7.2d.
  (libgc-7.2): Remove.
2013-06-20 23:45:41 +02:00
Ludovic Courtès f3211ef386 build: Move Hydra recipe to build-aux/hydra.
* hydra.scm: Rename to...
* build-aux/hydra/gnu-system.scm: ... this.
* Makefile.am (EXTRA_DIST): Adjust accordingly.
2013-06-20 23:41:31 +02:00
Ludovic Courtès fe1818e26a package: Fix i18n of the number of packages message.
* guix/scripts/package.scm (guix-package)[process-actions]: Use `N_' for
  i18n of the number of packages message.
2013-06-20 23:41:31 +02:00
Ludovic Courtès a85060efec substitute-binary: Report progress while downloading.
* guix/scripts/substitute-binary.scm (decompressed-port): Improve docstring.
  (progress-report-port): New procedure.
  (guix-substitute-binary)["--substitute"]: Use it to report progress.
* guix/build/download.scm: Export `progress-proc' and `uri-abbreviation'.
2013-06-20 23:41:28 +02:00
Ludovic Courtès e3f6f8b448 Update eo.po. 2013-06-19 23:19:35 +02:00
Ludovic Courtès d516736c58 build: Split Makefile.am into two parts.
* Makefile.am (MODULES): Move gnu/* to gnu-system.am.
  (patchdir, dist_patch_DATA, bootstrapdir,
  bootstrap_x86_64_linuxdir, bootstrap_i686_linuxdir,
  dist_bootstrap_x86_64_linux_DATA, dist_bootstrap_i686_linux_DATA,
  nodist_bootstrap_x86_64_linux_DATA, nodist_bootstrap_i686_linux_DATA,
  install-data-hook, DISTCLEANFILES, DOWNLOAD_FILE,
  gnu/packages/bootstrap/x86_64-linux/guile-2.0.7.tar.xz,
  gnu/packages/bootstrap/i686-linux/guile-2.0.7.tar.xz): Move to...
* gnu-system.am: ... here.  New file.
2013-06-19 23:19:03 +02:00
Ludovic Courtès 9af05aa29d package: Display the number of installed packages upon completion.
* guix/scripts/package.scm (guix-package)[process-actions]: Display the
  number of packages in the profile upon completion.
2013-06-19 22:42:03 +02:00
Ludovic Courtès c7c834a998 Add `substitute-binary.scm' to POTFILES.in.
* po/POTFILES.in: Add guix/scripts/substitute-binary.scm.
2013-06-19 19:27:53 +02:00
Ludovic Courtès 7fa37abca0 gnu: Add ImageMagick.
* gnu/packages/imagemagick.scm: New file.
* Makefile.am (MODULES): Add it.
* guix/download.scm (%mirrors): Add `imagemagick' entry.
2013-06-19 19:27:23 +02:00
Ludovic Courtès 2207f73156 substitute-binary: Provide feedback when the server is unresponsive.
* guix/scripts/substitute-binary.scm (%fetch-timeout): New variable.
  (with-timeout): New macro.
  (fetch): Add `timeout?' keyword parameter.  Enclose `http-fetch' call
  in `with-timeout'.
  (guix-substitute-binary): Call `fetch' with #:timeout? #f.
2013-06-18 00:12:22 +02:00
Ludovic Courtès 8cf13c1f70 build: Fix `sync-with-upstream'.
* nix/sync-with-upstream: Remove schema.sql.hh.
2013-06-18 00:12:22 +02:00
Ludovic Courtès 90a0048f5e gnu: Add Linux iproute2.
* gnu/packages/bdb.scm (bdb): Add `--enable-compat185'.
* gnu/packages/linux.scm (iproute): New variable.
2013-06-18 00:12:22 +02:00
Ludovic Courtès 10afdf5061 gnu: Add iptables.
* gnu/packages/linux.scm (iptables): New variable.
2013-06-18 00:12:22 +02:00
Ludovic Courtès 30ac136d6d gnu: graphviz: Fix typo.
* gnu/packages/graphviz.scm (graphviz): Fix typo in description.
2013-06-18 00:12:22 +02:00
Cyril Roelandt cf3fe3b071 gnu: Move subversion with the other version control systems.
* gnu/packages/subversion.scm: Remove file.
* gnu/packages/version-control.scm (subversion): New variable.
* Makefile.am (MODULES): remove subversion.scm.
2013-06-17 19:33:53 +02:00
Ludovic Courtès 5686807ee9 build: Remove non-existent git.scm from Makefile.am.
* Makefile.am (MODULES): Remove git.scm.
2013-06-17 01:18:09 +02:00
Ludovic Courtès b1b07d72c7 gnu: Add Graphviz.
* gnu/packages/graphviz.scm: New file.
* Makefile.am (MODULES): Add it.
2013-06-17 01:17:05 +02:00
Ludovic Courtès 7997c4bf76 gnu: libpng: Propagate zlib.
* gnu/packages/libpng.scm (libpng): Propagate zlib.
2013-06-17 01:17:04 +02:00
Ludovic Courtès d517142b8e gnu: Add GD.
* gnu/packages/gd.scm: New file.
* Makefile.am (MODULES): Add it.
2013-06-16 23:57:34 +02:00
Ludovic Courtès 30645251d1 gnu: Add Racket.
* gnu/packages/scheme.scm (racket): New variable.
2013-06-16 20:43:29 +02:00
Ludovic Courtès 9c71a2aec4 build-system/trivial: Fix introduction of `%target' when cross-building.
* guix/build-system/trivial.scm (trivial-cross-build): Wrap BUILDER in a
  `let' rather than in `begin'.
2013-06-15 23:39:32 +02:00
Ludovic Courtès 934488ccd3 gnu: linux-libre-headers: Allow cross-compilation.
* gnu/packages/linux.scm (linux-libre-headers): Use (guix build
  gnu-cross-build) and %standard-cross-phases when cross-compiling.
2013-06-15 23:39:32 +02:00
Ludovic Courtès 82c865c41a gnu: pkg-config: Export package definition.
* gnu/packages/pkg-config.scm (%pkg-config): Make public.
  Reported by Andreas Enge <andreas@enge.fr>.
2013-06-15 23:39:32 +02:00
Andreas Enge 4b9adff901 gnu: Add pango.
* gnu/packages/gtk.scm (pango): New variable.
2013-06-14 23:33:17 +02:00
Andreas Enge a2609b41b9 gnu: Add harfbuzz.
* gnu/packages/gtk.scm (harfbuzz): New variable.
2013-06-14 23:28:58 +02:00
Andreas Enge 6131c43d45 gnu: Add cairo.
* gnu/packages/gtk.scm (cairo): New variable.
2013-06-14 21:43:04 +02:00
Andreas Enge 7cf2a2a1e2 gnu: Add libspectre.
* gnu/packages/ghostscript.scm (libspectre): New variable.
2013-06-14 20:58:18 +02:00
Ludovic Courtès 3e5980de47 Update `TODO'. 2013-06-14 17:05:49 +02:00
Ludovic Courtès 16357e8c71 Update upstream Nix sub-module.
* nix-upstream: Update.
* NEWS: Mention multiple-derivation output bug.
2013-06-14 17:05:32 +02:00
Ludovic Courtès 0bd31a2188 derivations: Micro-optimize `derivation-hash'.
* guix/derivations.scm (derivation-hash): Use a UTF-8-encoded string
  output port.  This makes things deterministic, and slightly faster.
2013-06-14 15:48:29 +02:00
Ludovic Courtès 62751a5ddd gnu: make-bootstrap: Abstract things with `package-with-relocatable-glibc'.
* gnu/packages/make-bootstrap.scm (%glibc-for-bootstrap): Replace with...
  (glibc-for-bootstrap): ... this.  New procedure.
  (%standard-inputs-with-relocatable-glibc): Replace with...
  (package-with-relocatable-glibc): ... this.  New procedure.
  (%static-inputs, %gcc-static, %guile-static): Use it.
2013-06-14 15:29:08 +02:00
Ludovic Courtès af5cb60fec gnu: make-bootstrap: Keep Perl as an input only when needed.
* gnu/packages/make-bootstrap.scm (%static-inputs)[coreutils]: Keep Perl
  as an input only if it's an input of COREUTILS.
2013-06-14 14:50:33 +02:00
Ludovic Courtès 8e59fdd53b guix gc: Add `--requisites'.
* guix/scripts/gc.scm (show-help, %options): Add `--requisites'.
  (guix-gc): Handle it.
* doc/guix.texi (Invoking guix gc): Document `--requisites'.
* NEWS: Update.
2013-06-13 22:15:41 +02:00
Ludovic Courtès 3f1e69395c store: Add `requisites'.
* guix/store.scm (fold-path, requisites): New procedures.
* tests/store.scm ("requisites"): New test.
2013-06-13 22:03:42 +02:00
Ludovic Courtès cfbf7877a6 ld-wrapper: Unless in a build env., allow files that symlink to the store.
* gnu/packages/ld-wrapper.scm (pure-file-name?): As a last resort, when
  %BUILD-DIRECTORY is false, check whether FILE is a symlink, and loop
  over it to check whether its target is in the store.
2013-06-12 09:39:31 +02:00
Konrad Hinsen d4c7486079 doc: Describe the build procedure in more detail.
* README (Requirements): Replace "autoreconf" by "bootstrap".
  (Installing Guix from Guix): Augment and update.
2013-06-12 09:16:54 +02:00
Ludovic Courtès cbe62e89d0 gnu: Add GNU gcal.
* gnu/packages/gcal.scm: New file.
* Makefile.am (MODULES): Add it.
2013-06-12 00:39:00 +02:00
Konrad Hinsen 79b8914eaa Ignore /po/Makevars.template 2013-06-12 00:39:00 +02:00
Cyril Roelandt 16df248e4b Fix Guile version checking in the "web" code.
* guix/web.scm (http-fetch): fix Guile version checking. The previous version
would use features from Guile 2.0.9+ when using Guile 2.0.7.
2013-06-10 10:43:23 +02:00
Nikita Karetnikov 392b5d8cab guix refresh: Add '--key-download'.
* guix/gnu-maintenance.scm (download-tarball): Add a 'key-download'
  keyword argument and pass it to 'gnupg-verify*'.  Make
  'archive-type' a keyword argument.
  (package-update): Add a 'key-download' keyword argument.  Pass
  'archive-type' and 'key-download' keyword arguments to
  'download-tarball'.

* guix/gnupg.scm: Import (ice-9 i18n) and (guix ui).
  (gnupg-verify*): Add a 'key-download' keyword argument and adjust
  'gnupg-verify*' to use it.  Make 'server' a keyword argument.

* guix/scripts/refresh.scm (show-help, %options): Add and document
  '--key-download'.
  (update-package): Add a 'key-download' keyword argument and pass it
  to 'package-update'.
  (guix-refresh): Pass 'key-download' to 'update-package'.  Limit
  lines to a maximum of 79 characters.
2013-06-10 08:15:17 +00:00
Ludovic Courtès e20ec9cc51 doc: Mention copyright/license auditing in `HACKING'. 2013-06-10 00:00:33 +02:00
Ludovic Courtès 0a56fadb60 gnu: Add mpg321.
* gnu/packages/mp3.scm (mpg321): New variable.
2013-06-09 23:57:52 +02:00
Ludovic Courtès ba04571a83 gnu: Add ALSA-lib; use it.
* gnu/packages/linux.scm (alsa-lib): New variable.
* gnu/packages/oggvorbis.scm (ao): Add ALSA-lib as an input.
2013-06-09 23:54:55 +02:00
Ludovic Courtès f88aeb6aa8 gnu: glib: Fix URL.
* gnu/packages/glib.scm (glib): Fix URL.
2013-06-09 23:52:22 +02:00
Ludovic Courtès e0b2737583 doc: Update bootstrap-related info in `HACKING'. 2013-06-09 15:24:24 +02:00
Ludovic Courtès 7bc5cc2b96 gnu: glib: Update to 2.37.1.
* gnu/packages/glib.scm (glib): Update to 2.37.1.  Add Bash and tzdata
  as inputs.  Remove `glib-tests-timezone.patch'.  Augment `pre-build'
  phase to set `TZDIR', `XDG_CACHE_HOME', and to modify makefiles to
  honor $(TESTS_ENVIRONMENT).
* gnu/packages/patches/glib-tests-desktop.patch,
  gnu/packages/patches/glib-tests-homedir.patch: Update.
* gnu/packages/patches/glib-tests-timezone.patch: Remove.
* Makefile.am (dist_patch_DATA): Update accordingly.
2013-06-08 18:41:44 +02:00
Mark H Weaver 0d62efbe5a gnu: subversion: Download from apache archive site.
* gnu/packages/subversion.scm (subversion): Download from archive.apache.org,
  where versions are kept for a longer period of time.  Previously, we
  downloaded from the mirrors, which keep only the most recent versions.
2013-06-08 12:38:28 -04:00
Ludovic Courtès fa6141ecaa gnu: plotutils: Add X client libraries as inputs.
* gnu/packages/plotutils.scm (plotutils): Add libx11, libxt, and libxaw
  as inputs.
2013-06-07 22:31:54 +02:00
Ludovic Courtès b2e3dd9480 gnu: Add Privoxy.
* gnu/packages/tor.scm (privoxy): New variable.
2013-06-07 00:02:48 +02:00
Ludovic Courtès 9d97a1b3d6 packages: Make the `propagated-inputs' field thunked.
* guix/packages.scm (<package>): Make `propagated-inputs' thunked.
2013-06-06 00:04:11 +02:00
Ludovic Courtès 0e999137e9 gnu: bash-light: Allow cross-compilation.
* gnu/packages/bash.scm (bash-light): Add (guix build gnu-cross-build)
  to #:modules when (%current-target-system) is true.
  Add `bash_cv_job_control_missing=no' to #:configure-flags
  when (%current-target-system) is true.
2013-06-05 17:40:57 +02:00
Ludovic Courtès a3e69bb892 gnu: Fix `static-package' arguments overriding.
* guix/build-system/gnu.scm (static-package): Call `package-arguments'
  from within the `arguments' field, so it see the
  right (%current-target-system).
2013-06-05 16:39:58 +02:00
Ludovic Courtès a1db097535 gnu: gnutls: Update to 3.2.1.
* gnu/packages/gnutls.scm (gnutls): Update to 3.2.1.
2013-06-05 10:38:27 +02:00
Ludovic Courtès b17fd5e0c8 gnu: nettle: Update to 2.7.1.
* gnu/packages/nettle.scm (nettle): Update to 2.7.1.
2013-06-05 10:26:17 +02:00
Ludovic Courtès 76ced7741b gnu: automake: Update to 1.13.3.
* gnu/packages/autotools.scm (automake): Update to 1.13.3.
2013-06-05 10:17:26 +02:00
Ludovic Courtès 7f4e4b77ee gnu: Add WordNet.
* gnu/packages/wordnet.scm: New file.
* Makefile.am (MODULES): Add it.
2013-06-04 16:51:06 +02:00
Ludovic Courtès 765904ceb6 gnu: Add Tk.
* gnu/packages/tcl.scm (tk): New variable.
2013-06-04 16:49:34 +02:00
Ludovic Courtès 9bf3c1a77d doc: Write about patch submission and packaging guidelines.
* HACKING: Update the command names from `guix-build' to `guix build' & co.
  (Submitting Patches, Packaging Guidelines): New sections.
* doc/guix.texi (Contributing): New section.
2013-06-04 10:29:57 +02:00
Ludovic Courtès ae3b6bb0f4 substitute-binary: Don't cache .narinfo lookups when lacking networking.
* guix/scripts/substitute-binary.scm (lookup-narinfo): Don't cache
  NARINFO when CACHE is #f.
2013-06-04 09:43:38 +02:00
Ludovic Courtès bdbb6fbb19 Update `NEWS'. 2013-06-04 00:45:57 +02:00
Nikita Karetnikov 94e4ddd508 gnu: Add Grue Hunter.
* gnu/packages/grue-hunter.scm: New file.
* Makefile.am (MODULES): Add it.
2013-06-03 11:55:43 +00:00
Nikita Karetnikov ef7cf2917a licenses: Add 'agpl3' and 'agpl3+'.
* guix/licenses.scm (agpl3, agpl3+): New variables.
2013-06-03 11:39:38 +00:00
Cyril Roelandt 5ace6e2fa8 gnu: Add Babel.
* gnu/packages/babel.scm (babel): New package.
2013-06-01 01:50:34 +02:00
Ludovic Courtès 1890a149cc gnu: Add XLockMore.
* gnu/packages/xlockmore.scm: New file.
* Makefile.am (MODULES): Add it.
2013-06-01 00:14:13 +02:00
Ludovic Courtès 63c0c19a64 gnu: gawk: Refer to the target Bash in io.c.
* gnu/packages/gawk.scm (gawk): Add Bash as an input
  when (%current-target-system) is true.
2013-06-01 00:07:26 +02:00
Ludovic Courtès 8caa6152d0 Fix name of Alexandru. 2013-06-01 00:06:30 +02:00
Ludovic Courtès 231eae53c2 gnu: Add Rubber.
* gnu/packages/texlive.scm (rubber): New variable.
2013-05-30 21:15:45 +02:00
Ludovic Courtès 44fbbf4c5f Thanks, Cojocaru. 2013-05-30 21:15:22 +02:00
Ludovic Courtès 89d02b98f9 ui: define-diagnostic: Don't mark _' and N_' as literals.
* guix/ui.scm (define-diagnostic): Use `free-identifier=?' to compare
  the user's input with `_' and `N-".  This should fix builds with Guile 2.1.
  Reported by Cojocaru Alexandru <xojoc@gmx.com>.
2013-05-30 00:49:34 +02:00
Ludovic Courtès 5282181d51 build-system/python: Avoid circular dependency.
This fixes a circular dependency introduced in commit acc26ff ("gnu: Add
pytz.").

* guix/build-system/python.scm (default-python): New procedure.
  (python-build): Use it.
2013-05-30 00:47:34 +02:00
Ludovic Courtès cf5d2ca329 substitute-binary: Gracefully exit upon networking errors.
Suggested by Andreas Enge <andreas@enge.fr>.

* guix/scripts/substitute-binary.scm (with-networking): New macro.
  (guix-substitute-binary): Wrap the body in `with-networking'.
2013-05-29 23:22:05 +02:00
Ludovic Courtès 56b1f4b780 build, package: Add `--fallback' option.
* guix/scripts/build.scm (%options, show-help): Add `--fallback'.
  (guix-build): Call `set-build-options' with #:fallback?.
* guix/scripts/package.scm (%options, show-help): Add `--fallback'.
  (guix-package): Call `set-build-options' with #:fallback?.
* doc/guix.texi (Invoking guix package, Invoking guix build): Document
  `--fallback'.
2013-05-29 23:22:05 +02:00
Ludovic Courtès c3eb878f0b store: Test the `fallback?' store option.
* guix/store.scm (set-build-options): Rename #:try-fallback? to #:fallback?.
* tests/store.scm ("substitute --fallback"): New test.
2013-05-29 23:22:05 +02:00
Cyril Roelandt acc26ff148 gnu: Add pytz.
* gnu/packages/python.scm (pytz): New package.
2013-05-29 01:47:16 +02:00
Ludovic Courtès 4f7e152b34 gnu: Add torsocks.
* gnu/packages/tor.scm (torsocks): New variable.
2013-05-29 00:03:12 +02:00
Cyril Roelandt 842ded334f python-build-system: add a check phase.
* guix/build/python-build-system.scm (check): New procedure.
  (%standard-phases): Use it.
2013-05-28 22:53:35 +02:00
Ludovic Courtès 9b222abe03 packages: Raise an error condition a cross builder is needed but unavailable.
* guix/packages.scm (&package-cross-build-system-error): New condition type.
  (package-cross-derivation): Raise &package-cross-build-system-error
  when the build system doesn't support cross builds.
* guix/ui.scm (call-with-error-handling): Add
  package-cross-build-system-error? case.
* tests/packages.scm ("package-cross-derivation, no cross builder"): New test.
2013-05-27 23:43:00 +02:00
Ludovic Courtès ea84ec7711 build-system/gnu: Fix typo in `gnu-cross-build'.
* guix/build-system/gnu.scm (gnu-cross-build)[builder]: When
  IMPLICIT-TARGET-INPUTS is #f, default to '().
2013-05-27 23:43:00 +02:00
Ludovic Courtès 58b4e8e877 gnu: guile: More cross-compilation tweaks.
* gnu/packages/guile.scm (guile-2.0): When cross-compiling, unset
  GUILE_LOAD_PATH and GUILE_LOAD_COMPILED_PATH, and set
  CC_FOR_BUILD=gcc.
2013-05-27 23:43:00 +02:00
Ludovic Courtès d581acee5b gnu: pkg-config: Provide a cross-build-friendly wrapper.
* gnu/packages/pkg-config.scm (pkg-config): Rename to...
  (%pkg-config): ... this.  Make private.
  (cross-pkg-config, pkg-config-for-target): New procedures.
  (pkg-config): New macro.
2013-05-27 23:43:00 +02:00
Ludovic Courtès 47e74d6e9d gnu: cross-binutils: Build with `--with-sysroot'.
This fixes resolution of DT_NEEDED entries in cross-built libraries.
For instance, if ltdl.so needs libdl.so and has it in its RUNPATH, then
libdl.so is searched for in the right place.

* gnu/packages/cross-base.scm (cross-binutils): Pass
  `--with-sysroot=/no-such-path'.
2013-05-27 23:43:00 +02:00
Nikita Karetnikov 4bfc4ea349 doc: Improve wording and fix typos in "Introduction" and "Requirements".
* doc/guix.texi (Introduction, Requirements): Rephrase and fix typos.
2013-05-26 23:25:01 +00:00
Ludovic Courtès 9c782445fb gnu: guile: Add Bash as an input, to permit cross-compilation.
* gnu/packages/guile.scm (guile-2.0): Add Bash as an input
  when (%current-target-system) is true.  Use %standard-cross-phases as
  a basis when (%current-target-system) is true.
2013-05-26 23:46:11 +02:00
Ludovic Courtès 9a97b8144d gnu: bash: Fix cross-compilation.
* gnu/packages/bash.scm (bash): Pass "bash_cv_job_control_missing=no"
  when (%current-target-system) is true.
2013-05-26 23:46:11 +02:00
Ludovic Courtès aa289a3e82 build: `hydra.scm' really cross-builds Gettext.
* hydra.scm: Import (gnu packages gettext).
2013-05-26 23:46:10 +02:00
Cyril Roelandt a67f97fea1 zlib: Add a sourceforge mirror.
This is especially useful since the tarball is deleted from zlib.net as soon as
a new version of zlib is released.
2013-05-25 23:17:53 +02:00
Ludovic Courtès 923fbae1f0 build: Add missing import in `hydra.scm'.
* hydra.scm: Import (gnu packages gawk).
2013-05-25 23:24:51 +02:00
Ludovic Courtès 598608c7ee build: `hydra.scm' cross-builds a few more packages.
* hydra.scm (%packages-to-cross-build): Add a few packages.
2013-05-25 22:39:51 +02:00
Ludovic Courtès f755aa3f7a gnu: ncurses, readline: Allow cross-compilation.
* gnu/packages/ncurses.scm (ncurses): Add `cross-pre-install-phase'.
  Use different phases when (%current-target-system) is true.
* gnu/packages/readline.scm (readline): Use %standard-cross-phases as
  the base when (%current-target-system) is true.
2013-05-25 20:16:45 +02:00
Ludovic Courtès 089b06348e gnu: libffi: Allow cross-compilation.
* gnu/packages/libffi.scm (libffi): Use %standard-cross-phases as the
  base when cross-compiling.  Add (guix build gnu-cross-build) to the
  #:modules when cross-compiling.  Improve synopsis.
2013-05-25 18:03:52 +02:00
Ludovic Courtès 1984b43895 gnu: libtool: Allow cross-compilation.
* gnu/packages/autotools.scm (libtool)[arguments]: Use #:phases argument
  only when building natively.
2013-05-25 18:00:01 +02:00
Ludovic Courtès 3871c9f500 gnu: gawk: Allow cross-compilation.
* gnu/packages/gawk.scm (gawk)[arguments]: Use `set-shell-file-name'
  phase that works when cross-compiling; use `%standard-cross-phases' as
  the base when (%current-target-system) is true.
2013-05-25 17:54:27 +02:00
Ludovic Courtès 9aa949a4b6 gnu: libsigsegv: Fix mips64el-linux-gnu (cross-)builds.
* gnu/packages/libsigsegv.scm (libsigsegv): New `arguments' field.
2013-05-25 16:56:22 +02:00
Ludovic Courtès cf9fd501ea gnu: findutils: Fix cross-compilation.
* gnu/packages/base.scm (findutils): Reinstate cross-compilation
  #:configure-flags.
2013-05-25 16:36:11 +02:00
Ludovic Courtès c8c6bba5a7 gnu: sed: Allow cross-compilation.
* gnu/packages/base.scm (sed): Keep the default phases
  when (%current-target-system) is true.
2013-05-25 16:26:16 +02:00
Ludovic Courtès de59af4d6d gnu: coreutils: Allow cross-compilation.
* gnu/packages/base.scm (coreutils): Remove Perl input
  when (%current-target-system) is true.  Use %standard-cross-phases as
  the base when (%current-target-system) is true.
2013-05-25 16:24:21 +02:00
Ludovic Courtès 2a552f1177 gnu: gettext, attr, acl: Disable `check' phase twiddling when cross building.
* gnu/packages/gettext.scm (gettext)[arguments]: Disable `check' phase
  manipulations when (%current-target-system) is true.
* gnu/packages/attr.scm (attr)[arguments]: Likewise.
* gnu/packages/acl.scm (acl)[arguments]: Likewise.
2013-05-25 16:19:06 +02:00
Ludovic Courtès a7dc055bb5 packages: Make `native-inputs' thunked.
* guix/packages.scm (<package>): Make `native-inputs' thunked.
2013-05-25 16:14:57 +02:00
Ludovic Courtès cd52703ace packages: Re-export `%current-target-system'.
* guix/packages.scm: Re-export `%current-target-system'.
2013-05-25 16:14:37 +02:00
Ludovic Courtès ee4d736881 build-system/gnu: Make sure build input variables contain pairs.
* guix/build-system/gnu.scm (gnu-cross-build)[builder]: Make sure
  %build-host-inputs and %build-target-inputs always contain pairs, not
  lists.
2013-05-25 15:35:36 +02:00
Ludovic Courtès 2ee5f56b4d build: `hydra.scm' cross-builds simpler packages.
* hydra.scm (%packages-to-cross-build): Remove things from
  make-bootstrap for now.
2013-05-25 00:03:28 +02:00
Ludovic Courtès 5dce82180b build-system/trivial: Implement the cross-build protocol.
* guix/build-system/trivial.scm (guile-for-build): New procedure.
  (trivial-build): Use it.
  (trivial-cross-build): New procedure.
  (trivial-build-system): Use it.
2013-05-24 23:53:06 +02:00
Ludovic Courtès cba363bea8 package: Fix default profile ownership check when it's just been created.
* guix/scripts/package.scm (guix-package)[ensure-default-profile]: Check
  whether S is true before checking its owner.  Fixes the case where we
  built %PROFILE-DIRECTORY just above.
2013-05-24 23:14:19 +02:00
Ludovic Courtès 929c0f69de build: `hydra.scm' adds cross-build jobs.
* hydra.scm (package->alist): Add `package-derivation' argument.
  (package-cross-job): New procedure.
  (%packages-to-cross-build, %cross-targets): New variables.
  (hydra-jobs): Add cross jobs.
2013-05-24 23:12:56 +02:00
Ludovic Courtès e55ec43d8b build: Add `--target' option.
* guix/scripts/build.scm (derivations-from-package-expressions): Add
  `package-derivation' parameter.
  (show-help, %options): Add `--target'.
  (guix-build): Use `package-cross-derivation' when `--target' is
  passed.
* tests/guix-build.sh: Add dry-run test with `--target'.
* doc/guix.texi (Invoking guix build): Document `--target'.
2013-05-24 22:52:52 +02:00
Ludovic Courtès 264218a47e build-system/gnu: Implement cross build.
* guix/build-system/gnu.scm (inputs-search-paths): New procedure.
  (standard-search-paths): Use it.
  (expand-inputs): New procedure.
  (standard-inputs): Use it.
  (standard-cross-packages, standard-cross-inputs,
  standard-cross-search-paths, gnu-cross-build): New procedures.
  (gnu-build-system): Set `cross-build' field to `gnu-cross-build'.
* gnu/packages/cross-base.scm: Export `cross-gcc', `cross-binutils', and
  `cross-libc'.
* guix/build/gnu-cross-build.scm: New file.
* Makefile.am (MODULES): Add it.
2013-05-24 22:44:15 +02:00
Ludovic Courtès 9c1edabd8b packages: Implement `package-cross-derivation'.
* guix/packages.scm (package-transitive-target-inputs,
  package-transitive-native-inputs): New procedures.
  (package-derivation): Parametrize `%current-target-system'.
  (package-cross-derivation): Implement.
* guix/utils.scm (%current-target-system): New variable.
* tests/packages.scm ("package-cross-derivation"): New test.
* doc/guix.texi (Defining Packages): Document
  `package-cross-derivation'.
2013-05-24 22:30:58 +02:00
Ludovic Courtès 17bb886ff4 gnu: cross-gcc: Set the right search paths.
* gnu/packages/cross-base.scm (cross-gcc): Override `search-paths' and
  `native-search-paths'.
2013-05-24 21:55:52 +02:00
Ludovic Courtès 248d08ebf0 gnu: cross-gcc: Change patch so that `CROSS_LIBRARY_PATH' is honored.
* gnu/packages/patches/gcc-cross-environment-variables.patch: Add two
  hunks, most notably one that changes GCC to honor LIBRARY_PATH_ENV
  when cross-compiling.
2013-05-24 21:54:44 +02:00
Ludovic Courtès a63062b55a packages: Factorize things common to `package-{,cross-}derivation'.
* guix/packages.scm (expand-input): New procedure, moved out of...
  (package-derivation): ... here.  Adjust accordingly.
  (package-cross-derivation): Add `cross-system' and `system'
  parameters.
2013-05-24 08:58:52 +02:00
Ludovic Courtès 7046c48d72 nls: Add Esperanto translation.
* po/eo.po, po/LINGUAS: New files.
2013-05-24 00:22:57 +02:00
Ludovic Courtès 3ec7ad8e0f gnu: Add UnRTF.
* gnu/packages/unrtf.scm: New file.
* Makefile.am (MODULES): Add it.
2013-05-24 00:03:57 +02:00
Ludovic Courtès a10f6f7bf7 gnu: libgc: Add 7.2d.
* gnu/packages/bdw-gc.scm (libgc-7.2): New variable.
2013-05-23 00:11:38 +02:00
Ludovic Courtès bb3fe7fcfe gnu: Add GNU Plotutils.
* gnu/packages/plotutils.scm: New file.
* Makefile.am (MODULES): Add it.
2013-05-22 00:33:14 +02:00
Ludovic Courtès d149583162 Update `NEWS'. 2013-05-20 18:30:55 +02:00
Ludovic Courtès 1972fed4df gnu: Add CVS.
* gnu/packages/version-control.scm (cvs): New variable.
2013-05-20 18:29:43 +02:00
Ludovic Courtès 969e678ed9 Add --max-silent-time' to guix build' and `guix package'.
* guix/scripts/build.scm (%default-options): Add default
  `max-silent-time' value.
  (show-help, %options):  Add `--max-silent-time'.
  (guix-build): Pass `max-silent-time' to `set-build-options'.
* guix/scripts/package.scm (%default-options): Add default
  `max-silent-time' value.
  (show-help, %options):  Add `--max-silent-time'.
  (guix-package): Pass `max-silent-time' to `set-build-options'.
* guix/ui.scm (string->number*): New procedure.
* tests/derivations.scm ("build-expression->derivation and
  max-silent-time"): New test.
* doc/guix.texi (Invoking guix package, Invoking guix build): Document
  `--max-silent-time'.
2013-05-20 18:29:26 +02:00
Ludovic Courtès d8482ad0d6 gnu: Add strace.
* gnu/packages/linux.scm (strace): New variable.
2013-05-18 23:31:14 +02:00
Ludovic Courtès 35ec07c758 gnu: Improve synopses for Linux-related packages.
* gnu/packages/linux.scm (util-linux, procps, e2fsprogs): Clarify and
  shrink synopses.
2013-05-18 23:02:25 +02:00
Ludovic Courtès 4bc3fcc771 build: Switch to 0.3.
* configure.ac: Bump to 0.3.  Use the full URL.
2013-05-18 23:01:28 +02:00
Ludovic Courtès 499b8d1f84 Update `TODO'. 2013-05-17 23:15:49 +02:00
Ludovic Courtès f11617d8a6 gnu: automake: Update to 1.13.2.
* gnu/packages/autotools.scm (autoconf-wrapper): Wrap `configure' files
  regardless of the exit code of `autoconf'.  Triggered by Automake's
  `t/am-prog-cc-stdc.sh'.
  (automake): Update to 1.13.2.
2013-05-17 23:10:47 +02:00
Ludovic Courtès 70c4329172 package: Make sure the profile directory is owned by the user.
* guix/scripts/package.scm (guix-package)[ensure-default-profile]: Check
  the owner of %PROFILE-DIRECTORY.  Report an error when the owner is
  not the current user.  Add `rtfm' procedure.
* doc/guix.texi (Invoking guix package): Mention the ownership test.
2013-05-16 20:04:13 +02:00
Ludovic Courtès 101d9f3fd4 substitute-binary: Pass `filtered-port' an unbuffered port.
This fixes a bug whereby `read-response' would read more than just the
response, with the extra data going into the port's buffer; the
"bzip2 -dc" process spawned by `filtered-port' would not see the those
buffered data, which are definitely lost, and would bail out with
"bzip2: (stdin) is not a bzip2 file."

* guix/utils.scm (filtered-port): Document that INPUT must be
  unbuffered.
* guix/web.scm (http-fetch): Add `buffered?' parameter.  Call
  `open-socket-for-uri' explicitly, and call `setvbuf' when BUFFERED? is
  false.  Pass the port to `http-get'.  Close it upon 301/302.
* guix/scripts/substitute-binary.scm (fetch): Add `buffered?'
  parameter.  Pass it to `http-fetch'; honor it for `file' URIs.
  (guix-substitute-binary): Call `fetch' with #:buffered? #f for port RAW.
* tests/utils.scm ("filtered-port, file"): Open FILE as unbuffered.
2013-05-15 23:40:09 +02:00
Ludovic Courtès 3d6b71e87e gnu: texinfo: Don't propagate Perl.
* gnu/packages/texinfo.scm (texinfo): Don't propagate Perl.
2013-05-15 00:15:25 +02:00
Ludovic Courtès 0332386251 substitute-binary: Work around thread-unsafe `regexp-exec'.
* guix/scripts/substitute-binary.scm (%regexp-exec-mutex): New variable.
  (string->uri): New procedure.
  (fields->alist): Wrap `regexp-exec' call in `with-mutex'.
2013-05-14 23:53:38 +02:00
Ludovic Courtès 90a1e4b303 package: Always clear the SIGINT handler.
* guix/scripts/package.scm (call-with-sigint-handler): Wrap THUNK in
  `dynamic-wind' so that the SIGINT handler is always cleared.
2013-05-14 23:52:13 +02:00
Ludovic Courtès 91fe0e20c7 ftp-client: Let callers handle `ftp-open' exceptions.
* guix/ftp-client.scm (ftp-open): Let exceptions through.
* guix/scripts/package.scm (waiting): Wrap EXP in a `dynamic-wind', so
  the line is always cleared.
2013-05-14 23:51:36 +02:00
Ludovic Courtès b30b13dc3d Sort commands alphabetically in "guix --help".
* guix/ui.scm (show-guix-help): Sort commands.
2013-05-14 13:37:53 +02:00
Ludovic Courtès 2b8cf44fd9 Fix "guix --help" on Guile 2.0.5.
Reported at <http://linuxfr.org/news/sortie-de-gnu-guix-0-2>.

* guix/ui.scm (command-files): Filter the result of `scandir' to make
  sure only `.scm' files are present.
2013-05-14 13:37:21 +02:00
132 changed files with 8216 additions and 1681 deletions
+2 -1
View File
@@ -15,7 +15,8 @@
(eval . (put 'with-directory-excursion 'scheme-indent-function 1))
(eval . (put 'package 'scheme-indent-function 1))
(eval . (put 'substitute-keyword-arguments 'scheme-indent-function 1))
(eval . (put 'with-error-handling 'scheme-indent-function 0))))
(eval . (put 'with-error-handling 'scheme-indent-function 0))
(eval . (put 'with-mutex 'scheme-indent-function 1))))
(emacs-lisp-mode . ((indent-tabs-mode . nil)))
(texinfo-mode . ((indent-tabs-mode . nil)
(fill-column . 72))))
+3
View File
@@ -24,6 +24,7 @@ config.cache
/m4/progtest.m4
/po/ChangeLog
/po/Makefile.in.in
/po/Makevars.template
/po/POTFILES
/po/Rules-quot
/po/boldquot.sed
@@ -73,3 +74,5 @@ stamp-h[0-9]
/doc/guix.vr
/doc/guix.vrs
/nix/scripts/substitute-binary
/doc/images/bootstrap-graph.png
/doc/images/bootstrap-graph.eps
+55 -104
View File
@@ -3,18 +3,53 @@
#+TITLE: Hacking GNU Guix and Its Incredible Distro
Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
* 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
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
./configure: line 6755: `PKG_CHECK_MODULES(GUILE, guile-2.0 >= 2.0.5)'
it probably means that Autoconf couldnt find pkg.m4, which is provided by
pkg-config. Make sure that pkg.m4 is available. For instance, if you
installed Automake in /usr/local, it wouldnt look for .m4 files in
/usr/share. So you have to invoke the following command in that case
$ export ACLOCAL_PATH=/usr/share/aclocal
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>.
* Running Guix before it is installed
Command-line tools can be used even if you have not run "make install".
To do that, prefix each command with ./pre-inst-env, as in:
./pre-inst-env guix-build --help
./pre-inst-env guix build --help
Similarly, for a Guile session using the Guix modules:
@@ -68,132 +103,48 @@ Package recipes in Guix look like this:
#+END_SRC
Such a recipe can be written by hand, and then tested by running
./pre-inst-env guix-build nettle.
./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
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
guix import /path/to/nixpkgs/checkout nettle
The command automatically fetches and converts to Guix the “Nix
expression” of Nettle.
* Porting the Guix distro on a new platform
** Introduction
Unlike Make or similar build tools, Guix requires absolutely /all/ the
dependencies of a build process to be specified.
For a user-land software distribution, that means that the process that
builds GCC (then used to build all other programs) must itself be
specified; and the process to build the C library to build that GCC; and
the process to build the GCC to build that library; and... See the
problem? Chicken-and-egg.
To break that cycle, the distro starts from a set of pre-built
binariesusually referred to as “bootstrap binaries.” These include
statically-linked versions of Guile, GCC, Coreutils, Make, Grep, sed,
etc., and the GNU C Library.
This section describes how to build those bootstrap binaries when
porting to a new platform.
** When the platform is supported by Nixpkgs
In that case, the easiest thing is to bootstrap the distro using
binaries from Nixpkgs.
To do that, you need to comment out the definitions of
%bootstrap-guile and %bootstrap-inputs in distro/packages/bootstrap.scm
to force the use of Nixpkgs derivations. For instance, when porting to
i686-linux, you should redefine these variables along these lines:
#+BEGIN_SRC scheme
(define %bootstrap-guile
(nixpkgs-derivation "guile" "i686-linux"))
(define %bootstrap-inputs
(compile-time-value
`(("libc" ,(nixpkgs-derivation "glibc" "i686-linux"))
,@(map (lambda (name)
(list name (nixpkgs-derivation name "i686-linux")))
'("gnutar" "gzip" "bzip2" "xz" "patch"
"coreutils" "gnused" "gnugrep" "bash"
"gawk" ; used by `config.status'
"gcc" "binutils")))))
#+END_SRC
That should allow the distro to be bootstrapped.
Then, the tarballs containing the initial binaries of Guile, Coreutils,
GCC, libc, etc. need to be built. To that end, run the following
commands:
#+BEGIN_SRC sh
./pre-inst-env guix-build -K \
-e '(@ (gnu packages make-bootstrap) %bootstrap-tarballs)' \
--system=i686-linux
#+END_SRC
These should build tarballs containing statically-linked tools usable on
that system.
In the source tree, you need to install binaries for mkdir, bash,
tar, and xz under distro/packages/bootstrap/i686-linux. These
binaries can be extracted from the static-binaries tarball built above.
A rule for distro/packages/bootstrap/i686-linux/guile-2.0.7.tar.xz
needs to be added in Makefile.am, with the appropriate hexadecimal
vrepresentation of its SHA256 hash.
You may then revert your changes to bootstrap.scm. For the variables
%bootstrap-coreutils&co, %bootstrap-binutils, %bootstrap-glibc,
and %bootstrap-gcc, the expected SHA256 of the corresponding tarballs
for i686-linux (built above) must be added.
This should be enough to bootstrap the distro without resorting to
Nixpkgs.
** When the platform is *not* supported by Nixpkgs
In that case, the bootstrap binaries should be built using whatever
tools are available on the target platform. That is, the tarballs and
binaries show above must first be built manually, using the available
tools.
They should have the same properties as those built by the Guix recipes
shown above. For example, all the binaries (except for glibc) must be
statically-linked; the bootstrap Guile must be relocatable (see patch in
the Guix distro); the static-binaries tarball must contain the same
programs (Coreutils, Grep, sed, Awk, etc.); and so on.
* Commit Access
* 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.
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]].
However, for frequent contributors, having write access to the repository is
convenient. 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.)
As you become a regular contributor, you may find it convenient to have write
access to the repository (see below.)
* 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.)
Non-trivial patches should always be posted to bug-guix@gnu.org (trivial
patches include fixing typos, etc.)
For patches that just add a new package, and a simple one, its OK to commit,
if youre confident (which means you successfully built it in a chroot setup.)
Likewise for 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.
if youre confident (which means you successfully built it in a chroot setup,
and have done a reasonable copyright and license auditing.) Likewise for
package upgrades. We have a mailing list for commit notifications
(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
review, without committing anything. If you didnt receive any reply
+57 -238
View File
@@ -24,6 +24,8 @@ nodist_noinst_SCRIPTS = \
pre-inst-env \
test-env
include gnu-system.am
MODULES = \
guix/scripts/build.scm \
guix/scripts/download.scm \
@@ -36,6 +38,7 @@ MODULES = \
guix/scripts/refresh.scm \
guix/base32.scm \
guix/records.scm \
guix/hash.scm \
guix/utils.scm \
guix/serialization.scm \
guix/nar.scm \
@@ -50,7 +53,7 @@ MODULES = \
guix/build-system/python.scm \
guix/build-system/trivial.scm \
guix/ftp-client.scm \
guix/web.scm \
guix/http-client.scm \
guix/gnupg.scm \
guix/store.scm \
guix/ui.scm \
@@ -65,252 +68,34 @@ MODULES = \
guix/packages.scm \
guix/snix.scm \
guix.scm \
gnu/packages.scm \
gnu/packages/acl.scm \
gnu/packages/algebra.scm \
gnu/packages/aspell.scm \
gnu/packages/attr.scm \
gnu/packages/autotools.scm \
gnu/packages/avahi.scm \
gnu/packages/base.scm \
gnu/packages/bash.scm \
gnu/packages/bdb.scm \
gnu/packages/bdw-gc.scm \
gnu/packages/bison.scm \
gnu/packages/bootstrap.scm \
gnu/packages/cdrom.scm \
gnu/packages/cflow.scm \
gnu/packages/check.scm \
gnu/packages/cmake.scm \
gnu/packages/compression.scm \
gnu/packages/cpio.scm \
gnu/packages/cppi.scm \
gnu/packages/cross-base.scm \
gnu/packages/cryptsetup.scm \
gnu/packages/curl.scm \
gnu/packages/cyrus-sasl.scm \
gnu/packages/dejagnu.scm \
gnu/packages/ddrescue.scm \
gnu/packages/dwm.scm \
gnu/packages/ed.scm \
gnu/packages/emacs.scm \
gnu/packages/fdisk.scm \
gnu/packages/file.scm \
gnu/packages/flex.scm \
gnu/packages/fontutils.scm \
gnu/packages/freeipmi.scm \
gnu/packages/gawk.scm \
gnu/packages/gcc.scm \
gnu/packages/gdb.scm \
gnu/packages/gdbm.scm \
gnu/packages/gettext.scm \
gnu/packages/ghostscript.scm \
gnu/packages/glib.scm \
gnu/packages/global.scm \
gnu/packages/gnupg.scm \
gnu/packages/gnutls.scm \
gnu/packages/gperf.scm \
gnu/packages/gprolog.scm \
gnu/packages/groff.scm \
gnu/packages/grub.scm \
gnu/packages/gsasl.scm \
gnu/packages/gtk.scm \
gnu/packages/guile.scm \
gnu/packages/gv.scm \
gnu/packages/help2man.scm \
gnu/packages/hugs.scm \
gnu/packages/icu4c.scm \
gnu/packages/idutils.scm \
gnu/packages/indent.scm \
gnu/packages/irssi.scm \
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 \
gnu/packages/libidn.scm \
gnu/packages/libjpeg.scm \
gnu/packages/libphidget.scm \
gnu/packages/libpng.scm \
gnu/packages/libsigsegv.scm \
gnu/packages/libtiff.scm \
gnu/packages/libunistring.scm \
gnu/packages/libusb.scm \
gnu/packages/libunwind.scm \
gnu/packages/linux.scm \
gnu/packages/linux-initrd.scm \
gnu/packages/lout.scm \
gnu/packages/lsh.scm \
gnu/packages/lsof.scm \
gnu/packages/lua.scm \
gnu/packages/lvm.scm \
gnu/packages/m4.scm \
gnu/packages/mailutils.scm \
gnu/packages/make-bootstrap.scm \
gnu/packages/mit-krb5.scm \
gnu/packages/mp3.scm \
gnu/packages/multiprecision.scm \
gnu/packages/mysql.scm \
gnu/packages/nano.scm \
gnu/packages/ncurses.scm \
gnu/packages/netpbm.scm \
gnu/packages/nettle.scm \
gnu/packages/ocaml.scm \
gnu/packages/oggvorbis.scm \
gnu/packages/openldap.scm \
gnu/packages/openssl.scm \
gnu/packages/parted.scm \
gnu/packages/patchelf.scm \
gnu/packages/pcre.scm \
gnu/packages/pdf.scm \
gnu/packages/perl.scm \
gnu/packages/pkg-config.scm \
gnu/packages/popt.scm \
gnu/packages/pth.scm \
gnu/packages/python.scm \
gnu/packages/qemu.scm \
gnu/packages/ratpoison.scm \
gnu/packages/readline.scm \
gnu/packages/recutils.scm \
gnu/packages/rsync.scm \
gnu/packages/samba.scm \
gnu/packages/scheme.scm \
gnu/packages/screen.scm \
gnu/packages/shishi.scm \
gnu/packages/smalltalk.scm \
gnu/packages/sqlite.scm \
gnu/packages/ssh.scm \
gnu/packages/subversion.scm \
gnu/packages/system.scm \
gnu/packages/tcl.scm \
gnu/packages/tcsh.scm \
gnu/packages/texinfo.scm \
gnu/packages/texlive.scm \
gnu/packages/time.scm \
gnu/packages/tmux.scm \
gnu/packages/tor.scm \
gnu/packages/version-control.scm \
gnu/packages/vim.scm \
gnu/packages/vpn.scm \
gnu/packages/w3m.scm \
gnu/packages/wdiff.scm \
gnu/packages/wget.scm \
gnu/packages/which.scm \
gnu/packages/xml.scm \
gnu/packages/xorg.scm \
gnu/packages/zile.scm \
gnu/packages/zip.scm \
gnu/system/vm.scm
$(GNU_SYSTEM_MODULES)
# Because of the autoload hack in (guix build download), we must build it
# first to avoid errors on systems where (gnutls) is unavailable.
guix/scripts/download.go: guix/build/download.go
GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go
nobase_dist_guilemodule_DATA = $(MODULES)
patchdir = $(guilemoduledir)/gnu/packages/patches
dist_patch_DATA = \
gnu/packages/patches/automake-skip-amhello-tests.patch \
gnu/packages/patches/bigloo-gc-shebangs.patch \
gnu/packages/patches/binutils-ld-new-dtags.patch \
gnu/packages/patches/cmake-fix-tests.patch \
gnu/packages/patches/cpio-gets-undeclared.patch \
gnu/packages/patches/diffutils-gets-undeclared.patch \
gnu/packages/patches/emacs-configure-sh.patch \
gnu/packages/patches/findutils-absolute-paths.patch \
gnu/packages/patches/flac-fix-memcmp-not-declared.patch \
gnu/packages/patches/flex-bison-tests.patch \
gnu/packages/patches/gawk-shell.patch \
gnu/packages/patches/gcc-cross-environment-variables.patch \
gnu/packages/patches/gettext-gets-undeclared.patch \
gnu/packages/patches/glib-tests-desktop.patch \
gnu/packages/patches/glib-tests-homedir.patch \
gnu/packages/patches/glib-tests-prlimit.patch \
gnu/packages/patches/glib-tests-timezone.patch \
gnu/packages/patches/glibc-bootstrap-system.patch \
gnu/packages/patches/glibc-no-ld-so-cache.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/libevent-dns-tests.patch \
gnu/packages/patches/libtool-skip-tests.patch \
gnu/packages/patches/lsh-guile-compat.patch \
gnu/packages/patches/lsh-no-root-login.patch \
gnu/packages/patches/lsh-pam-service-name.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 \
gnu/packages/patches/python-fix-dbm.patch \
gnu/packages/patches/procps-make-3.82.patch \
gnu/packages/patches/qemu-multiple-smb-shares.patch \
gnu/packages/patches/readline-link-ncurses.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/vpnc-script.patch \
gnu/packages/patches/w3m-fix-compile.patch \
gnu/packages/patches/xpdf-constchar.patch
bootstrapdir = $(guilemoduledir)/gnu/packages/bootstrap
bootstrap_x86_64_linuxdir = $(bootstrapdir)/x86_64-linux
bootstrap_i686_linuxdir = $(bootstrapdir)/i686-linux
dist_bootstrap_x86_64_linux_DATA = \
gnu/packages/bootstrap/x86_64-linux/bash \
gnu/packages/bootstrap/x86_64-linux/mkdir \
gnu/packages/bootstrap/x86_64-linux/tar \
gnu/packages/bootstrap/x86_64-linux/xz
dist_bootstrap_i686_linux_DATA = \
gnu/packages/bootstrap/i686-linux/bash \
gnu/packages/bootstrap/i686-linux/mkdir \
gnu/packages/bootstrap/i686-linux/tar \
gnu/packages/bootstrap/i686-linux/xz
# Big bootstrap binaries are not included in the tarball. Instead, they
# are downloaded.
nodist_bootstrap_x86_64_linux_DATA = \
gnu/packages/bootstrap/x86_64-linux/guile-2.0.7.tar.xz
nodist_bootstrap_i686_linux_DATA = \
gnu/packages/bootstrap/i686-linux/guile-2.0.7.tar.xz
# Those files must remain executable, so they remain executable once
# imported into the store.
install-data-hook:
chmod +x $(DESTDIR)$(bootstrapdir)/*/{bash,mkdir,tar,xz}
DISTCLEANFILES = \
$(nodist_bootstrap_x86_64_linux_DATA) \
$(nodist_bootstrap_i686_linux_DATA)
# Method to download a file from an external source.
DOWNLOAD_FILE = \
GUILE_LOAD_COMPILED_PATH="$(top_builddir):$$GUILE_LOAD_COMPILED_PATH" \
$(GUILE) --no-auto-compile -L "$(top_builddir)" -L "$(top_srcdir)" \
"$(top_srcdir)/build-aux/download.scm"
gnu/packages/bootstrap/x86_64-linux/guile-2.0.7.tar.xz:
$(MKDIR_P) `dirname "$@"`
$(DOWNLOAD_FILE) "$@" "bc43210dcd146d242bef4d354b0aeac12c4ef3118c07502d17ffa8d49e15aa2c"
gnu/packages/bootstrap/i686-linux/guile-2.0.7.tar.xz:
$(MKDIR_P) `dirname "$@"`
$(DOWNLOAD_FILE) "$@" "f9a7c6f4c556eaafa2a69bcf07d4ffbb6682ea831d4c9da9ba095aca3ccd217c"
nobase_nodist_guilemodule_DATA = $(GOBJECTS) guix/config.scm
# Do we need to provide our own non-broken (srfi srfi-37) module?
if INSTALL_SRFI_37
nobase_nodist_guilemodule_DATA += srfi/srfi-37.scm
GOBJECTS += srfi/srfi-37.go
srfi/srfi-37.scm: srfi/srfi-37.scm.in
$(MKDIR_P) srfi
cp "$<" "$@"
endif INSTALL_SRFI_37
SCM_TESTS = \
tests/base32.scm \
tests/hash.scm \
tests/builders.scm \
tests/derivations.scm \
tests/ui.scm \
@@ -355,9 +140,12 @@ EXTRA_DIST = \
ROADMAP \
TODO \
.dir-locals.el \
hydra.scm \
build-aux/hydra/gnu-system.scm \
build-aux/check-available-binaries.scm \
build-aux/download.scm \
build-aux/list-packages.scm \
build-aux/sync-synopses.scm \
srfi/srfi-37.scm.in \
srfi/srfi-64.scm \
srfi/srfi-64.upstream.scm \
tests/test.drv \
@@ -398,7 +186,31 @@ $(guix_install_go_files): install-nobase_dist_guilemoduleDATA
SUBDIRS = po
info_TEXINFOS = doc/guix.texi
EXTRA_DIST += doc/fdl-1.3.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
if BUILD_DAEMON
@@ -413,6 +225,7 @@ AM_DISTCHECK_CONFIGURE_FLAGS = \
--enable-daemon
dist-hook: sync-synopses gen-ChangeLog assert-no-store-file-names
distcheck-hook: assert-binaries-available
sync-synopses:
-$(top_builddir)/pre-inst-env $(GUILE) \
@@ -435,4 +248,10 @@ assert-no-store-file-names:
exit 1 ; \
fi
.PHONY: sync-synopses gen-ChangeLog assert-no-store-file-names
# Make sure hydra.gnu.org has the important binaries.
assert-binaries-available:
$(top_builddir)/pre-inst-env "$(GUILE)" \
"$(top_srcdir)/build-aux/check-available-binaries.scm"
.PHONY: sync-synopses gen-ChangeLog
.PHONY: assert-no-store-file-names assert-binaries-available
+117
View File
@@ -11,6 +11,123 @@ Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
Please send Guix bug reports to bug-guix@gnu.org.
* Changes in 0.3 (since 0.2)
** Package management
*** Cross-compilation support
Guix can now cross-build packages. On the command-line, this is achieved with
the new --target command-line option of guix build. At the Scheme level,
the guts of this is the package-cross-derivation procedure. Core packages
of the distribution can already be cross-compiled. See the manual for
details.
*** New --max-silent-time option for “guix build” and “guix package”
See the manual for details.
*** New --fallback option for “guix build” and “guix package”
This option instructs to fall back to local builds when the substituter fails
to download a substitute.
*** New --requisites option for “guix gc”
See the manual for details.
*** New --key-download option for “guix refresh”
See the manual for details.
** Programming interfaces
*** New package-cross-derivation procedure in (guix derivations)
See the manual for details.
*** New %current-target-system SRFI-39 parameter
This parameter is like %current-system, but for cross-compilation. It
allows code in package definitions (such as in the arguments field) to know
whether it is being cross-compiled, and what the target system is.
*** New (guix hash) module; new open-sha256-port and sha256-port procedures
This improves performance of SHA256 computations.
** GNU distribution
*** 33 new packages
alsa-lib, babel, cairo, cvs, gcal, gcc-cross-mips64el-linux-gnuabi64, gd,
gdk-pixbuf, graphviz, grue-hunter, gtk+, gts, harfbuzz, imagemagick, iproute2,
iptables, libspectre, mpg321, noweb, pango, plotutils, privoxy, pytz, racket,
rubber, rush, strace, tk, torsocks, unrtf, vc-dwim, wordnet, xlockmore
*** 25 package updates
automake 1.14, ed 1.9, freeipmi 1.2.8, gawk 4.1.0, gcc 4.8.1, gettext 0.18.3,
glib 2.37.1, gmp 5.1.2, gnutls 3.2.1, gzip 1.6, help2man 1.43.3, libapr 1.4.8,
libaprutil 1.5.2, libassuan 2.1.1, libffi 3.0.13, libgc 7.2d, libgpg-error
1.12, libidn 1.28, libpng 1.5.17, lout 3.40, lsh 2.1, nettle 2.7.1, qemu
1.5.1, tzdata 2013d, xorriso 1.3.0
*** Binary packages now available for i686-linux
The build farm at http://hydra.gnu.org now provides 32-bit GNU/Linux binaries
(i686-linux), in addition to the x86_64-linux binaries. Both can be
transparently used as substitutes for local builds on these platforms.
*** Debug info packages
Some packages now have a “debug” output containing debugging information. The
“debug” output can be used by GDB, and can be installed separately from the
other outputs of the package. See “Installing Debugging Files” in the manual.
*** Bootstrap binaries can be cross-compiled
The distribution can now be ported to new architectures (currently
GNU/Linux-only) by cross-compiling the “bootstrap binaries”. See “Porting”
in the manual.
*** Bootstrapping documented
See “Bootstrapping” in the manual, for information on how the GNU
distribution builds “from scratch”.
** Internationalization
New translations: eo, pt_BR.
** Bugs fixed
*** “guix --help” now works when using Guile 2.0.5
*** Binary substituter multi-threading and pipe issues fixed
These could lead to random substituter crashes while substituting a binary.
See commits 0332386 and 101d9f3 for details.
*** Binary substituter gracefully handles lack of network connectivity
*** Daemon properly handles rebuilds of multiple-output derivations
Previously it would fail when rebuilding a multiple-output derivation when
some (but not all) of its outputs were already present. See
http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00038.html and
https://github.com/NixOS/nix/issues/122 .
*** guix package -i foo:out no longer removes other outputs of foo
Previously only the out output of package foo would be kept in the
profile.
*** Replacement (srfi srfi-37) provided if the users one is broken
When the users (srfi srfi-37) is affected by http://bugs.gnu.org/13176 (Guile
< 2.0.9), a replacement with the bug fix is provided. This bug would affect
command-line argument processing in some cases.
* Changes in 0.2 (since 0.1)
** Package management
+27 -5
View File
@@ -20,7 +20,7 @@ Guix is based on the [[http://nixos.org/nix/][Nix]] package manager.
GNU Guix currently depends on the following packages:
- [[http://gnu.org/software/guile/][GNU Guile 2.0.x]]
- [[http://gnu.org/software/guile/][GNU Guile 2.0.x]], version 2.0.5 or later
- [[http://gnupg.org/][GNU libgcrypt]]
Unless `--disable-daemon' was passed, the following packages are needed:
@@ -47,18 +47,40 @@ required:
- [[http://www.gnu.org/software/automake/][GNU Automake]]
- [[http://www.gnu.org/software/gettext/][GNU Gettext]]
The "autoreconf -vi" command can be used to generate the build system
infrastructure; it reports an error if an inappropriate version of the
above packages is being used.
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.
* Installing Guix from Guix
You can re-build and re-install Guix using a system that already runs Guix.
To do so:
- install the dependencies (see 'Requirements' above) using Guix
- Install the dependencies (see 'Requirements' above) and build tools using
Guix. You should have the following packages installed in your user
profile:
- autoconf
- automake
- bzip2
- gcc
- gettext
- glibc
- guile
- ld-wrapper
- libgcrypt
- pkg-config
- sqlite
- set the environment variables that Guix recommends you to set during the
package installation process:
ACLOCAL, CPATH, LIBRARY_PATH, PATH, PKG_CONFIG_PATH
In addition, set
GUIX_LD_WRAPPER_ALLOW_IMPURITIES=yes
- re-run the configure script passing it the option
`--with-libgcrypt-prefix=$HOME/.guix-profile/'
- run "make" and "make install"
* How It Works
+6 -1
View File
@@ -3,11 +3,16 @@ Transposing functional programming discipline to package management
proved to be inspiring and fruitful.
Thanks to the following people who contributed to GNU Guix through
suggestions, bug reports, patches, or general infrastructure help:
suggestions, bug reports, patches, internationalization, or general
infrastructure help:
Lluís Batlle i Rossell <viric@viric.name>
Felipe Castro <fefcas@gmail.com>
Daniel Clark <dclark@pobox.com>
Alexandru Cojocaru <xojoc@gmx.com>
Aleix Conchillo Flaqué <aconchillo@gmail.com>
Rafael Ferreira <rafael.f.f1@gmail.com>
Matthew Lien <bluet@bluet.org>
Alex Sassmannshausen <alex.sassmannshausen@gmail.com>
Jason Self <jself@gnu.org>
Alen Skondro <askondro@gmail.com>
+13 -7
View File
@@ -41,8 +41,10 @@ Like scripts/build-remote.pl in Nix.
* user interface
** Add a package.el (Emacs) back-end
Unfortunately package.el is monolithic, so most likely wed have to
write a new one based on it, as opposed to actually using it.
package.el is quite monolithic, but we may be able to reuse/extend
package-menu-mode or at least tabulated-list-mode.
** add guile-ncurses interface
* extend <origin>
** add OpenPGP signatures:
@@ -57,6 +59,12 @@ write a new one based on it, as opposed to actually using it.
* extend <package>
** add recommends field
For instance, glibc, binutils, gcc, and ld-wrapper would recommend each other.
guix package -i could ask interactively (?), or allow users to follow all or
none of the recommendations.
** add a user-environment-hook
This should specify builder code to be run when building a user
@@ -76,6 +84,7 @@ create a new dir.
("i3" ,p3)))
#+END_SRC
* synchronize package descriptions with GSRC and/or the [[http://directory.fsf.org][FSD]]
Meta-data for GNU packages, including descriptions and synopses, can be
@@ -83,11 +92,8 @@ dumped from the FSD:
http://directory.fsf.org/wiki?title=GNU/Export&action=purge .
We could periodically synchronize with that.
* support cross-compilation
Implement package-cross-derivation, and add the corresponding code in
gnu-build-system. Then, actually bootstrap a cross-compilation
environmente.g., a cross-GNU environment.
See http://lists.gnu.org/archive/html/bug-guix/2013-04/msg00120.html for info
on how to synchronize with GSRC's descriptions.
* add a guildhall build system
+57
View File
@@ -0,0 +1,57 @@
;;; 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/>.
;;;
;;; Check whether important binaries are available at hydra.gnu.org.
;;;
(use-modules (guix store)
(guix packages)
(guix derivations)
(gnu packages emacs)
(gnu packages make-bootstrap)
(srfi srfi-1)
(srfi srfi-26))
(define %supported-systems
'("x86_64-linux" "i686-linux"))
(let* ((store (open-connection))
(native (append-map (lambda (system)
(map (cut package-derivation store <> system)
(list %bootstrap-tarballs emacs)))
%supported-systems))
(cross (map (cut package-cross-derivation store
%bootstrap-tarballs <>)
'("mips64el-linux-gnuabi64")))
(total (append native cross)))
(define (warn proc)
(lambda (drv)
(or (proc drv)
(begin
(format (current-error-port) "~a is not substitutable~%"
drv)
#f))))
(let ((result (every (compose (warn (cut has-substitutes? store <>))
derivation-path->output-path)
total)))
(when result
(format (current-error-port) "~a packages found substitutable~%"
(length total)))
(exit result)))
+2 -1
View File
@@ -25,7 +25,8 @@
(web client)
(rnrs io ports)
(srfi srfi-11)
(guix utils))
(guix utils)
(guix hash))
(define %url-base
"http://alpha.gnu.org/gnu/guix/bootstrap"
+62 -15
View File
@@ -31,7 +31,7 @@
(and=> (assoc-ref (current-source-location) 'filename)
(lambda (file)
(let ((dir (dirname 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))))))
@@ -41,7 +41,11 @@
((guix utils) #:select (%current-system))
(gnu packages)
(gnu packages base)
(gnu packages gawk)
(gnu packages guile)
(gnu packages gettext)
(gnu packages multiprecision)
(gnu packages make-bootstrap)
(srfi srfi-1)
(srfi srfi-26)
(ice-9 match))
@@ -51,7 +55,8 @@
(setvbuf (current-error-port) _IOLBF)
(set-current-output-port (current-error-port))
(define (package->alist store package system)
(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))
(description . ,(package-synopsis package))
@@ -62,13 +67,55 @@
(define (package-job store job-name package system)
"Return a job called JOB-NAME that builds PACKAGE on SYSTEM."
`(,job-name . ,(cut package->alist store package system)))
(let ((job-name (symbol-append job-name (string->symbol ".")
(string->symbol system))))
`(,job-name . ,(cut package->alist store package system))))
(define (package-cross-job store job-name package target system)
"Return a job called TARGET.JOB-NAME that cross-builds PACKAGE for TARGET on
SYSTEM."
`(,(symbol-append (string->symbol target) (string->symbol ".") job-name
(string->symbol ".") (string->symbol system)) .
,(cute package->alist store package system
(cut package-cross-derivation <> <> target <>))))
(define %packages-to-cross-build
(list gmp mpfr mpc coreutils findutils diffutils patch sed grep
gawk gettext hello guile-2.0
%bootstrap-binaries-tarball
%binutils-bootstrap-tarball
%glibc-bootstrap-tarball
%gcc-bootstrap-tarball
%guile-bootstrap-tarball
%bootstrap-tarballs))
(define %cross-targets
'("mips64el-linux-gnu"
"mips64el-linux-gnuabi64"))
(define (hydra-jobs store arguments)
"Return Hydra jobs."
(define system
(or (assoc-ref arguments system)
(%current-system)))
(define systems
(match (filter-map (match-lambda
(('system . value)
value)
(_ #f))
arguments)
((lst ..1)
lst)
(_
(list (%current-system)))))
(define job-name
(compose string->symbol package-full-name))
(define (cross-jobs system)
(append-map (lambda (target)
(map (lambda (package)
(package-cross-job store (job-name package)
package target system))
%packages-to-cross-build))
%cross-targets))
;; Return one job for each package, except bootstrap packages.
(let ((base-packages (delete-duplicates
@@ -79,12 +126,12 @@
(((_ inputs _ ...) ...)
inputs))))
%final-inputs))))
(fold-packages (lambda (package result)
(if (member package base-packages)
result
(let ((name (string->symbol
(package-full-name package))))
(cons (package-job store name package
system)
result))))
'())))
(append-map (lambda (system)
(fold-packages (lambda (package result)
(if (member package base-packages)
result
(cons (package-job store (job-name package)
package system)
result)))
(cross-jobs system)))
systems)))
+202
View File
@@ -0,0 +1,202 @@
#!/bin/sh
exec guile -l "$0" \
-c '(apply (@ (list-packages) list-packages)
(cdr (command-line)))'
!#
;;; 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 (list-packages)
#:use-module (guix utils)
#:use-module (guix packages)
#:use-module (guix licenses)
#:use-module (guix gnu-maintenance)
#:use-module (gnu packages)
#:use-module (sxml simple)
#:use-module (web uri)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
#:export (list-packages))
;;; Commentary:
;;;
;;; Emit an HTML representation of the packages available in GNU Guix.
;;;
;;; Code:
(define lookup-gnu-package
(let ((gnu (official-gnu-packages)))
(lambda (name)
"Return the package description for GNU package NAME, or #f."
(find (lambda (package)
(equal? (gnu-package-name package) name))
gnu))))
(define (package->sxml package)
"Return HTML-as-SXML representing PACKAGE."
(define (source-url package)
(let ((loc (package-location package)))
(and loc
(string-append "http://git.savannah.gnu.org/cgit/guix.git/tree/"
(location-file loc) "#n"
(number->string (location-line loc))))))
(define (license package)
(define ->sxml
(match-lambda
((lst ...)
`(div ,(map ->sxml lst)))
((? license? license)
(let ((uri (license-uri license)))
(case (and=> (and uri (string->uri uri)) uri-scheme)
((http https)
`(div (a (@ (href ,uri))
,(license-name license))))
(else
`(div ,(license-name license) " ("
,(license-comment license) ")")))))
(#f "")))
(->sxml (package-license package)))
(define (status package)
(define (url system)
`(a (@ (href ,(string-append "http://hydra.gnu.org/job/gnu/master/"
(package-full-name package) "."
system)))
,system))
`(div "status: "
,(url "x86_64-linux") " "
,(url "i686-linux")))
(define (package-logo name)
(and=> (lookup-gnu-package name)
gnu-package-logo))
(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))))))
(define (packages->sxml packages)
"Return an HTML page as SXML describing PACKAGES."
`(div
(h2 "GNU Guix Package List")
(div (@ (style "margin-bottom: 5em;"))
(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))))
(define (list-packages . args)
"Return an HTML page listing all the packages found in the GNU distribution,
with gnu.org server-side include and all that."
;; Don't attempt to translate descriptions.
(setlocale LC_ALL "C")
;; Output the page as UTF-8 since that's what the gnu.org server-side
;; headers claim.
(set-port-encoding! (current-output-port) "UTF-8")
(let ((packages (sort (fold-packages cons '())
(lambda (p1 p2)
(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\" -->
<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\" -->
<div id=\"footer\">
<p>Please send general FSF &amp; GNU inquiries to
<a href=\"mailto:gnu@gnu.org\">&lt;gnu@gnu.org&gt;</a>.
There are also <a href=\"/contact/\">other ways to contact</a>
the FSF. Broken links and other corrections or suggestions can be sent
to <a href=\"mailto:bug-guix@gnu.org\">&lt;bug-guix@gnu.org&gt;</a>.</p>
<p>Copyright &copy; 2013 Free Software Foundation, Inc.</p>
<p>This page is licensed under a <a rel=\"license\"
href=\"http://creativecommons.org/licenses/by-nd/3.0/us/\">Creative
Commons Attribution-NoDerivs 3.0 United States License</a>.</p>
<p>Updated:
<!-- timestamp start -->
$Date$
<!-- timestamp end -->
</p>
</div>
</div>
</body>
</html>
"))
)
;;; list-packages.scm ends here
+7 -2
View File
@@ -2,8 +2,8 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.68)
AC_INIT([GNU Guix], [0.2], [bug-guix@gnu.org], [guix],
[http://gnu.org/software/guix/])
AC_INIT([GNU Guix], [0.3], [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 \
@@ -22,6 +22,7 @@ guilemoduledir="${datarootdir}/guile/site/2.0"
AC_SUBST([guilemoduledir])
GUIX_SYSTEM_TYPE
GUIX_ASSERT_SUPPORTED_SYSTEM
AC_ARG_WITH(store-dir,
AC_HELP_STRING([--with-store-dir=PATH],
@@ -50,6 +51,10 @@ fi
dnl Make sure we have a full-fledged Guile.
GUIX_ASSERT_GUILE_FEATURES([regex posix socket net-db threads])
dnl Check whether (srfi srfi-37) works, and provide our own if it doesn't.
GUIX_CHECK_SRFI_37
AM_CONDITIONAL([INSTALL_SRFI_37], [test "x$ac_cv_guix_srfi_37_broken" = xyes])
AC_ARG_WITH([nix-prefix],
[AS_HELP_STRING([--with-nix-prefix=DIR], [search for Nix in DIR])],
[case "$withval" in
+463 -43
View File
@@ -82,6 +82,7 @@ Documentation License.''
* Programming Interface:: Using Guix in Scheme.
* Utilities:: Package management commands.
* GNU Distribution:: Software for your friendly GNU system.
* Contributing:: Your help needed!
* Acknowledgments:: Thanks!
* GNU Free Documentation License:: The license of this manual.
@@ -96,8 +97,8 @@ Documentation License.''
GNU Guix@footnote{``Guix'' is pronounced like ``geeks'', or ``ɡiːks''
using the international phonetic alphabet (IPA).} is a functional
package management tool for the GNU system. Package management consists
in all the activities that relate to building packages from source,
honoring the build-time and run-time dependencies on packages,
of all activities that relate to building packages from sources,
honoring their build-time and run-time dependencies,
installing packages in user environments, upgrading installed packages
to new versions or rolling back to a previous set, removing unused
software packages, etc.
@@ -105,17 +106,17 @@ software packages, etc.
@cindex functional package management
The term @dfn{functional} refers to a specific package management
discipline. In Guix, the package build and installation process is seen
as a function, in the mathematical sense: that function takes inputs,
such as build scripts, a compiler, and libraries depended on, and
returns the installed package. As a pure function, its result depends
as a function, in the mathematical sense. That function takes inputs,
such as build scripts, a compiler, and libraries, and
returns an installed package. As a pure function, its result depends
solely on its inputs---for instance, it cannot refer to software or
scripts that were not explicitly passed as inputs. A build function
always produces the same result when passed a given set of inputs. Last
but not least, a build function cannot alter the system's environment in
always produces the same result when passed a given set of inputs. It
cannot alter the system's environment in
any way; for instance, it cannot create, modify, or delete files outside
of its build and installation directories. This is achieved by running
build processes in dedicated ``chroots'', where only their explicit
inputs are visible.
build processes in isolated environments (or @dfn{chroots}), where only their
explicit inputs are visible.
@cindex store
The result of package build functions is @dfn{cached} in the file
@@ -126,12 +127,11 @@ a hash of all the inputs used to build that package; thus, changing an
input yields a different directory name.
This approach is the foundation of Guix's salient features: support for
transactional package upgrades and rollback, per-user installation, and
transactional package upgrade and rollback, per-user installation, and
garbage collection of packages (@pxref{Features}).
Guix has a command-line interface allowing users to build, install,
Guix has a command-line interface, which allows users to build, install,
upgrade, and remove packages, as well as a Scheme programming interface.
The remainder of this manual describes them.
Last but not least, Guix is used to build a distribution of the GNU
system, with many GNU and non-GNU free software packages. @xref{GNU
@@ -162,7 +162,7 @@ is not covered here. Please see the files @file{README} and
GNU Guix depends on the following packages:
@itemize
@item @url{http://gnu.org/software/guile/, GNU Guile 2.0.x};
@item @url{http://gnu.org/software/guile/, GNU Guile}, version 2.0.5 or later;
@item @url{http://gnupg.org/, GNU libgcrypt}
@end itemize
@@ -175,19 +175,20 @@ following packages are also needed:
@item @url{http://gcc.gnu.org, GCC's g++}
@end itemize
When a working installation of the Nix package manager is available, you
When a working installation of @url{http://nixos.org/nix/, the Nix package
manager} is available, you
can instead configure Guix with @code{--disable-daemon}. In that case,
@url{http://nixos.org/nix/, Nix} replaces the three dependencies above.
Nix replaces the three dependencies above.
Guix is compatible with Nix, so it is possible to share the same store
between both. To do so, you must pass @command{configure} not only the
same @code{--with-store-dir} value, but also the same
@code{--localstatedir} value (the latter is essential because it
specifies where the database that store meta-data about the store is
located, among other things.) The default values are
@code{--localstatedir} value. The latter is essential because it
specifies where the database that stores metadata about the store is
located, among other things. The default values are
@code{--with-store-dir=/nix/store} and @code{--localstatedir=/nix/var}.
Note that @code{--disable-daemon} is orthogonal and is not required if
your goal is to share the same store as Nix.
Note that @code{--disable-daemon} is not required if
your goal is to share the store with Nix.
@node Setting Up the Daemon
@section Setting Up the Daemon
@@ -398,6 +399,7 @@ management tools it provides.
@menu
* Features:: How Guix will make your life brighter.
* Invoking guix package:: Package installation, removal, etc.
* Packages with Multiple Outputs:: Single source package, multiple outputs.
* Invoking guix gc:: Running the garbage collector.
* Invoking guix pull:: Fetching the latest Guix and distribution.
@end menu
@@ -490,7 +492,8 @@ directory is normally
@var{localstatedir} is the value passed to @code{configure} as
@code{--localstatedir}, and @var{user} is the user name. It must be
created by @code{root}, with @var{user} as the owner. When it does not
exist, @command{guix package} emits an error about it.
exist, or is not owned by @var{user}, @command{guix package} emits an
error about it.
The @var{options} can be among the following:
@@ -505,7 +508,8 @@ Install @var{package}.
such as @code{guile-1.8.8}. If no version number is specified, the
newest available version will be selected. In addition, @var{package}
may contain a colon, followed by the name of one of the outputs of the
package, as in @code{gcc:doc} or @code{binutils-2.22:lib}.
package, as in @code{gcc:doc} or @code{binutils-2.22:lib}
(@pxref{Packages with Multiple Outputs}).
@cindex propagated inputs
Sometimes packages have @dfn{propagated inputs}: these are dependencies
@@ -594,8 +598,13 @@ Use @var{profile} instead of the user's default profile.
@itemx -n
Show what would be done without actually doing it.
@item --fallback
When substituting a pre-built binary fails, fall back to building
packages locally.
@item --no-substitutes
Build instead of resorting to pre-built substitutes.
@itemx --max-silent-time=@var{seconds}
Same as for @command{guix build} (@pxref{Invoking guix build}).
@item --verbose
Produce verbose output. In particular, emit the environment's build log
@@ -651,12 +660,60 @@ List packages currently available in the software distribution
installed packages whose name matches @var{regexp}.
For each package, print the following items separated by tabs: its name,
its version string, the parts of the package (@code{out} for the main
files, @code{lib} for libraries and possibly headers, etc.), and the
source location of its definition.
its version string, the parts of the package (@pxref{Packages with
Multiple Outputs}), and the source location of its definition.
@end table
@node Packages with Multiple Outputs
@section Packages with Multiple Outputs
@cindex multiple-output packages
@cindex package outputs
Often, packages defined in Guix have a single @dfn{output}---i.e., the
source package leads exactly one directory in the store. When running
@command{guix package -i glibc}, one installs the default output of the
GNU libc package; the default output is called @code{out}, but its name
can be omitted as shown in this command. In this particular case, the
default output of @code{glibc} contains all the C header files, shared
libraries, static libraries, Info documentation, and other supporting
files.
Sometimes it is more appropriate to separate the various types of files
produced from a single source package into separate outputs. For
instance, the GLib C library (used by GTK+ and related packages)
installs more than 20 MiB of reference documentation as HTML pages.
To save space for users who do not need it, the documentation goes to a
separate output, called @code{doc}. To install the main GLib output,
which contains everything but the documentation, one would run:
@example
guix package -i glib
@end example
The command to install its documentation is:
@example
guix package -i glib:doc
@end example
Some packages install programs with different ``dependency footprints''.
For instance, the WordNet package install both command-line tools and
graphical user interfaces (GUIs). The former depend solely on the C
library, whereas the latter depend on Tcl/Tk and the underlying X
libraries. In this case, we leave the command-line tools in the default
output, whereas the GUIs are in a separate output. This allows users
who do not need the GUIs to save space.
There are several such multiple-output packages in the GNU distribution.
Other conventional output names include @code{lib} for libraries and
possibly header files, @code{bin} for stand-alone programs, and
@code{debug} for debugging information (@pxref{Installing Debugging
Files}). The outputs of a packages are listed in the third column of
the output of @command{guix package --list-available} (@pxref{Invoking
guix package}).
@node Invoking guix gc
@section Invoking @command{guix gc}
@@ -715,6 +772,13 @@ In addition, the references among existing store files can be queried:
List the references (respectively, the referrers) of store files given
as arguments.
@item --requisites
@itemx -R
List the requisites of the store files passed as arguments. Requisites
include the store files themselves, their references, and the references
of these, recursively. In other words, the returned list is the
@dfn{transitive closure} of the store files.
@end table
@@ -917,6 +981,23 @@ must be a connection to the daemon, which operates on the store
(@pxref{The Store}).
@end deffn
@noindent
@cindex cross-compilation
Similarly, it is possible to compute a derivation that cross-builds a
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}.
@var{target} must be a valid GNU triplet denoting the target hardware
and operating system, such as @code{"mips64el-linux-gnu"}
(@pxref{Configuration Names, GNU configuration triplets,, configure, GNU
Configure and Build System}).
@end deffn
@node The Store
@section The Store
@@ -1179,6 +1260,12 @@ different personalities. For instance, passing
@code{--system=i686-linux} on an @code{x86_64-linux} system allows users
to build packages in a complete 32-bit environment.
@item --target=@var{triplet}
@cindex cross-compilation
Cross-build for @var{triplet}, which must be a valid GNU triplet, such
as @code{"mips64el-linux-gnu"} (@pxref{Configuration Names, GNU
configuration triplets,, configure, GNU Configure and Build System}).
@item --derivations
@itemx -d
Return the derivation paths, not the output paths, of the given
@@ -1194,9 +1281,17 @@ the end of the build log. This is useful when debugging build issues.
@itemx -n
Do not build the derivations.
@item --fallback
When substituting a pre-built binary fails, fall back to building
packages locally.
@item --no-substitutes
Build instead of resorting to pre-built substitutes.
@item --max-silent-time=@var{seconds}
When the build or substitution process remains silent for more than
@var{seconds}, terminate it and report a build failure.
@item --cores=@var{n}
@itemx -c @var{n}
Allow the use of up to @var{n} CPU cores for the build. The special
@@ -1381,30 +1476,355 @@ guix package}):
guix package --list-available
@end example
The package definitions of the distribution may are provided by Guile
modules in the @code{(gnu packages ...)} name space---for instance, the
@code{(gnu packages emacs)} module exports a variable named
@code{emacs}, which is bound to a @code{<package>} object
(@pxref{Defining Packages}). The @code{(gnu packages)} module provides
facilities for searching for packages.
The distribution is fully @dfn{bootstrapped} and @dfn{self-contained}:
each package is built based solely on other packages in the
distribution. The root of this dependency graph is a small set of
@dfn{bootstrap binaries}, provided by the @code{(gnu packages
bootstrap)} module. These are statically-linked binaries of the core
tools without which building anything at all would be impossible.
Our goal is to build a practical 100% free software distribution of
Linux-based and other variants of GNU, with a focus on the promotion and
tight integration of GNU components, and an emphasis on programs and
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.
* Bootstrapping:: GNU/Linux built from scratch.
* Porting:: Targeting another platform or kernel.
@end menu
Building this distribution is a cooperative effort, and you are invited
to join! Please get in touch with us on @email{bug-guix@@gnu.org}. We
to join! @ref{Contributing}, for information about how you can help.
@node Installing Debugging Files
@section Installing Debugging Files
Program binaries, as produced by the GCC compilers for instance, are
typically written in the ELF format, with a section containing
@dfn{debugging information}. Debugging information is what allows the
debugger, GDB, to map binary code to source code; it is required to
debug a compiled program in good conditions.
The problem with debugging information is that is takes up a fair amount
of disk space. For example, debugging information for the GNU C Library
weighs in at more than 60 MiB. Thus, as a user, keeping all the
debugging info of all the installed programs is usually not an option.
Yet, space savings should not come at the cost of an impediment to
debugging---especially in the GNU system, which should make it easier
for users to exert their computing freedom (@pxref{GNU Distribution}).
Thankfully, the GNU Binary Utilities (Binutils) and GDB provide a
mechanism that allows users to get the best of both worlds: debugging
information can be stripped from the binaries and stored in separate
files. GDB is then able to load debugging information from those files,
when they are available (@pxref{Separate Debug Files,,, gdb, Debugging
with GDB}).
The GNU distribution takes advantage of this by storing debugging
information in the @code{lib/debug} sub-directory of a separate package
output unimaginatively called @code{debug} (@pxref{Packages with
Multiple Outputs}). Users can choose to install the @code{debug} output
of a package when they need it. For instance, the following command
installs the debugging information for the GNU C Library and for GNU
Guile:
@example
guix package -i glibc:debug -i guile:debug
@end example
GDB must then be told to look for debug files in the user's profile, by
setting the @code{debug-file-directory} variable (consider setting it
from the @file{~/.gdbinit} file, @pxref{Startup,,, gdb, Debugging with
GDB}):
@example
(gdb) set debug-file-directory ~/.guix-profile/lib/debug
@end example
From there on, GDB will pick up debugging information from the
@code{.debug} files under @file{~/.guix-profile/lib/debug}.
@c XXX: keep me up-to-date
The @code{debug} output mechanism in Guix is implemented by the
@code{gnu-build-system} (@pxref{Defining Packages}). Currently, it is
opt-in---debugging information is available only for those packages
whose definition explicitly declares a @code{debug} output. This may be
changed to opt-out in the future, if our build farm servers can handle
the load. To check whether a package has a @code{debug} output, use
@command{guix package --list-available} (@pxref{Invoking guix package}).
@node Package Modules
@section Package Modules
From a programming viewpoint, the package definitions of the
distribution are provided by Guile modules in the @code{(gnu packages
...)} name space (@pxref{Modules, Guile modules,, guile, GNU Guile
Reference Manual}). For instance, the @code{(gnu packages emacs)}
module exports a variable named @code{emacs}, which is bound to a
@code{<package>} object (@pxref{Defining Packages}). The @code{(gnu
packages)} module provides facilities for searching for packages.
The distribution is fully @dfn{bootstrapped} and @dfn{self-contained}:
each package is built based solely on other packages in the
distribution. The root of this dependency graph is a small set of
@dfn{bootstrap binaries}, provided by the @code{(gnu packages
bootstrap)} module. For more information on bootstrapping,
@ref{Bootstrapping}.
@node Adding New Packages
@section Adding New Packages
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
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
essentially two things: adding a @dfn{recipe} that describes how to
build the package, including a list of other packages required to build
it, and adding @dfn{package meta-data} along with that recipe, such as a
description and licensing information.
In Guix all this information is embodied in @dfn{package definitions}.
Package definitions provide a high-level view of the package. They are
written using the syntax of the Scheme programming language; in fact,
for each package we define a variable bound to the package definition,
and export that variable from a module (@pxref{Package Modules}).
However, in-depth Scheme knowledge is @emph{not} a prerequisite for
creating packages. For more information on package definitions,
@ref{Defining Packages}.
Once a package definition is in place, stored in a file in the Guix
source tree, it can be tested using the @command{guix build} command
(@pxref{Invoking guix build}). For example, assuming the new package is
called @code{gnew}, you may run this command from the Guix build tree:
@example
./pre-inst-env guix build gnew --keep-failed
@end example
Using @code{--keep-failed} makes it easier to debug build failures since
it provides access to the failed build tree.
Once your package builds correctly, please send us a patch
(@pxref{Contributing}). Well, if you need help, we will be happy to
help you too. Once the patch is committed in the Guix repository, the
new package automatically gets built on the supported platforms by
@url{http://hydra.gnu.org/gnu/master, our continuous integration
system}.
@cindex substituter
Users can obtain the new package definition simply by running
@command{guix pull} (@pxref{Invoking guix pull}). When
@code{hydra.gnu.org} is done building the package, installing the
package automatically downloads binaries from there (except when using
@code{--no-substitutes}). The only place where human intervention is
needed is to review and apply the patch.
@node Bootstrapping
@section Bootstrapping
@c Adapted from the ELS 2013 paper.
@cindex bootstrapping
Bootstrapping in our context refers to how the distribution gets built
``from nothing''. Remember that the build environment of a derivation
contains nothing but its declared inputs (@pxref{Introduction}). So
there's an obvious chicken-and-egg problem: how does the first package
get built? How does the first compiler get compiled? Note that this is
a question of interest only to the curious hacker, not to the regular
user, so you can shamelessly skip this section if you consider yourself
a ``regular user''.
@cindex bootstrap binaries
The GNU system is primarily made of C code, with libc at its core. The
GNU build system itself assumes the availability of a Bourne shell and
command-line tools provided by GNU Coreutils, Awk, Findutils, `sed', and
`grep'. Furthermore, build programs---programs that run
@code{./configure}, @code{make}, etc.---are written in Guile Scheme
(@pxref{Derivations}). Consequently, to be able to build anything at
all, from scratch, Guix relies on pre-built binaries of Guile, GCC,
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.)
@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}
The figure above shows the very beginning of the dependency graph of the
distribution, corresponding to the package definitions of the @code{(gnu
packages bootstrap)} module. At this level of detail, things are
slightly complex. First, Guile itself consists of an ELF executable,
along with many source and compiled Scheme files that are dynamically
loaded when it runs. This gets stored in the @file{guile-2.0.7.tar.xz}
tarball shown in this graph. This tarball is part of Guix's ``source''
distribution, and gets inserted into the store with @code{add-to-store}
(@pxref{The Store}).
But how do we write a derivation that unpacks this tarball and adds it
to the store? To solve this problem, the @code{guile-bootstrap-2.0.drv}
derivation---the first one that gets built---uses @code{bash} as its
builder, which runs @code{build-bootstrap-guile.sh}, which in turn calls
@code{tar} to unpack the tarball. Thus, @file{bash}, @file{tar},
@file{xz}, and @file{mkdir} are statically-linked binaries, also part of
the Guix source distribution, whose sole purpose is to allow the Guile
tarball to be unpacked.
Once @code{guile-bootstrap-2.0.drv} is built, we have a functioning
Guile that can be used to run subsequent build programs. Its first task
is to download tarballs containing the other pre-built binaries---this
is what the @code{.tar.xz.drv} derivations do. Guix modules such as
@code{ftp-client.scm} are used for this purpose. The
@code{module-import.drv} derivations import those modules in a directory
in the store, using the original layout. The
@code{module-import-compiled.drv} derivations compile those modules, and
write them in an output directory with the right layout. This
corresponds to the @code{#:modules} argument of
@code{build-expression->derivation} (@pxref{Derivations}).
Finally, the various tarballs are unpacked by the
derivations @code{gcc-bootstrap-0.drv}, @code{glibc-bootstrap-0.drv},
etc., at which point we have a working C tool chain.
@unnumberedsubsec Building the Build Tools
@c TODO: Add a package-level dependency graph generated from (gnu
@c packages base).
Bootstrapping is complete when we have a full tool chain that does not
depend on the pre-built bootstrap tools discussed above. This
no-dependency requirement is verified by checking whether the files of
the final tool chain contain references to the @file{/nix/store}
directories of the bootstrap inputs. The process that leads to this
``final'' tool chain is described by the package definitions found in
the @code{(gnu packages base)} module.
@c See <http://lists.gnu.org/archive/html/gnu-system-discuss/2012-10/msg00000.html>.
The first tool that gets built with the bootstrap binaries is
GNU Make, which is a prerequisite for all the following packages.
From there Findutils and Diffutils get built.
Then come the first-stage Binutils and GCC, built as pseudo cross
tools---i.e., with @code{--target} equal to @code{--host}. They are
used to build libc. Thanks to this cross-build trick, this libc is
guaranteed not to hold any reference to the initial tool chain.
From there the final Binutils and GCC are built. GCC uses @code{ld}
from the final Binutils, and links programs against the just-built libc.
This tool chain is used to build the other packages used by Guix and by
the GNU Build System: Guile, Bash, Coreutils, etc.
And voilà! At this point we have the complete set of build tools that
the GNU Build System expects. These are in the @code{%final-inputs}
variables of the @code{(gnu packages base)} module, and are implicitly
used by any package that uses @code{gnu-build-system} (@pxref{Defining
Packages}).
@unnumberedsubsec Building the Bootstrap Binaries
Because the final tool chain does not depend on the bootstrap binaries,
those rarely need to be updated. Nevertheless, it is useful to have an
automated way to produce them, should an update occur, and this is what
the @code{(gnu packages make-bootstrap)} module provides.
The following command builds the tarballs containing the bootstrap
binaries (Guile, Binutils, GCC, libc, and a tarball containing a mixture
of Coreutils and other basic command-line tools):
@example
guix build bootstrap-tarballs
@end example
The generated tarballs are those that should be referred to in the
@code{(gnu packages bootstrap)} module mentioned at the beginning of
this section.
Still here? Then perhaps by now you've started to wonder: when do we
reach a fixed point? That is an interesting question! The answer is
unknown, but if you would like to investigate further (and have
significant computational and storage resources to do so), then let us
know.
@node Porting
@section Porting to a New Platform
As discussed above, the GNU distribution is self-contained, and
self-containment is achieved by relying on pre-built ``bootstrap
binaries'' (@pxref{Bootstrapping}). These binaries are specific to an
operating system kernel, CPU architecture, and application binary
interface (ABI). Thus, to port the distribution to a platform that is
not yet supported, one must build those bootstrap binaries, and update
the @code{(gnu packages bootstrap)} module to use them on that platform.
Fortunately, Guix can @emph{cross compile} those bootstrap binaries.
When everything goes well, and assuming the GNU tool chain supports the
target platform, this can be as simple as running a command like this
one:
@example
guix build --target=armv5tel-linux-gnueabi bootstrap-tarballs
@end example
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.)
Second, some of the required packages could fail to build for that
platform. Lastly, the generated binaries could be broken for some
reason.
@c *********************************************************************
@node Contributing
@chapter Contributing
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.
the project. We particularly welcome help on packaging (@pxref{Adding
New Packages}).
Please see the
@url{http://git.savannah.gnu.org/cgit/guix.git/tree/HACKING,
@file{HACKING} file} that comes with the Guix source code for practical
details about contributions.
@c *********************************************************************
+83
View File
@@ -0,0 +1,83 @@
# Obtained by running "nix-store --graph" on the first GCC derivation.
digraph G {
"/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [label = "gcc-bootstrap-0.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/3iawic1z95112yfz5y9xdp66qbxxr8l1-tar" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "black"];
"/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "red"];
"/nix/store/8cc81w6m04csm52y247xj3gydrbz2niv-xz" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "green"];
"/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "blue"];
"/nix/store/fl9cwcczfdv73vq5sr0c4rd5hqzrgvac-gcc-4.7.2.tar.xz.drv" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "magenta"];
"/nix/store/jaaqdl979wjirnbxz1jqsipg22nva5n4-bash" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "burlywood"];
"/nix/store/r3dsy5j2c16sv26raala6kahff7w18hb-gcc-bootstrap-0-guile-builder" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "black"];
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "red"];
"/nix/store/y4n7rzysx6qz3p0n91dw9qz5w93l6iqv-module-import-compiled.drv" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "green"];
"/nix/store/3iawic1z95112yfz5y9xdp66qbxxr8l1-tar" [label = "tar", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [label = "glibc-bootstrap-0.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/3iawic1z95112yfz5y9xdp66qbxxr8l1-tar" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "blue"];
"/nix/store/8cc81w6m04csm52y247xj3gydrbz2niv-xz" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "magenta"];
"/nix/store/8iivk9hpnps21yrbq3zzsxgzv9ixbhgh-glibc-bootstrap-0-guile-builder" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "burlywood"];
"/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "black"];
"/nix/store/wdwrkg02gn28bkpbxgdb2nv558v8s3ji-glibc-2.17.tar.xz.drv" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "red"];
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "green"];
"/nix/store/y4n7rzysx6qz3p0n91dw9qz5w93l6iqv-module-import-compiled.drv" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "blue"];
"/nix/store/8cc81w6m04csm52y247xj3gydrbz2niv-xz" [label = "xz", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/8iivk9hpnps21yrbq3zzsxgzv9ixbhgh-glibc-bootstrap-0-guile-builder" [label = "glibc-bootstrap-0-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/3iawic1z95112yfz5y9xdp66qbxxr8l1-tar" -> "/nix/store/8iivk9hpnps21yrbq3zzsxgzv9ixbhgh-glibc-bootstrap-0-guile-builder" [color = "magenta"];
"/nix/store/8cc81w6m04csm52y247xj3gydrbz2niv-xz" -> "/nix/store/8iivk9hpnps21yrbq3zzsxgzv9ixbhgh-glibc-bootstrap-0-guile-builder" [color = "burlywood"];
"/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" [label = "module-import.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/9zrdfvnrpljryr82an2n1mj6bh2przhn-module-import-guile-builder" -> "/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" [color = "black"];
"/nix/store/mj7amprgvl2rgash1nr0v64apik8vc7f-utils.scm" -> "/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" [color = "red"];
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" [color = "green"];
"/nix/store/9zrdfvnrpljryr82an2n1mj6bh2przhn-module-import-guile-builder" [label = "module-import-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/mj7amprgvl2rgash1nr0v64apik8vc7f-utils.scm" -> "/nix/store/9zrdfvnrpljryr82an2n1mj6bh2przhn-module-import-guile-builder" [color = "blue"];
"/nix/store/fl9cwcczfdv73vq5sr0c4rd5hqzrgvac-gcc-4.7.2.tar.xz.drv" [label = "gcc-4.7.2.tar.xz.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/6kslnirvm26fij7wpjqbw617ri4gf5x5-gcc-4.7.2.tar.xz-guile-builder" -> "/nix/store/fl9cwcczfdv73vq5sr0c4rd5hqzrgvac-gcc-4.7.2.tar.xz.drv" [color = "magenta"];
"/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" -> "/nix/store/fl9cwcczfdv73vq5sr0c4rd5hqzrgvac-gcc-4.7.2.tar.xz.drv" [color = "burlywood"];
"/nix/store/pzv319p3q7raiad7nq7fcdw9rafzp14k-module-import-compiled.drv" -> "/nix/store/fl9cwcczfdv73vq5sr0c4rd5hqzrgvac-gcc-4.7.2.tar.xz.drv" [color = "black"];
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/fl9cwcczfdv73vq5sr0c4rd5hqzrgvac-gcc-4.7.2.tar.xz.drv" [color = "red"];
"/nix/store/6kslnirvm26fij7wpjqbw617ri4gf5x5-gcc-4.7.2.tar.xz-guile-builder" [label = "gcc-4.7.2.tar.xz-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/jaaqdl979wjirnbxz1jqsipg22nva5n4-bash" [label = "bash", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" [label = "module-import.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/abagrdbdndkd0y2dwk0nw1gw0g0rhl2z-ftp-client.scm" -> "/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" [color = "green"];
"/nix/store/dwd2iwd1ban8a8rmx568dpgrbkkidfhw-download.scm" -> "/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" [color = "blue"];
"/nix/store/mj7amprgvl2rgash1nr0v64apik8vc7f-utils.scm" -> "/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" [color = "magenta"];
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" [color = "burlywood"];
"/nix/store/yfixjx2gpvsi5dhkpdx5gj6gx0xdk1c8-module-import-guile-builder" -> "/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" [color = "black"];
"/nix/store/abagrdbdndkd0y2dwk0nw1gw0g0rhl2z-ftp-client.scm" [label = "ftp-client.scm", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/dwd2iwd1ban8a8rmx568dpgrbkkidfhw-download.scm" [label = "download.scm", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/mj7amprgvl2rgash1nr0v64apik8vc7f-utils.scm" [label = "utils.scm", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/pzv319p3q7raiad7nq7fcdw9rafzp14k-module-import-compiled.drv" [label = "module-import-compiled.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/98gzqlgpm4gxrpl5bzykpqbwrx8ckx8l-module-import-compiled-guile-builder" -> "/nix/store/pzv319p3q7raiad7nq7fcdw9rafzp14k-module-import-compiled.drv" [color = "red"];
"/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" -> "/nix/store/pzv319p3q7raiad7nq7fcdw9rafzp14k-module-import-compiled.drv" [color = "green"];
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/pzv319p3q7raiad7nq7fcdw9rafzp14k-module-import-compiled.drv" [color = "blue"];
"/nix/store/98gzqlgpm4gxrpl5bzykpqbwrx8ckx8l-module-import-compiled-guile-builder" [label = "module-import-compiled-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/r3dsy5j2c16sv26raala6kahff7w18hb-gcc-bootstrap-0-guile-builder" [label = "gcc-bootstrap-0-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/3iawic1z95112yfz5y9xdp66qbxxr8l1-tar" -> "/nix/store/r3dsy5j2c16sv26raala6kahff7w18hb-gcc-bootstrap-0-guile-builder" [color = "magenta"];
"/nix/store/8cc81w6m04csm52y247xj3gydrbz2niv-xz" -> "/nix/store/r3dsy5j2c16sv26raala6kahff7w18hb-gcc-bootstrap-0-guile-builder" [color = "burlywood"];
"/nix/store/jaaqdl979wjirnbxz1jqsipg22nva5n4-bash" -> "/nix/store/r3dsy5j2c16sv26raala6kahff7w18hb-gcc-bootstrap-0-guile-builder" [color = "black"];
"/nix/store/wdwrkg02gn28bkpbxgdb2nv558v8s3ji-glibc-2.17.tar.xz.drv" [label = "glibc-2.17.tar.xz.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" -> "/nix/store/wdwrkg02gn28bkpbxgdb2nv558v8s3ji-glibc-2.17.tar.xz.drv" [color = "red"];
"/nix/store/pzv319p3q7raiad7nq7fcdw9rafzp14k-module-import-compiled.drv" -> "/nix/store/wdwrkg02gn28bkpbxgdb2nv558v8s3ji-glibc-2.17.tar.xz.drv" [color = "green"];
"/nix/store/q7as3jddipj4g6si8lawrdbkjg0zcjvg-glibc-2.17.tar.xz-guile-builder" -> "/nix/store/wdwrkg02gn28bkpbxgdb2nv558v8s3ji-glibc-2.17.tar.xz.drv" [color = "blue"];
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/wdwrkg02gn28bkpbxgdb2nv558v8s3ji-glibc-2.17.tar.xz.drv" [color = "magenta"];
"/nix/store/q7as3jddipj4g6si8lawrdbkjg0zcjvg-glibc-2.17.tar.xz-guile-builder" [label = "glibc-2.17.tar.xz-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" [label = "guile-bootstrap-2.0.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/bplka3yqdg8prqq3zdxza6wxlkjdhr2g-build-bootstrap-guile.sh" -> "/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" [color = "burlywood"];
"/nix/store/jaaqdl979wjirnbxz1jqsipg22nva5n4-bash" -> "/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" [color = "black"];
"/nix/store/bplka3yqdg8prqq3zdxza6wxlkjdhr2g-build-bootstrap-guile.sh" [label = "build-bootstrap-guile.sh", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/3iawic1z95112yfz5y9xdp66qbxxr8l1-tar" -> "/nix/store/bplka3yqdg8prqq3zdxza6wxlkjdhr2g-build-bootstrap-guile.sh" [color = "red"];
"/nix/store/4xv2y0m6zr2lgi8x8pcb3zxjqxsz69kj-mkdir" -> "/nix/store/bplka3yqdg8prqq3zdxza6wxlkjdhr2g-build-bootstrap-guile.sh" [color = "green"];
"/nix/store/8cc81w6m04csm52y247xj3gydrbz2niv-xz" -> "/nix/store/bplka3yqdg8prqq3zdxza6wxlkjdhr2g-build-bootstrap-guile.sh" [color = "blue"];
"/nix/store/c450lqvaaz3ngx9pfiiiw55rqq6ssfda-guile-2.0.7.tar.xz" -> "/nix/store/bplka3yqdg8prqq3zdxza6wxlkjdhr2g-build-bootstrap-guile.sh" [color = "magenta"];
"/nix/store/4xv2y0m6zr2lgi8x8pcb3zxjqxsz69kj-mkdir" [label = "mkdir", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/c450lqvaaz3ngx9pfiiiw55rqq6ssfda-guile-2.0.7.tar.xz" [label = "guile-2.0.7.tar.xz", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/y4n7rzysx6qz3p0n91dw9qz5w93l6iqv-module-import-compiled.drv" [label = "module-import-compiled.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/8jiqjlb6zxjys16ca7s6jvxcc620c71k-module-import-compiled-guile-builder" -> "/nix/store/y4n7rzysx6qz3p0n91dw9qz5w93l6iqv-module-import-compiled.drv" [color = "burlywood"];
"/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" -> "/nix/store/y4n7rzysx6qz3p0n91dw9qz5w93l6iqv-module-import-compiled.drv" [color = "black"];
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/y4n7rzysx6qz3p0n91dw9qz5w93l6iqv-module-import-compiled.drv" [color = "red"];
"/nix/store/8jiqjlb6zxjys16ca7s6jvxcc620c71k-module-import-compiled-guile-builder" [label = "module-import-compiled-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/yfixjx2gpvsi5dhkpdx5gj6gx0xdk1c8-module-import-guile-builder" [label = "module-import-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/abagrdbdndkd0y2dwk0nw1gw0g0rhl2z-ftp-client.scm" -> "/nix/store/yfixjx2gpvsi5dhkpdx5gj6gx0xdk1c8-module-import-guile-builder" [color = "green"];
"/nix/store/dwd2iwd1ban8a8rmx568dpgrbkkidfhw-download.scm" -> "/nix/store/yfixjx2gpvsi5dhkpdx5gj6gx0xdk1c8-module-import-guile-builder" [color = "blue"];
"/nix/store/mj7amprgvl2rgash1nr0v64apik8vc7f-utils.scm" -> "/nix/store/yfixjx2gpvsi5dhkpdx5gj6gx0xdk1c8-module-import-guile-builder" [color = "magenta"];
}
+263
View File
@@ -0,0 +1,263 @@
# 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/>.
# Definitions for the GNU System: package modules, patches, bootstrap
# binaries.
GNU_SYSTEM_MODULES = \
gnu/packages.scm \
gnu/packages/acl.scm \
gnu/packages/algebra.scm \
gnu/packages/aspell.scm \
gnu/packages/attr.scm \
gnu/packages/autotools.scm \
gnu/packages/avahi.scm \
gnu/packages/base.scm \
gnu/packages/bash.scm \
gnu/packages/bdb.scm \
gnu/packages/bdw-gc.scm \
gnu/packages/bison.scm \
gnu/packages/bootstrap.scm \
gnu/packages/cdrom.scm \
gnu/packages/cflow.scm \
gnu/packages/check.scm \
gnu/packages/cmake.scm \
gnu/packages/compression.scm \
gnu/packages/cpio.scm \
gnu/packages/cppi.scm \
gnu/packages/cross-base.scm \
gnu/packages/cryptsetup.scm \
gnu/packages/curl.scm \
gnu/packages/cyrus-sasl.scm \
gnu/packages/dejagnu.scm \
gnu/packages/ddrescue.scm \
gnu/packages/dwm.scm \
gnu/packages/ed.scm \
gnu/packages/emacs.scm \
gnu/packages/fdisk.scm \
gnu/packages/file.scm \
gnu/packages/flex.scm \
gnu/packages/fontutils.scm \
gnu/packages/freeipmi.scm \
gnu/packages/gawk.scm \
gnu/packages/gcal.scm \
gnu/packages/gcc.scm \
gnu/packages/gd.scm \
gnu/packages/gdb.scm \
gnu/packages/gdbm.scm \
gnu/packages/gettext.scm \
gnu/packages/ghostscript.scm \
gnu/packages/glib.scm \
gnu/packages/global.scm \
gnu/packages/gnupg.scm \
gnu/packages/gnutls.scm \
gnu/packages/gperf.scm \
gnu/packages/gprolog.scm \
gnu/packages/graphviz.scm \
gnu/packages/groff.scm \
gnu/packages/grub.scm \
gnu/packages/grue-hunter.scm \
gnu/packages/gsasl.scm \
gnu/packages/gtk.scm \
gnu/packages/guile.scm \
gnu/packages/gv.scm \
gnu/packages/help2man.scm \
gnu/packages/hugs.scm \
gnu/packages/icu4c.scm \
gnu/packages/idutils.scm \
gnu/packages/imagemagick.scm \
gnu/packages/indent.scm \
gnu/packages/irssi.scm \
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 \
gnu/packages/libidn.scm \
gnu/packages/libjpeg.scm \
gnu/packages/libphidget.scm \
gnu/packages/libpng.scm \
gnu/packages/libsigsegv.scm \
gnu/packages/libtiff.scm \
gnu/packages/libunistring.scm \
gnu/packages/libusb.scm \
gnu/packages/libunwind.scm \
gnu/packages/linux.scm \
gnu/packages/linux-initrd.scm \
gnu/packages/lout.scm \
gnu/packages/lsh.scm \
gnu/packages/lsof.scm \
gnu/packages/lua.scm \
gnu/packages/lvm.scm \
gnu/packages/m4.scm \
gnu/packages/mailutils.scm \
gnu/packages/make-bootstrap.scm \
gnu/packages/mit-krb5.scm \
gnu/packages/mp3.scm \
gnu/packages/multiprecision.scm \
gnu/packages/mysql.scm \
gnu/packages/nano.scm \
gnu/packages/ncurses.scm \
gnu/packages/netpbm.scm \
gnu/packages/nettle.scm \
gnu/packages/noweb.scm \
gnu/packages/ocaml.scm \
gnu/packages/oggvorbis.scm \
gnu/packages/openldap.scm \
gnu/packages/openssl.scm \
gnu/packages/parted.scm \
gnu/packages/patchelf.scm \
gnu/packages/pcre.scm \
gnu/packages/pdf.scm \
gnu/packages/perl.scm \
gnu/packages/pkg-config.scm \
gnu/packages/plotutils.scm \
gnu/packages/popt.scm \
gnu/packages/pth.scm \
gnu/packages/python.scm \
gnu/packages/qemu.scm \
gnu/packages/ratpoison.scm \
gnu/packages/readline.scm \
gnu/packages/recutils.scm \
gnu/packages/rsync.scm \
gnu/packages/rush.scm \
gnu/packages/samba.scm \
gnu/packages/scheme.scm \
gnu/packages/screen.scm \
gnu/packages/shishi.scm \
gnu/packages/smalltalk.scm \
gnu/packages/sqlite.scm \
gnu/packages/ssh.scm \
gnu/packages/system.scm \
gnu/packages/tcl.scm \
gnu/packages/tcsh.scm \
gnu/packages/texinfo.scm \
gnu/packages/texlive.scm \
gnu/packages/time.scm \
gnu/packages/tmux.scm \
gnu/packages/tor.scm \
gnu/packages/unrtf.scm \
gnu/packages/version-control.scm \
gnu/packages/vim.scm \
gnu/packages/vpn.scm \
gnu/packages/w3m.scm \
gnu/packages/wdiff.scm \
gnu/packages/wget.scm \
gnu/packages/which.scm \
gnu/packages/wordnet.scm \
gnu/packages/xlockmore.scm \
gnu/packages/xml.scm \
gnu/packages/xorg.scm \
gnu/packages/zile.scm \
gnu/packages/zip.scm \
gnu/system/vm.scm
patchdir = $(guilemoduledir)/gnu/packages/patches
dist_patch_DATA = \
gnu/packages/patches/automake-skip-amhello-tests.patch \
gnu/packages/patches/bigloo-gc-shebangs.patch \
gnu/packages/patches/binutils-ld-new-dtags.patch \
gnu/packages/patches/cmake-fix-tests.patch \
gnu/packages/patches/cpio-gets-undeclared.patch \
gnu/packages/patches/diffutils-gets-undeclared.patch \
gnu/packages/patches/emacs-configure-sh.patch \
gnu/packages/patches/findutils-absolute-paths.patch \
gnu/packages/patches/flac-fix-memcmp-not-declared.patch \
gnu/packages/patches/flex-bison-tests.patch \
gnu/packages/patches/gawk-shell.patch \
gnu/packages/patches/gcc-cross-environment-variables.patch \
gnu/packages/patches/glib-tests-desktop.patch \
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-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/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 \
gnu/packages/patches/plotutils-libpng-jmpbuf.patch \
gnu/packages/patches/procps-make-3.82.patch \
gnu/packages/patches/python-fix-dbm.patch \
gnu/packages/patches/qemu-multiple-smb-shares.patch \
gnu/packages/patches/readline-link-ncurses.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/vpnc-script.patch \
gnu/packages/patches/w3m-fix-compile.patch \
gnu/packages/patches/xpdf-constchar.patch
bootstrapdir = $(guilemoduledir)/gnu/packages/bootstrap
bootstrap_x86_64_linuxdir = $(bootstrapdir)/x86_64-linux
bootstrap_i686_linuxdir = $(bootstrapdir)/i686-linux
dist_bootstrap_x86_64_linux_DATA = \
gnu/packages/bootstrap/x86_64-linux/bash \
gnu/packages/bootstrap/x86_64-linux/mkdir \
gnu/packages/bootstrap/x86_64-linux/tar \
gnu/packages/bootstrap/x86_64-linux/xz
dist_bootstrap_i686_linux_DATA = \
gnu/packages/bootstrap/i686-linux/bash \
gnu/packages/bootstrap/i686-linux/mkdir \
gnu/packages/bootstrap/i686-linux/tar \
gnu/packages/bootstrap/i686-linux/xz
# Big bootstrap binaries are not included in the tarball. Instead, they
# are downloaded.
nodist_bootstrap_x86_64_linux_DATA = \
gnu/packages/bootstrap/x86_64-linux/guile-2.0.7.tar.xz
nodist_bootstrap_i686_linux_DATA = \
gnu/packages/bootstrap/i686-linux/guile-2.0.7.tar.xz
# Those files must remain executable, so they remain executable once
# imported into the store.
install-data-hook:
chmod +x $(DESTDIR)$(bootstrapdir)/*/{bash,mkdir,tar,xz}
DISTCLEANFILES = \
$(nodist_bootstrap_x86_64_linux_DATA) \
$(nodist_bootstrap_i686_linux_DATA)
# Method to download a file from an external source.
DOWNLOAD_FILE = \
GUILE_LOAD_COMPILED_PATH="$(top_builddir):$$GUILE_LOAD_COMPILED_PATH" \
$(GUILE) --no-auto-compile -L "$(top_builddir)" -L "$(top_srcdir)" \
"$(top_srcdir)/build-aux/download.scm"
gnu/packages/bootstrap/x86_64-linux/guile-2.0.7.tar.xz:
$(MKDIR_P) `dirname "$@"`
$(DOWNLOAD_FILE) "$@" "bc43210dcd146d242bef4d354b0aeac12c4ef3118c07502d17ffa8d49e15aa2c"
gnu/packages/bootstrap/i686-linux/guile-2.0.7.tar.xz:
$(MKDIR_P) `dirname "$@"`
$(DOWNLOAD_FILE) "$@" "f9a7c6f4c556eaafa2a69bcf07d4ffbb6682ea831d4c9da9ba095aca3ccd217c"
+17 -10
View File
@@ -45,18 +45,25 @@
'configure 'patch-makefile-SHELL
(lambda _
(patch-makefile-SHELL "include/buildmacros"))
(alist-replace
'check
(lambda _
(system* "make" "tests" "-C" "test")
,(if (%current-target-system)
'%standard-phases
'(alist-replace 'check
(lambda _
(system* "make" "tests" "-C" "test")
;; XXX: Ignore the test result since this is
;; dependent on the underlying file system.
#t)
%standard-phases))))
;; XXX: Ignore the test result since this is
;; dependent on the underlying file system.
#t)
%standard-phases)))))
(inputs `(("attr" ,attr)
("gettext" ,guix:gettext)
("perl" ,perl)))
;; Perl is needed to run tests; remove it from cross builds.
,@(if (%current-target-system)
'()
`(("perl" ,perl)))))
(native-inputs
`(("gettext" ,guix:gettext)))
(home-page
"http://savannah.nongnu.org/projects/acl")
(synopsis
+25 -18
View File
@@ -52,26 +52,33 @@
"install"
"install-lib"
"install-dev")))
(alist-replace
'check
(lambda _
;; Use the right shell.
(substitute* "test/run"
(("/bin/sh")
(which "bash")))
(system* "make" "tests" "-C" "test")
;; When building natively, adjust the test cases.
,(if (%current-target-system)
'%standard-phases
'(alist-replace 'check
(lambda _
;; Use the right shell.
(substitute* "test/run"
(("/bin/sh")
(which "bash")))
;; XXX: Ignore the test result since this is dependent on the
;; underlying file system.
#t)
%standard-phases)))))
(inputs `(("perl" ,perl)
("gettext" ,guix:gettext)))
(home-page
"http://savannah.nongnu.org/projects/attr/")
(synopsis
"Library and tools for manipulating extended attributes")
(system* "make" "tests" "-C" "test")
;; XXX: Ignore the test result since this is
;; dependent on the underlying file system.
#t)
%standard-phases))))))
(inputs
;; Perl is needed to run tests; remove it from cross builds.
(if (%current-target-system)
'()
`(("perl" ,perl))))
(native-inputs
`(("gettext" ,guix:gettext)))
(home-page "http://savannah.nongnu.org/projects/attr/")
(synopsis "Library and tools for manipulating extended attributes")
(description
"Portable library and tools for manipulating extended attributes.")
(license (list gpl2+ lgpl2.1+))))
+32 -30
View File
@@ -121,27 +121,27 @@ exec ~a --no-auto-compile \"$0\" \"$@\"
(use-modules (guix build utils))
(let ((result (apply system* ,autoconf
(cdr (command-line)))))
(if (and (zero? result)
(file-exists? "configure")
(not (file-exists? "/bin/sh")))
(begin
(patch-shebang "configure")
#t)
(exit (status:exit-val result)))))
(when (and (file-exists? "configure")
(not (file-exists? "/bin/sh")))
;; Patch regardless of RESULT, because `autoconf
;; -Werror' can both create a `configure' file and
;; return a non-zero exit code.
(patch-shebang "configure"))
(exit (status:exit-val result))))
port)))
(chmod (string-append bin "/autoconf") #o555)))))))
(define-public automake
(package
(name "automake")
(version "1.13.1")
(version "1.14")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/automake/automake-"
version ".tar.xz"))
(sha256
(base32
"12yi1bzkipi7qdmkdy77pazljsa9z7q66hi6c4rq73p7hbv6rkbf"))))
"0nc0zqq8j336kamizzd86wb19vhbwywv5avcjh3cyx230xfqy671"))))
(build-system gnu-build-system)
(inputs
`(("autoconf" ,autoconf-wrapper)
@@ -231,28 +231,30 @@ Standards. Automake requires the use of Autoconf.")
(arguments
`(#:patches (list (assoc-ref %build-inputs "patch/skip-tests"))
#:phases (alist-cons-before
'check 'pre-check
(lambda* (#:key inputs #:allow-other-keys)
;; Run the test suite in parallel, if possible.
(let ((ncores
(cond
((getenv "NIX_BUILD_CORES")
=>
(lambda (n)
(if (zero? (string->number n))
(number->string (current-processor-count))
n)))
(else "1"))))
(setenv "TESTSUITEFLAGS"
(string-append "-j" ncores)))
,@(if (%current-target-system)
'() ; no `check' phase when cross-building
'(#:phases (alist-cons-before
'check 'pre-check
(lambda* (#:key inputs #:allow-other-keys)
;; Run the test suite in parallel, if possible.
(let ((ncores
(cond
((getenv "NIX_BUILD_CORES")
=>
(lambda (n)
(if (zero? (string->number n))
(number->string (current-processor-count))
n)))
(else "1"))))
(setenv "TESTSUITEFLAGS"
(string-append "-j" ncores)))
;; Path references to /bin/sh.
(let ((bash (assoc-ref inputs "bash")))
(substitute* "tests/testsuite"
(("/bin/sh")
(string-append bash "/bin/bash")))))
%standard-phases)))
;; Path references to /bin/sh.
(let ((bash (assoc-ref inputs "bash")))
(substitute* "tests/testsuite"
(("/bin/sh")
(string-append bash "/bin/bash")))))
%standard-phases)))))
(inputs `(("patch/skip-tests"
,(search-patch "libtool-skip-tests.patch"))))
(synopsis "Generic shared library support tools")
+35 -23
View File
@@ -101,16 +101,18 @@ lines.")
(build-system gnu-build-system)
(synopsis "Stream editor")
(arguments
`(#:phases (alist-cons-before
'patch-source-shebangs 'patch-test-suite
(lambda* (#:key inputs #:allow-other-keys)
(let ((bash (assoc-ref inputs "bash")))
(patch-makefile-SHELL "testsuite/Makefile.tests")
(substitute* '("testsuite/bsd.sh"
"testsuite/bug-regex9.c")
(("/bin/sh")
(string-append bash "/bin/bash")))))
%standard-phases)))
(if (%current-target-system)
'()
`(#:phases (alist-cons-before
'patch-source-shebangs 'patch-test-suite
(lambda* (#:key inputs #:allow-other-keys)
(let ((bash (assoc-ref inputs "bash")))
(patch-makefile-SHELL "testsuite/Makefile.tests")
(substitute* '("testsuite/bsd.sh"
"testsuite/bug-regex9.c")
(("/bin/sh")
(string-append bash "/bin/bash")))))
%standard-phases))))
(description
"Sed (stream editor) isn't really a true text editor or text processor.
Instead, it is used to filter text, i.e., it takes text input and performs
@@ -234,13 +236,13 @@ You can use the sdiff command to merge two files interactively.")
`(("patch/absolute-paths"
,(search-patch "findutils-absolute-paths.patch"))))
(arguments
`(#:patches (list (assoc-ref %build-inputs "patch/absolute-paths")))
`(#:patches (list (assoc-ref %build-inputs "patch/absolute-paths"))
;; TODO: Work around cross-compilation failure.
;; See <http://savannah.gnu.org/bugs/?27299#comment1>.
;; `(#:configure-flags '("gl_cv_func_wcwidth_works=yes")
;; ,@(arguments cross-system))
)
;; Work around cross-compilation failure.
;; See <http://savannah.gnu.org/bugs/?27299#comment1>.
,@(if (%current-target-system)
'(#:configure-flags '("gl_cv_func_wcwidth_works=yes"))
'())))
(synopsis "Operating on files matching given criteria")
(description
"The GNU Find Utilities are the basic directory searching utilities of
@@ -270,9 +272,14 @@ The tools supplied with this package are:
(base32
"064f512185iysqqcvhnhaf3bfmzrvcgs7n405qsyp99zmfyl9amd"))))
(build-system gnu-build-system)
(inputs `(("acl" ,acl)
(inputs `(("acl" ,acl) ; TODO: add SELinux
("gmp" ,gmp)
("perl" ,perl))) ; TODO: add SELinux
;; Perl is needed to run tests; remove it from cross builds.
,@(if (%current-target-system)
'()
`(("perl" ,perl)))))
(outputs '("out" "debug"))
(arguments
`(#:parallel-build? #f ; help2man may be called too early
#:phases (alist-cons-before
@@ -310,6 +317,7 @@ are expected to exist on every operating system.")
(build-system gnu-build-system)
(native-inputs
`(("patch/impure-dirs" ,(search-patch "make-impure-dirs.patch"))))
(outputs '("out" "debug"))
(arguments
'(#:patches (list (assoc-ref %build-inputs "patch/impure-dirs"))
#:phases (alist-cons-before
@@ -397,7 +405,7 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.")
;; reference to them anyway, so there's no space savings here.
;; TODO: Eventually we may want to add a $LOCALE_ARCHIVE search path like
;; Nixpkgs does.
(outputs '("out" "locales"))
(outputs '("out" "locales" "debug"))
(arguments
`(#:out-of-source? #t
@@ -503,7 +511,7 @@ with the Linux kernel.")
(define-public tzdata
(package
(name "tzdata")
(version "2013c")
(version "2013d")
(source (origin
(method url-fetch)
(uri (string-append
@@ -511,7 +519,7 @@ with the Linux kernel.")
version ".tar.gz"))
(sha256
(base32
"11swq6fg20m2dh520qcr8vb23gqhzbvqhizx8wifnmci4gmsg5z5"))))
"011v63ppr73vhjgxv00inkn5pc7z48i8lhbapkpdq3kfczq9c76d"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f
@@ -558,7 +566,7 @@ with the Linux kernel.")
version ".tar.gz"))
(sha256
(base32
"1w6nkdwhi6k9llshp4baac1yj43jqf3apdf6n66i0wvjj8qyjvp4"))))))
"13xd30ngwhqmj7w216ghd5knvg047hzpc0xca5l297g5cwb62hza"))))))
(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)
@@ -748,7 +756,11 @@ identifier SYSTEM."
;; Call it differently so that the builder can check whether
;; the "libc" input is #f.
("libc-native" ,@(assoc-ref %boot0-inputs "libc"))
,@(alist-delete "libc" %boot0-inputs))))))
,@(alist-delete "libc" %boot0-inputs)))
;; No need for Texinfo at this stage.
(native-inputs (alist-delete "texinfo"
(package-native-inputs gcc-4.7))))))
(define linux-libre-headers-boot0
(package-with-bootstrap-guile
+36 -25
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.
;;;
@@ -26,19 +26,29 @@
#:use-module (guix build-system gnu))
(define-public bash
(let ((cppflags (string-join '("-DSYS_BASHRC='\"/etc/bashrc\"'"
"-DSYS_BASH_LOGOUT='\"/etc/bash_logout\"'"
"-DDEFAULT_PATH_VALUE='\"/no-such-path\"'"
"-DSTANDARD_UTILS_PATH='\"/no-such-path\"'"
"-DNON_INTERACTIVE_LOGIN_SHELLS"
"-DSSH_SOURCE_BASHRC")
" "))
(post-install-phase
'(lambda* (#:key outputs #:allow-other-keys)
;; Add a `bash' -> `sh' link.
(let ((out (assoc-ref outputs "out")))
(with-directory-excursion (string-append out "/bin")
(symlink "bash" "sh"))))))
(let* ((cppflags (string-join '("-DSYS_BASHRC='\"/etc/bashrc\"'"
"-DSYS_BASH_LOGOUT='\"/etc/bash_logout\"'"
"-DDEFAULT_PATH_VALUE='\"/no-such-path\"'"
"-DSTANDARD_UTILS_PATH='\"/no-such-path\"'"
"-DNON_INTERACTIVE_LOGIN_SHELLS"
"-DSSH_SOURCE_BASHRC")
" "))
(configure-flags
``("--with-installed-readline"
,,(string-append "CPPFLAGS=" cppflags)
,(string-append
"LDFLAGS=-Wl,-rpath -Wl,"
(assoc-ref %build-inputs "readline")
"/lib"
" -Wl,-rpath -Wl,"
(assoc-ref %build-inputs "ncurses")
"/lib")))
(post-install-phase
'(lambda* (#:key outputs #:allow-other-keys)
;; Add a `bash' -> `sh' link.
(let ((out (assoc-ref outputs "out")))
(with-directory-excursion (string-append out "/bin")
(symlink "bash" "sh"))))))
(package
(name "bash")
(version "4.2")
@@ -53,15 +63,12 @@
(inputs `(("readline" ,readline)
("ncurses" ,ncurses))) ; TODO: add texinfo
(arguments
`(#:configure-flags `("--with-installed-readline"
,,(string-append "CPPFLAGS=" cppflags)
,(string-append
"LDFLAGS=-Wl,-rpath -Wl,"
(assoc-ref %build-inputs "readline")
"/lib"
" -Wl,-rpath -Wl,"
(assoc-ref %build-inputs "ncurses")
"/lib"))
`(;; When cross-compiling, `configure' incorrectly guesses that job
;; control is missing.
#:configure-flags ,(if (%current-target-system)
`(cons* "bash_cv_job_control_missing=no"
,configure-flags)
configure-flags)
;; Bash is reportedly not parallel-safe. See, for instance,
;; <http://patches.openembedded.org/patch/32745/> and
@@ -98,7 +105,7 @@ modification.")
(guix build utils)
(srfi srfi-1)
(srfi srfi-26))
,@(package-arguments bash))))
,@(package-arguments bash))))
(substitute-keyword-arguments args
((#:configure-flags flags)
`(list "--without-bash-malloc"
@@ -107,4 +114,8 @@ modification.")
"--disable-help-builtin"
"--disable-progcomp"
"--disable-net-redirections"
"--disable-nls")))))))
"--disable-nls"
,@(if (%current-target-system)
'("bash_cv_job_control_missing=no")
'()))))))))
+5 -1
View File
@@ -45,7 +45,11 @@
(system* "./dist/configure"
(string-append "--prefix=" out)
(string-append "CONFIG_SHELL=" (which "bash"))
(string-append "SHELL=" (which "bash"))))))
(string-append "SHELL=" (which "bash"))
;; The compatibility mode is needed by some packages,
;; notably iproute2.
"--enable-compat185"))))
%standard-phases)))
(synopsis "db, the Berkeley database")
(description
+7 -3
View File
@@ -25,7 +25,7 @@
(define-public libgc
(package
(name "libgc")
(version "7.2alpha6")
(version "7.2d")
(source (origin
(method url-fetch)
(uri (string-append
@@ -33,9 +33,13 @@
version ".tar.gz"))
(sha256
(base32
"05jwadjbrv8pr7z9cb4miskicxqpxm0pca4h2rg5cgbpajr2bx7b"))))
"0phwa5driahnpn79zqff14w9yc8sn3599cxz91m78hqdcpl0mznr"))))
(build-system gnu-build-system)
;; TODO: Build with -DUSE_LIBC_PRIVATES (see make-bootstrap.scm).
(arguments
;; Make it so that we don't rely on /proc. This is especially useful in
;; an initrd run before /proc is mounted.
'(#:configure-flags '("CPPFLAGS=-DUSE_LIBC_PRIVATES")))
(outputs '("out" "debug"))
(synopsis "The Boehm-Demers-Weiser conservative garbage collector
for C and C++")
(description
+4 -1
View File
@@ -131,7 +131,10 @@ check whether everything is alright."
(propagated-inputs (map rewritten-input
(package-propagated-inputs p)))))))
(define* (glibc-dynamic-linker #:optional (system (%current-system)))
(define* (glibc-dynamic-linker
#:optional (system (or (and=> (%current-target-system)
gnu-triplet->nix-system)
(%current-system))))
"Return the name of Glibc's dynamic linker for SYSTEM."
(cond ((string=? system "x86_64-linux") "/lib/ld-linux-x86-64.so.2")
((string=? system "i686-linux") "/lib/ld-linux.so.2")
+2 -2
View File
@@ -88,14 +88,14 @@ well as utility programs such as an audio CD player and an extractor.")
(define-public xorriso
(package
(name "xorriso")
(version "1.2.8")
(version "1.3.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/xorriso/xorriso-"
version ".tar.gz"))
(sha256
(base32
"1h3w9ymhsi0wghcnl7mmlml40rm4yill1c75g90xc7r1a2g8k1mn"))))
"1gvyf1ppq764hsk8iyffip7h1dnz2b9k2cchf7himnns03aadavn"))))
(build-system gnu-build-system)
(inputs
`(("acl" ,acl)
+6 -4
View File
@@ -30,8 +30,10 @@
(source
(origin
(method url-fetch)
(uri (string-append "http://zlib.net/zlib-"
version ".tar.gz"))
(uri (list (string-append "http://zlib.net/zlib-"
version ".tar.gz")
(string-append "mirror://sourceforge/libpng/zlib-"
version ".tar.gz")))
(sha256
(base32
"1i96gsdvxqb6skp9a58bacf1wxamwi9m9pg4yn7cpf7g7239r77s"))))
@@ -64,14 +66,14 @@ in compression.")
(define-public gzip
(package
(name "gzip")
(version "1.5")
(version "1.6")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/gzip/gzip-"
version ".tar.gz"))
(sha256
(base32
"18rm80kar7n016g8bsyy1a3zk50i2826xdgs874yh64rzj7nxmdm"))))
"0zlgdm4v3dndrbiz7b67mbbj25dpwqbmbzjiycssvrfrcfvq7swp"))))
(build-system gnu-build-system)
(synopsis "General file (de)compression (using lzw)")
(arguments
+49 -19
View File
@@ -29,7 +29,10 @@
#:use-module (guix build-system trivial)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (ice-9 match))
#:use-module (ice-9 match)
#:export (cross-binutils
cross-libc
cross-gcc))
(define (cross p target)
(package (inherit p)
@@ -41,20 +44,32 @@
`(cons ,(string-append "--target=" target)
,flags))))))
(define cross-binutils
(cut cross binutils <>))
(define (cross-binutils target)
"Return a cross-Binutils for TARGET."
(let ((binutils (package (inherit binutils)
(arguments
(substitute-keyword-arguments (package-arguments
binutils)
((#:configure-flags flags)
;; Build with `--with-sysroot' so that ld honors
;; DT_RUNPATH entries when searching for a needed
;; library. This works because as a side effect
;; `genscripts.sh' sets `USE_LIBPATH=yes', which tells
;; elf32.em to use DT_RUNPATH in its search list.
;; See <http://sourceware.org/ml/binutils/2013-05/msg00312.html>.
;;
;; In theory choosing / as the sysroot could lead ld
;; to pick up native libs instead of target ones. In
;; practice the RUNPATH of target libs only refers to
;; target libs, not native libs, so this is safe.
`(cons "--with-sysroot=/" ,flags)))))))
(cross binutils target)))
(define* (cross-gcc target
#:optional (xbinutils (cross-binutils target)) libc)
"Return a cross-compiler for TARGET, where TARGET is a GNU triplet. Use
XBINUTILS as the associated cross-Binutils. If LIBC is false, then build a
GCC that does not target a libc; otherwise, target that libc."
(define args
;; Get the arguments as if we were building for TARGET. In particular, we
;; want `glibc-dynamic-linker' to return the right thing.
(parameterize ((%current-system (gnu-triplet->nix-system target)))
(package-arguments gcc-4.7)))
(package (inherit gcc-4.7)
(name (string-append "gcc-cross-"
(if libc "" "sans-libc-")
@@ -68,9 +83,10 @@ GCC that does not target a libc; otherwise, target that libc."
(srfi srfi-26))
#:patches (list (assoc-ref %build-inputs "patch/cross-env-vars"))
,@(substitute-keyword-arguments args
,@(substitute-keyword-arguments (package-arguments gcc-4.7)
((#:configure-flags flags)
`(append (list ,(string-append "--target=" target)
,@(gcc-configure-flags-for-triplet target)
,@(if libc
'()
`( ;; Disable features not needed at this stage.
@@ -159,7 +175,8 @@ GCC that does not target a libc; otherwise, target that libc."
;; <http://lists.fedoraproject.org/pipermail/arm/2010-August/000663.html>
;; for instance.
#f))))
(inputs
(native-inputs
`(("patch/cross-env-vars"
,(search-patch "gcc-cross-environment-variables.patch"))
@@ -175,7 +192,19 @@ GCC that does not target a libc; otherwise, target that libc."
(if libc
`(("libc" ,libc)
,@inputs)
inputs))))))
inputs))))
(inputs '())
;; Only search target inputs, not host inputs.
(search-paths
(list (search-path-specification
(variable "CROSS_CPATH")
(directories '("include")))
(search-path-specification
(variable "CROSS_LIBRARY_PATH")
(directories '("lib" "lib64")))))
(native-search-paths '())))
(define* (cross-libc target
#:optional
@@ -199,9 +228,9 @@ XBINUTILS and the cross tool chain."
(and (zero? (system* "make" "defconfig"))
(zero? (system* "make" "mrproper" "headers_check"))))
,phases))))
(inputs `(("cross-gcc" ,xgcc)
("cross-binutils" ,xbinutils)
,@(package-inputs linux-libre-headers)))))
(native-inputs `(("cross-gcc" ,xgcc)
("cross-binutils" ,xbinutils)
,@(package-native-inputs linux-libre-headers)))))
(package (inherit glibc)
(name (string-append "glibc-cross-" target))
@@ -221,10 +250,11 @@ XBINUTILS and the cross tool chain."
(string-append linux "/include"))
#t))
,phases))))
(propagated-inputs `(("cross-linux-headers" ,xlinux-headers)))
(inputs `(("cross-gcc" ,xgcc)
("cross-binutils" ,xbinutils)
,@(package-inputs glibc)))))
(native-inputs `(("cross-gcc" ,xgcc)
("cross-binutils" ,xbinutils)
,@(package-native-inputs glibc)))))
;;;
@@ -232,7 +262,7 @@ XBINUTILS and the cross tool chain."
;;;
(define-public xgcc-mips64el
(let ((triplet "mips64el-linux-gnu"))
(let ((triplet "mips64el-linux-gnuabi64")) ; N64 ABI
(cross-gcc triplet
(cross-binutils triplet)
(cross-libc triplet))))
+2 -2
View File
@@ -26,14 +26,14 @@
(define-public ed
(package
(name "ed")
(version "1.8")
(version "1.9")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/ed/ed-"
version ".tar.gz"))
(sha256
(base32
"0wvj190ky5i0gm0pilx9k75l6alyc6h5s14fm3dbk90y7g9kihb4"))))
"122syihsx2hwzj75mkf5a9ssiky2xby748kp4cc00wzhmp7p5cym"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags '("CC=gcc")
+2 -2
View File
@@ -27,14 +27,14 @@
(define-public freeipmi
(package
(name "freeipmi")
(version "1.2.6")
(version "1.2.8")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/freeipmi/freeipmi-"
version ".tar.gz"))
(sha256
(base32
"0fjc9kr6x1k55a101qikl3rsc9y6fh4iqr84mj7kgzqgk7rwp5ij"))))
"0aqbjlqv8nh5nnfx5icyvcvws87xnwqjqsfszjx0jqb539snrc58"))))
(build-system gnu-build-system)
(inputs
`(("readline" ,readline) ("libgcrypt" ,libgcrypt)))
+19 -7
View File
@@ -18,6 +18,7 @@
(define-module (gnu packages gawk)
#:use-module (guix licenses)
#:use-module (gnu packages bash)
#:use-module (gnu packages libsigsegv)
#:use-module (guix packages)
#:use-module (guix download)
@@ -26,20 +27,17 @@
(define-public gawk
(package
(name "gawk")
(version "4.0.2")
(version "4.1.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/gawk/gawk-" version
".tar.xz"))
(sha256
(base32 "04vd0axif762mf781pj3days6ilv2333b9zi9c50y5mma66g5q91"))))
(base32 "0hin2hswbbd6kd6i4zzvgciwpl5fba8d2s524z8y5qagyz3x010q"))))
(build-system gnu-build-system)
(arguments
`(#:parallel-tests? #f ; test suite fails in parallel
;; Work around test failure on Cygwin.
#:tests? ,(not (string=? (%current-system) "i686-cygwin"))
#:phases (alist-cons-before
'configure 'set-shell-file-name
(lambda* (#:key inputs #:allow-other-keys)
@@ -47,9 +45,23 @@
(let ((bash (assoc-ref inputs "bash")))
(substitute* "io.c"
(("/bin/sh")
(string-append bash "/bin/bash")))))
(string-append bash "/bin/bash")))
;; When cross-compiling, remove dependencies on the
;; `check-for-shared-lib-support' target, which tries to
;; run the cross-built `gawk'.
,@(if (%current-target-system)
'((substitute* "extension/Makefile.in"
(("^.*: check-for-shared-lib-support" match)
(string-append "### " match))))
'())))
%standard-phases)))
(inputs `(("libsigsegv" ,libsigsegv)))
(inputs `(("libsigsegv" ,libsigsegv)
,@(if (%current-target-system)
`(("bash" ,bash))
'())))
(home-page "http://www.gnu.org/software/gawk/")
(synopsis "A text scanning and processing language")
(description
+49
View File
@@ -0,0 +1,49 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages gcal)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (guix licenses))
(define-public gcal
(package
(name "gcal")
(version "3.6.3")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/gcal/gcal-"
version ".tar.xz"))
(sha256
(base32
"06xkwkir9w4jd9i72m1izmf4rbry4slg8gkiml4w26h13lx92hk7"))))
(build-system gnu-build-system)
(home-page "http://www.gnu.org/software/gcal")
(synopsis "Calculating and printing a wide variety of calendars")
(description
"Gcal is a program for calculating and printing calendars. Gcal displays
hybrid and proleptic Julian and Gregorian calendar sheets,respectively for one
month, three months, or a whole year. It also displays eternal holiday lists
for many countries around the globe, and features a very powerful creation of
fixed date lists that can be used for reminding purposes. Gcal can calculate
various astronomical data and times of the Sun and the Moon for pleasure at
any location, precisely enough for most civil purposes. Gcal supports some
other calendar systems, for example, the Chinese and Japanese calendars, the
Hebrew calendar, and the civil Islamic calendar, too.")
(license gpl3+)))
+155 -109
View File
@@ -23,150 +23,196 @@
#:use-module (gnu packages bootstrap)
#:use-module (gnu packages compression)
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages texinfo)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu))
#:use-module (guix build-system gnu)
#:use-module (ice-9 regex))
(define %gcc-infrastructure
;; Base URL for GCC's infrastructure.
"ftp://gcc.gnu.org/pub/gcc/infrastructure/")
(define-public (gcc-configure-flags-for-triplet target)
"Return a list of additional GCC `configure' flags for TARGET, a GNU triplet.
The purpose of this procedure is to translate extended GNU triplets---e.g.,
where the OS part is overloaded to denote a specific ABI---into GCC
`configure' options. We take extended GNU triplets that glibc recognizes."
(cond ((string-match "^mips64el.*gnuabin?64$" target)
;; Triplets recognized by glibc as denoting the N64 ABI; see
;; ports/sysdeps/mips/preconfigure.
'("--with-abi=64"))
(else
;; TODO: Add `armel.*gnueabi', `hf', etc.
'())))
(define-public gcc-4.7
(let ((stripped? #t)) ; TODO: make this a parameter
(let* ((stripped? #t) ; TODO: make this a parameter
(maybe-target-tools
(lambda ()
;; Return the `_FOR_TARGET' variables that are needed when
;; cross-compiling GCC.
(let ((target (%current-target-system)))
(if target
(map (lambda (var tool)
(string-append (string-append var "_FOR_TARGET")
"=" target "-" tool))
'("CC" "CXX" "LD" "AR" "NM" "RANLIB" "STRIP")
'("gcc" "g++" "ld" "ar" "nm" "ranlib" "strip"))
'()))))
(configure-flags
(lambda ()
;; This is terrible. Since we have two levels of quasiquotation,
;; we have to do this convoluted thing just so we can insert the
;; contents of (maybe-target-tools).
(list 'quasiquote
(append
'("--enable-plugin"
"--enable-languages=c,c++"
"--disable-multilib"
"--with-local-prefix=/no-gcc-local-prefix"
,(let ((libc (assoc-ref %build-inputs "libc")))
(if libc
(string-append "--with-native-system-header-dir=" libc
"/include")
"--without-headers")))
;; When cross-compiling GCC, pass the right options for the
;; target triplet.
(or (and=> (%current-target-system)
gcc-configure-flags-for-triplet)
'())
(maybe-target-tools))))))
(package
(name "gcc")
(version "4.7.3")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/gcc/gcc-"
version "/gcc-" version ".tar.bz2"))
(sha256
(base32
"1hx9h64ivarlzi4hxvq42as5m9vlr5cyzaaq4gzj4i619zmkfz1g"))))
(build-system gnu-build-system)
(inputs `(("gmp" ,gmp)
("mpfr" ,mpfr)
("mpc" ,mpc)
("isl" ,isl)
("cloog" ,cloog)
("libelf" ,libelf)
("zlib" ,zlib)))
(arguments
`(#:out-of-source? #t
#:strip-binaries? ,stripped?
#:configure-flags
`("--enable-plugin"
"--enable-languages=c,c++"
"--disable-multilib"
(name "gcc")
(version "4.7.3")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/gcc/gcc-"
version "/gcc-" version ".tar.bz2"))
(sha256
(base32
"1hx9h64ivarlzi4hxvq42as5m9vlr5cyzaaq4gzj4i619zmkfz1g"))))
(build-system gnu-build-system)
(inputs `(("gmp" ,gmp)
("mpfr" ,mpfr)
("mpc" ,mpc)
("isl" ,isl)
("cloog" ,cloog)
("libelf" ,libelf)
("zlib" ,zlib)))
"--with-local-prefix=/no-gcc-local-prefix"
;; GCC is one of the few packages that doesn't ship .info files.
(native-inputs `(("texinfo" ,texinfo)))
,(let ((libc (assoc-ref %build-inputs "libc")))
(if libc
(string-append "--with-native-system-header-dir=" libc
"/include")
"--without-headers")))
#:make-flags
(let ((libc (assoc-ref %build-inputs "libc")))
`(,@(if libc
(list (string-append "LDFLAGS_FOR_TARGET="
"-B" libc "/lib "
"-Wl,-dynamic-linker "
"-Wl," libc
,(glibc-dynamic-linker)))
'())
,(string-append "BOOT_CFLAGS=-O2 "
,(if stripped? "-g0" "-g"))))
(arguments
`(#:out-of-source? #t
#:strip-binaries? ,stripped?
#:configure-flags ,(configure-flags)
#:make-flags
(let ((libc (assoc-ref %build-inputs "libc")))
`(,@(if libc
(list (string-append "LDFLAGS_FOR_TARGET="
"-B" libc "/lib "
"-Wl,-dynamic-linker "
"-Wl," libc
,(glibc-dynamic-linker)))
'())
,(string-append "BOOT_CFLAGS=-O2 "
,(if stripped? "-g0" "-g"))))
#:tests? #f
#:phases
(alist-cons-before
'configure 'pre-configure
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(libc (assoc-ref inputs "libc")))
(when libc
;; The following is not performed for `--without-headers'
;; cross-compiler builds.
#:tests? #f
#:phases
(alist-cons-before
'configure 'pre-configure
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(libc (assoc-ref inputs "libc")))
(when libc
;; The following is not performed for `--without-headers'
;; cross-compiler builds.
;; Fix the dynamic linker's file name.
(substitute* (find-files "gcc/config"
"^linux(64|-elf)?\\.h$")
(("#define GLIBC_DYNAMIC_LINKER([^ ]*).*$" _ suffix)
(format #f "#define GLIBC_DYNAMIC_LINKER~a \"~a\"~%"
suffix
(string-append libc ,(glibc-dynamic-linker)))))
;; Fix the dynamic linker's file name.
(substitute* (find-files "gcc/config"
"^linux(64|-elf)?\\.h$")
(("#define GLIBC_DYNAMIC_LINKER([^ ]*).*$" _ suffix)
(format #f "#define GLIBC_DYNAMIC_LINKER~a \"~a\"~%"
suffix
(string-append libc ,(glibc-dynamic-linker)))))
;; Tell where to find libstdc++, libc, and `?crt*.o', except
;; `crt{begin,end}.o', which come with GCC.
(substitute* (find-files "gcc/config"
"^(gnu-user(64)?|linux-elf)\\.h$")
(("#define LIB_SPEC (.*)$" _ suffix)
;; Note that with this "lib" spec, we may still add a
;; RUNPATH to GCC even when `libgcc_s' is not NEEDED.
;; There's not much that can be done to avoid it, though.
(format #f "#define LIB_SPEC \"-L~a/lib %{!static:-rpath=~a/lib \
;; Tell where to find libstdc++, libc, and `?crt*.o', except
;; `crt{begin,end}.o', which come with GCC.
(substitute* (find-files "gcc/config"
"^(gnu-user(64)?|linux-elf)\\.h$")
(("#define LIB_SPEC (.*)$" _ suffix)
;; Note that with this "lib" spec, we may still add a
;; RUNPATH to GCC even when `libgcc_s' is not NEEDED.
;; There's not much that can be done to avoid it, though.
(format #f "#define LIB_SPEC \"-L~a/lib %{!static:-rpath=~a/lib \
%{!static-libgcc:-rpath=~a/lib64 -rpath=~a/lib}} \" ~a"
libc libc out out suffix))
(("#define STARTFILE_SPEC.*$" line)
(format #f "#define STANDARD_STARTFILE_PREFIX_1 \"~a/lib\"
libc libc out out suffix))
(("#define STARTFILE_SPEC.*$" line)
(format #f "#define STANDARD_STARTFILE_PREFIX_1 \"~a/lib\"
#define STANDARD_STARTFILE_PREFIX_2 \"\"
~a~%"
libc line))))
libc line))))
;; Don't retain a dependency on the build-time sed.
(substitute* "fixincludes/fixincl.x"
(("static char const sed_cmd_z\\[\\] =.*;")
"static char const sed_cmd_z[] = \"sed\";"))))
;; Don't retain a dependency on the build-time sed.
(substitute* "fixincludes/fixincl.x"
(("static char const sed_cmd_z\\[\\] =.*;")
"static char const sed_cmd_z[] = \"sed\";"))))
(alist-cons-after
'configure 'post-configure
(lambda _
;; Don't store configure flags, to avoid retaining references to
;; build-time dependencies---e.g., `--with-ppl=/nix/store/xxx'.
(substitute* "Makefile"
(("^TOPLEVEL_CONFIGURE_ARGUMENTS=(.*)$" _ rest)
"TOPLEVEL_CONFIGURE_ARGUMENTS=\n")))
(alist-replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(zero?
(system* "make"
,(if stripped?
"install-strip"
"install"))))
%standard-phases)))))
(alist-cons-after
'configure 'post-configure
(lambda _
;; Don't store configure flags, to avoid retaining references to
;; build-time dependencies---e.g., `--with-ppl=/nix/store/xxx'.
(substitute* "Makefile"
(("^TOPLEVEL_CONFIGURE_ARGUMENTS=(.*)$" _ rest)
"TOPLEVEL_CONFIGURE_ARGUMENTS=\n")))
(alist-replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(zero?
(system* "make"
,(if stripped?
"install-strip"
"install"))))
%standard-phases)))))
(native-search-paths
(list (search-path-specification
(variable "CPATH")
(directories '("include")))
(search-path-specification
(variable "LIBRARY_PATH")
(directories '("lib" "lib64")))))
(native-search-paths
(list (search-path-specification
(variable "CPATH")
(directories '("include")))
(search-path-specification
(variable "LIBRARY_PATH")
(directories '("lib" "lib64")))))
(properties `((gcc-libc . ,(assoc-ref inputs "libc"))))
(synopsis "GNU Compiler Collection")
(description
"The GNU Compiler Collection includes compiler front ends for C, C++,
(properties `((gcc-libc . ,(assoc-ref inputs "libc"))))
(synopsis "GNU Compiler Collection")
(description
"The GNU Compiler Collection includes compiler front ends for C, C++,
Objective-C, Fortran, OpenMP for C/C++/Fortran, Java, and Ada, as well as
libraries for these languages (libstdc++, libgcj, libgomp,...).
GCC development is a part of the GNU Project, aiming to improve the compiler
used in the GNU system including the GNU/Linux variant.")
(license gpl3+)
(home-page "http://gcc.gnu.org/"))))
(license gpl3+)
(home-page "http://gcc.gnu.org/"))))
(define-public gcc-4.8
;; FIXME: Move to gcc.scm when Binutils is updated.
(package (inherit gcc-4.7)
(version "4.8.0")
(version "4.8.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/gcc/gcc-"
version "/gcc-" version ".tar.bz2"))
(sha256
(base32
"0b6cp9d1sas3vq6dj3zrgd134p9b569fqhbixb9cl7mp698zwdxh"))))))
"04sqn0ds17ys8l6zn7vyyvjz1a7hsk4zb0381vlw9wnr7az48nsl"))))))
(define-public isl
(package
+68
View File
@@ -0,0 +1,68 @@
;;; 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 gd)
#:use-module (guix packages)
#:use-module (guix build-system gnu)
#:use-module (guix download)
#:use-module (gnu packages libpng)
#:use-module (gnu packages libjpeg)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages compression)
#:use-module ((guix licenses) #:select (bsd-style)))
(define-public gd
(package
(name "gd")
;; Note: With libgd.org now pointing to bitbucket.org, genuine old
;; tarballs are no longer available. Notably, versions 2.0.34 and .35 are
;; missing.
(version "2.0.33")
(source (origin
(method url-fetch)
(uri "https://bitbucket.org/libgd/gd-libgd/get/GD_2_0_33.tar.gz")
(sha256
(base32
"0yrbx8mj9pykyzm0zl1q86xlkdvkajcsf5jmg688vhw9yc5wmbbw"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-cons-after
'unpack 'chdir
(lambda _
(chdir "src"))
%standard-phases)))
(inputs
`(("freetype" ,freetype)
("libpng" ,libpng)
("zlib" ,zlib)))
(propagated-inputs
`(("fontconfig" ,fontconfig)
("libjpeg" ,libjpeg)))
(home-page "http://www.libgd.org/")
(synopsis "Library for the dynamic creation of images by programmers")
(description
"GD is a library for the dynamic creation of images by programmers. GD
is written in C, and \"wrappers\" are available for Perl, PHP and other
languages. GD creates PNG, JPEG, GIF, WebP, XPM, BMP images, among other
formats. GD is commonly used to generate charts, graphics, thumbnails, and
most anything else, on the fly. While not restricted to use on the web, the
most common applications of GD involve website development.")
(license (bsd-style "file://COPYING"
"See COPYING file in the distribution."))))
+13 -19
View File
@@ -26,36 +26,30 @@
(define-public gettext
(package
(name "gettext")
(version "0.18.1.1")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/gettext/gettext-"
version ".tar.gz"))
(sha256
(base32
"1sa3ch12qxa4h3ya6hkz119yclcccmincl9j20dhrdx5mykp3b4k"))))
(version "0.18.3")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/gettext/gettext-"
version ".tar.gz"))
(sha256
(base32
"0j7rp56c61j4k1bz1xdc041hzv7186yyzhbp95fmc0zq7l2c3wrn"))))
(build-system gnu-build-system)
(arguments
`(#:patches (list (assoc-ref %build-inputs "patch/gets"))
#:phases (alist-cons-before
`(#:phases (alist-cons-before
'check 'patch-tests
(lambda* (#:key inputs #:allow-other-keys)
(let ((bash (assoc-ref inputs "bash")))
(let ((bash (which "sh")))
(substitute* (find-files "gettext-tools/tests"
"^msgexec-[0-9]")
(("#![[:blank:]]/bin/sh")
(format #f "#!~a/bin/sh" bash)))
(format #f "#!~a" bash)))
(substitute* (find-files "gettext-tools/gnulib-tests"
"posix_spawn")
(("/bin/sh")
(format #f "~a/bin/bash" bash)))))
bash))))
%standard-phases)))
(inputs
`(("patch/gets"
,(search-patch "gettext-gets-undeclared.patch"))))
(home-page
"http://www.gnu.org/software/gettext/")
(home-page "http://www.gnu.org/software/gettext/")
(synopsis "Tools and documentation for translation")
(description
"Usually, programs are written and documented in English, and use
+20
View File
@@ -214,3 +214,23 @@ Ghostscript. It currently includes the 35 standard PostScript fonts.")
(license license:gpl2)
(home-page "http://sourceforge.net/projects/gs-fonts/")))
(define-public libspectre
(package
(name "libspectre")
(version "0.2.7")
(source (origin
(method url-fetch)
(uri (string-append "http://libspectre.freedesktop.org/releases/libspectre-"
version ".tar.gz"))
(sha256 (base32
"1v63lqc6bhhxwkpa43qmz8phqs8ci4dhzizyy16d3vkb20m846z8"))))
(build-system gnu-build-system)
(inputs `(("ghostscript" ,ghostscript)
("pkg-config" ,pkg-config)))
(synopsis "postscript rendering library")
(description
"libspectre is a small library for rendering Postscript documents.
It provides a convenient easy to use API for handling and rendering
Postscript documents.")
(license license:gpl2+)
(home-page "http://www.freedesktop.org/wiki/Software/libspectre")))
+24 -9
View File
@@ -33,7 +33,8 @@
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages xml))
#:use-module (gnu packages xml)
#:use-module (gnu packages bash))
(define-public dbus
(package
@@ -74,14 +75,14 @@ shared NFS home directories.")
(define-public glib
(package
(name "glib")
(version "2.34.3")
(version "2.37.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/"
name "/2.34/"
name "/2.37/"
name "-" version ".tar.xz"))
(sha256
(base32 "19sq4rhl2vr8ikjvl8qh51vr38yqfhbkb3imi2s6ac5rgkwcnpw5"))))
(base32 "1lp705q0g9jlfj24x8fpgjh7awmmara5iyj9kz5lhd49sr9s813k"))))
(build-system gnu-build-system)
(outputs '("out" ; everything
"doc")) ; 20 MiB of GTK-Doc reference
@@ -94,9 +95,9 @@ shared NFS home directories.")
("zlib" ,zlib)
("perl" ,perl) ; needed by GIO tests
("dbus" ,dbus) ; for GDBus tests
("bash" ,bash)
("tzdata" ,tzdata) ; for tests/gdatetime.c
("patch/tests-tzdata"
,(search-patch "glib-tests-timezone.patch"))
("patch/tests-homedir"
,(search-patch "glib-tests-homedir.patch"))
("patch/tests-desktop"
@@ -104,17 +105,31 @@ shared NFS home directories.")
("patch/tests-prlimit"
,(search-patch "glib-tests-prlimit.patch"))))
(arguments
'(#:patches (list (assoc-ref %build-inputs "patch/tests-tzdata")
(assoc-ref %build-inputs "patch/tests-homedir")
'(#:patches (list (assoc-ref %build-inputs "patch/tests-homedir")
(assoc-ref %build-inputs "patch/tests-desktop")
(assoc-ref %build-inputs "patch/tests-prlimit"))
#:phases (alist-cons-before
'build 'pre-build
(lambda* (#:key inputs outputs #:allow-other-keys)
;; For tests/gdatetime.c.
(setenv "TZDIR"
(string-append (assoc-ref inputs "tzdata")
"/share/zoneinfo"))
;; Some tests want write access there.
(setenv "XDG_CACHE_HOME" (getcwd))
(substitute* '("glib/gspawn.c"
"glib/tests/utils.c"
"tests/spawn-test.c")
(("/bin/sh") (which "sh"))))
(("/bin/sh")
(string-append (assoc-ref inputs "bash") "/bin/sh")))
;; Honor $(TESTS_ENVIRONMENT).
(substitute* (find-files "." "^Makefile(\\.in)?$")
(("^GTESTER[[:blank:]]*=(.*)$" _ rest)
(string-append "GTESTER = $(TESTS_ENVIRONMENT) "
rest))))
%standard-phases)
;; Note: `--docdir' and `--htmldir' are not honored, so work around it.
+4 -4
View File
@@ -34,7 +34,7 @@
(define-public libgpg-error
(package
(name "libgpg-error")
(version "1.11")
(version "1.12")
(source
(origin
(method url-fetch)
@@ -42,7 +42,7 @@
version ".tar.bz2"))
(sha256
(base32
"1h0ql8j65ns2rmhj9wnc9035026crzkg226xg8614fq71947ccxf"))))
"0pz58vr12qihq2f0bypjxsb6cf6ajq5258fmfm8s6lvwm3b9xz6a"))))
(build-system gnu-build-system)
(home-page "http://gnupg.org")
(synopsis
@@ -81,7 +81,7 @@ functions, random numbers and a lot of supporting functions.")
(define-public libassuan
(package
(name "libassuan")
(version "2.1.0")
(version "2.1.1")
(source
(origin
(method url-fetch)
@@ -89,7 +89,7 @@ functions, random numbers and a lot of supporting functions.")
version ".tar.bz2"))
(sha256
(base32
"0ry2078pafpx2prnhngqsj9bvqxaywakp2paqayfh9i71hxbvid4"))))
"1783nb0b6nr9yjhb5wfh8ykc5w89f4anppz1kz9913mqg5vxdqi3"))))
(build-system gnu-build-system)
(propagated-inputs
`(("libgpg-error" ,libgpg-error) ("pth" ,pth)))
+15 -5
View File
@@ -23,10 +23,12 @@
#:use-module (guix build-system gnu)
#:use-module ((gnu packages compression)
#:renamer (symbol-prefix-proc 'guix:))
#:use-module (gnu packages)
#:use-module (gnu packages nettle)
#:use-module (gnu packages guile)
#:use-module (gnu packages perl)
#:use-module (gnu packages which))
#:use-module (gnu packages which)
#:use-module (gnu packages pkg-config))
(define-public libtasn1
(package
@@ -52,22 +54,30 @@ portable, and only require an ANSI C89 platform.")
(define-public gnutls
(package
(name "gnutls")
(version "3.1.9.1")
(version "3.2.1")
(source (origin
(method url-fetch)
(uri
;; Note: Releases are no longer on ftp.gnu.org since the
;; schism (after version 3.1.5).
(string-append "mirror://gnupg/gnutls/v3.1/gnutls-"
(string-append "mirror://gnupg/gnutls/v3.2/gnutls-"
version ".tar.xz"))
(sha256
(base32
"0gkwhz7sypfy39jfj2yzrngbxq5j9l9smqc89mqlqsh25spc8009"))))
"1zi2kq3vcbqdy9khl7r6pgk4hgwibniasm9k6siasdvqjijq3ymb"))))
(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)))
("perl" ,perl)
("patch/fix-tests"
,(search-patch "gnutls-fix-tests-on-32-bits-system.patch"))))
(propagated-inputs
`(("libtasn1" ,libtasn1)
("nettle" ,nettle)
+124
View File
@@ -0,0 +1,124 @@
;;; 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 graphviz)
#:use-module (guix packages)
#:use-module (guix build-system gnu)
#:use-module (guix download)
#:use-module (gnu packages xorg)
#:use-module (gnu packages gtk)
#:use-module (gnu packages xml)
#:use-module (gnu packages glib)
#:use-module (gnu packages bison)
#:use-module (gnu packages libpng)
#:use-module (gnu packages libjpeg)
#:use-module (gnu packages autotools)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages compression)
#:use-module (gnu packages gd)
#:use-module ((guix licenses) #:select (lgpl2.0+ epl1.0)))
(define-public graphviz
(package
(name "graphviz")
(version "2.28.0")
(source (origin
(method url-fetch)
(uri (string-append
"http://www.graphviz.org/pub/graphviz/ARCHIVE/graphviz-"
version
".tar.gz"))
(sha256
(base32
"0xpwg99cd8sp0c6r8klsmc66h1pday64kmnr4v6f9jkqqmrpkank"))))
(build-system gnu-build-system)
(arguments
;; FIXME: rtest/rtest.sh is a ksh script (!). Add ksh as an input.
'(#:tests? #f
#:phases (alist-cons-before
'build 'pre-build
(lambda _
;; Work around bogus makefile when using an external
;; libltdl. Failing to do so, one hits this error:
;; "No rule to make target `-lltdl', needed by `libgvc.la'."
(substitute* "lib/gvc/Makefile"
(("am__append_5 *=.*")
"am_append_5 =\n")))
%standard-phases)))
(inputs
`(("libXrender" ,libxrender)
("libX11" ,libx11)
("gts" ,gts)
("gd" ,gd) ; FIXME: Our GD is too old
("pango" ,pango)
("fontconfig" ,fontconfig)
("freetype" ,freetype)
("libltdl" ,libtool)
("bison" ,bison)
("libXaw" ,libxaw)
("expat" ,expat)
("libjpeg" ,libjpeg)
("libpng" ,libpng)
("pkg-config" ,pkg-config)))
(home-page "http://www.graphviz.org/")
(synopsis "Graph visualization software")
(description
"Graphviz is a graph visualization tool suite. Graph visualization is a
way of representing structural information as diagrams of abstract graphs and
networks. It has important applications in networking, bioinformatics,
software engineering, database and web design, machine learning, and in visual
interfaces for other technical domains.")
(license epl1.0)))
(define-public gts
(package
(name "gts")
(version "0.7.6")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/gts/gts-"
version ".tar.gz"))
(sha256
(base32
"07mqx09jxh8cv9753y2d2jsv7wp8vjmrd7zcfpbrddz3wc9kx705"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-cons-before
'check 'pre-check
(lambda _
(chmod "test/boolean/test.sh" #o777))
%standard-phases)
;; Some data files used by the test suite are missing.
;; See <http://sourceforge.net/p/gts/bugs/41/>.
#:tests? #f))
(inputs
`(("pkg-config" ,pkg-config)))
(propagated-inputs
;; The gts.pc file has glib-2.0 as required.
`(("glib" ,glib)))
(home-page "http://gts.sourceforge.net/")
;; Note: Despite the name, this is not official GNU software.
(synopsis "Triangulated Surface Library")
(description
"Library intended to provide a set of useful functions to deal with
3D surfaces meshed with interconnected triangles.")
(license lgpl2.0+)))
+84
View File
@@ -0,0 +1,84 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.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 grue-hunter)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system trivial)
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
#:use-module (gnu packages perl))
(define-public grue-hunter
(package
(name "grue-hunter")
(version "1.0")
(source
(origin
(method url-fetch)
(uri (string-append "http://jxself.org/" name ".tar.gz"))
(sha256
(base32
"1hjcpy5439qs3v2zykis7hsi0i17zjs62gks3zd8mnfw9ni4i2h3"))))
(build-system trivial-build-system) ; no Makefile.PL
(arguments `(#:modules ((guix build utils))
#:builder
(begin
(use-modules (guix build utils))
(use-modules (srfi srfi-1))
(let* ((tarball (assoc-ref %build-inputs "tarball"))
(perl (string-append (assoc-ref %build-inputs
"perl")
"/bin"))
(gunzip (string-append (assoc-ref %build-inputs
"gzip")
"/bin/gunzip"))
(tar (string-append (assoc-ref %build-inputs
"tar")
"/bin/tar"))
(out (assoc-ref %outputs "out"))
(bin (string-append out "/bin"))
(doc (string-append out "/share/doc")))
(begin
(mkdir out)
(copy-file tarball "grue-hunter.tar.gz")
(zero? (system* gunzip "grue-hunter.tar.gz"))
(zero? (system* tar "xvf" "grue-hunter.tar"))
(mkdir-p bin)
(copy-file "grue-hunter/gh.pl"
(string-append bin "/grue-hunter"))
(patch-shebang (string-append bin "/grue-hunter")
(list perl))
(mkdir-p doc)
(copy-file "grue-hunter/AGPLv3.txt"
(string-append doc "/grue-hunter")))))))
(inputs `(("perl" ,perl)
("tar" ,tar)
("gzip" ,gzip)
("tarball" ,source)))
(home-page "http://jxself.org/grue-hunter.shtml")
(synopsis "Text adventure game")
(description
"Grue Hunter is a text adventure game written in Perl. You must make
your way through an underground cave system in search of the Grue. Can you
capture it and get out alive?")
(license agpl3+)))
+174 -1
View File
@@ -22,8 +22,18 @@
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages compression)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages glib)
#:use-module (gnu packages pkg-config))
#:use-module (gnu packages icu4c)
#:use-module (gnu packages libjpeg)
#:use-module (gnu packages libpng)
#:use-module (gnu packages libtiff)
#:use-module (gnu packages pdf)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages xorg))
(define-public atk
(package
@@ -46,3 +56,166 @@ by other toolkits and applications. Using the ATK interfaces, accessibility
tools have full access to view and control running applications.")
(license license:lgpl2.0+)
(home-page "https://developer.gnome.org/atk/")))
(define-public cairo
(package
(name "cairo")
(version "1.12.14")
(source (origin
(method url-fetch)
(uri (string-append "http://cairographics.org/releases/cairo-"
version ".tar.xz"))
(sha256
(base32
"04xcykglff58ygs0dkrmmnqljmpjwp2qgwcz8sijqkdpz7ix3l4n"))))
(build-system gnu-build-system)
(propagated-inputs
`(("fontconfig" ,fontconfig)
("freetype" ,freetype)
("glib" ,glib)
("libpng" ,libpng)
("libx11" ,libx11)
("libxext" ,libxext)
("libxrender" ,libxrender)
("pixman" ,pixman)))
(inputs
`(("ghostscript" ,ghostscript)
("libspectre" ,libspectre)
("pkg-config" ,pkg-config)
("poppler" ,poppler)
("python" ,python)
("xextproto" ,xextproto)
("zlib" ,zlib)))
(arguments
`(#:tests? #f)) ; see http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00085.html
(synopsis "2D graphics library")
(description
"Cairo is a 2D graphics library with support for multiple output devices.
Currently supported output targets include the X Window System (via both
Xlib and XCB), Quartz, Win32, image buffers, PostScript, PDF, and SVG file
output. Experimental backends include OpenGL, BeOS, OS/2, and DirectFB.
Cairo is designed to produce consistent output on all output media while
taking advantage of display hardware acceleration when available
eg. through the X Render Extension).
The cairo API provides operations similar to the drawing operators of
PostScript and PDF. Operations in cairo including stroking and filling cubic
Bézier splines, transforming and compositing translucent images, and
antialiased text rendering. All drawing operations can be transformed by any
affine transformation (scale, rotation, shear, etc.)")
(license license:lgpl2.1) ; or Mozilla Public License 1.1
(home-page "http://cairographics.org/")))
(define-public harfbuzz
(package
(name "harfbuzz")
(version "0.9.18")
(source (origin
(method url-fetch)
(uri (string-append "http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-"
version ".tar.bz2"))
(sha256
(base32
"026rlwspf1zn5akds9fwibpqpn47kmlnmqm5fi0cp4k4dnygpw7y"))))
(build-system gnu-build-system)
(inputs
`(("cairo" ,cairo)
("icu4c" ,icu4c)
("pkg-config" ,pkg-config)
("python" ,python)))
(synopsis "opentype text shaping engine")
(description
"HarfBuzz is an OpenType text shaping engine.")
(license (license:x11-style "file://COPYING"
"See 'COPYING' in the distribution."))
(home-page "http://www.freedesktop.org/wiki/Software/HarfBuzz/")))
(define-public pango
(package
(name "pango")
(version "1.34.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/pango/1.34/pango-"
version ".tar.xz"))
(sha256
(base32
"0k7662qix7zzh7mf6ikdj594n8jpbfm25z8swz64zbm86kgk1shs"))))
(build-system gnu-build-system)
(propagated-inputs
`(("cairo" ,cairo)
("harfbuzz" ,harfbuzz)))
(inputs
`(("pkg-config" ,pkg-config)
("zlib" ,zlib)))
(synopsis "GNOME text and font handling library")
(description
"Pango is the core text and font handling library used in GNOME
applications. It has extensive support for the different writing systems
used throughout the world.")
(license license:lgpl2.0+)
(home-page "https://developer.gnome.org/pango/")))
(define-public gdk-pixbuf
(package
(name "gdk-pixbuf")
(version "2.28.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/gdk-pixbuf/2.28/gdk-pixbuf-"
version ".tar.xz"))
(sha256
(base32
"05s6ksvy1yan6h6zny9n3bmvygcnzma6ljl6i0z9cci2xg116c8q"))))
(build-system gnu-build-system)
(inputs
`(("glib" ,glib)
("libjpeg" ,libjpeg)
("libpng" ,libpng)
("libtiff" ,libtiff)
("pkg-config" ,pkg-config)))
(synopsis "GNOME image loading and manipulation library")
(description
"GdkPixbuf is a library for image loading and manipulation developed
in the GNOME project.")
(license license:lgpl2.0+)
(home-page "https://developer.gnome.org/gdk-pixbuf/")))
(define-public gtk+
(package
(name "gtk+")
(version "2.24.20")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/gtk+/2.24/gtk+-"
version ".tar.xz"))
(sha256
(base32
"18qdvb7nxi25hfnpmcy01p3majw9jnx83ikm263dk9rrjazvqrnc"))))
(build-system gnu-build-system)
(propagated-inputs
`(("atk" ,atk)
("gdk-pixbuf" ,gdk-pixbuf)
("pango" ,pango)))
(inputs
`(("pkg-config" ,pkg-config)))
(arguments
`(#:phases
(alist-replace
'configure
(lambda* (#:key #:allow-other-keys #:rest args)
(let ((configure (assoc-ref %standard-phases 'configure)))
;; FIXME: re-enable tests requiring an X server
(substitute* "gtk/Makefile.in"
(("SUBDIRS = theme-bits . tests") "SUBDIRS = theme-bits ."))
(apply configure args)))
%standard-phases)))
(synopsis "multi-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
suitable for projects ranging from small one-off tools to complete
application suites.")
(license license:lgpl2.0+)
(home-page "http://www.gtk.org/")))
+16 -3
View File
@@ -19,6 +19,7 @@
(define-module (gnu packages guile)
#:use-module (guix licenses)
#:use-module (gnu packages)
#:use-module (gnu packages bash)
#:use-module (gnu packages bdw-gc)
#:use-module (gnu packages gawk)
#:use-module (gnu packages gperf)
@@ -115,7 +116,12 @@ extensible. It supports many SRFIs.")
(build-system gnu-build-system)
(native-inputs `(("pkgconfig" ,pkg-config)))
(inputs `(("libffi" ,libffi)
("readline" ,readline)))
("readline" ,readline)
;; TODO: On next core-updates, make Bash input unconditional.
,@(if (%current-target-system)
`(("bash" ,bash))
'())))
(propagated-inputs
`( ;; These ones aren't normally needed here, but since `libguile-2.0.la'
@@ -132,15 +138,22 @@ extensible. It supports many SRFIs.")
(self-native-input? #t)
(outputs '("out" "debug"))
(arguments
'(#:phases (alist-cons-before
`(#:phases (alist-cons-before
'configure 'pre-configure
(lambda* (#:key inputs #:allow-other-keys)
;; Tell (ice-9 popen) the file name of Bash.
(let ((bash (assoc-ref inputs "bash")))
(substitute* "module/ice-9/popen.scm"
(("/bin/sh")
(string-append bash "/bin/bash")))))
%standard-phases)))
%standard-phases)
,@(if (%current-target-system)
'(#:configure-flags '("CC_FOR_BUILD=gcc"))
'())))
(native-search-paths
(list (search-path-specification
+2 -2
View File
@@ -26,7 +26,7 @@
(define-public help2man
(package
(name "help2man")
(version "1.41.2")
(version "1.43.3")
(source
(origin
(method url-fetch)
@@ -34,7 +34,7 @@
version ".tar.gz"))
(sha256
(base32
"1as014d8wxy7529fr8n2ihy61c2p5jzywzirkqggvz8lwg6r933a"))))
"00yk86rvvaavg7y6i5bvk5xhm417jl9dpr8bqvqdksw0i48qv5v7"))))
(build-system gnu-build-system)
(arguments `(;; There's no `check' target.
#:tests? #f))
+92
View File
@@ -0,0 +1,92 @@
;;; 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 imagemagick)
#:use-module (guix packages)
#:use-module (guix build-system gnu)
#:use-module (guix download)
#:use-module ((guix licenses) #:select (fsf-free))
#:use-module (gnu packages libjpeg)
#:use-module (gnu packages compression)
#:use-module (gnu packages graphviz)
#:use-module (gnu packages xorg)
#:use-module (gnu packages xml)
#:use-module (gnu packages gtk)
#:use-module (gnu packages libpng)
#:use-module (gnu packages libtiff)
#:use-module (gnu packages libjpeg)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages pkg-config))
(define-public imagemagick
(package
(name "imagemagick")
(version "6.8.6-0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://imagemagick/ImageMagick-"
version ".tar.xz"))
(sha256
(base32
"1qmwpnq2mcxjnp0rjyb2g7v87lhmll19imx3iys6kplh8amrmqnv"))))
(build-system gnu-build-system)
(arguments
`(#:phases (alist-cons-before
'build 'pre-build
(lambda* (#:key outputs #:allow-other-keys)
(substitute* "Makefile"
;; Clear the `LIBRARY_PATH' setting, which otherwise
;; interferes with our own use.
(("^LIBRARY_PATH[[:blank:]]*=.*$")
"")
;; Since the Makefile overrides $docdir, modify it to
;; refer to what we want.
(("^DOCUMENTATION_PATH[[:blank:]]*=.*$")
(let ((doc (assoc-ref outputs "doc")))
(string-append "DOCUMENTATION_PATH = "
doc "/share/doc/"
,name "-" ,version "\n")))))
%standard-phases)))
;; TODO: Add Jasper, LCMS, etc.
(inputs `(("graphviz" ,graphviz)
("ghostscript" ,ghostscript)
("libx11" ,libx11)
("zlib" ,zlib)
("libxml2" ,libxml2)
("libtiff" ,libtiff)
("libpng" ,libpng)
("libjpeg" ,libjpeg-8)
("pango" ,pango)
("freetype" ,freetype)
("bzip2" ,bzip2)
("xz" ,xz)
("pkg-config" ,pkg-config)))
(outputs '("out"
"doc")) ; 26 MiB of HTML documentation
(home-page "http://www.imagemagick.org/")
(synopsis "Create, edit, compose, or convert bitmap images")
(description
"ImageMagick® is a software suite to create, edit, compose, or convert
bitmap images. It can read and write images in a variety of formats (over 100)
including DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG,
and TIFF. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and
transform images, adjust image colors, apply various special effects, or draw
text, lines, polygons, ellipses and Bézier curves.")
(license (fsf-free "http://www.imagemagick.org/script/license.php"))))
+21 -8
View File
@@ -11,7 +11,7 @@ main="(@ (gnu build-support ld-wrapper) ld-wrapper)"
exec @GUILE@ -c "(load-compiled \"$0.go\") (apply $main (cdr (command-line)))" "$@"
!#
;;; 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.
;;;
@@ -82,13 +82,26 @@ exec @GUILE@ -c "(load-compiled \"$0.go\") (apply $main (cdr (command-line)))" "
(getenv "GUIX_LD_WRAPPER_DEBUG"))
(define (pure-file-name? file)
;; Return #t when FILE is the name of a file either within the store or
;; within the build directory.
(or (not (string-prefix? "/" file))
(string-prefix? %store-directory file)
(string-prefix? %temporary-directory file)
(and %build-directory
(string-prefix? %build-directory file))))
;; Return #t when FILE is the name of a file either within the store
;; (possibly via a symlink) or within the build directory.
(define %max-symlink-depth 50)
(let loop ((file file)
(depth 0))
(or (not (string-prefix? "/" file))
(string-prefix? %store-directory file)
(string-prefix? %temporary-directory file)
(if %build-directory
(string-prefix? %build-directory file)
;; When used from a user environment, FILE may refer to
;; ~/.guix-profile/lib/libfoo.so, which is itself a symlink to the
;; store. Check whether this is the case.
(let ((s (false-if-exception (lstat file))))
(and s
(eq? 'symlink (stat:type s))
(< depth %max-symlink-depth)
(loop (readlink file) (+ 1 depth))))))))
(define (switch-arguments switch args)
;; Return the arguments passed for the occurrences of SWITCH--e.g.,
+4 -4
View File
@@ -28,14 +28,14 @@
(define-public libapr
(package
(name "libapr")
(version "1.4.6")
(version "1.4.8")
(source (origin
(method url-fetch)
(uri (string-append "mirror://apache/apr/apr-"
version ".tar.bz2"))
(sha256
(base32
"1g0w9396akmhhrmjzmcwddny5ms43zvj2mrpdkyfcqxizrh5wqwv"))))
"0884csfk3f530yscak0jlr6w929s3ys0n7fpwdg3dii1sgwd5f31"))))
(build-system gnu-build-system)
(arguments
`(#:patches (list (assoc-ref %build-inputs
@@ -60,14 +60,14 @@ around or take advantage of platform-specific deficiencies or features.")
(define-public libaprutil
(package
(name "libaprutil")
(version "1.5.1")
(version "1.5.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://apache/apr/apr-util-"
version ".tar.bz2"))
(sha256
(base32
"0832cb90zd7zqhhdx0v3i8viw1rmn0d945qbk1zid3cnky9r0s19"))))
"19qjxpckb9p4j9pbk8kcirg6k5vqnjrqhnk9xx2c5m9964p3vkls"))))
(build-system gnu-build-system)
(inputs
`(("libapr" ,libapr)))
+5 -4
View File
@@ -29,7 +29,7 @@
(define out (assoc-ref outputs "out"))
(mkdir (string-append out "/include"))
(with-directory-excursion
(string-append out "/lib/libffi-3.0.9/include")
(string-append out "/lib/libffi-3.0.13/include")
(for-each (lambda (h)
(format #t "moving `~a' to includedir~%" h)
(rename-file h (string-append out "/include/" h)))
@@ -38,7 +38,7 @@
(not (member x '("." ".."))))))))))
(package
(name "libffi")
(version "3.0.9")
(version "3.0.13")
(source (origin
(method url-fetch)
(uri
@@ -46,14 +46,15 @@
name "-" version ".tar.gz"))
(sha256
(base32
"0ln4jbpb6clcsdpb9niqk0frgx4k0xki96wiv067ig0q4cajb7aq"))))
"077ibkf84bvcd6rw1m6jb107br63i2pp301rkmsbgg6300adxp8x"))))
(build-system gnu-build-system)
(arguments `(#:modules ((guix build utils) (guix build gnu-build-system)
(ice-9 ftw) (srfi srfi-26))
#:phases (alist-cons-after 'install 'post-install
,post-install-phase
%standard-phases)))
(synopsis "libffi, a foreign function call interface library")
(outputs '("out" "debug"))
(synopsis "Foreign function call interface library")
(description
"The libffi library provides a portable, high level programming interface
to various calling conventions. This allows a programmer to call any
+2 -2
View File
@@ -26,13 +26,13 @@
(define-public libidn
(package
(name "libidn")
(version "1.26")
(version "1.28")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/libidn/libidn-" version
".tar.gz"))
(sha256 (base32
"0g657kv60rh486m7bwyp5k24ljmym4wnb8nmk6d3i3qgr1qlqbqa"))))
"1yxbfdiwr3l91m79sksn6v5mgpl4lfj8i82zgryckas9hjb7ldfx"))))
(build-system gnu-build-system)
;; FIXME: No Java and C# libraries are currently built.
(synopsis "Internationalized string processing library")
+1
View File
@@ -36,6 +36,7 @@
(base32 "09ibrz1df5ajqcm9vmx6zw8qama2rzf0961yhmmfsy629qfhyrk0"))))
(build-system gnu-build-system)
(inputs `(("libusb" ,libusb)))
(outputs '("out" "debug"))
(home-page "http://www.phidgets.com/")
(license lgpl3+)
(synopsis "C library to manipulate Phidgets")
+15 -9
View File
@@ -27,18 +27,24 @@
(define-public libpng
(package
(name "libpng")
(version "1.5.14")
(version "1.5.17")
(source (origin
(method url-fetch)
(uri (string-append
"http://downloads.sourceforge.net/project/libpng/libpng15/"
version "/libpng-"
version ".tar.xz"))
(sha256 (base32
"0m3vz3gig7s63zanq5b1dgb5ph12qm0cylw4g4fbxlsq3f74hn8l"))))
;; Note: upstream removes older tarballs.
(uri (list (string-append "mirror://sourceforge/libpng/libpng15/"
version "/libpng-" version ".tar.xz")
(string-append
"ftp://ftp.simplesystems.org/pub/libpng/png/src"
"/libpng15/libpng-" version ".tar.xz")))
(sha256
(base32 "19wj293r4plbfgb43yhrc2qx8bsch9gbazazfqrj9haa7lsk29jp"))))
(build-system gnu-build-system)
(inputs `(("zlib" ,zlib)))
(synopsis "Libpng, a library for handling PNG files")
;; libpng.la says "-lz", so propagate it.
(propagated-inputs `(("zlib" ,zlib)))
(synopsis "Library for handling PNG files")
(description
"Libpng is the official PNG (Portable Network Graphics) reference
library. It supports almost all PNG features and is extensible.")
+15
View File
@@ -36,6 +36,21 @@
(build-system gnu-build-system)
(home-page "http://www.gnu.org/software/libsigsegv/")
(synopsis "Library for handling page faults")
(arguments
;; On MIPS, work around this error:
;;
;; In file included from fault-linux-mips-old.h:18:0,
;; [...]
;; linux-libre-headers-cross-mips64el-linux-gnu-3.3.8/include/asm/sigcontext.h:57:8: error: redefinition of 'struct sigcontext'
(if (string-contains (or (%current-target-system) (%current-system))
"mips64el")
`(#:phases (alist-cons-before
'configure 'patch-mips-old-h
(lambda _
(substitute* "src/fault-linux-mips-old.h"
(("#include <asm/sigcontext\\.h>") "")))
%standard-phases))
'()))
(description
"GNU libsigsegv is a library for handling page faults in user mode. A page
fault occurs when a program tries to access to a region of memory that is
+148 -11
View File
@@ -23,8 +23,10 @@
#:use-module ((gnu packages compression)
#:renamer (symbol-prefix-proc 'guix:))
#:use-module (gnu packages flex)
#:use-module (gnu packages bison)
#:use-module (gnu packages libusb)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages bdb)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (guix packages)
@@ -40,6 +42,22 @@
((string-prefix? "arm" arch) "arm")
(else arch))))
(define (linux-libre-urls version)
"Return a list of URLs for Linux-Libre VERSION."
(list (string-append
"http://linux-libre.fsfla.org/pub/linux-libre/releases/"
version "-gnu/linux-libre-" version "-gnu.tar.xz")
;; XXX: Work around <http://bugs.gnu.org/14851>.
(string-append
"ftp://alpha.gnu.org/gnu/guix/mirror/linux-libre-"
version "-gnu.tar.xz")
;; Maybe this URL will become valid eventually.
(string-append
"mirror://gnu/linux-libre/" version "-gnu/linux-libre-"
version "-gnu.tar.xz")))
(define-public linux-libre-headers
(let* ((version* "3.3.8")
(build-phase
@@ -67,9 +85,7 @@
(version version*)
(source (origin
(method url-fetch)
(uri (string-append
"http://linux-libre.fsfla.org/pub/linux-libre/releases/3.3.8-gnu/linux-libre-"
version "-gnu.tar.xz"))
(uri (linux-libre-urls version))
(sha256
(base32
"0jkfh0z1s6izvdnc3njm39dhzp1cg8i06jv06izwqz9w9qsprvnl"))))
@@ -173,9 +189,7 @@
(version version*)
(source (origin
(method url-fetch)
(uri (string-append
"http://linux-libre.fsfla.org/pub/linux-libre/releases/3.3.8-gnu/linux-libre-"
version "-gnu.tar.xz"))
(uri (linux-libre-urls version))
(sha256
(base32
"0jkfh0z1s6izvdnc3njm39dhzp1cg8i06jv06izwqz9w9qsprvnl"))))
@@ -284,8 +298,7 @@ providing the system administrator with some help in common tasks.")
("ncurses" ,ncurses)
("perl" ,perl)))
(home-page "https://www.kernel.org/pub/linux/utils/util-linux/")
(synopsis
"util-linux is a random collection of utilities for the Linux kernel")
(synopsis "Collection of utilities for the Linux kernel")
(description
"util-linux is a random collection of utilities for the Linux kernel.")
@@ -342,8 +355,7 @@ providing the system administrator with some help in common tasks.")
;; What did you expect? Tests?
#:tests? #f))
(home-page "http://procps.sourceforge.net/")
(synopsis
"Utilities that give information about processes using the /proc filesystem")
(synopsis "Utilities that give information about processes")
(description
"procps is the package that has a bunch of small useful utilities
that give information about processes using the Linux /proc file system.
@@ -405,9 +417,134 @@ slabtop, and skill.")
;; filesystem is mounted due to missing mtab file".
#:tests? #f))
(home-page "http://e2fsprogs.sourceforge.net/")
(synopsis "Tools for creating and checking ext2/ext3/ext4 filesystems")
(synopsis "Creating and checking ext2/ext3/ext4 file systems")
(description
"This package provides tools for manipulating ext2/ext3/ext4 file systems.")
(license (list gpl2 ; programs
lgpl2.0 ; libext2fs
x11)))) ; libuuid
(define-public strace
(package
(name "strace")
(version "4.7")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/strace/strace-"
version ".tar.xz"))
(sha256
(base32
"158iwk0pl2mfw93m1843xb7a2zb8p6lh0qim07rca6f1ff4dk764"))))
(build-system gnu-build-system)
(inputs `(("perl" ,perl)))
(home-page "http://strace.sourceforge.net/")
(synopsis "System call tracer for Linux")
(description
"strace is a system call tracer, i.e. a debugging tool which prints out a
trace of all the system calls made by a another process/program.")
(license bsd-3)))
(define-public alsa-lib
(package
(name "alsa-lib")
(version "1.0.27.1")
(source (origin
(method url-fetch)
(uri (string-append
"ftp://ftp.alsa-project.org/pub/lib/alsa-lib-"
version ".tar.bz2"))
(sha256
(base32
"0fx057746dj7rjdi0jnvx2m9b0y1lgdkh1hks87d8w32xyihf3k9"))))
(build-system gnu-build-system)
(home-page "http://www.alsa-project.org/")
(synopsis "The Advanced Linux Sound Architecture libraries")
(description
"The Advanced Linux Sound Architecture (ALSA) provides audio and
MIDI functionality to the Linux-based operating system.")
(license lgpl2.1+)))
(define-public iptables
(package
(name "iptables")
(version "1.4.16.2")
(source (origin
(method url-fetch)
(uri (string-append
"http://www.netfilter.org/projects/iptables/files/iptables-"
version ".tar.bz2"))
(sha256
(base32
"0vkg5lzkn4l3i1sm6v3x96zzvnv9g7mi0qgj6279ld383mzcws24"))))
(build-system gnu-build-system)
(arguments '(#:tests? #f)) ; no test suite
(home-page "http://www.netfilter.org/projects/iptables/index.html")
(synopsis "Program to configure the Linux IP packet filtering rules")
(description
"iptables is the userspace command line program used to configure the
Linux 2.4.x and later IPv4 packet filtering ruleset. It is targeted towards
system administrators. Since Network Address Translation is also configured
from the packet filter ruleset, iptables is used for this, too. The iptables
package also includes ip6tables. ip6tables is used for configuring the IPv6
packet filter.")
(license gpl2+)))
(define-public iproute
(package
(name "iproute2")
(version "3.8.0")
(source (origin
(method url-fetch)
(uri (string-append
"mirror://kernel.org/linux/utils/net/iproute2/iproute2-"
version ".tar.xz"))
(sha256
(base32
"0kqy30wz2krbg4y7750hjq5218hgy2vj9pm5qzkn1bqskxs4b4ap"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no test suite
#:make-flags (let ((out (assoc-ref %outputs "out")))
(list "DESTDIR="
(string-append "LIBDIR=" out "/lib")
(string-append "SBINDIR=" out "/sbin")
(string-append "CONFDIR=" out "/etc")
(string-append "DOCDIR=" out "/share/doc/"
,name "-" ,version)
(string-append "MANDIR=" out "/share/man")))
#:phases (alist-cons-before
'install 'pre-install
(lambda _
;; Don't attempt to create /var/lib/arpd.
(substitute* "Makefile"
(("^.*ARPDDIR.*$") "")))
%standard-phases)))
(inputs
`(("iptables" ,iptables)
("db4" ,bdb)
("pkg-config" ,pkg-config)
("flex" ,flex)
("bison" ,bison)))
(home-page
"http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2")
(synopsis
"A collection of utilities for controlling TCP/IP networking and traffic control in Linux")
(description
"Iproute2 is a collection of utilities for controlling TCP/IP
networking and traffic with the Linux kernel.
Most network configuration manuals still refer to ifconfig and route as the
primary network configuration tools, but ifconfig is known to behave
inadequately in modern network environments. They should be deprecated, but
most distros still include them. Most network configuration systems make use
of ifconfig and thus provide a limited feature set. The /etc/net project aims
to support most modern network technologies, as it doesn't use ifconfig and
allows a system administrator to make use of all iproute2 features, including
traffic control.
iproute2 is usually shipped in a package called iproute or iproute2 and
consists of several tools, of which the most important are ip and tc. ip
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+)))
+2 -2
View File
@@ -77,14 +77,14 @@
'("design" "expert" "slides" "user")))))
(package
(name "lout")
(version "3.39")
(version "3.40")
(source (origin
(method url-fetch)
(uri (string-append "mirror://savannah/lout/lout-"
version ".tar.gz"))
(sha256
(base32
"12gkyqrn0kaa8xq7sc7v3wm407pz2fxg9ngc75aybhi5z825b9vq"))))
"1gb8vb1wl7ikn269dd1c7ihqhkyrwk19jwx5kd0rdvbk6g7g25ix"))))
(build-system gnu-build-system) ; actually, just a makefile
(outputs '("out" "doc"))
(inputs
+16 -16
View File
@@ -24,6 +24,7 @@
#:use-module (gnu packages)
#:use-module (gnu packages m4)
#:use-module (gnu packages linux)
#:use-module (gnu packages nettle)
#:use-module ((gnu packages compression)
#:renamer (symbol-prefix-proc 'guix:))
#:use-module (gnu packages multiprecision)
@@ -44,15 +45,21 @@
(base32
"0z6rlalhvfca64jpvksppc9bdhs7jwhiw4y35g5ibvh91xp3rn1l"))))
(build-system gnu-build-system)
(home-page "http://liboop.ofb.net/")
(synopsis "`liboop', an event loop library")
(description "liboop is an event loop library.")
(home-page "http://www.lysator.liu.se/liboop/")
(synopsis "Event loop library")
(description "Liboop is a low-level event loop management library for
POSIX-based operating systems. It supports the development of modular,
multiplexed applications which may respond to events from several sources. It
replaces the \"select() loop\" and allows the registration of event handlers
for file and network I/O, timers and signals. Since processes use these
mechanisms for almost all external communication, liboop can be used as the
basis for almost any application.")
(license lgpl2.1+)))
(define-public lsh
(package
(name "lsh")
(version "2.0.4")
(version "2.1")
(source
(origin
(method url-fetch)
@@ -60,10 +67,11 @@
version ".tar.gz"))
(sha256
(base32
"149hf49xcj99wwvi7hcb59igq4vpyv8har1br1if3lrsw5irsjv1"))))
"1qqjy9zfzgny0rkb27c8c7dfsylvb6n0ld8h3an2r83pmaqr9gwb"))))
(build-system gnu-build-system)
(inputs
`(("linux-pam" ,linux-pam)
`(("nettle" ,nettle)
("linux-pam" ,linux-pam)
("m4" ,m4)
("readline" ,readline)
("liboop" ,liboop)
@@ -72,17 +80,9 @@
("guile" ,guile-final)
("gperf" ,gperf)
("psmisc" ,psmisc) ; for `killall'
("patch/no-root-login" ,(search-patch "lsh-no-root-login.patch"))
("patch/guile-compat" ,(search-patch "lsh-guile-compat.patch"))
("patch/pam-service-name"
,(search-patch "lsh-pam-service-name.patch"))))
))
(arguments
'(#:patches (list (assoc-ref %build-inputs "patch/no-root-login")
(assoc-ref %build-inputs "patch/pam-service-name")
(assoc-ref %build-inputs "patch/guile-compat"))
;; Skip the `configure' test that checks whether /dev/ptmx &
'(;; Skip the `configure' test that checks whether /dev/ptmx &
;; co. work as expected, because it relies on impurities (for
;; instance, /dev/pts may be unavailable in chroots.)
#:configure-flags '("lsh_cv_sys_unix98_ptys=yes")
+106 -63
View File
@@ -24,6 +24,7 @@
#:use-module (guix build-system gnu)
#:use-module ((gnu packages) #:select (search-patch))
#:use-module (gnu packages base)
#:use-module (gnu packages cross-base)
#:use-module (gnu packages bash)
#:use-module (gnu packages compression)
#:use-module (gnu packages gawk)
@@ -49,12 +50,12 @@
;;;
;;; Code:
(define %glibc-for-bootstrap
;; A libc whose `system' and `popen' functions looks for `sh' in $PATH,
;; without nscd, and with static NSS modules.
(package (inherit glibc-final)
(define* (glibc-for-bootstrap #:optional (base glibc))
"Return a libc deriving from BASE whose `system' and `popen' functions looks
for `sh' in $PATH, and without nscd, and with static NSS modules."
(package (inherit base)
(arguments
(substitute-keyword-arguments (package-arguments glibc-final)
(substitute-keyword-arguments (package-arguments base)
((#:patches patches)
`(cons (assoc-ref %build-inputs "patch/system") ,patches))
((#:configure-flags flags)
@@ -65,17 +66,45 @@
,flags))))
(inputs
`(("patch/system" ,(search-patch "glibc-bootstrap-system.patch"))
,@(package-inputs glibc-final)))))
,@(package-inputs base)))))
(define (package-with-relocatable-glibc p)
"Return a variant of P that uses the libc as defined by
`glibc-for-bootstrap'."
(define (cross-bootstrap-libc)
(let ((target (%current-target-system)))
(glibc-for-bootstrap
;; `cross-libc' already returns a cross libc, so clear
;; %CURRENT-TARGET-SYSTEM.
(parameterize ((%current-target-system #f))
(cross-libc target)))))
(define %standard-inputs-with-relocatable-glibc
;; Standard inputs with the above libc and corresponding GCC.
`(("libc", %glibc-for-bootstrap)
("gcc" ,(package-with-explicit-inputs
gcc-4.7
`(("libc",%glibc-for-bootstrap)
,@(alist-delete "libc" %final-inputs))
(current-source-location)))
,@(fold alist-delete %final-inputs '("libc" "gcc"))))
(define (inputs)
(if (%current-target-system) ; is this package cross built?
`(("cross-libc" ,(cross-bootstrap-libc)))
'()))
(define (native-inputs)
(if (%current-target-system)
(let ((target (%current-target-system)))
`(("cross-gcc" ,(cross-gcc target
(cross-binutils target)
(cross-bootstrap-libc)))
("cross-binutils" ,(cross-binutils target))
,@%final-inputs))
`(("libc" ,(glibc-for-bootstrap))
("gcc" ,(package (inherit gcc-4.7)
(inputs
`(("libc",(glibc-for-bootstrap))
,@(package-inputs gcc-4.7)))))
,@(fold alist-delete %final-inputs '("libc" "gcc")))))
(package-with-explicit-inputs p inputs
(current-source-location)
#:native-inputs native-inputs))
(define %bash-static
(static-package bash-light))
@@ -83,18 +112,22 @@
(define %static-inputs
;; Packages that are to be used as %BOOTSTRAP-INPUTS.
(let ((coreutils (package (inherit coreutils)
(arguments
`(#:configure-flags
'("--disable-nls"
"--disable-silent-rules"
"--enable-no-install-program=stdbuf,libstdbuf.so"
"CFLAGS=-Os -g0" ; smaller, please
"LDFLAGS=-static -pthread")
#:tests? #f ; signal-related Gnulib tests fail
,@(package-arguments coreutils)))
(arguments
`(#:configure-flags
'("--disable-nls"
"--disable-silent-rules"
"--enable-no-install-program=stdbuf,libstdbuf.so"
"CFLAGS=-Os -g0" ; smaller, please
"LDFLAGS=-static -pthread")
#:tests? #f ; signal-related Gnulib tests fail
,@(package-arguments coreutils)))
;; Remove optional dependencies such as GMP.
(inputs `(,(assoc "perl" (package-inputs coreutils))))))
;; Remove optional dependencies such as GMP. Keep Perl
;; except if it's missing (which is the case when
;; cross-compiling).
(inputs (match (assoc "perl" (package-inputs coreutils))
(#f '())
(x (list x))))))
(bzip2 (package (inherit bzip2)
(arguments
(substitute-keyword-arguments (package-arguments bzip2)
@@ -120,6 +153,13 @@
(gawk (package (inherit gawk)
(arguments
`(#:patches (list (assoc-ref %build-inputs "patch/sh"))
;; Starting from gawk 4.1.0, some of the tests for the
;; plug-in mechanism just fail on static builds:
;;
;; ./fts.awk:1: error: can't open shared library `filefuncs' for reading (No such file or directory)
#:tests? #f
,@(substitute-keyword-arguments (package-arguments gawk)
((#:phases phases)
`(alist-cons-before
@@ -130,12 +170,12 @@
(substitute* "configure"
(("-export-dynamic") "")))
,phases)))))
(inputs `(("patch/sh" ,(search-patch "gawk-shell.patch"))))))
(finalize (lambda (p)
(static-package (package-with-explicit-inputs
p
%standard-inputs-with-relocatable-glibc)
(current-source-location)))))
(inputs `(("patch/sh" ,(search-patch "gawk-shell.patch"))
,@(if (%current-target-system)
`(("bash" ,%bash-static))
'())))))
(finalize (compose static-package
package-with-relocatable-glibc)))
`(,@(map (match-lambda
((name package)
(list name (finalize package))))
@@ -148,12 +188,7 @@
("sed" ,sed)
("grep" ,grep)
("gawk" ,gawk)))
("bash" ,%bash-static)
;; ("ld-wrapper" ,ld-wrapper)
;; ("binutils" ,binutils-final)
;; ("gcc" ,gcc-final)
;; ("libc" ,glibc-final)
)))
("bash" ,%bash-static))))
(define %static-binaries
(package
@@ -232,7 +267,11 @@
(package (inherit binutils)
(name "binutils-static")
(arguments
`(#:configure-flags '("--disable-gold" "--with-lib-path=/no-ld-lib-path")
`(#:configure-flags (cons "--disable-gold"
,(match (memq #:configure-flags
(package-arguments binutils))
((#:configure-flags flags _ ...)
flags)))
#:strip-flags '("--strip-all")
#:phases (alist-cons-before
'configure 'all-static
@@ -280,7 +319,7 @@
;; GNU libc's essential shared libraries, dynamic linker, and headers,
;; with all references to store directories stripped. As a result,
;; libc.so is unusable and need to be patched for proper relocation.
(let ((glibc %glibc-for-bootstrap))
(let ((glibc (glibc-for-bootstrap)))
(package (inherit glibc)
(name "glibc-stripped")
(build-system trivial-build-system)
@@ -323,7 +362,12 @@
(copy-recursively (string-append linux "/include/asm-generic")
(string-append incdir "/asm-generic"))
#t))))
(inputs `(("libc" ,glibc)
(inputs `(("libc" ,(let ((target (%current-target-system)))
(if target
(glibc-for-bootstrap
(parameterize ((%current-target-system #f))
(cross-libc target)))
glibc)))
("linux-headers" ,linux-libre-headers)))
;; Only one output.
@@ -331,8 +375,8 @@
(define %gcc-static
;; A statically-linked GCC, with stripped-down functionality.
(package-with-explicit-inputs
(package (inherit gcc-final)
(package-with-relocatable-glibc
(package (inherit gcc-4.7)
(name "gcc-static")
(arguments
`(#:modules ((guix build utils)
@@ -340,7 +384,7 @@
(srfi srfi-1)
(srfi srfi-26)
(ice-9 regex))
,@(substitute-keyword-arguments (package-arguments gcc-final)
,@(substitute-keyword-arguments (package-arguments gcc-4.7)
((#:guile _) #f)
((#:implicit-inputs? _) #t)
((#:configure-flags flags)
@@ -356,13 +400,14 @@
(remove (cut string-match "--(.*plugin|enable-languages)" <>)
,flags)))
((#:make-flags flags)
`(cons "BOOT_LDFLAGS=-static" ,flags)))))
(if (%current-target-system)
`(cons "LDFLAGS=-static" ,flags)
`(cons "BOOT_LDFLAGS=-static" ,flags))))))
(inputs `(("gmp-source" ,(package-source gmp))
("mpfr-source" ,(package-source mpfr))
("mpc-source" ,(package-source mpc))
("binutils" ,binutils-final)
,@(package-inputs gcc-4.7))))
%standard-inputs-with-relocatable-glibc))
("binutils" ,binutils)
,@(package-inputs gcc-4.7))))))
(define %gcc-stripped
;; The subset of GCC files needed for bootstrap.
@@ -404,13 +449,7 @@
;; A statically-linked Guile that is relocatable--i.e., it can search
;; .scm and .go files relative to its installation directory, rather
;; than in hard-coded configure-time paths.
(let* ((libgc (package (inherit libgc)
(arguments
;; Make it so that we don't rely on /proc. This is
;; especially useful in an initrd run before /proc is
;; mounted.
'(#:configure-flags '("CPPFLAGS=-DUSE_LIBC_PRIVATES")))))
(guile (package (inherit guile-2.0)
(let* ((guile (package (inherit guile-2.0)
(name (string-append (package-name guile-2.0) "-static"))
(inputs
`(("patch/relocatable"
@@ -428,7 +467,10 @@
`(;; When `configure' checks for ltdl availability, it
;; doesn't try to link using libtool, and thus fails
;; because of a missing -ldl. Work around that.
#:configure-flags '("LDFLAGS=-ldl")
#:configure-flags '("LDFLAGS=-ldl"
,@(if (%current-target-system)
'("CC_FOR_BUILD=gcc")
'()))
#:phases (alist-cons-before
'configure 'static-guile
@@ -456,9 +498,7 @@
;; There are uses of `dynamic-link' in
;; {foreign,coverage}.test that don't fly here.
#:tests? #f)))))
(package-with-explicit-inputs (static-package guile)
%standard-inputs-with-relocatable-glibc
(current-source-location))))
(package-with-relocatable-glibc (static-package guile))))
(define %guile-static-stripped
;; A stripped static Guile binary, for use during bootstrap.
@@ -486,7 +526,8 @@
(string-append out "/bin/guile"))
(remove-store-references (string-append out "/bin/guile"))
#t))))
(inputs `(("guile" ,%guile-static)))))
(inputs `(("guile" ,%guile-static)))
(outputs '("out"))))
(define (tarball-package pkg)
"Return a package containing a tarball of PKG."
@@ -494,9 +535,9 @@
(location (source-properties->location (current-source-location)))
(name (string-append (package-name pkg) "-tarball"))
(build-system trivial-build-system)
(inputs `(("tar" ,tar)
("xz" ,xz)
("input" ,pkg)))
(native-inputs `(("tar" ,tar)
("xz" ,xz)))
(inputs `(("input" ,pkg)))
(arguments
(let ((name (package-name pkg))
(version (package-version pkg)))
@@ -514,7 +555,9 @@
(zero? (system* "tar" "cJvf"
(string-append out "/"
,name "-" ,version
"-" ,(%current-system)
"-"
,(or (%current-target-system)
(%current-system))
".tar.xz")
"."))))))))))
+24
View File
@@ -181,3 +181,27 @@ This package contains the binary.")
(license license:gpl2+)
(home-page "http://mp3splt.sourceforge.net/mp3splt_page/home.php")))
(define-public mpg321
(package
(name "mpg321")
(version "0.3.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/mpg321/"
version "/mpg321-" version ".tar.gz"))
(sha256
(base32
"0yamsqvj15nsxxnjs9mgyslzx7krgsfk3q1hk3g6l8w9bbbj770b"))))
(build-system gnu-build-system)
(arguments '(#:configure-flags '("--disable-alsa")))
(inputs
`(("zlib" ,zlib)
("libmad" ,libmad)
("libid3tag" ,libid3tag)
("libao" ,ao)))
(home-page "http://mpg321.sourceforge.net/")
(synopsis "Command-line MP3 player")
(description "mpg321 is a command-line mp3 player. mpg321 is used for
frontends, as an mp3 player and as an mp3 to wave file decoder (primarily for
use with CD-recording software).")
(license license:gpl2)))
+5 -2
View File
@@ -27,7 +27,7 @@
(define-public gmp
(package
(name "gmp")
(version "5.1.1")
(version "5.1.2")
(source (origin
(method url-fetch)
(uri
@@ -35,9 +35,10 @@
version ".tar.xz"))
(sha256
(base32
"1hili06lcf0clg5qfvz7knm6pmj6ab54yhsvskp1mdny5xw4vmjb"))))
"1hnbxz7a6jrli8ph27i8zb6k2f456zn6l5xi78yhskzbxjk47nf7"))))
(build-system gnu-build-system)
(native-inputs `(("m4" ,m4)))
(outputs '("out" "debug"))
(arguments `(#:configure-flags
'(;; Build a "fat binary", with routines for several
;; sub-architectures.
@@ -78,6 +79,7 @@ faster algorithms.")
(sha256 (base32
"0fs501qi8l523gs3cpy4jjcnvwxggyfbklcys80wq236xx3hz79r"))))
(build-system gnu-build-system)
(outputs '("out" "debug"))
(propagated-inputs `(("gmp" ,gmp))) ; <mpfr.h> refers to <gmp.h>
(synopsis "C library for arbitrary precision floating-point arithmetic")
(description
@@ -103,6 +105,7 @@ double-precision floating-point arithmetic (53-bit mantissa).")
(sha256 (base32
"1zq0fidp1jii2j5k5n9hmx55a6wwid33gjzhimvxq9d5zrf82npd"))))
(build-system gnu-build-system)
(outputs '("out" "debug"))
(propagated-inputs `(("gmp" ,gmp) ; <mpc.h> refers to both
("mpfr" ,mpfr)))
(synopsis "C library for arbitrary precision complex arithmetic")
+31 -10
View File
@@ -42,7 +42,16 @@
(string-append "CONFIG_SHELL=" bash)
(string-append "--prefix=" out)
configure-flags)))))
(cross-pre-install-phase
'(lambda _
;; Run the native `tic' program, not the cross-built one.
(substitute* "misc/run_tic.sh"
(("\\{TIC_PATH:=.*\\}")
"{TIC_PATH:=true}")
(("cross_compiling:=no")
"cross_compiling:=yes"))))
(post-install-phase
;; FIXME: The `tic' binary lacks a RUNPATH; fix it.
'(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
;; When building a wide-character (Unicode) build, create backward
@@ -97,16 +106,28 @@
'("--without-cxx-binding")
'()))
#:tests? #f ; no "check" target
#:phases (alist-cons-after
'install 'post-install ,post-install-phase
(alist-cons-before
'configure 'patch-makefile-SHELL
,patch-makefile-phase
(alist-replace
'configure
,configure-phase
%standard-phases)))))
(self-native-input? #t)
#:phases ,(if (%current-target-system)
`(alist-cons-before ; cross build
'configure 'patch-makefile-SHELL
,patch-makefile-phase
(alist-cons-before
'install 'pre-install
,cross-pre-install-phase
(alist-cons-after
'install 'post-install ,post-install-phase
%standard-phases)))
`(alist-cons-after ; native build
'install 'post-install ,post-install-phase
(alist-cons-before
'configure 'patch-makefile-SHELL
,patch-makefile-phase
(alist-replace
'configure
,configure-phase
%standard-phases))))))
(self-native-input? #t) ; for `tic'
(synopsis "Terminal emulation (termcap, terminfo) library")
(description
"The Ncurses (new curses) library is a free software emulation of curses
+2 -2
View File
@@ -27,14 +27,14 @@
(define-public nettle
(package
(name "nettle")
(version "2.7")
(version "2.7.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/nettle/nettle-"
version ".tar.gz"))
(sha256
(base32
"1mnl5i1136p47lrklm0mhnnv3gjakza385zvxz12qf057h9ym562"))))
"0h2vap31yvi1a438d36lg1r1nllfx3y19r4rfxv7slrm6kafnwdw"))))
(build-system gnu-build-system)
(inputs `(("m4" ,m4)))
(propagated-inputs `(("gmp" ,gmp)))
+96
View File
@@ -0,0 +1,96 @@
;;; 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 noweb)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (guix licenses))
(define-public noweb
(package
(name "noweb")
(version "2.11b")
(source (origin
(method url-fetch)
(uri (string-append "ftp://www.eecs.harvard.edu/pub/nr/noweb-"
version ".tgz"))
(sha256
(base32
"10hdd6mrk26kyh4bnng4ah5h1pnanhsrhqa7qwqy6dyv3rng44y9"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-cons-before
'install 'pre-install
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(mkdir-p (string-append out "/share/texmf/tex/latex"))
#t))
(alist-cons-after
'install 'post-install
(lambda* (#:key outputs inputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(cu (assoc-ref inputs "coreutils"))
(du (assoc-ref inputs "diffutils")))
(with-directory-excursion out
(for-each (lambda (prog)
(substitute* prog
(("nawk") (which "awk"))))
(append (map (lambda (x)
(string-append "bin/" x))
'("noweb" "nountangle"
"noroots" "noroff"
"noindex"))
(map (lambda (x)
(string-append "lib/" x))
'("btdefn" "emptydefn" "noidx"
"pipedocs" "toascii" "tohtml"
"toroff" "totex" "unmarkup"))))
(substitute* "bin/cpif"
(("^PATH=.*$")
(string-append "PATH=" cu "/bin:" du "/bin\n"))))
#t))
(alist-replace
'configure
(lambda _
;; Jump in the source.
(chdir "src")
;; The makefile reads "source: FAQ", but FAQ isn't
;; available.
(substitute* "Makefile"
(("FAQ") "")))
%standard-phases)))
#:make-flags (let ((out (assoc-ref %outputs "out")))
(list (string-append "BIN=" out "/bin")
(string-append "LIB=" out "/lib")
(string-append "MAN=" out "/share/man")
(string-append "TEXINPUTS=" out
"/share/texmf/tex/latex")))
#:tests? #f)) ; no tests
(home-page "http://www.cs.tufts.edu/~nr/noweb/")
(synopsis "Literate programming tool")
(description
"noweb is designed to meet the needs of literate programmers while
remaining as simple as possible. Its primary advantages are simplicity,
extensibility, and language-independence—especially noticeable when compared
with other literate-programming tools. noweb uses 5 control sequences to
WEB's 27. The noweb manual is only 4 pages; an additional page explains how
to customize its LaTeX output. noweb works “out of the box” with any
programming language, and supports TeX, LaTeX, HTML, and troff back ends.")
(license (fsf-free "http://www.cs.tufts.edu/~nr/noweb/#copyright"))))
+4 -3
View File
@@ -25,6 +25,7 @@
#:use-module (gnu packages libpng)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages linux)
#:use-module ((guix licenses)
#:renamer (symbol-prefix-proc 'license:))
#:use-module (guix packages)
@@ -118,9 +119,9 @@ data (e.g., voice mail), and audio books.")
"1m0v2y6bhr4iwsgdkc7b3y0qgpvpv1ifbxsy8n8ahsvjn6wmppi9"))))
(build-system gnu-build-system)
;; FIXME: Add further backends, see the summary printed after configure.
(inputs `(("pkg-config" ,pkg-config)))
(synopsis
"libao, a cross platform audio library")
(inputs `(("pkg-config" ,pkg-config)
("alsa-lib" ,alsa-lib)))
(synopsis "Cross platform audio library")
(description
"Libao is a cross-platform audio library that allows programs to
output audio using a simple API on a wide variety of platforms.
@@ -22,3 +22,27 @@ at <http://gcc.gnu.org/ml/gcc/2013-02/msg00124.html>.
+#define LIBRARY_PATH_ENV "CROSS_LIBRARY_PATH"
+
#endif /* ! GCC_SYSTEM_H */
--- gcc-4.7.2/gcc/tlink.c 2012-02-11 09:50:23.000000000 +0100
+++ gcc-4.7.2/gcc/tlink.c 2013-05-23 22:06:19.000000000 +0200
@@ -461,7 +461,7 @@ recompile_files (void)
file *f;
putenv (xstrdup ("COMPILER_PATH="));
- putenv (xstrdup ("LIBRARY_PATH="));
+ putenv (xstrdup (LIBRARY_PATH_ENV "="));
while ((f = file_pop ()) != NULL)
{
--- gcc-4.7.3/gcc/gcc.c 2013-03-08 08:25:09.000000000 +0100
+++ gcc-4.7.3/gcc/gcc.c 2013-05-24 08:58:16.000000000 +0200
@@ -3726,7 +3726,7 @@ process_command (unsigned int decoded_op
}
temp = getenv (LIBRARY_PATH_ENV);
- if (temp && *cross_compile == '0')
+ if (temp)
{
const char *startp, *endp;
char *nstore = (char *) alloca (strlen (temp) + 3);
@@ -1,77 +0,0 @@
This patch is needed to allow builds with newer versions of
the GNU libc (2.16+).
The upstream fix was:
commit 66712c23388e93e5c518ebc8515140fa0c807348
Author: Eric Blake <eblake@redhat.com>
Date: Thu Mar 29 13:30:41 2012 -0600
stdio: don't assume gets any more
Gnulib intentionally does not have a gets module, and now that C11
and glibc have dropped it, we should be more proactive about warning
any user on a platform that still has a declaration of this dangerous
interface.
* m4/stdio_h.m4 (gl_STDIO_H, gl_STDIO_H_DEFAULTS): Drop gets
support.
* modules/stdio (Makefile.am): Likewise.
* lib/stdio-read.c (gets): Likewise.
* tests/test-stdio-c++.cc: Likewise.
* m4/warn-on-use.m4 (gl_WARN_ON_USE_PREPARE): Fix comment.
* lib/stdio.in.h (gets): Make warning occur in more places.
* doc/posix-functions/gets.texi (gets): Update documentation.
Reported by Christer Solskogen.
Signed-off-by: Eric Blake <eblake@redhat.com>
This patch just gets rid of the offending part.
--- gettext-0.18.1.1/gettext-tools/libgettextpo/stdio.in.h-orig 2012-11-24 01:13:14.000000000 +0400
+++ gettext-0.18.1.1/gettext-tools/libgettextpo/stdio.in.h 2012-11-24 01:13:46.000000000 +0400
@@ -137,12 +137,6 @@
"use gnulib module fflush for portable POSIX compliance");
#endif
-/* It is very rare that the developer ever has full control of stdin,
- so any use of gets warrants an unconditional warning. Assume it is
- always declared, since it is required by C89. */
-#undef gets
-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
-
#if @GNULIB_FOPEN@
# if @REPLACE_FOPEN@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
--- gettext-0.18.1.1/gettext-runtime/gnulib-lib/stdio.in.h-orig 2012-11-24 00:26:49.000000000 +0400
+++ gettext-0.18.1.1/gettext-runtime/gnulib-lib/stdio.in.h 2012-11-24 00:45:54.000000000 +0400
@@ -137,12 +137,6 @@
"use gnulib module fflush for portable POSIX compliance");
#endif
-/* It is very rare that the developer ever has full control of stdin,
- so any use of gets warrants an unconditional warning. Assume it is
- always declared, since it is required by C89. */
-#undef gets
-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
-
#if @GNULIB_FOPEN@
# if @REPLACE_FOPEN@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
--- gettext-0.18.1.1/gettext-tools/gnulib-lib/stdio.in.h-orig 2012-11-24 01:00:26.000000000 +0400
+++ gettext-0.18.1.1/gettext-tools/gnulib-lib/stdio.in.h 2012-11-24 01:00:53.000000000 +0400
@@ -137,12 +137,6 @@
"use gnulib module fflush for portable POSIX compliance");
#endif
-/* It is very rare that the developer ever has full control of stdin,
- so any use of gets warrants an unconditional warning. Assume it is
- always declared, since it is required by C89. */
-#undef gets
-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
-
#if @GNULIB_FOPEN@
# if @REPLACE_FOPEN@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+14 -13
View File
@@ -1,9 +1,9 @@
Some GLib tests expect desktop things, such as an xterm, a MIME
database, the `update-desktop-database' program, which we don't provide.
--- glib-2.34.3/gio/tests/appinfo.c 2013-01-16 18:20:00.000000000 +0100
+++ glib-2.34.3/gio/tests/appinfo.c 2013-01-16 18:20:06.000000000 +0100
@@ -384,14 +384,09 @@ main (int argc, char *argv[])
--- glib-2.37.1/gio/tests/appinfo.c 2013-06-07 23:44:44.000000000 +0200
+++ glib-2.37.1/gio/tests/appinfo.c 2013-06-07 23:44:56.000000000 +0200
@@ -497,16 +497,10 @@ main (int argc, char *argv[])
g_test_add_func ("/appinfo/basic", test_basic);
g_test_add_func ("/appinfo/text", test_text);
@@ -11,12 +11,15 @@ database, the `update-desktop-database' program, which we don't provide.
g_test_add_func ("/appinfo/show-in", test_show_in);
g_test_add_func ("/appinfo/commandline", test_commandline);
- g_test_add_func ("/appinfo/launch-context", test_launch_context);
- g_test_add_func ("/appinfo/launch-context-signals", test_launch_context_signals);
g_test_add_func ("/appinfo/tryexec", test_tryexec);
- g_test_add_func ("/appinfo/associations", test_associations);
g_test_add_func ("/appinfo/environment", test_environment);
- g_test_add_func ("/appinfo/startup-wm-class", test_startup_wm_class);
- g_test_add_func ("/appinfo/supported-types", test_supported_types);
g_test_add_func ("/appinfo/from-keyfile", test_from_keyfile);
return g_test_run ();
--- glib-2.34.3/gio/tests/contenttype.c 2013-01-16 21:22:29.000000000 +0100
+++ glib-2.34.3/gio/tests/contenttype.c 2013-01-16 21:22:33.000000000 +0100
@@ -35,18 +38,16 @@ database, the `update-desktop-database' program, which we don't provide.
return g_test_run ();
}
--- glib-2.34.3/gio/tests/desktop-app-info.c 2013-01-16 21:30:00.000000000 +0100
+++ glib-2.34.3/gio/tests/desktop-app-info.c 2013-01-16 21:30:02.000000000 +0100
@@ -363,9 +363,5 @@ main (int argc,
--- glib-2.37.1/gio/tests/desktop-app-info.c 2013-06-07 23:46:28.000000000 +0200
+++ glib-2.37.1/gio/tests/desktop-app-info.c 2013-06-07 23:46:32.000000000 +0200
@@ -385,6 +385,7 @@ main (int argc,
g_setenv ("XDG_DATA_HOME", basedir, TRUE);
cleanup_subdirs (basedir);
- g_test_add_func ("/desktop-app-info/delete", test_delete);
- g_test_add_func ("/desktop-app-info/default", test_default);
- g_test_add_func ("/desktop-app-info/fallback", test_fallback);
- g_test_add_func ("/desktop-app-info/lastused", test_last_used);
result = g_test_run ();
+ return 0;
g_test_add_func ("/desktop-app-info/delete", test_delete);
g_test_add_func ("/desktop-app-info/default", test_default);
g_test_add_func ("/desktop-app-info/fallback", test_fallback);
-----------------------------
@@ -81,7 +82,7 @@ The test below depends on the availability /etc/passwd to dbus-daemon.
{
gint ret;
+ exit (0);
+ return 0;
setlocale (LC_ALL, "C");
g_type_init ();
+12 -12
View File
@@ -29,21 +29,21 @@ chroot build environment. Thus, disable them.
ret = g_test_run();
--- glib-2.34.3/gio/tests/gdbus-exit-on-close.c 2013-01-16 17:49:25.000000000 +0100
+++ glib-2.34.3/gio/tests/gdbus-exit-on-close.c 2013-01-16 17:49:30.000000000 +0100
@@ -206,13 +206,6 @@ main (int argc,
g_type_init ();
--- glib-2.37.1/gio/tests/gdbus-exit-on-close.c 2013-06-07 23:41:34.000000000 +0200
+++ glib-2.37.1/gio/tests/gdbus-exit-on-close.c 2013-06-07 23:41:40.000000000 +0200
@@ -211,6 +211,7 @@ main (int argc,
g_test_init (&argc, &argv, NULL);
- for (i = 0; cases[i].name != NULL; i++)
- {
- gchar *name = g_strdup_printf ("/gdbus/exit-on-close/%s", cases[i].name);
-
- g_test_add_data_func (name, &cases[i], test_exit_on_close);
- g_free (name);
- }
+ return g_test_run();
for (i = 0; cases[i].name != NULL; i++)
{
gchar *name;
@@ -224,5 +225,4 @@ main (int argc,
g_free (name);
}
return g_test_run();
- return g_test_run();
}
--- glib-2.34.3/gio/tests/gdbus-non-socket.c 2013-01-16 18:13:25.000000000 +0100
@@ -1,41 +0,0 @@
Since glibc 2.17 doesn't install timezone data by default (see
http://thread.gmane.org/gmane.comp.lib.glibc.alpha/17516), and since we
don't have that around, shamelessly skip this test.
--- glib-2.34.3/glib/tests/gdatetime.c 2013-01-16 15:47:57.000000000 +0100
+++ glib-2.34.3/glib/tests/gdatetime.c 2013-01-16 15:47:58.000000000 +0100
@@ -186,14 +186,6 @@ test_GDateTime_equal (void)
g_assert (g_date_time_equal (dt1, dt2));
g_date_time_unref (dt1);
- /* America/Recife is in UTC-0300 */
- tz = g_time_zone_new ("America/Recife");
- dt1 = g_date_time_new (tz, 2010, 5, 24, 8, 0, 0);
- g_time_zone_unref (tz);
- g_assert_cmpint (g_date_time_get_utc_offset (dt1) / G_USEC_PER_SEC, ==, (-3 * 3600));
- g_assert (g_date_time_equal (dt1, dt2));
- g_date_time_unref (dt1);
- g_date_time_unref (dt2);
}
static void
@@ -608,7 +608,6 @@ test_GDateTime_new_full (void)
g_assert_cmpint (8, ==, g_date_time_get_hour (dt));
g_assert_cmpint (4, ==, g_date_time_get_minute (dt));
g_assert_cmpint (0, ==, g_date_time_get_second (dt));
- g_assert_cmpstr ("BRT", ==, g_date_time_get_timezone_abbreviation (dt));
g_assert (!g_date_time_is_daylight_savings (dt));
g_date_time_unref (dt);
}
@@ -1354,11 +1354,8 @@ main (gint argc,
g_test_add_func ("/GDateTime/to_timeval", test_GDateTime_to_timeval);
g_test_add_func ("/GDateTime/to_utc", test_GDateTime_to_utc);
g_test_add_func ("/GDateTime/now_utc", test_GDateTime_now_utc);
- g_test_add_func ("/GDateTime/dst", test_GDateTime_dst);
g_test_add_func ("/GDateTime/test_z", test_z);
g_test_add_func ("/GDateTime/test-all-dates", test_all_dates);
- g_test_add_func ("/GTimeZone/find-interval", test_find_interval);
- g_test_add_func ("/GTimeZone/adjust-time", test_adjust_time);
g_test_add_func ("/GTimeZone/no-header", test_no_header);
return g_test_run ();
@@ -0,0 +1,36 @@
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
@@ -1,9 +0,0 @@
Use (ice-9 rdelim) for `read-line'.
--- lsh-2.0.4/src/scm/guile-compat.scm 2012-12-03 23:28:01.000000000 +0100
+++ lsh-2.0.4/src/scm/guile-compat.scm 2012-12-03 23:28:04.000000000 +0100
@@ -21,3 +21,4 @@
;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
(use-syntax (ice-9 syncase))
+(use-modules (ice-9 rdelim))
@@ -1,16 +0,0 @@
Correctly handle the `--no-root-login' option.
--- lsh-2.0.4/src/lshd.c 2006-05-01 13:47:44.000000000 +0200
+++ lsh-2.0.4/src/lshd.c 2009-09-08 12:20:36.000000000 +0200
@@ -758,6 +758,10 @@ main_argp_parser(int key, char *arg, str
self->allow_root = 1;
break;
+ case OPT_NO_ROOT_LOGIN:
+ self->allow_root = 0;
+ break;
+
case OPT_KERBEROS_PASSWD:
self->pw_helper = PATH_KERBEROS_HELPER;
break;
@@ -1,14 +0,0 @@
Tell `lsh-pam-checkpw', the PAM password helper program, to use a more
descriptive service name.
--- lsh-2.0.4/src/lsh-pam-checkpw.c 2003-02-16 22:30:10.000000000 +0100
+++ lsh-2.0.4/src/lsh-pam-checkpw.c 2008-11-28 16:16:58.000000000 +0100
@@ -38,7 +38,7 @@
#include <security/pam_appl.h>
#define PWD_MAXLEN 1024
-#define SERVICE_NAME "other"
+#define SERVICE_NAME "lshd"
#define TIMEOUT 600
static int
@@ -0,0 +1,23 @@
Use the `png_jmpbuf' accessor, as recommended since libpng 1.4.0:
http://www.libpng.org/pub/png/src/libpng-1.2.x-to-1.4.x-summary.txt .
--- plotutils-2.6/libplot/z_write.c 2013-07-12 17:19:12.000000000 +0200
+++ plotutils-2.6/libplot/z_write.c 2013-07-12 17:19:07.000000000 +0200
@@ -164,7 +164,7 @@ _pl_z_maybe_output_image (S___(Plotter *
}
/* cleanup after libpng errors (error handler does a longjmp) */
- if (setjmp (png_ptr->jmpbuf))
+ if (setjmp (png_jmpbuf (png_ptr)))
{
png_destroy_write_struct (&png_ptr, (png_info **)NULL);
return -1;
@@ -444,7 +444,7 @@ _our_error_fn_stdio (png_struct *png_ptr
#endif
}
- longjmp (png_ptr->jmpbuf, 1);
+ longjmp (png_jmpbuf (png_ptr), 1);
}
static void
+54 -2
View File
@@ -20,9 +20,14 @@
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu))
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
#:export (pkg-config))
(define-public pkg-config
;; This is the "primitive" pkg-config package. People should use `pkg-config'
;; (see below) rather than `%pkg-config', but we export `%pkg-config' so that
;; `fold-packages' finds it.
(define-public %pkg-config
(package
(name "pkg-config")
(version "0.27.1")
@@ -53,3 +58,50 @@ command line so an application can use gcc -o test test.c `pkg-config
on where to find glib (or other libraries). It is language-agnostic, so
it can be used for defining the location of documentation tools, for
instance.")))
(define (cross-pkg-config target)
"Return a pkg-config for TARGET, essentially just a wrapper called
`TARGET-pkg-config', as `configure' scripts like it."
;; See <http://www.flameeyes.eu/autotools-mythbuster/pkgconfig/cross-compiling.html>
;; for details.
(package (inherit %pkg-config)
(name (string-append (package-name %pkg-config) "-" target))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
#:builder (begin
(use-modules (guix build utils))
(let* ((out (assoc-ref %outputs "out"))
(bin (string-append out "/bin"))
(prog (string-append ,target "-pkg-config"))
(native
(string-append
(assoc-ref %build-inputs "pkg-config")
"/bin/pkg-config")))
(mkdir-p bin)
;; Create a `TARGET-pkg-config' -> `pkg-config' symlink.
;; This satisfies the pkg.m4 macros, which use
;; AC_PROG_TOOL to determine the `pkg-config' program
;; name.
(symlink native (string-append bin "/" prog))))))
(native-inputs `(("pkg-config" ,%pkg-config)))
;; Ignore native inputs, and set `PKG_CONFIG_PATH' for target inputs.
(native-search-paths '())
(search-paths (package-native-search-paths %pkg-config))))
(define (pkg-config-for-target target)
"Return a pkg-config package for TARGET, which may be either #f for a native
build, or a GNU triplet."
(if target
(cross-pkg-config target)
%pkg-config))
;; This hack allows us to automatically choose the native or the cross
;; `pkg-config' depending on whether it's being used in a cross-build
;; environment or not.
(define-syntax pkg-config
(identifier-syntax (pkg-config-for-target (%current-target-system))))
+62
View File
@@ -0,0 +1,62 @@
;;; 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 plotutils)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages xorg)
#:use-module (gnu packages libpng)
#:use-module (gnu packages))
(define-public plotutils
(package
(name "plotutils")
(version "2.6")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/plotutils/plotutils-"
version ".tar.gz"))
(sha256
(base32
"1arkyizn5wbgvbh53aziv3s6lmd3wm9lqzkhxb3hijlp1y124hjg"))))
(build-system gnu-build-system)
(arguments '(#:patches (list (assoc-ref %build-inputs "patch/jmpbuf"))))
(inputs `(("libpng" ,libpng)
("libx11" ,libx11)
("libxt" ,libxt)
("libxaw" ,libxaw)
("patch/jmpbuf"
,(search-patch "plotutils-libpng-jmpbuf.patch"))))
(home-page
"http://www.gnu.org/software/plotutils/")
(synopsis "Plotting utilities and library")
(description
"The GNU plotutils package contains software for both programmers and
technical users. Its centerpiece is libplot, a powerful C/C++ function
library for exporting 2-D vector graphics in many file formats, both vector
and raster. It can also do vector graphics animations.
libplot is device-independent in the sense that its API (application
programming interface) does not depend on the type of graphics file to be
exported.
Besides libplot, the package contains command-line programs for plotting
scientific data. Many of them use libplot to export graphics.")
(license gpl2+)))
+49 -2
View File
@@ -18,7 +18,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages python)
#:use-module ((guix licenses) #:select (psfl))
#:use-module ((guix licenses) #:select (bsd-3 psfl x11))
#:use-module (gnu packages)
#:use-module (gnu packages compression)
#:use-module (gnu packages gdbm)
@@ -27,7 +27,8 @@
#:use-module (gnu packages patchelf)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu))
#:use-module (guix build-system gnu)
#:use-module (guix build-system python))
(define-public python
(package
@@ -106,3 +107,49 @@ expression of procedural code; full modularity, supporting hierarchical
packages; exception-based error handling; and very high level dynamic
data types.")
(license psfl)))
(define-public pytz
(package
(name "pytz")
(version "2013b")
(source
(origin
(method url-fetch)
(uri (string-append "https://launchpad.net/pytz/main/" version
"/+download/pytz-" version ".tar.bz2"))
(sha256
(base32
"19giwgfcrg0nr1gdv49qnmf2jb2ilkcfc7qyqvfpz4dp0p64ksv5"))))
(build-system python-build-system)
(home-page "https://launchpad.net/pytz")
(synopsis "The Python timezone library.")
(description
"This library allows accurate and cross platform timezone calculations
using Python 2.4 or higher and provides access to the Olson timezone database.")
(license x11)))
(define-public babel
(package
(name "babel")
(version "0.9.6")
(source
(origin
(method url-fetch)
(uri (string-append "http://ftp.edgewall.com/pub/babel/Babel-"
version ".tar.gz"))
(sha256
(base32
"03vmr54jq5vf3qw6kpdv7cdk7x7i2jhzyf1mawv2gk8zrxg0hfja"))))
(build-system python-build-system)
(inputs
`(("pytz" ,pytz)))
(home-page "http://babel.edgewall.org/")
(synopsis
"Tools for internationalizing Python applications")
(description
"Babel is composed of two major parts:
- tools to build and work with gettext message catalogs
- a Python interface to the CLDR (Common Locale Data Repository), providing
access to various locale display names, localized number and date formatting,
etc. ")
(license bsd-3)))
+10 -20
View File
@@ -34,6 +34,7 @@
#:use-module (gnu packages attr)
#:use-module (gnu packages linux)
#:use-module (gnu packages samba)
#:use-module (gnu packages xorg)
#:use-module (gnu packages perl))
(define-public qemu-kvm
@@ -62,6 +63,7 @@
(setenv "LDFLAGS" "-lrt")
(zero?
(system* "./configure"
(string-append "--cc=" (which "gcc"))
(string-append "--prefix=" out)
(string-append "--smbd=" samba
"/sbin/smbd")))))
@@ -74,11 +76,12 @@
("ncurses" ,ncurses)
("libpng" ,libpng)
("libjpeg" ,libjpeg-8)
("pixman" ,pixman)
;; ("vde2" ,vde2)
("util-linux" ,util-linux)
;; ("pciutils" ,pciutils)
("pkg-config" ,pkg-config)
;; ("alsa-lib" ,alsa-lib)
("alsa-lib" ,alsa-lib)
;; ("SDL" ,SDL)
("zlib" ,zlib)
("attr" ,attr)
@@ -113,7 +116,7 @@ underway to get the required changes upstream.")
;; The real one, with a complete target list.
(package (inherit qemu-kvm)
(name "qemu")
(version "1.3.1")
(version "1.5.1")
(location (source-properties->location (current-source-location)))
(source (origin
(method url-fetch)
@@ -121,31 +124,18 @@ underway to get the required changes upstream.")
version ".tar.bz2"))
(sha256
(base32
"1bqfrb5dlsxm8gxhkksz8qzi5fhj3xqhxyfwbqcphhcv1kpyfwip"))))
"1s7316pgizpayr472la8p8a4vhv7ymmzd5qlbkmq6y9q5zpa25ac"))))
(arguments
(substitute-keyword-arguments (package-arguments qemu-kvm)
((#:phases phases)
`(alist-cons-before
'build 'pre-build
(lambda* (#:key inputs #:allow-other-keys)
(let ((libtool (assoc-ref inputs "libtool"))
(pkg-config (assoc-ref inputs "pkg-config")))
;; XXX: For lack of generic search path handling.
(setenv "ACLOCAL_PATH"
(format #f "~a/share/aclocal:~a/share/aclocal"
libtool pkg-config)))
;; For pixman's `configure' script.
(setenv "CONFIG_SHELL" (which "bash"))
(substitute* "pixman/configure.ac"
(("AM_CONFIG_HEADER") "AC_CONFIG_HEADERS")))
(substitute* "tests/libqtest.c"
(("/bin/sh") (which "sh"))))
,phases))))
(native-inputs `(("autoconf" ,autoconf-wrapper) ; for "pixman"
("automake" ,automake)
("libtool" ,libtool)
("libtool-bin" ,libtool "bin")
("perl" ,perl)))
(native-inputs `(("perl" ,perl)))
(home-page "http://www.qemu-project.org")
(description
"QEMU is a generic and open source machine emulator and virtualizer.
+56
View File
@@ -0,0 +1,56 @@
;;; 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 rush)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (guix licenses)
#:use-module (gnu packages))
(define-public rush
(package
(name "rush")
(version "1.7")
(source (origin
(method url-fetch)
(uri (string-append
"mirror://gnu/rush/rush-"
version
".tar.gz"))
(sha256
(base32
"0fh0gbbp0iiq3wbkf503xb40r8ljk42vyj9bnlflbz82d6ipy1rm"))))
(build-system gnu-build-system)
(arguments
'(#:patches (list (assoc-ref %build-inputs "patch/gets-undeclared"))))
(inputs `(("patch/gets-undeclared"
,(search-patch "cpio-gets-undeclared.patch"))))
(home-page "http://www.gnu.org/software/rush/")
(synopsis "Restricted user (login) shell")
(description
"GNU Rush is a Restricted User Shell, designed for sites providing
limited remote access to their resources, such as svn or git repositories,
scp, or the like. Using a sophisticated configuration file, Rush gives you
complete control over the command lines that users execute, as well as over
the usage of system resources, such as virtual memory, CPU time, etc.
In particular, it allows remote programs to be run in a chrooted environment,
which is important with such programs as sftp-server or scp, that lack this
ability.")
(license gpl3+)))
+85 -1
View File
@@ -31,6 +31,10 @@
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages avahi)
#:use-module (gnu packages libphidget)
#:use-module (gnu packages glib)
#:use-module (gnu packages libffi)
#:use-module (gnu packages libjpeg)
#:use-module ((gnu packages gtk) #:select (cairo pango))
#:use-module (ice-9 match))
(define-public mit-scheme
@@ -124,7 +128,7 @@ development cycle.")
"1771z43nmf9awjvlvrpjfhzcfxsbw2qipir8g9r47sygf2vn59yl"))))
(build-system gnu-build-system)
(arguments
'(#:patches (list (assoc-ref %build-inputs "patch/shebangs"))
`(#:patches (list (assoc-ref %build-inputs "patch/shebangs"))
#:test-target "test"
#:phases (alist-replace
'configure
@@ -134,6 +138,17 @@ development cycle.")
(("^shell=.*$")
(string-append "shell=" (which "bash") "\n")))
;; Since libgc's pthread redirects are used, we end up
;; using libgc symbols, so we must link against it.
;; Reported on 2013-06-25.
(substitute* "api/pthread/src/Makefile"
(("^EXTRALIBS[[:blank:]]*=(.*)$" _ value)
(string-append "EXTRALIBS = "
(string-trim-right value)
" -l$(GCLIB)_fth-$(RELEASE)"
" -Wl,-rpath=" (assoc-ref outputs "out")
"/lib/bigloo/" ,version)))
;; Those variables are used by libgc's `configure'.
(setenv "SHELL" (which "bash"))
(setenv "CONFIG_SHELL" (which "bash"))
@@ -319,3 +334,72 @@ implementation techniques and as an expository tool.")
;; Most files are BSD-3; see COPYING for the few exceptions.
(license bsd-3)))
(define-public racket
(package
(name "racket")
(version "5.3.4")
(source (origin
(method url-fetch)
(uri (list (string-append "http://download.racket-lang.org/installers/"
version "/racket/racket-" version
"-src-unix.tgz")
(string-append
"http://mirror.informatik.uni-tuebingen.de/mirror/racket/"
version "/racket/racket-" version "-src-unix.tgz")))
(sha256
;; XXX: Used to be 1xhnx3yd74zrvn6sfcqmk57kxj51cwvm660dwiaxr1qxnm5lq0v7.
(base32 "0yrdmpdvzf092869y6zjjjxl6j2kypgiv7qrfkv7lj8w01pbh7sd"))))
(build-system gnu-build-system)
(arguments
'(#: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)))))
(alist-cons-before
'configure 'pre-configure
(lambda* (#:key inputs #:allow-other-keys)
(chdir "src")
;; The GUI libs are dynamically opened through the FFI, so they
;; must be in the loader's search path.
(setenv "LD_LIBRARY_PATH" (string-join (gui-libs inputs) ":")))
(alist-cons-after
'unpack 'patch-/bin/sh
(lambda _
(substitute* "collects/racket/system.rkt"
(("/bin/sh") (which "sh"))))
(alist-cons-after
'install 'wrap-programs
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(define (wrap prog)
(wrap-program prog
`("LD_LIBRARY_PATH" ":" prefix
,(gui-libs inputs))))
(with-directory-excursion (string-append out "/bin")
(for-each wrap
(list "gracket" "drracket" "slideshow" "mred"))
#t)))
%standard-phases))))
#:tests? #f ; XXX: how to run them?
))
(inputs `(("libffi" ,libffi)
("glib" ,glib) ; for DrRacket
("cairo" ,cairo)
("pango" ,pango)
("libjpeg" ,libjpeg-8)))
(home-page "http://racket-lang.org")
(synopsis "Implementation of Scheme and related languages")
(description
"Racket is an implementation of the Scheme programming language (R5RS and
R6RS) and related languages, such as Typed Racket. It features a compiler and
a virtual machine with just-in-time native compilation, as well as a large set
of libraries.")
(license lgpl2.0+)))
-58
View File
@@ -1,58 +0,0 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages subversion)
#:use-module ((guix licenses) #:select (asl2.0))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages compression)
#:use-module (gnu packages libapr)
#:use-module (gnu packages perl)
#:use-module (gnu packages python)
#:use-module (gnu packages sqlite))
(define-public subversion
(package
(name "subversion")
(version "1.7.8")
(source (origin
(method url-fetch)
(uri (string-append "mirror://apache/subversion/subversion-"
version ".tar.bz2"))
(sha256
(base32
"11inl9n1riahfnbk1fax0dysm2swakzhzhpmm2zvga6fikcx90zw"))))
(build-system gnu-build-system)
(inputs
`(("libapr" ,libapr)
("libaprutil" ,libaprutil)
("perl" ,perl)
("python" ,python)
("sqlite" ,sqlite)
("zlib" ,zlib)))
(home-page "http://subversion.apache.org/")
(synopsis "Subversion, a revision control system")
(description
"Subversion exists to be universally recognized and adopted as an
open-source, centralized version control system characterized by its
reliability as a safe haven for valuable data; the simplicity of its model and
usage; and its ability to support the needs of a wide variety of users and
projects, from individuals to large-scale enterprise operations.")
(license asl2.0)))
+39
View File
@@ -20,6 +20,7 @@
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages xorg)
#:use-module (guix licenses))
(define-public tcl
@@ -115,3 +116,41 @@ stuff trivial. Expect is also useful for testing these same
applications. And by adding Tk, you can wrap interactive applications in
X11 GUIs.")
(license public-domain))) ; as written in `license.terms'
(define-public tk
(package
(name "tk")
(version "8.6.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/tcl/Tcl/"
version "/tk" version "-src.tar.gz"))
(sha256
(base32
"1rld0l7p1h31z488w44j170jpsm11xsjf2qrb7gid2b5dwmqnw2w"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-cons-before
'configure 'pre-configure
(lambda _
(chdir "unix"))
%standard-phases)
#:configure-flags (list (string-append "--with-tcl="
(assoc-ref %build-inputs "tcl")
"/lib"))
;; The tests require a running X server, so we just skip them.
#:tests? #f))
(inputs `(("tcl" ,tcl)))
;; tk.h refers to X11 headers, hence the propagation.
(propagated-inputs `(("libx11" ,libx11)
("libxext" ,libxext)))
(home-page "http://www.tcl.tk/")
(synopsis "Graphical user interface toolkit for Tcl")
(description
"Tk is a graphical toolkit for building graphical user interfaces
(GUIs) in the Tcl language.")
(license (package-license tcl))))
+2 -3
View File
@@ -38,9 +38,8 @@
"0864v5i488x3mb3v5p6nhy2kw0mqkzpa3b0453iibj81zlpq078q"))))
(build-system gnu-build-system)
(inputs `(("ncurses" ,ncurses)
("xz" ,xz)))
;; TODO: Remove Perl from here when 'patch-shebang' DTRT with /usr/bin/env.
(propagated-inputs `(("perl" ,perl))) ; yuck!
("xz" ,xz)
("perl" ,perl)))
(home-page "http://www.gnu.org/software/texinfo/")
(synopsis "The GNU documentation format")
(description
+33 -1
View File
@@ -31,10 +31,12 @@
#:use-module (gnu packages pdf)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages which)
#:use-module (gnu packages python)
#:use-module (gnu packages tcsh)
#:use-module (gnu packages xorg)
#:use-module (gnu packages zip))
#:use-module (gnu packages zip)
#:autoload (gnu packages texinfo) (texinfo))
(define texlive-extra-src
(origin
@@ -176,3 +178,33 @@ that are free software, including support for many languages around the
world.")
(license (license:fsf-free "http://tug.org/texlive/copying.html"))
(home-page "http://www.tug.org/texlive/")))
(define-public rubber
(package
(name "rubber")
(version "1.1")
(source (origin
(method url-fetch)
(uri (list (string-append "https://launchpad.net/rubber/trunk/"
version "/+download/rubber-"
version ".tar.gz")
(string-append "http://ebeffara.free.fr/pub/rubber-"
version ".tar.gz")))
(sha256
(base32
"1xbkv8ll889933gyi2a5hj7hhh216k04gn8fwz5lfv5iz8s34gbq"))))
(build-system gnu-build-system)
(arguments '(#:tests? #f)) ; no `check' target
(inputs `(("texinfo" ,texinfo)
("python" ,python)
("which" ,which)))
(home-page "https://launchpad.net/rubber")
(synopsis "Rubber, a wrapper for LaTeX and friends")
(description
"Rubber is a program whose purpose is to handle all tasks related to the
compilation of LaTeX documents. This includes compiling the document itself,
of course, enough times so that all references are defined, and running BibTeX
to manage bibliographic references. Automatic execution of dvips to produce
PostScript documents is also included, as well as usage of pdfLaTeX to produce
PDF documents.")
(license license:gpl2+)))
+67 -2
View File
@@ -17,13 +17,16 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages tor)
#:use-module ((guix licenses) #:select (bsd-3))
#:use-module ((guix licenses) #:select (bsd-3 gpl2+))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages libevent)
#:use-module (gnu packages compression)
#:use-module (gnu packages openssl))
#:use-module (gnu packages openssl)
#:use-module (gnu packages pcre)
#:use-module (gnu packages autotools)
#:use-module (gnu packages w3m))
(define-public tor
(package
@@ -41,6 +44,9 @@
`(("zlib" ,zlib)
("openssl" ,openssl)
("libevent" ,libevent)))
;; TODO: Recommend `torsocks' since `torify' needs it.
(home-page "http://www.torproject.org/")
(synopsis "An anonymous network router to improve privacy on the Internet")
(description
@@ -52,3 +58,62 @@ location. Tor works with many of your existing applications, including
web browsers, instant messaging clients, remote login, and other
applications based on the TCP protocol.")
(license bsd-3)))
(define-public torsocks
(package
(name "torsocks")
(version "1.2")
(source (origin
(method url-fetch)
(uri (string-append "http://torsocks.googlecode.com/files/torsocks-"
version ".tar.gz"))
(sha256
(base32
"1m0is5q24sf7jjlkl0icfkdc0m53nbkg0q72s57p48yp4hv7v9dy"))))
(build-system gnu-build-system)
(home-page "http://code.google.com/p/torsocks/")
(synopsis "Use socks-friendly applications with Tor")
(description
"Torsocks allows you to use most socks-friendly applications in a safe
way with Tor. It ensures that DNS requests are handled safely and explicitly
rejects UDP traffic from the application you're using.")
(license gpl2+)))
(define-public privoxy
(package
(name "privoxy")
(version "3.0.21")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/ijbswa/Sources/"
version "%20%28stable%29/privoxy-"
version "-stable-src.tar.gz"))
(sha256
(base32
"1f6xb7aa47p90c26vqaw74y6drs9gpnhxsgby3mx0awdjh0ydisy"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-cons-before
'configure 'autoconf
(lambda _
;; Unfortunately, this is not a tarball produced by
;; "make dist".
(zero? (system* "autoreconf" "-vfi")))
%standard-phases)
#:tests? #f))
(inputs
`(("w3m" ,w3m)
("pcre" ,pcre)
("zlib" ,zlib)
("autoconf" ,autoconf)
("automake" ,automake)))
(home-page "http://www.privoxy.org")
(synopsis "Web proxy with advanced filtering capabilities for enhancing privacy")
(description
"Privoxy is a non-caching web proxy with advanced filtering capabilities
for enhancing privacy, modifying web page data and HTTP headers, controlling
access, and removing ads and other obnoxious Internet junk. Privoxy has a
flexible configuration and can be customized to suit individual needs and
tastes. It has application for both stand-alone systems and multi-user
networks.")
(license gpl2+)))
+57
View File
@@ -0,0 +1,57 @@
;;; 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 unrtf)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu))
(define-public unrtf
(package
(name "unrtf")
(version "0.19.7")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/unrtf/" version
"/unrtf-" version ".tar.gz"))
(sha256
(base32
"1c15miv4ni395wix6qxiqgjfspd6ssdk1ly6mm8srh0jgpidgjzf"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-replace
'configure
(lambda* (#:key outputs #:allow-other-keys)
;; No `configure' script; do it by hand.
(let ((out (assoc-ref outputs "out")))
(substitute* "Makefile"
(("/usr/local") out))))
%standard-phases)
;; There are test files, but apparently no automated test suite.
#:tests? #f))
(home-page "http://www.gnu.org/software/unrtf")
(synopsis "Convert Rich Text Format documents to other formats")
(description
"UnRTF is a command-line program written in C which converts documents in
Rich Text Format (.rtf) to HTML, LaTeX, troff macros, and RTF
itself. Converting to HTML, it supports a number of features of Rich Text
Format, such as changes to the text's font, underlines, text shadowing and
outlining, and more.")
(license gpl2+)))
+90 -2
View File
@@ -1,5 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -17,14 +19,22 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages version-control)
#:use-module ((guix licenses) #:select (gpl2+ gpl3+))
#:use-module ((guix licenses) #:select (asl2.0 gpl1+ gpl2+ gpl3+))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system python)
#:use-module (guix build utils)
#:use-module ((gnu packages gettext)
#:renamer (symbol-prefix-proc 'guix:)))
#:renamer (symbol-prefix-proc 'guix:))
#:use-module (gnu packages libapr)
#:use-module (gnu packages nano)
#:use-module (gnu packages perl)
#:use-module (gnu packages python)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages system)
#:use-module (gnu packages emacs)
#:use-module (gnu packages compression))
(define-public bazaar
(package
@@ -54,6 +64,35 @@ 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 subversion
(package
(name "subversion")
(version "1.7.8")
(source (origin
(method url-fetch)
(uri (string-append "http://archive.apache.org/dist/subversion/subversion-"
version ".tar.bz2"))
(sha256
(base32
"11inl9n1riahfnbk1fax0dysm2swakzhzhpmm2zvga6fikcx90zw"))))
(build-system gnu-build-system)
(inputs
`(("libapr" ,libapr)
("libaprutil" ,libaprutil)
("perl" ,perl)
("python" ,python)
("sqlite" ,sqlite)
("zlib" ,zlib)))
(home-page "http://subversion.apache.org/")
(synopsis "Subversion, a revision control system")
(description
"Subversion exists to be universally recognized and adopted as an
open-source, centralized version control system characterized by its
reliability as a safe haven for valuable data; the simplicity of its model and
usage; and its ability to support the needs of a wide variety of users and
projects, from individuals to large-scale enterprise operations.")
(license asl2.0)))
(define-public rcs
(package
(name "rcs")
@@ -75,3 +114,52 @@ merging of revisions. RCS is useful for text that is revised frequently,
including source code, programs, documentation, graphics, papers, and form
letters.")
(license gpl3+)))
(define-public cvs
(package
(name "cvs")
(version "1.12.13")
(source (origin
(method url-fetch)
(uri (string-append
"http://ftp.gnu.org/non-gnu/cvs/source/feature/"
version "/cvs-" version ".tar.bz2"))
(sha256
(base32
"0pjir8cwn0087mxszzbsi1gyfc6373vif96cw4q3m1x6p49kd1bq"))))
(build-system gnu-build-system)
(arguments
;; XXX: The test suite looks flawed, and the package is obsolete anyway.
'(#:tests? #f))
(inputs `(("zlib" ,zlib)
("nano" ,nano))) ; the default editor
(home-page "http://cvs.nongnu.org")
(synopsis "Historical centralized version control system")
(description
"CVS is a version control system, an important component of Source
Configuration Management (SCM). Using it, you can record the history of
sources files, and documents. It fills a similar role to the free software
RCS, PRCS, and Aegis packages.")
(license gpl1+)))
(define-public vc-dwim
(package
(name "vc-dwim")
(version "1.7")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/vc-dwim/vc-dwim-"
version ".tar.xz"))
(sha256
(base32
"094pjwshvazlgagc254in2xvrp93vhcj0kb5ms17qs7sch99x9z2"))))
(build-system gnu-build-system)
(inputs `(("perl" ,perl)
("inetutils" ,inetutils) ; for `hostname', used in the tests
("emacs" ,emacs))) ; for `ctags'
(home-page "http://www.gnu.org/software/vc-dwim/")
(synopsis "Version-control-agnostic ChangeLog diff and commit tool")
(description
"vc-dwim is a version-control-agnostic ChangeLog diff and commit
tool. vc-chlog is a helper tool for writing GNU-style ChangeLog entries.")
(license gpl3+)))
+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 wordnet)
#:use-module (guix packages)
#:use-module (guix build-system gnu)
#:use-module (guix licenses)
#:use-module (guix download)
#:use-module (gnu packages tcl))
(define-public wordnet
(package
(name "wordnet")
(version "3.0")
(source (origin
(method url-fetch)
(uri (string-append "http://wordnetcode.princeton.edu/"
version "/WordNet-"
version ".tar.bz2"))
(sha256
(base32
"08pgjvd2vvmqk3h641x63nxp7wqimb9r30889mkyfh2agc62sjbc"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags (list (string-append "--with-tcl="
(assoc-ref %build-inputs "tcl")
"/lib")
(string-append "--with-tk="
(assoc-ref %build-inputs "tk")
"/lib")
;; Provide the `result' field in `Tcl_Interp'.
;; See <https://bugs.gentoo.org/show_bug.cgi?id=452034>.
"CFLAGS=-DUSE_INTERP_RESULT")
#:phases (alist-cons-after
'install 'post-install
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(bin (assoc-ref outputs "tk"))
(tk (assoc-ref inputs "tk"))
(tkv ,(let ((v (package-version tk)))
(string-take v (string-index-right v #\.)))))
;; Move `wishwn' and `wnb' to BIN.
(for-each (lambda (prog)
(let ((orig (string-append out "/bin/" prog))
(dst (string-append bin "/bin/" prog))
(dir (string-append tk "/lib/tk" tkv)))
(mkdir-p (dirname dst))
(copy-file orig dst)
(delete-file orig)
(wrap-program dst
`("TK_LIBRARY" "" = (,dir))
`("PATH" ":" prefix
(,(string-append out
"/bin"))))))
'("wishwn" "wnb"))
#t))
%standard-phases)))
(outputs '("out"
"tk")) ; for the Tcl/Tk GUI
(inputs `(("tk" ,tk)
("tcl" ,tcl)))
(home-page "http://wordnet.princeton.edu/")
(synopsis
"WordNet, a lexical database for the English language")
(description
"WordNet® is a large lexical database of English. Nouns, verbs,
adjectives and adverbs are grouped into sets of cognitive synonyms
(synsets), each expressing a distinct concept. Synsets are interlinked by
means of conceptual-semantic and lexical relations. The resulting network of
meaningfully related words and concepts can be navigated with the browser.
WordNet is also freely and publicly available for download. WordNet's
structure makes it a useful tool for computational linguistics and natural
language processing.")
(license x11)))
+52
View File
@@ -0,0 +1,52 @@
;;; 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 xlockmore)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (guix licenses)
#:use-module (gnu packages xorg)
#:use-module (gnu packages linux))
(define-public xlockmore
(package
(name "xlockmore")
(version "5.42")
(source (origin
(method url-fetch)
(uri (string-append "http://www.tux.org/~bagleyd/xlock/xlockmore-"
version "/xlockmore-" version ".tar.bz2"))
(sha256
(base32
"17xicps92ah9377zk65k9l1bmvzzj3bpxzzwxx21g9696l71gr0z"))))
(build-system gnu-build-system)
(arguments '(#:tests? #f)) ; no such thing as a test suite
(inputs
`(("libX11" ,libx11)
("libXext" ,libxext)
("libXt" ,libxt)
("linux-pam" ,linux-pam)))
(home-page "http://www.tux.org/~bagleyd/xlockmore.html")
(synopsis "Screen locker for the X Window System")
(description
"XLockMore is a classic screen locker and screen saver for the
X Window System.")
(license (bsd-style #f "See xlock.c.")
;; + GPLv2 in modes/glx/biof.c.
)))
+276 -66
View File
@@ -41,42 +41,64 @@
;;
;; Code:
(define* (package-with-explicit-inputs p boot-inputs
(define* (package-with-explicit-inputs p inputs
#:optional
(loc (current-source-location))
#:key guile)
"Rewrite P, which is assumed to use GNU-BUILD-SYSTEM, to take
BOOT-INPUTS as explicit inputs instead of the implicit default, and
return it. Use GUILE to run the builder, or the distro's final Guile
when GUILE is #f."
(define rewritten-input
(match-lambda
((name (? package? p) sub-drv ...)
(cons* name
(package-with-explicit-inputs p boot-inputs #:guile guile)
sub-drv))
(x x)))
#:key (native-inputs '())
guile)
"Rewrite P, which is assumed to use GNU-BUILD-SYSTEM, to take INPUTS and
NATIVE-INPUTS as explicit inputs instead of the implicit default, and return
it. INPUTS and NATIVE-INPUTS can be either input lists or thunks; in the
latter case, they will be called in a context where the `%current-system' and
`%current-target-system' are suitably parametrized. Use GUILE to run the
builder, or the distro's final Guile when GUILE is #f."
(define inputs* inputs)
(define native-inputs* native-inputs)
(define boot-input-names
(map car boot-inputs))
(define (call inputs)
(if (procedure? inputs)
(inputs)
inputs))
(define (filtered-inputs inputs)
(fold alist-delete inputs boot-input-names))
(define (duplicate-filter inputs)
(let ((names (match (call inputs)
(((name _ ...) ...)
name))))
(lambda (inputs)
(fold alist-delete inputs names))))
(package (inherit p)
(location (if (pair? loc) (source-properties->location loc) loc))
(arguments
(let ((args (package-arguments p)))
`(#:guile ,guile
#:implicit-inputs? #f ,@args)))
(native-inputs (map rewritten-input
(filtered-inputs (package-native-inputs p))))
(propagated-inputs (map rewritten-input
(filtered-inputs
(package-propagated-inputs p))))
(inputs `(,@boot-inputs
,@(map rewritten-input
(filtered-inputs (package-inputs p)))))))
(let loop ((p p))
(define rewritten-input
(memoize
(match-lambda
((name (? package? p) sub-drv ...)
;; XXX: Check whether P's build system knows #:implicit-inputs, for
;; things like `cross-pkg-config'.
(if (eq? (package-build-system p) gnu-build-system)
(cons* name (loop p) sub-drv)
(cons* name p sub-drv)))
(x x))))
(package (inherit p)
(location (if (pair? loc) (source-properties->location loc) loc))
(arguments
(let ((args (package-arguments p)))
`(#:guile ,guile
#:implicit-inputs? #f
,@args)))
(native-inputs
(let ((filtered (duplicate-filter native-inputs*)))
`(,@(call native-inputs*)
,@(map rewritten-input
(filtered (package-native-inputs p))))))
(propagated-inputs
(map rewritten-input
(package-propagated-inputs p)))
(inputs
(let ((filtered (duplicate-filter inputs*)))
`(,@(call inputs*)
,@(map rewritten-input
(filtered (package-inputs p)))))))))
(define (package-with-extra-configure-variable p variable value)
"Return a version of P with VARIABLE=VALUE specified as an extra `configure'
@@ -116,20 +138,19 @@ flags for VARIABLE, the associated value is augmented."
#:key (strip-all? #t))
"Return a statically-linked version of package P. If STRIP-ALL? is true,
use `--strip-all' as the arguments to `strip'."
(let ((args (package-arguments p)))
(package (inherit p)
(location (source-properties->location loc))
(arguments
(let ((a (default-keyword-arguments args
'(#:configure-flags '()
#:strip-flags '("--strip-debug")))))
(substitute-keyword-arguments a
((#:configure-flags flags)
`(cons* "--disable-shared" "LDFLAGS=-static" ,flags))
((#:strip-flags flags)
(if strip-all?
''("--strip-all")
flags))))))))
(package (inherit p)
(location (source-properties->location loc))
(arguments
(let ((a (default-keyword-arguments (package-arguments p)
'(#:configure-flags '()
#:strip-flags '("--strip-debug")))))
(substitute-keyword-arguments a
((#:configure-flags flags)
`(cons* "--disable-shared" "LDFLAGS=-static" ,flags))
((#:strip-flags flags)
(if strip-all?
''("--strip-all")
flags)))))))
(define %store
@@ -144,35 +165,48 @@ standard packages used as implicit inputs of the GNU build system."
(let ((distro (resolve-module '(gnu packages base))))
(module-ref distro '%final-inputs)))
(define (standard-search-paths)
"Return the list of <search-path-specification> for the standard (implicit)
inputs."
(define* (inputs-search-paths inputs
#:optional (package->search-paths
package-native-search-paths))
"Return the <search-path-specification> objects for INPUTS, using
PACKAGE->SEARCH-PATHS to extract the search path specifications of a package."
(append-map (match-lambda
((_ (? package? p) _ ...)
(package-native-search-paths p))
(package->search-paths p))
(_
'()))
(standard-packages)))
inputs))
(define (standard-search-paths)
"Return the list of <search-path-specification> for the standard (implicit)
inputs when doing a native build."
(inputs-search-paths (standard-packages)))
(define (expand-inputs inputs system)
"Expand INPUTS, which contains <package> objects, so that it contains only
derivations for SYSTEM. Include propagated inputs in the result."
(define input-package->derivation
(match-lambda
((name pkg sub-drv ...)
(cons* name (package-derivation (%store) pkg system) sub-drv))
((name (? derivation-path? path) sub-drv ...)
(cons* name path sub-drv))
(z
(error "invalid standard input" z))))
(map input-package->derivation
(append inputs
(append-map (match-lambda
((name package _ ...)
(package-transitive-propagated-inputs package)))
inputs))))
(define standard-inputs
(memoize
(lambda (system)
"Return the list of implicit standard inputs used with the GNU Build
System: GCC, GNU Make, Bash, Coreutils, etc."
(map (match-lambda
((name pkg sub-drv ...)
(cons* name (package-derivation (%store) pkg system) sub-drv))
((name (? derivation-path? path) sub-drv ...)
(cons* name path sub-drv))
(z
(error "invalid standard input" z)))
(let ((inputs (standard-packages)))
(append inputs
(append-map (match-lambda
((name package _ ...)
(package-transitive-propagated-inputs package)))
inputs)))))))
(expand-inputs (standard-packages) system))))
(define* (gnu-build store name source inputs
#:key (guile #f)
@@ -265,7 +299,182 @@ which could lead to gratuitous input divergence."
,@(if implicit-inputs?
implicit-inputs
'()))
#:outputs outputs
#:outputs (if strip-binaries?
outputs
(delete "debug" outputs))
#:modules imported-modules
#:guile-for-build guile-for-build))
;;;
;;; Cross-compilation.
;;;
(define standard-cross-packages
(memoize
(lambda (target kind)
"Return the list of name/package tuples to cross-build for TARGET. KIND
is one of `host' or `target'."
(let* ((cross (resolve-interface '(gnu packages cross-base)))
(gcc (module-ref cross 'cross-gcc))
(binutils (module-ref cross 'cross-binutils))
(libc (module-ref cross 'cross-libc)))
(case kind
((host)
`(("cross-gcc" ,(gcc target
(binutils target)
(libc target)))
("cross-binutils" ,(binutils target))
,@(standard-packages)))
((target)
`(("cross-libc" ,(libc target)))))))))
(define standard-cross-inputs
(memoize
(lambda (system target kind)
"Return the list of implicit standard inputs used with the GNU Build
System when cross-compiling for TARGET: GCC, GNU Make, Bash, Coreutils, etc."
(expand-inputs (standard-cross-packages target kind) system))))
(define (standard-cross-search-paths target kind)
"Return the list of <search-path-specification> for the standard (implicit)
inputs."
(inputs-search-paths (append (standard-cross-packages target 'target)
(standard-cross-packages target 'host))
(case kind
((host) package-native-search-paths)
((target) package-search-paths))))
(define* (gnu-cross-build store name target source inputs native-inputs
#:key
(guile #f)
(outputs '("out"))
(search-paths '())
(native-search-paths '())
(configure-flags ''())
(make-flags ''())
(patches ''()) (patch-flags ''("--batch" "-p1"))
(out-of-source? #f)
(tests? #f) ; nothing can be done
(test-target "check")
(parallel-build? #t) (parallel-tests? #t)
(patch-shebangs? #t)
(strip-binaries? #t)
(strip-flags ''("--strip-debug"))
(strip-directories ''("lib" "lib64" "libexec"
"bin" "sbin"))
(phases '%standard-phases)
(system (%current-system))
(implicit-inputs? #t)
(imported-modules '((guix build gnu-build-system)
(guix build utils)))
(modules '((guix build gnu-build-system)
(guix build utils))))
"Cross-build NAME for TARGET, where TARGET is a GNU triplet. INPUTS are
cross-built inputs, and NATIVE-INPUTS are inputs that run on the build
platform."
(define implicit-host-inputs
(and implicit-inputs?
(parameterize ((%store store))
(standard-cross-inputs system target 'host))))
(define implicit-target-inputs
(and implicit-inputs?
(parameterize ((%store store))
(standard-cross-inputs system target 'target))))
(define implicit-host-search-paths
(if implicit-inputs?
(standard-cross-search-paths target 'host)
'()))
(define implicit-target-search-paths
(if implicit-inputs?
(standard-cross-search-paths target 'target)
'()))
(define builder
`(begin
(use-modules ,@modules)
(let ()
(define %build-host-inputs
',(map (match-lambda
((name (? derivation-path? drv-path) sub ...)
`(,name . ,(apply derivation-path->output-path
drv-path sub)))
((name path)
`(,name . ,path)))
(append (or implicit-host-inputs '()) native-inputs)))
(define %build-target-inputs
',(map (match-lambda
((name (? derivation-path? drv-path) sub ...)
`(,name . ,(apply derivation-path->output-path
drv-path sub)))
((name path)
`(,name . ,path)))
(append (or implicit-target-inputs '()) inputs)))
(gnu-build #:source ,(if (and source (derivation-path? source))
(derivation-path->output-path source)
source)
#:system ,system
#:target ,target
#:outputs %outputs
#:inputs %build-target-inputs
#:native-inputs %build-host-inputs
#:search-paths ',(map search-path-specification->sexp
(append implicit-target-search-paths
search-paths))
#:native-search-paths ',(map
search-path-specification->sexp
(append implicit-host-search-paths
native-search-paths))
#:patches ,patches
#:patch-flags ,patch-flags
#:phases ,phases
#:configure-flags ,configure-flags
#:make-flags ,make-flags
#:out-of-source? ,out-of-source?
#:tests? ,tests?
#:test-target ,test-target
#:parallel-build? ,parallel-build?
#:parallel-tests? ,parallel-tests?
#:patch-shebangs? ,patch-shebangs?
#:strip-binaries? ,strip-binaries?
#:strip-flags ,strip-flags
#:strip-directories ,strip-directories))))
(define guile-for-build
(match guile
((? package?)
(package-derivation store guile system))
((and (? string?) (? derivation-path?))
guile)
(#f ; the default
(let* ((distro (resolve-interface '(gnu packages base)))
(guile (module-ref distro 'guile-final)))
(package-derivation store guile system)))))
(build-expression->derivation store name system
builder
`(,@(if source
`(("source" ,source))
'())
,@inputs
,@(if implicit-inputs?
implicit-target-inputs
'())
,@native-inputs
,@(if implicit-inputs?
implicit-host-inputs
'()))
#:outputs (if strip-binaries?
outputs
(delete "debug" outputs))
#:modules imported-modules
#:guile-for-build guile-for-build))
@@ -273,4 +482,5 @@ which could lead to gratuitous input divergence."
(build-system (name 'gnu)
(description
"The GNU Build System—i.e., ./configure && make && make install")
(build gnu-build))) ; TODO: add `gnu-cross-build'
(build gnu-build)
(cross-build gnu-cross-build)))
+8 -3
View File
@@ -35,12 +35,17 @@
;;
;; Code:
(define (default-python)
"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)))
(define* (python-build store name source inputs
#:key
(python (@ (gnu packages python) python))
(python (default-python))
(python-version
(string-take (package-version
(@ (gnu packages python) python)) 3))
(string-take (package-version (default-python)) 3))
(tests? #t)
(configure-flags ''())
(phases '(@ (guix build python-build-system)
+26 -13
View File
@@ -25,31 +25,44 @@
#:use-module (ice-9 match)
#:export (trivial-build-system))
(define (guile-for-build store guile system)
(match guile
((? package?)
(package-derivation store guile system))
((and (? string?) (? derivation-path?))
guile)
(#f ; the default
(let* ((distro (resolve-interface '(gnu packages base)))
(guile (module-ref distro 'guile-final)))
(package-derivation store guile system)))))
(define* (trivial-build store name source inputs
#:key
outputs guile system builder (modules '())
search-paths)
"Run build expression BUILDER, an expression, for SYSTEM. SOURCE is
ignored."
(define guile-for-build
(match guile
((? package?)
(package-derivation store guile system))
((and (? string?) (? derivation-path?))
guile)
(#f ; the default
(let* ((distro (resolve-interface '(gnu packages base)))
(guile (module-ref distro 'guile-final)))
(package-derivation store guile system)))))
(build-expression->derivation store name system builder inputs
#:outputs outputs
#:modules modules
#:guile-for-build guile-for-build))
#:guile-for-build
(guile-for-build store guile system)))
(define* (trivial-cross-build store name target source inputs native-inputs
#:key
outputs guile system builder (modules '())
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)
#:outputs outputs
#:modules modules
#:guile-for-build
(guile-for-build store guile system)))
(define trivial-build-system
(build-system (name 'trivial)
(description
"Trivial build system, to run arbitrary Scheme build expressions")
(build trivial-build)
(cross-build trivial-build)))
(cross-build trivial-cross-build)))
+8 -3
View File
@@ -28,7 +28,9 @@
#:use-module (srfi srfi-26)
#:use-module (ice-9 match)
#:use-module (ice-9 format)
#:export (url-fetch))
#:export (url-fetch
progress-proc
uri-abbreviation))
;;; Commentary:
;;;
@@ -63,8 +65,11 @@ abbreviation of URI showing the scheme, host, and basename of the file."
(define (elide-path)
(let ((path (uri-path uri)))
(string-append (symbol->string (uri-scheme uri))
"://" (uri-host uri)
(string-append (symbol->string (uri-scheme uri)) "://"
;; `file' URIs have no host part.
(or (uri-host uri) "")
(string-append "/.../" (basename path)))))
(if (> (string-length uri-as-string) max-length)
+99 -19
View File
@@ -48,15 +48,28 @@
#f
dir))
(define* (set-paths #:key inputs (search-paths '())
(define* (set-paths #:key target inputs native-inputs
(search-paths '()) (native-search-paths '())
#:allow-other-keys)
(define input-directories
(match inputs
(((_ . dir) ...)
dir)))
(define native-input-directories
(match native-inputs
(((_ . dir) ...)
dir)
(#f ; not cross compiling
'())))
;; When cross building, $PATH must refer only to native (host) inputs since
;; target inputs are not executable.
(set-path-environment-variable "PATH" '("bin" "sbin")
input-directories)
(append native-input-directories
(if target
'()
input-directories)))
(for-each (match-lambda
((env-var (directories ...) separator)
@@ -65,8 +78,16 @@
#:separator separator)))
search-paths)
;; Dump the environment variables as a shell script, for handy debugging.
(system "export > environment-variables"))
(when native-search-paths
;; Search paths for native inputs, when cross building.
(for-each (match-lambda
((env-var (directories ...) separator)
(set-path-environment-variable env-var directories
native-input-directories
#:separator separator)))
native-search-paths))
#t)
(define* (unpack #:key source #:allow-other-keys)
(and (zero? (system* "tar" "xvf" source))
@@ -102,7 +123,8 @@ makefiles."
(append patch-flags (list "--input" p)))))
patches))
(define* (configure #:key inputs outputs (configure-flags '()) out-of-source?
(define* (configure #:key target native-inputs inputs outputs
(configure-flags '()) out-of-source?
#:allow-other-keys)
(define (package-name)
(let* ((out (assoc-ref outputs "out"))
@@ -119,7 +141,7 @@ makefiles."
(libdir (assoc-ref outputs "lib"))
(includedir (assoc-ref outputs "include"))
(docdir (assoc-ref outputs "doc"))
(bash (or (and=> (assoc-ref inputs "bash")
(bash (or (and=> (assoc-ref (or native-inputs inputs) "bash")
(cut string-append <> "/bin/bash"))
"/bin/sh"))
(flags `(,(string-append "CONFIG_SHELL=" bash)
@@ -148,6 +170,9 @@ makefiles."
(list (string-append "--docdir=" docdir
"/doc/" (package-name)))
'())
,@(if target ; cross building
(list (string-append "--host=" target))
'())
,@configure-flags))
(abs-srcdir (getcwd))
(srcdir (if out-of-source?
@@ -189,8 +214,8 @@ makefiles."
'())
,@make-flags))))
(define* (check #:key (make-flags '()) (tests? #t) (test-target "check")
(parallel-tests? #t)
(define* (check #:key target (make-flags '()) (tests? (not target))
(test-target "check") (parallel-tests? #t)
#:allow-other-keys)
(if tests?
(zero? (apply system* "make" test-target
@@ -230,18 +255,70 @@ makefiles."
bindirs)))
#t)
(define* (strip #:key outputs (strip-binaries? #t)
(define* (strip #:key target outputs (strip-binaries? #t)
(strip-command (if target
(string-append target "-strip")
"strip"))
(objcopy-command (if target
(string-append target "-objcopy")
"objcopy"))
(strip-flags '("--strip-debug"))
(strip-directories '("lib" "lib64" "libexec"
"bin" "sbin"))
#:allow-other-keys)
(define debug-output
;; If an output is called "debug", then that's where debugging information
;; will be stored instead of being discarded.
(assoc-ref outputs "debug"))
(define debug-file-extension
;; File name extension for debugging information.
".debug")
(define (debug-file file)
;; Return the name of the debug file for FILE, an absolute file name.
;; Once installed in the user's profile, it is in $PROFILE/lib/debug/FILE,
;; which is where GDB looks for it (info "(gdb) Separate Debug Files").
(string-append debug-output "/lib/debug/"
file debug-file-extension))
(define (make-debug-file file)
;; Create a file in DEBUG-OUTPUT containing the debugging info of FILE.
(let ((debug (debug-file file)))
(mkdir-p (dirname debug))
(copy-file file debug)
(and (zero? (system* strip-command "--only-keep-debug" debug))
(begin
(chmod debug #o400)
#t))))
(define (add-debug-link file)
;; Add a debug link in FILE (info "(binutils) strip").
;; `objcopy --add-gnu-debuglink' wants to have the target of the debug
;; link around so it can compute a CRC of that file (see the
;; `bfd_fill_in_gnu_debuglink_section' function.) No reference to
;; DEBUG-OUTPUT is kept because bfd keeps only the basename of the debug
;; file.
(zero? (system* objcopy-command
(string-append "--add-gnu-debuglink="
(debug-file file))
file)))
(define (strip-dir dir)
(format #t "stripping binaries in ~s with flags ~s~%"
dir strip-flags)
(format #t "stripping binaries in ~s with ~s and flags ~s~%"
dir strip-command strip-flags)
(when debug-output
(format #t "debugging output written to ~s using ~s~%"
debug-output objcopy-command))
(file-system-fold (const #t)
(lambda (path stat result) ; leaf
(zero? (apply system* "strip"
(append strip-flags (list path)))))
(and (or (not debug-output)
(make-debug-file path))
(zero? (apply system* strip-command
(append strip-flags (list path))))
(or (not debug-output)
(add-debug-link path))))
(const #t) ; down
(const #t) ; up
(const #t) ; skip
@@ -287,10 +364,13 @@ in order. Return #t if all the PHASES succeeded, #f otherwise."
(every (match-lambda
((name . proc)
(let ((start (gettimeofday)))
(format #t "starting phase `~a'~%" name)
(let ((result (apply proc args))
(end (gettimeofday)))
(format #t "phase `~a' ~:[failed~;succeeded~] after ~a seconds~%"
name result (- (car end) (car start)))
result))))
(format #t "starting phase `~a'~%" name)
(let ((result (apply proc args))
(end (gettimeofday)))
(format #t "phase `~a' ~:[failed~;succeeded~] after ~a seconds~%"
name result (- (car end) (car start)))
;; Dump the environment variables as a shell script, for handy debugging.
(system "export > $NIX_BUILD_TOP/environment-variables")
result))))
phases))
+13 -3
View File
@@ -45,6 +45,14 @@
(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."
(if (file-exists? "setup.py")
(let ((args `("setup.py" "check")))
(format #t "running 'python' with arguments ~s~%" args)
(zero? (apply system* "python" args)))
(error "no setup.py found")))
(define* (wrap #:key outputs python-version #:allow-other-keys)
(define (list-of-files dir)
(map (cut string-append dir "/" <>)
@@ -78,10 +86,12 @@
(alist-cons-after
'install 'wrap
wrap
(alist-replace 'install install
(alist-delete 'configure
(alist-replace
'check check
(alist-replace 'install install
(alist-delete 'configure
(alist-delete 'build
gnu:%standard-phases)))))
gnu:%standard-phases))))))
(define* (python-build #:key inputs (phases %standard-phases)
#:allow-other-keys #:rest args)
+13 -3
View File
@@ -27,6 +27,8 @@
#:use-module (ice-9 rdelim)
#:use-module (rnrs bytevectors)
#:use-module (rnrs io ports)
#:re-export (alist-cons
alist-delete)
#:export (directory-exists?
executable-file?
call-with-ascii-input-file
@@ -248,9 +250,17 @@ SEPARATOR-separated path accordingly. Example:
"
(let* ((path (search-path-as-list sub-directories input-dirs))
(value (list->search-path-as-string path separator)))
(setenv env-var value)
(format #t "environment variable `~a' set to `~a'~%"
env-var value)))
(if (string-null? value)
(begin
;; Never set ENV-VAR to an empty string because often, the empty
;; string is equivalent to ".". This is the case for
;; GUILE_LOAD_PATH in Guile 2.0, for instance.
(unsetenv env-var)
(format #t "environment variable `~a' unset~%" env-var))
(begin
(setenv env-var value)
(format #t "environment variable `~a' set to `~a'~%"
env-var value)))))
(define (which program)
"Return the complete file name for PROGRAM as found in $PATH, or #f if
+8 -2
View File
@@ -26,6 +26,7 @@
#:use-module (ice-9 rdelim)
#:use-module (guix store)
#:use-module (guix utils)
#:use-module (guix hash)
#:use-module (guix base32)
#:export (<derivation>
derivation?
@@ -468,9 +469,14 @@ in SIZE bytes."
inputs))
(drv (make-derivation outputs inputs sources
system builder args env-vars)))
;; XXX: At this point this remains faster than `port-sha256', because
;; the SHA256 port's `write' method gets called for every single
;; character.
(sha256
(string->utf8 (call-with-output-string
(cut write-derivation drv <>))))))))))
(with-fluids ((%default-port-encoding "UTF-8"))
(string->utf8 (call-with-output-string
(cut write-derivation drv <>)))))))))))
(define (store-path type hash name) ; makeStorePath
"Return the store path for NAME/HASH/TYPE."
+10 -2
View File
@@ -84,7 +84,8 @@
"http://mirror.csclub.uwaterloo.ca/nongnu/"
"http://nongnu.askapache.com/"
"http://savannah.c3sl.ufpr.br/"
"http://www.centervenus.com/mirrors/nongnu/")
"http://www.centervenus.com/mirrors/nongnu/"
"http://download.savannah.gnu.org/releases-noredirect/")
(sourceforge
"http://prdownloads.sourceforge.net/"
"http://heanet.dl.sourceforge.net/sourceforge/"
@@ -148,7 +149,14 @@
"ftp://ftp.osuosl.org/pub/CPAN/"
"ftp://ftp.nara.wide.ad.jp/pub/CPAN/"
"http://mirrors.163.com/cpan/"
"ftp://cpan.mirror.ac.za/"))))
"ftp://cpan.mirror.ac.za/")
(imagemagick ; from http://www.imagemagick.org/script/download.php
"http://mirror.checkdomain.de/imagemagick/"
"ftp://gd.tuwien.ac.at/pub/graphics/ImageMagick/"
"http://www.imagemagick.org/download"
"ftp://mirror.searchdaimon.com/ImageMagick"
"http://mirror.is.co.za/pub/imagemagick/"
"ftp://mirror.aarnet.edu.au/pub/imagemagick/"))))
(define (gnutls-derivation store system)
"Return the GnuTLS derivation for SYSTEM."
+30 -36
View File
@@ -87,45 +87,39 @@ or a TCP port number), and return it."
;; Use 21 as the default PORT instead of "ftp", to avoid depending on
;; libc's NSS, which is not available during bootstrap.
(catch 'getaddrinfo-error
(lambda ()
(define addresses
(getaddrinfo host
(if (number? port) (number->string port) port)
(if (number? port) AI_NUMERICSERV 0)))
(define addresses
(getaddrinfo host
(if (number? port) (number->string port) port)
(if (number? port) AI_NUMERICSERV 0)))
(let loop ((addresses addresses))
(let* ((ai (car addresses))
(s (socket (addrinfo:fam ai) (addrinfo:socktype ai)
(addrinfo:protocol ai))))
(let loop ((addresses addresses))
(let* ((ai (car addresses))
(s (socket (addrinfo:fam ai) (addrinfo:socktype ai)
(addrinfo:protocol ai))))
(catch 'system-error
(lambda ()
(connect s (addrinfo:addr ai))
(setvbuf s _IOLBF)
(let-values (((code message) (%ftp-listen s)))
(if (eqv? code 220)
(begin
;;(%ftp-command "OPTS UTF8 ON" 200 s)
(%ftp-login "anonymous" "guix@example.com" s)
(%make-ftp-connection s ai))
(begin
(format (current-error-port)
"FTP to `~a' failed: ~A: ~A~%"
host code message)
(close s)
#f))))
(catch 'system-error
(lambda ()
(connect s (addrinfo:addr ai))
(setvbuf s _IOLBF)
(let-values (((code message) (%ftp-listen s)))
(if (eqv? code 220)
(begin
;;(%ftp-command "OPTS UTF8 ON" 200 s)
(%ftp-login "anonymous" "guix@example.com" s)
(%make-ftp-connection s ai))
(begin
(format (current-error-port)
"FTP to `~a' failed: ~A: ~A~%"
host code message)
(close s)
#f))))
(lambda args
;; Connection failed, so try one of the other addresses.
(close s)
(if (null? addresses)
(apply throw args)
(loop (cdr addresses))))))))
(lambda (key errcode)
(format (current-error-port) "failed to resolve `~a': ~a~%"
host (gai-strerror errcode))
#f)))
(lambda args
;; Connection failed, so try one of the other addresses.
(close s)
(if (null? addresses)
(apply throw args)
(loop (cdr addresses))))))))
(define (ftp-close conn)
(close (ftp-connection-socket conn)))
+60 -70
View File
@@ -22,13 +22,12 @@
#:use-module (web client)
#:use-module (web response)
#:use-module (ice-9 regex)
#:use-module (ice-9 rdelim)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-26)
#:use-module (system foreign)
#:use-module (guix web)
#:use-module (guix http-client)
#:use-module (guix ftp-client)
#:use-module (guix ui)
#:use-module (guix utils)
@@ -49,6 +48,7 @@
gnu-package-logo
gnu-package-doc-category
gnu-package-doc-summary
gnu-package-doc-description
gnu-package-doc-urls
gnu-package-download-url
@@ -81,6 +81,11 @@
"viewvc/*checkout*/gnumaint/"
"gnupackages.txt?root=womb")))
(define %gsrc-package-list-url
;; This file is normally kept in sync with GSRC.
;; See <http://lists.gnu.org/archive/html/bug-guix/2013-04/msg00117.html>.
(string->uri "http://www.gnu.org/software/gsrc/MANIFEST.rec"))
(define-record-type* <gnu-package-descriptor>
gnu-package-descriptor
make-gnu-package-descriptor
@@ -92,75 +97,48 @@
(copyright-holder gnu-package-copyright-holder)
(savannah gnu-package-savannah)
(fsd gnu-package-fsd)
(language gnu-package-language)
(language gnu-package-language) ; list of strings
(logo gnu-package-logo)
(doc-category gnu-package-doc-category)
(doc-summary gnu-package-doc-summary)
(doc-urls gnu-package-doc-urls)
(doc-description gnu-package-doc-description) ; taken from GSRC
(doc-urls gnu-package-doc-urls) ; list of strings
(download-url gnu-package-download-url))
(define (official-gnu-packages)
"Return a list of records, which are GNU packages."
(define (group-package-fields port state)
(define (read-records port)
;; Return a list of alists. Each alist contains fields of a GNU
;; package.
(let ((line (read-line port))
(field-rx (make-regexp "^([[:graph:]]+): (.*)$"))
(doc-urls-rx (make-regexp "^doc-url: (.*)$"))
(end-rx (make-regexp "^# End. .+Do not remove this line.+")))
(let loop ((alist (recutils->alist port))
(result '()))
(if (null? alist)
(reverse result)
(loop (recutils->alist port)
(cons alist result)))))
(define (match-field str)
;; Packages are separated by empty strings. If STR is an
;; empty string, create a new list to store fields of a
;; different package. Otherwise, match and create a key-value
;; pair.
(match str
(""
(group-package-fields port (cons '() state)))
(str
(cond ((regexp-exec doc-urls-rx str)
=>
(lambda (match)
(if (equal? (assoc-ref (first state) "doc-urls") #f)
(group-package-fields
port (cons (cons (cons "doc-urls"
(list
(match:substring match 1)))
(first state))
(drop state 1)))
(group-package-fields
port (cons (cons (cons "doc-urls"
(cons (match:substring match 1)
(assoc-ref (first state)
"doc-urls")))
(assoc-remove! (first state)
"doc-urls"))
(drop state 1))))))
((regexp-exec field-rx str)
=>
(lambda (match)
(group-package-fields
port (cons (cons (cons (match:substring match 1)
(match:substring match 2))
(first state))
(drop state 1)))))
(else (group-package-fields port state))))))
(define gsrc-description
(let ((gsrc (read-records (http-fetch %gsrc-package-list-url
#:text? #t))))
(lambda (name)
;; Return the description found in GSRC for package NAME, or #f.
(and=> (find (lambda (alist)
(equal? name (assoc-ref alist "Upstream_name")))
gsrc)
(cut assoc-ref <> "Blurb")))))
(if (or (eof-object? line)
(regexp-exec end-rx line)) ; don't include dummy fields
(remove null-list? state)
(match-field line))))
(reverse
(map (lambda (alist)
(alist->record alist
make-gnu-package-descriptor
(list "package" "mundane-name" "copyright-holder"
"savannah" "fsd" "language" "logo"
"doc-category" "doc-summary" "doc-urls"
"download-url")))
(group-package-fields (http-fetch %package-list-url #:text? #t)
'(())))))
(map (lambda (alist)
(let ((name (assoc-ref alist "package")))
(alist->record `(("description" . ,(gsrc-description name))
,@alist)
make-gnu-package-descriptor
(list "package" "mundane-name" "copyright-holder"
"savannah" "fsd" "language" "logo"
"doc-category" "doc-summary" "description"
"doc-url"
"download-url")
'("doc-url" "language"))))
(read-records (http-fetch %package-list-url #:text? #t))))
(define (find-packages regexp)
"Find GNU packages which satisfy REGEXP."
@@ -274,8 +252,10 @@ pairs. Example: (\"mit-scheme-9.0.1\" . \"/gnu/mit-scheme/stable.pkg/9.0.1\").
files)
result))))))))
(define (latest-release project)
"Return (\"FOO-X.Y\" . \"/bar/foo\") or #f."
(define* (latest-release project
#:key (ftp-open ftp-open) (ftp-close ftp-close))
"Return (\"FOO-X.Y\" . \"/bar/foo\") or #f. Use FTP-OPEN and FTP-CLOSE to
open (resp. close) FTP connections; this can be useful to reuse connections."
(define (latest a b)
(if (version>? a b) a b))
@@ -303,14 +283,18 @@ pairs. Example: (\"mit-scheme-9.0.1\" . \"/gnu/mit-scheme/stable.pkg/9.0.1\").
(release-file project file))
(_ #f))
entries)))
(ftp-close conn)
(and=> (reduce latest #f files)
(cut cons <> directory))))
((subdirs ...)
;; Assume that SUBDIRS correspond to versions, and jump into the
;; one with the highest version number.
(let ((target (reduce latest #f subdirs)))
(and target
(loop (string-append directory "/" target))))))))))
(if target
(loop (string-append directory "/" target))
(begin
(ftp-close conn)
#f)))))))))
(define %package-name-rx
;; Regexp for a package name, e.g., "foo-X.Y". Since TeXmacs uses
@@ -341,16 +325,19 @@ pairs. Example: (\"mit-scheme-9.0.1\" . \"/gnu/mit-scheme/stable.pkg/9.0.1\").
(_ #f))))
(define* (download-tarball store project directory version
#:optional (archive-type "gz"))
#:key (archive-type "gz")
(key-download 'interactive))
"Download PROJECT's tarball over FTP and check its OpenPGP signature. On
success, return the tarball file name."
success, return the tarball file name. KEY-DOWNLOAD specifies a download
policy for missing OpenPGP keys; allowed values: 'interactive' (default),
'always', and 'never'."
(let* ((server (ftp-server/directory project))
(base (string-append project "-" version ".tar." archive-type))
(url (string-append "ftp://" server "/" directory "/" base))
(sig-url (string-append url ".sig"))
(tarball (download-to-store store url))
(sig (download-to-store store sig-url)))
(let ((ret (gnupg-verify* sig tarball)))
(let ((ret (gnupg-verify* sig tarball #:key-download key-download)))
(if ret
tarball
(begin
@@ -359,9 +346,11 @@ success, return the tarball file name."
(warning (_ "(could be because the public key is not in your keyring)~%"))
#f)))))
(define (package-update store package)
(define* (package-update store package #:key (key-download 'interactive))
"Return the new version and the file name of the new version tarball for
PACKAGE, or #f and #f when PACKAGE is up-to-date."
PACKAGE, or #f and #f when PACKAGE is up-to-date. KEY-DOWNLOAD specifies a
download policy for missing OpenPGP keys; allowed values: 'always', 'never',
and 'interactive' (default)."
(match (package-update-path package)
((version . directory)
(let-values (((name)
@@ -372,7 +361,8 @@ PACKAGE, or #f and #f when PACKAGE is up-to-date."
(file-extension (origin-uri source)))
"gz"))))
(let ((tarball (download-tarball store name directory version
archive-type)))
#:archive-type archive-type
#:key-download key-download)))
(values version tarball))))
(_
(values #f #f))))
+30 -6
View File
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2010, 2011, 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -21,7 +22,9 @@
#:use-module (ice-9 match)
#:use-module (ice-9 regex)
#:use-module (ice-9 rdelim)
#:use-module (ice-9 i18n)
#:use-module (srfi srfi-1)
#:use-module (guix ui)
#:export (%gpg-command
%openpgp-key-server
gnupg-verify
@@ -145,16 +148,37 @@ missing key."
(define (gnupg-receive-keys key-id server)
(system* (%gpg-command) "--keyserver" server "--recv-keys" key-id))
(define* (gnupg-verify* sig file #:optional (server (%openpgp-key-server)))
(define* (gnupg-verify* sig file
#:key (key-download 'interactive)
(server (%openpgp-key-server)))
"Like `gnupg-verify', but try downloading the public key if it's missing.
Return #t if the signature was good, #f otherwise."
Return #t if the signature was good, #f otherwise. KEY-DOWNLOAD specifies a
download policy for missing OpenPGP keys; allowed values: 'always', 'never',
and 'interactive' (default)."
(let ((status (gnupg-verify sig file)))
(or (gnupg-status-good-signature? status)
(let ((missing (gnupg-status-missing-key? status)))
(define (download-and-try-again)
;; Download the missing key and try again.
(begin
(gnupg-receive-keys missing server)
(gnupg-status-good-signature? (gnupg-verify sig file))))
(define (receive?)
(let ((answer
(begin (format #t (_ "~a~a~%")
"Would you like to download this key "
"and add it to your keyring?")
(read-line))))
(string-match (locale-yes-regexp) answer)))
(and missing
(begin
;; Download the missing key and try again.
(gnupg-receive-keys missing server)
(gnupg-status-good-signature? (gnupg-verify sig file))))))))
(case key-download
((never) #f)
((always)
(download-and-try-again))
(else
(and (receive?)
(download-and-try-again)))))))))
;;; gnupg.scm ends here
+131
View File
@@ -0,0 +1,131 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 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 hash)
#:use-module (guix config)
#:use-module (rnrs bytevectors)
#:use-module (rnrs io ports)
#:use-module (system foreign)
#:use-module ((guix build utils) #:select (dump-port))
#:use-module (srfi srfi-11)
#:export (sha256
open-sha256-port
port-sha256))
;;; Commentary:
;;;
;;; Cryptographic hashes.
;;;
;;; Code:
;;;
;;; Hash.
;;;
(define-syntax GCRY_MD_SHA256
;; Value as of Libgcrypt 1.5.2.
(identifier-syntax 8))
(define sha256
(let ((hash (pointer->procedure void
(dynamic-func "gcry_md_hash_buffer"
(dynamic-link %libgcrypt))
`(,int * * ,size_t))))
(lambda (bv)
"Return the SHA256 of BV as a bytevector."
(let ((digest (make-bytevector (/ 256 8))))
(hash GCRY_MD_SHA256 (bytevector->pointer digest)
(bytevector->pointer bv) (bytevector-length bv))
digest))))
(define open-sha256-md
(let ((open (pointer->procedure int
(dynamic-func "gcry_md_open"
(dynamic-link %libgcrypt))
`(* ,int ,unsigned-int))))
(lambda ()
(let* ((md (bytevector->pointer (make-bytevector (sizeof '*))))
(err (open md GCRY_MD_SHA256 0)))
(if (zero? err)
(dereference-pointer md)
(throw 'gcrypt-error err))))))
(define md-write
(pointer->procedure void
(dynamic-func "gcry_md_write"
(dynamic-link %libgcrypt))
`(* * ,size_t)))
(define md-read
(pointer->procedure '*
(dynamic-func "gcry_md_read"
(dynamic-link %libgcrypt))
`(* ,int)))
(define md-close
(pointer->procedure void
(dynamic-func "gcry_md_close"
(dynamic-link %libgcrypt))
'(*)))
(define (open-sha256-port)
"Return two values: an output port, and a thunk. When the thunk is called,
it returns the SHA256 hash (a bytevector) of all the data written to the
output port."
(define sha256-md
(open-sha256-md))
(define digest #f)
(define (finalize!)
(let ((ptr (md-read sha256-md 0)))
(set! digest (bytevector-copy (pointer->bytevector ptr 32)))
(md-close sha256-md)))
(define (write! bv offset len)
(if (zero? len)
(begin
(finalize!)
0)
(let ((ptr (bytevector->pointer bv offset)))
(md-write sha256-md ptr len)
len)))
(define (close)
(unless digest
(finalize!)))
(values (make-custom-binary-output-port "sha256"
write! #f #f
close)
(lambda ()
(unless digest
(finalize!))
digest)))
(define (port-sha256 port)
"Return the SHA256 hash (a bytevector) of all the data drained from PORT."
(let-values (((out get)
(open-sha256-port)))
(dump-port port out)
(close-port out)
(get)))
;;; hash.scm ends here
+64 -48
View File
@@ -17,7 +17,7 @@
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix web)
(define-module (guix http-client)
#:use-module (guix utils)
#:use-module (web uri)
#:use-module (web client)
@@ -27,11 +27,12 @@
#:use-module (rnrs bytevectors)
#:use-module (guix ui)
#:use-module (guix utils)
#:export (http-fetch))
#:export (open-socket-for-uri
http-fetch))
;;; Commentary:
;;;
;;; Web client portable among Guile versions.
;;; HTTP client portable among Guile versions.
;;;
;;; Code:
@@ -141,52 +142,67 @@ closed it will also close PORT, unless the KEEP-ALIVE? is true."
(module-define! (resolve-module '(web client))
'shutdown (const #f))
(define* (http-fetch uri #:key (text? #f))
(define* (open-socket-for-uri uri #:key (buffered? #t))
"Return an open port for URI. When BUFFERED? is false, the returned port is
unbuffered."
(let ((s ((@ (web client) open-socket-for-uri) uri)))
(unless buffered?
(setvbuf s _IONBF))
s))
(define* (http-fetch uri #:key port (text? #f) (buffered? #t))
"Return an input port containing the data at URI, and the expected number of
bytes available or #f. If TEXT? is true, the data at URI is considered to be
textual. Follow any HTTP redirection."
textual. Follow any HTTP redirection. When BUFFERED? is #f, return an
unbuffered port, suitable for use in `filtered-port'."
(let loop ((uri uri))
(let*-values (((resp data)
;; Try hard to use the API du jour to get an input port.
;; On Guile 2.0.5 and before, we can only get a string or
;; bytevector, and not an input port. Work around that.
(if (version>? "2.0.7" (version))
(if (defined? 'http-get*)
(http-get* uri #:decode-body? text?) ; 2.0.7
(http-get uri #:decode-body? text?)) ; 2.0.5-
(http-get uri #:streaming? #t))) ; 2.0.9+
((code)
(response-code resp)))
(case code
((200)
(let ((len (response-content-length resp)))
(cond ((not data)
(begin
;; Guile 2.0.5 and earlier did not support chunked
;; transfer encoding, which is required for instance when
;; fetching %PACKAGE-LIST-URL (see
;; <http://lists.gnu.org/archive/html/guile-devel/2011-09/msg00089.html>).
;; Normally the `when-guile<=2.0.5' block above fixes
;; that, but who knows what could happen.
(warning (_ "using Guile ~a, which does not support ~s encoding~%")
(version)
(response-transfer-encoding resp))
(leave (_ "download failed; use a newer Guile~%")
uri resp)))
((string? data) ; `http-get' from 2.0.5-
(values (open-input-string data) len))
((bytevector? data) ; likewise
(values (open-bytevector-input-port data) len))
(else ; input port
(values data len)))))
((301 ; moved permanently
302) ; found (redirection)
(let ((uri (response-location resp)))
(format #t "following redirection to `~a'...~%"
(uri->string uri))
(loop uri)))
(else
(error "download failed" uri code
(response-reason-phrase resp)))))))
(let ((port (or port
(open-socket-for-uri uri
#:buffered? buffered?))))
(let*-values (((resp data)
;; Try hard to use the API du jour to get an input port.
;; On Guile 2.0.5 and before, we can only get a string or
;; bytevector, and not an input port. Work around that.
(if (version>? (version) "2.0.7")
(http-get uri #:streaming? #t #:port port) ; 2.0.9+
(if (defined? 'http-get*)
(http-get* uri #:decode-body? text?
#:port port) ; 2.0.7
(http-get uri #:decode-body? text?
#:port port)))) ; 2.0.5-
((code)
(response-code resp)))
(case code
((200)
(let ((len (response-content-length resp)))
(cond ((not data)
(begin
;; Guile 2.0.5 and earlier did not support chunked
;; transfer encoding, which is required for instance when
;; fetching %PACKAGE-LIST-URL (see
;; <http://lists.gnu.org/archive/html/guile-devel/2011-09/msg00089.html>).
;; Normally the `when-guile<=2.0.5' block above fixes
;; that, but who knows what could happen.
(warning (_ "using Guile ~a, which does not support ~s encoding~%")
(version)
(response-transfer-encoding resp))
(leave (_ "download failed; use a newer Guile~%")
uri resp)))
((string? data) ; `http-get' from 2.0.5-
(values (open-input-string data) len))
((bytevector? data) ; likewise
(values (open-bytevector-input-port data) len))
(else ; input port
(values data len)))))
((301 ; moved permanently
302) ; found (redirection)
(let ((uri (response-location resp)))
(close-port port)
(format #t (_ "following redirection to `~a'...~%")
(uri->string uri))
(loop uri)))
(else
(error "download failed" uri code
(response-reason-phrase resp))))))))
;;; web.scm ends here
;;; http-client.scm ends here

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