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 | Date | |
|---|---|---|---|
| 3253830d46 | |||
| 6023cc7429 | |||
| 1855577207 | |||
| b81e194706 | |||
| c71493c8b9 | |||
| 1959fb04dc | |||
| 4a328f7342 | |||
| 88ebd5e699 | |||
| 5939006b9b | |||
| 63f6004b95 | |||
| e23dc82c29 | |||
| 73d9f3c5b6 | |||
| c5a1902ae4 | |||
| 4ec09bb410 | |||
| 77bed84246 | |||
| 195e81aa52 | |||
| 4b7f3407e9 | |||
| d409c8ab88 | |||
| 079d127391 | |||
| 56fbf2629f | |||
| 50af57901a | |||
| a0daf4a04e | |||
| 4169a4bcb5 | |||
| cf2135ff48 | |||
| ffd2093440 | |||
| 614bdaffbf | |||
| 3b8258c569 | |||
| 84dbbc7651 | |||
| 2096b516e0 | |||
| e14c39291b | |||
| e3ccdf9e96 | |||
| 1f495e04c1 | |||
| 8e5e7299d1 | |||
| f50ad3e777 | |||
| d4781e8c23 | |||
| e0bb2e6be1 | |||
| ce689ccf18 | |||
| 6a012c5f51 | |||
| d934fd65af | |||
| 8b79e2e641 | |||
| 35935b8a1d | |||
| 560d4787f4 | |||
| d04434c067 | |||
| 6a3380dfbf | |||
| c4ca9411f9 | |||
| 836d10f154 | |||
| b0efe83a8f | |||
| c8772a7a21 | |||
| b7b8828801 | |||
| fdc1bf659d | |||
| c0edcc3c19 | |||
| edd258fd6b | |||
| 03aedf8d7a | |||
| b592f7113e | |||
| c769406010 | |||
| 91ef73d464 | |||
| 6e721c4d02 | |||
| ee48b283fa | |||
| caddc24fa4 | |||
| 4ca0cefd1b | |||
| 2c9143a1f3 | |||
| acf428dd0b | |||
| b208a00501 | |||
| 8b315a6dd5 | |||
| 401c53c469 | |||
| c8ebc82187 | |||
| b97556d75c | |||
| 3a4ebc1124 | |||
| eb25a30a42 | |||
| 8c95b27ce6 | |||
| 5363abb776 | |||
| a1c39ede7d | |||
| 82f9b17687 | |||
| a4627d498a | |||
| 9bf62d9b1d | |||
| be58d01a7e | |||
| d475b25953 | |||
| 6d73e17bb4 | |||
| 2b2fdd45bb | |||
| 423002544d | |||
| b0fad8a2d4 | |||
| 69927e78de | |||
| 72626a71a9 | |||
| 82323a8085 | |||
| 1a8b783470 | |||
| a4572a1720 | |||
| d3066a0d13 | |||
| bb7dcaea57 | |||
| 013ce67b19 | |||
| 88a0b7b051 | |||
| 3bba7b0a8f | |||
| 96a8259a9d | |||
| ca16cb9606 | |||
| 58ab9f9b8e | |||
| beda99e882 | |||
| 5708485357 | |||
| 11acdf1747 | |||
| de1d41f980 | |||
| e7133c7680 | |||
| c8fa51f2d6 | |||
| 9306d350b2 | |||
| a410a0105d | |||
| a3cff41dd1 | |||
| 0de71c233c | |||
| 7e873a6708 | |||
| 6e1c4093d2 | |||
| ac5c1cec86 | |||
| 1e4310f1f2 | |||
| f7c3429073 | |||
| 527e796125 | |||
| ea2ddd3334 | |||
| 2c034e1bd0 | |||
| a62b83d52f | |||
| b15669f37d | |||
| ee26820636 | |||
| 8572bf5e0c | |||
| d16368cf41 | |||
| 2a511f7a1a | |||
| 2f41f51c40 | |||
| 91a7fde456 | |||
| 4ca968eb95 | |||
| 56c092ce94 | |||
| d501fad11c | |||
| 4db00e4210 | |||
| fba96c4885 | |||
| f3211ef386 | |||
| fe1818e26a | |||
| a85060efec | |||
| e3f6f8b448 | |||
| d516736c58 | |||
| 9af05aa29d | |||
| c7c834a998 | |||
| 7fa37abca0 | |||
| 2207f73156 | |||
| 8cf13c1f70 | |||
| 90a0048f5e | |||
| 10afdf5061 | |||
| 30ac136d6d | |||
| cf3fe3b071 | |||
| 5686807ee9 | |||
| b1b07d72c7 | |||
| 7997c4bf76 | |||
| d517142b8e | |||
| 30645251d1 | |||
| 9c71a2aec4 | |||
| 934488ccd3 | |||
| 82c865c41a | |||
| 4b9adff901 | |||
| a2609b41b9 | |||
| 6131c43d45 | |||
| 7cf2a2a1e2 | |||
| 3e5980de47 | |||
| 16357e8c71 | |||
| 0bd31a2188 | |||
| 62751a5ddd | |||
| af5cb60fec | |||
| 8e59fdd53b | |||
| 3f1e69395c | |||
| cfbf7877a6 | |||
| d4c7486079 | |||
| cbe62e89d0 | |||
| 79b8914eaa | |||
| 16df248e4b | |||
| 392b5d8cab | |||
| e20ec9cc51 | |||
| 0a56fadb60 | |||
| ba04571a83 | |||
| f88aeb6aa8 | |||
| e0b2737583 | |||
| 7bc5cc2b96 | |||
| 0d62efbe5a | |||
| fa6141ecaa | |||
| b2e3dd9480 | |||
| 9d97a1b3d6 | |||
| 0e999137e9 | |||
| a3e69bb892 | |||
| a1db097535 | |||
| b17fd5e0c8 | |||
| 76ced7741b | |||
| 7f4e4b77ee | |||
| 765904ceb6 | |||
| 9bf3c1a77d | |||
| ae3b6bb0f4 | |||
| bdbb6fbb19 | |||
| 94e4ddd508 | |||
| ef7cf2917a | |||
| 5ace6e2fa8 | |||
| 1890a149cc | |||
| 63c0c19a64 | |||
| 8caa6152d0 | |||
| 231eae53c2 | |||
| 44fbbf4c5f | |||
| 89d02b98f9 | |||
| 5282181d51 | |||
| cf5d2ca329 | |||
| 56b1f4b780 | |||
| c3eb878f0b | |||
| acc26ff148 | |||
| 4f7e152b34 | |||
| 842ded334f | |||
| 9b222abe03 | |||
| ea84ec7711 | |||
| 58b4e8e877 | |||
| d581acee5b | |||
| 47e74d6e9d | |||
| 4bfc4ea349 | |||
| 9c782445fb | |||
| 9a97b8144d | |||
| aa289a3e82 | |||
| a67f97fea1 | |||
| 923fbae1f0 | |||
| 598608c7ee | |||
| f755aa3f7a | |||
| 089b06348e | |||
| 1984b43895 | |||
| 3871c9f500 | |||
| 9aa949a4b6 | |||
| cf9fd501ea | |||
| c8c6bba5a7 | |||
| de59af4d6d | |||
| 2a552f1177 | |||
| a7dc055bb5 | |||
| cd52703ace | |||
| ee4d736881 | |||
| 2ee5f56b4d | |||
| 5dce82180b | |||
| cba363bea8 | |||
| 929c0f69de | |||
| e55ec43d8b | |||
| 264218a47e | |||
| 9c1edabd8b | |||
| 17bb886ff4 | |||
| 248d08ebf0 | |||
| a63062b55a | |||
| 7046c48d72 | |||
| 3ec7ad8e0f | |||
| a10f6f7bf7 | |||
| bb3fe7fcfe | |||
| d149583162 | |||
| 1972fed4df | |||
| 969e678ed9 | |||
| d8482ad0d6 | |||
| 35ec07c758 | |||
| 4bc3fcc771 | |||
| 499b8d1f84 | |||
| f11617d8a6 | |||
| 70c4329172 | |||
| 101d9f3fd4 | |||
| 3d6b71e87e | |||
| 0332386251 | |||
| 90a1e4b303 | |||
| 91fe0e20c7 | |||
| b30b13dc3d | |||
| 2b8cf44fd9 |
+2
-1
@@ -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))))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 couldn’t 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 wouldn’t 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
|
||||
binaries–usually 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, it’s OK to commit,
|
||||
if you’re 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 you’re 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 didn’t receive any reply
|
||||
|
||||
+57
-238
@@ -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
|
||||
|
||||
@@ -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 user’s one is broken
|
||||
|
||||
When the user’s (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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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 we’d 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
|
||||
environment–e.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
|
||||
|
||||
|
||||
@@ -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)))
|
||||
@@ -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"
|
||||
|
||||
@@ -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)))
|
||||
Executable
+202
@@ -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 & GNU inquiries to
|
||||
<a href=\"mailto:gnu@gnu.org\"><gnu@gnu.org></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\"><bug-guix@gnu.org></a>.</p>
|
||||
|
||||
<p>Copyright © 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
@@ -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
@@ -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 *********************************************************************
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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")
|
||||
'()))))))))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
@@ -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
@@ -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")
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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.
|
||||
|
||||
@@ -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
@@ -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)
|
||||
|
||||
@@ -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+)))
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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"))))
|
||||
@@ -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.,
|
||||
|
||||
@@ -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)))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
@@ -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.")
|
||||
|
||||
@@ -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
@@ -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+)))
|
||||
|
||||
@@ -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
@@ -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
@@ -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")
|
||||
"."))))))))))
|
||||
|
||||
|
||||
@@ -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)))
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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)))
|
||||
|
||||
@@ -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"))))
|
||||
@@ -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)
|
||||
@@ -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 ();
|
||||
|
||||
@@ -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
|
||||
@@ -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))))
|
||||
|
||||
@@ -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
@@ -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
@@ -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.
|
||||
|
||||
|
||||
@@ -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
@@ -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+)))
|
||||
|
||||
@@ -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)))
|
||||
@@ -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))))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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+)))
|
||||
|
||||
@@ -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+)))
|
||||
@@ -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+)))
|
||||
|
||||
@@ -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)))
|
||||
@@ -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
@@ -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)))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
@@ -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
Reference in New Issue
Block a user