mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2026-07-08 15:44:08 +02:00
Compare commits
300 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 81bb9b6665 | |||
| 9f84f12fde | |||
| ba7ea5ce33 | |||
| bb5f01c55d | |||
| 5c413a9cbc | |||
| 6bf3e5f72d | |||
| f312d5430e | |||
| 2442257f2d | |||
| 1bb9900a2a | |||
| d7ddb257c9 | |||
| 03f4ef28b1 | |||
| 5b16ff0985 | |||
| 87eb734d38 | |||
| 17886b3022 | |||
| fbd1c3e95b | |||
| d0c66871b1 | |||
| 3abf9b440b | |||
| dadee6cd6e | |||
| 8bc755c08c | |||
| 16a0e9dc34 | |||
| bacadb026c | |||
| c773aba870 | |||
| 03761a4465 | |||
| 59c5c4dee1 | |||
| 85e0dc6a6b | |||
| d08213980c | |||
| b2f0005aad | |||
| c1cab15a54 | |||
| b7884ca3ca | |||
| 64d2e973fb | |||
| 4658b2c47b | |||
| c9cb0825c9 | |||
| 36c0d43000 | |||
| de9c504697 | |||
| 7facbf2b58 | |||
| 834b5c8076 | |||
| 349746dfcd | |||
| de8bcdaeb5 | |||
| f83e943fe7 | |||
| 27cab84c6d | |||
| ba47851fac | |||
| 43a2779876 | |||
| d09cb44967 | |||
| d5d0f286a2 | |||
| 25eb16bf3b | |||
| 65d195e140 | |||
| 0b86a82dc7 | |||
| 37c58656eb | |||
| 8f37bf6200 | |||
| 9ac9360d6e | |||
| aad5af9f40 | |||
| 4b2bc804d8 | |||
| 0ab212b946 | |||
| 98fbd7ceeb | |||
| 24f3e788d0 | |||
| f1be806183 | |||
| 78c7e3449f | |||
| b972db7275 | |||
| 1fa49a2c46 | |||
| f1dfb7c47c | |||
| 9fcc355529 | |||
| 30f25b033c | |||
| 2d195e6775 | |||
| 923206f79b | |||
| 9d3c4daed3 | |||
| 2365338b18 | |||
| caf96debc2 | |||
| a4141d6d53 | |||
| 4fd6bf5337 | |||
| 5608847c6f | |||
| f59e9eaac8 | |||
| 48e488eb2c | |||
| f566d765a1 | |||
| bd9bde1cba | |||
| a7a4e6a4f7 | |||
| 996ed6acd5 | |||
| 13f04f48d0 | |||
| d983a14f81 | |||
| 1fdd3ee2a6 | |||
| 995b726131 | |||
| 477c91ce73 | |||
| 144f9f251d | |||
| 22885fb845 | |||
| 93be8dc4c9 | |||
| 421a80a2b2 | |||
| 99882c613c | |||
| 4d497632ce | |||
| 35aee909f7 | |||
| 3b627eac48 | |||
| 0352532e6a | |||
| ed0cdf837d | |||
| 4646e30a7a | |||
| f15164e791 | |||
| 2cd09108c9 | |||
| 0c456db45b | |||
| 72d9148fbf | |||
| 1210c32ecc | |||
| 97d010b7f8 | |||
| 3301f17970 | |||
| 37c0ce3d27 | |||
| 59688fc4b5 | |||
| 81b66f8567 | |||
| 07c86312ca | |||
| 6a446d5680 | |||
| 803704418c | |||
| 692b93408f | |||
| 66018f1c33 | |||
| aae4ead814 | |||
| 29479de565 | |||
| 0cb9b45674 | |||
| 2875caf5b5 | |||
| 1b0a8212d1 | |||
| 1d08c01fcf | |||
| 7763c538ad | |||
| ea16738085 | |||
| 8eaa8a3bf0 | |||
| e1804763d0 | |||
| 0ded70f37d | |||
| aedb72fbe0 | |||
| fc50e9c694 | |||
| 824af8cadc | |||
| a843fe2222 | |||
| 3b07625ad6 | |||
| 37c825eb79 | |||
| e0ba5fe5ab | |||
| c84d0eca05 | |||
| cfbf916045 | |||
| 73adf22037 | |||
| e1a264f6fa | |||
| 590a4904d2 | |||
| 1d1f939798 | |||
| d34c0ac6e9 | |||
| 98aeb06b41 | |||
| 8ab73e91d6 | |||
| 11bb85a10d | |||
| 8ce3104e0e | |||
| 6bf25b7b05 | |||
| 3409bc0188 | |||
| e7b385008c | |||
| 0e2ddecd8e | |||
| 2df74ac117 | |||
| a129e0d877 | |||
| 20a26ff546 | |||
| 785859d306 | |||
| 002e5ba887 | |||
| b191f88ee3 | |||
| 49b90a7539 | |||
| 8498b8cfac | |||
| 7b96bf82da | |||
| d1f30e9943 | |||
| 1b89a66e1b | |||
| 29804e6eb2 | |||
| 7c1d8146a7 | |||
| 89114f39e4 | |||
| aa9e22efa3 | |||
| 66ed0c3146 | |||
| 78fed0648f | |||
| 9bee5d6c18 | |||
| 98e4829c4b | |||
| f82cfaac71 | |||
| 91da9ab009 | |||
| 1611eccd10 | |||
| 3df47231e6 | |||
| e911470857 | |||
| 6c76c45145 | |||
| 0280ef2203 | |||
| ee3e314bb7 | |||
| 7eed1d0438 | |||
| 898238b9f5 | |||
| bda44eed93 | |||
| 8badfc5558 | |||
| 0a2873e515 | |||
| 00554b2a0f | |||
| 43dd92024a | |||
| 165fd9d5e6 | |||
| b24d1cfc85 | |||
| fbc1a58f40 | |||
| 340c7033a8 | |||
| 1e151896d4 | |||
| bf8e7fc502 | |||
| d91712ee89 | |||
| d9ff410fb2 | |||
| c3f3e150c4 | |||
| abac80c0fd | |||
| 77c7f8f41b | |||
| 93d44bd8de | |||
| 4c0f0673b2 | |||
| ca85d7bcc6 | |||
| b48d21b246 | |||
| 89bf140b10 | |||
| 1aebc0cb2c | |||
| f26a77ffbc | |||
| 91dcbafab9 | |||
| 37f9ff639e | |||
| 24b5c463f3 | |||
| d9c4b6e944 | |||
| 71e0f28856 | |||
| c8c871d184 | |||
| 1a2e649561 | |||
| e1c5a8357a | |||
| 67b1dd8dea | |||
| a827c623ca | |||
| ffc1074f86 | |||
| 46cb9da285 | |||
| 29f66ddd7b | |||
| 54461ce7eb | |||
| cb9e50f618 | |||
| a9424c0887 | |||
| 88bd1804a2 | |||
| 88840f0246 | |||
| e47185a4a7 | |||
| f989fa392f | |||
| f02b5474f1 | |||
| ee85f3dbe9 | |||
| da7cabd46b | |||
| 575ed8d5b3 | |||
| 3d1b29a5c5 | |||
| 2455085a1e | |||
| 858e92823f | |||
| af807dea7f | |||
| 2d2ad98910 | |||
| 9c629a27a4 | |||
| 5b0c9d1635 | |||
| a987d2c025 | |||
| 3e9066fcfc | |||
| 5d9cd70721 | |||
| ef4eca529b | |||
| d29aa3b5a3 | |||
| ef0677faa1 | |||
| 6ad507ae54 | |||
| 9eed6f9b88 | |||
| f29f066439 | |||
| 59e6ae6cf1 | |||
| bbe8d8f028 | |||
| fe12c3458c | |||
| 7357138bba | |||
| b095792f9b | |||
| c9dfa3c721 | |||
| 88065ec247 | |||
| 8f8b24512a | |||
| eb4b2ab6a8 | |||
| 212525967e | |||
| e78a0ae514 | |||
| 39b0484582 | |||
| 853726dd36 | |||
| 7db3ff4a29 | |||
| baed8816fc | |||
| 290d437097 | |||
| b6952cad8d | |||
| 3f69e393d3 | |||
| 911b1b9cb6 | |||
| 75ca2f4f47 | |||
| 3e8f16ba91 | |||
| 682cb00461 | |||
| db90b40dfd | |||
| 6facbc7590 | |||
| bbc08c7940 | |||
| 86f1537d3f | |||
| 124b7f1e0f | |||
| 45f0ae8229 | |||
| 5aa601a37b | |||
| 7dca30734e | |||
| e858326a0f | |||
| ba95e7028f | |||
| f99f6fd6fa | |||
| 482f8a07e3 | |||
| b866e4b379 | |||
| 251fbfddb7 | |||
| 0e5b0f78f6 | |||
| 9a9e72d5ad | |||
| c134056a9b | |||
| 10d3ab1073 | |||
| 50731c51a4 | |||
| e928da09c9 | |||
| 3b4f21bd1b | |||
| e12b3eb93e | |||
| 1b50671ee1 | |||
| 2ad6bfaba8 | |||
| 0938cd2731 | |||
| 8bdf5241dc | |||
| 1af63b797c | |||
| 25352fe106 | |||
| 6bfc16d93c | |||
| 2ae92cbcc1 | |||
| fd89b36b5b | |||
| 755693a42d | |||
| 9c2ecede41 | |||
| 2e77dc3027 | |||
| 9c68798d98 | |||
| 5a15ed5098 | |||
| 7abe196529 | |||
| 0ceea4f3ed | |||
| 0327ced235 | |||
| 2b24faa295 | |||
| 75c6fd43ed | |||
| 7c80a8b618 | |||
| 0f323dad0e | |||
| 3dfd7cef0d | |||
| 044498a0b9 | |||
| 8b2d9e5d44 |
@@ -76,3 +76,4 @@ stamp-h[0-9]
|
||||
/nix/scripts/substitute-binary
|
||||
/doc/images/bootstrap-graph.png
|
||||
/doc/images/bootstrap-graph.eps
|
||||
/guix-register
|
||||
|
||||
@@ -12,14 +12,25 @@ Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
|
||||
|
||||
* Building from Git
|
||||
|
||||
First, make sure that Autoconf (>= 2.69), Automake, and pkg-config are
|
||||
installed. Run ‘./bootstrap’ that, among other things, invokes ‘git submodule
|
||||
update’, or you might get the following error
|
||||
When building Guix from a checkout, the following packages are required in
|
||||
addition to those mentioned in the installation instructions:
|
||||
|
||||
- [[http://www.gnu.org/software/autoconf/][GNU Autoconf]]
|
||||
- [[http://www.gnu.org/software/automake/][GNU Automake]]
|
||||
- [[http://www.gnu.org/software/gettext/][GNU Gettext]]
|
||||
- [[http://www.graphviz.org/][Graphviz]]
|
||||
|
||||
Run ‘./bootstrap’ to download the Nix daemon source code and to generate the
|
||||
build system infrastructure using autoconf. It reports an error if an
|
||||
inappropriate version of the above packages is being used.
|
||||
|
||||
The ‘bootstrap’ script, among other things, invokes ‘git submodule update’; if
|
||||
you didn’t run it, you may get the following error:
|
||||
|
||||
make: *** No rule to make target `nix/libstore/schema.sql', needed by
|
||||
`nix/libstore/schema.sql.hh'
|
||||
|
||||
Then, as always, run ‘./configure’. If you get an error like this one
|
||||
Then, as always, run ‘./configure’. If you get an error like this one:
|
||||
|
||||
./configure: line 6755: `PKG_CHECK_MODULES(GUILE, guile-2.0 >= 2.0.5)'
|
||||
|
||||
@@ -32,17 +43,9 @@ installed Automake in ‘/usr/local’, it wouldn’t look for ‘.m4’ files i
|
||||
|
||||
See “info '(automake) Macro Search Path'” for more information.
|
||||
|
||||
After that you should proceed with ‘make’. You might also get this error
|
||||
|
||||
/bin/bash: dot: command not found
|
||||
make[2]: *** [doc/images/bootstrap-graph.png] Error 127
|
||||
|
||||
This one is easy to handle; just install Graphviz. It is not listed as a
|
||||
requirement because the resulting images should come with a tarball.
|
||||
|
||||
Finally, you have to invoke ‘make check’ to run tests. If anything fails,
|
||||
take a look at “info '(guix) Installation'” or send a message to
|
||||
<bug-guix@gnu.org>.
|
||||
<guix-devel@gnu.org>.
|
||||
|
||||
* Running Guix before it is installed
|
||||
|
||||
@@ -75,68 +78,75 @@ addition to that, you must not miss [[http://www.emacswiki.org/emacs/ParEdit][Pa
|
||||
directly operate on the syntax tree, such as raising an s-expression or
|
||||
wrapping it, swallowing or rejecting the following s-expression, etc.
|
||||
|
||||
* Adding new packages
|
||||
|
||||
Package recipes in Guix look like this:
|
||||
|
||||
#+BEGIN_SRC scheme
|
||||
(package
|
||||
(name "nettle")
|
||||
(version "2.5")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/nettle/nettle-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0wicr7amx01l03rm0pzgr1qvw3f9blaw17vjsy1301dh13ll58aa"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("m4" ,m4)))
|
||||
(propagated-inputs `(("gmp" ,gmp)))
|
||||
(home-page
|
||||
"http://www.lysator.liu.se/~nisse/nettle/")
|
||||
(synopsis "GNU Nettle, a cryptographic library")
|
||||
(description
|
||||
"Nettle is a cryptographic library...")
|
||||
(license gpl2+))
|
||||
#+END_SRC
|
||||
|
||||
Such a recipe can be written by hand, and then tested by running
|
||||
‘./pre-inst-env guix build nettle’.
|
||||
|
||||
When writing the recipe, the base32-encoded SHA256 hash of the source
|
||||
code tarball, which can be seen in the example above, can be obtained by
|
||||
running:
|
||||
|
||||
guix download http://ftp.gnu.org/gnu/nettle/nettle-2.5.tar.gz
|
||||
|
||||
Alternatively, it is possible to semi-automatically import recipes from
|
||||
the [[http://nixos.org/nixpkgs/][Nixpkgs]] software distribution using this command:
|
||||
|
||||
guix import /path/to/nixpkgs/checkout nettle
|
||||
|
||||
The command automatically fetches and converts to Guix the “Nix
|
||||
expression” of Nettle.
|
||||
|
||||
* Submitting Patches
|
||||
|
||||
Development is done using the Git distributed version control system. Thus,
|
||||
access to the repository is not strictly necessary. We welcome contributions
|
||||
in the form of patches as produced by ‘git format-patch’ sent to
|
||||
bug-guix@gnu.org. Please write commit logs in the [[http://www.gnu.org/prep/standards/html_node/Change-Logs.html#Change-Logs][GNU ChangeLog format]].
|
||||
guix-devel@gnu.org. Please write commit logs in the [[http://www.gnu.org/prep/standards/html_node/Change-Logs.html#Change-Logs][GNU ChangeLog format]].
|
||||
|
||||
As you become a regular contributor, you may find it convenient to have write
|
||||
access to the repository (see below.)
|
||||
|
||||
* Coding Style
|
||||
|
||||
In general our code follows the [[info:standards][GNU Coding Standards]] (GCS). However, the GCS
|
||||
do not say much about Scheme, so here are some additional rules.
|
||||
|
||||
** Programming Paradigm
|
||||
|
||||
Scheme code in Guix is written in a purely functional style. One exception is
|
||||
code that involves input/output, and procedures that implement low-level
|
||||
concepts, such as the ‘memoize’ procedure.
|
||||
|
||||
** Modules
|
||||
|
||||
Guile modules that are meant to be used on the builder side must live in the
|
||||
(guix build …) name space. They must not refer to other Guix or GNU modules.
|
||||
However, it is OK for a “host-side” module to use a build-side module.
|
||||
|
||||
Modules that deal with the broader GNU system should be in the (gnu …) name
|
||||
space rather than (guix …).
|
||||
|
||||
** Data Types and Pattern Matching
|
||||
|
||||
The tendency in classical Lisp is to use lists to represent everything, and
|
||||
then to browse them “by hand” using ‘car’, ‘cdr’, ‘cadr’, and co. There are
|
||||
several problems with that style, notably the fact that it is hard to read,
|
||||
error-prone, and a hindrance to proper type error reports.
|
||||
|
||||
Guix code should define appropriate data types (for instance, using
|
||||
‘define-record-type*’) rather than abuse lists. In addition, it should use
|
||||
pattern matching, via Guile’s (ice-9 match) module, especially when matching
|
||||
lists.
|
||||
|
||||
** Formatting Code
|
||||
|
||||
When writing Scheme code, we follow common wisdom among Scheme programmers.
|
||||
In general, we follow the [[http://mumble.net/~campbell/scheme/style.txt][Riastradh's Lisp Style Rules]]. This document happens
|
||||
to describe the conventions mostly used in Guile’s code too. It is very
|
||||
thoughtful and well written, so please do read it.
|
||||
|
||||
Some special forms introduced in Guix, such as the ‘substitute*’ macro, have
|
||||
special indentation rules. These are defined in the .dir-locals.el file,
|
||||
which Emacs automatically uses. If you do not use Emacs, please make sure to
|
||||
let your editor know the rules.
|
||||
|
||||
We require all top-level procedures to carry a docstring. This requirement
|
||||
can be relaxed for simple private procedures in the (guix build …) name space,
|
||||
though.
|
||||
|
||||
Procedures should not have more than four positional parameters. Use keyword
|
||||
parameters for procedures that take more than four parameters.
|
||||
|
||||
* Commit Access
|
||||
|
||||
For frequent contributors, having write access to the repository is
|
||||
convenient. When you deem it necessary, feel free to ask for it on the
|
||||
mailing list. When you get commit access, please make sure to follow the
|
||||
policy below (discussions of the policy can take place on bug-guix@gnu.org.)
|
||||
policy below (discussions of the policy can take place on guix-devel@gnu.org.)
|
||||
|
||||
Non-trivial patches should always be posted to bug-guix@gnu.org (trivial
|
||||
Non-trivial patches should always be posted to guix-devel@gnu.org (trivial
|
||||
patches include fixing typos, etc.)
|
||||
|
||||
For patches that just add a new package, and a simple one, it’s OK to commit,
|
||||
@@ -146,7 +156,7 @@ package upgrades. We have a mailing list for commit notifications
|
||||
(guix-commits@gnu.org), so people can notice. Before pushing your changes,
|
||||
make sure to run ‘git pull --rebase’.
|
||||
|
||||
For anything else, please post to bug-guix@gnu.org and leave time for a
|
||||
For anything else, please post to guix-devel@gnu.org and leave time for a
|
||||
review, without committing anything. If you didn’t receive any reply
|
||||
after two weeks, and if you’re confident, it’s OK to commit.
|
||||
|
||||
|
||||
+11
-26
@@ -60,6 +60,8 @@ MODULES = \
|
||||
guix/build/download.scm \
|
||||
guix/build/cmake-build-system.scm \
|
||||
guix/build/gnu-build-system.scm \
|
||||
guix/build/gnu-dist.scm \
|
||||
guix/build/linux-initrd.scm \
|
||||
guix/build/perl-build-system.scm \
|
||||
guix/build/python-build-system.scm \
|
||||
guix/build/utils.scm \
|
||||
@@ -115,6 +117,13 @@ SH_TESTS = \
|
||||
tests/guix-hash.sh \
|
||||
tests/guix-package.sh
|
||||
|
||||
if BUILD_DAEMON
|
||||
|
||||
SH_TESTS += tests/guix-register.sh
|
||||
|
||||
endif BUILD_DAEMON
|
||||
|
||||
|
||||
TESTS = $(SCM_TESTS) $(SH_TESTS)
|
||||
|
||||
TEST_EXTENSIONS = .scm .sh
|
||||
@@ -141,6 +150,7 @@ EXTRA_DIST = \
|
||||
TODO \
|
||||
.dir-locals.el \
|
||||
build-aux/hydra/gnu-system.scm \
|
||||
build-aux/hydra/guix.scm \
|
||||
build-aux/check-available-binaries.scm \
|
||||
build-aux/download.scm \
|
||||
build-aux/list-packages.scm \
|
||||
@@ -185,32 +195,7 @@ $(guix_install_go_files): install-nobase_dist_guilemoduleDATA
|
||||
|
||||
SUBDIRS = po
|
||||
|
||||
info_TEXINFOS = doc/guix.texi
|
||||
EXTRA_DIST += \
|
||||
doc/fdl-1.3.texi \
|
||||
doc/images/bootstrap-graph.dot \
|
||||
doc/images/bootstrap-graph.eps
|
||||
|
||||
infoimagedir = $(infodir)/images
|
||||
dist_infoimage_DATA = doc/images/bootstrap-graph.png
|
||||
|
||||
# Try hard to obtain an image size and aspect that's reasonable for inclusion
|
||||
# in an Info or PDF document.
|
||||
DOT_OPTIONS = \
|
||||
-Tpng -Gratio=.9 -Gnodesep=.005 -Granksep=.00005 \
|
||||
-Nfontsize=9 -Nheight=.1 -Nwidth=.1
|
||||
|
||||
.dot.png:
|
||||
dot -Tpng $(DOT_OPTIONS) < "$<" > "$@.tmp"
|
||||
mv "$@.tmp" "$@"
|
||||
|
||||
.dot.eps:
|
||||
dot -Teps $(DOT_OPTIONS) < "$<" > "$@.tmp"
|
||||
mv "$@.tmp" "$@"
|
||||
|
||||
doc/guix.pdf: doc/images/bootstrap-graph.png
|
||||
doc/guix.info: doc/images/bootstrap-graph.png
|
||||
doc/guix.ps: doc/images/bootstrap-graph.eps
|
||||
include doc.am
|
||||
|
||||
if BUILD_DAEMON
|
||||
|
||||
|
||||
@@ -10,6 +10,113 @@ Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
|
||||
Please send Guix bug reports to bug-guix@gnu.org.
|
||||
|
||||
* Changes in 0.4 (since 0.3)
|
||||
|
||||
** Package management
|
||||
|
||||
*** New ‘--list-generations’ and ‘--delete-generations’ options
|
||||
|
||||
The ‘guix package’ command has these two new options, which make it easier to
|
||||
deal with a profile’s generation. See “Invoking guix package” in the manual.
|
||||
|
||||
*** New ‘guix-register’ program
|
||||
|
||||
This program allows the meta-data of a new store to be initialized, by
|
||||
copying info from an existing store. It is mostly an internal tool.
|
||||
|
||||
** Programming interfaces
|
||||
|
||||
*** New API to bootstrap Autotools-based packages
|
||||
|
||||
The (guix build-system gnu) has a new ‘dist-package’ procedure that takes a
|
||||
package object and source directory, and returns a new package object that
|
||||
runs ‘./bootstrap && make dist’ or anything similar.
|
||||
|
||||
*** ‘derivation’ and related procedures have a #:references-graphs parameter
|
||||
|
||||
This parameter instructs the build daemon to populate the derivation’s build
|
||||
tree with files containing the list of references of the given store files.
|
||||
This is useful to write code that copies a packages and all its dependencies
|
||||
to another storage device, such as a QEMU disk image.
|
||||
|
||||
*** Extended API to build a GNU system virtual machine image
|
||||
|
||||
The (gnu system vm) module has been augmented in many ways: the ‘qemu-image’
|
||||
procedure can now populate and initialize the image’s store; the new
|
||||
‘system-qemu-image’ procedure returns a QEMU image that runs dmd as its init
|
||||
system, has ‘login’ running on several consoles, has a set of installed
|
||||
packages, and where Guix can be used.
|
||||
|
||||
New (gnu system …) modules have been added to handle the configuration of the
|
||||
various parts of a GNU/Linux system. For instance, (gnu system dmd) provides
|
||||
support for instantiating dmd services; (gnu system linux) helps with Linux
|
||||
PAM configuration; and so on.
|
||||
|
||||
*** <derivation> objects supersede .drv file names in the API
|
||||
|
||||
‘derivation’ and similar procedures no longer return two values (a
|
||||
<derivation> and a .drv file name); they now return a single value, which is
|
||||
a <derivation> object. The <derivation> object embeds the corresponding .drv
|
||||
file name. See “Derivations” in the manual for details.
|
||||
|
||||
** GNU distribution
|
||||
|
||||
*** 60 new packages
|
||||
|
||||
apr, apr-util, cdparanoia, dbus-glib, dfc, dmd, dvdisaster, exiv2, fetchmail,
|
||||
freefont-ttf, freeglut, geeqie, git, gkrellm, glu, gnome-doc-utils,
|
||||
gst-plugins-base, gstreamer, guile-cairo, guile-lib, guile-xcb, guix, htop,
|
||||
itstool, lame, libextractor, libmicrohttpd, lightning, lzip, mingetty, mutt,
|
||||
net-base, net-tools, ocrad, pspp, python-babel, python-dateutil, python-pytz,
|
||||
python-setuptools, python-simplejson, python-wrapper, python2-babel,
|
||||
python2-dateutil, python2-mechanize, python2-pyicu, python2-pysqlite,
|
||||
python2-pytz, python2-setuptools, python2-simplejson, qemu-system-initrd,
|
||||
qemu-with-multiple-smb-shares, ripperx, shadow, ttf-bitstream-vera, units,
|
||||
valgrind, xmlto, xnee, yasm
|
||||
|
||||
*** 27 package updates
|
||||
|
||||
bigloo 4.0b, cairo 1.12.16, ddrescue 1.17, fontconfig 2.10.93, fplll 4.0.4,
|
||||
gcc 4.7.3, gcc 4.7.3, glibc 2.18, glibc 2.18, glibc-stripped-tarball 2.18,
|
||||
gnupg 2.0.21, gnutls 3.2.4, guile 2.0.9, guile 2.0.9, harfbuzz 0.9.21,
|
||||
imagemagick 6.8.6-9, libdrm 2.4.46, libgcrypt 1.5.3, libjpeg 9, libksba 1.3.0,
|
||||
linux-libre 3.11, m4 1.4.17, mpfrcx 0.4.2, pari-gp 2.5.4, python 2.7.5, python
|
||||
3.3.2, texlive 2013
|
||||
|
||||
*** Fontconfig font search path made more convenient
|
||||
|
||||
Fontconfig, the library used by many graphical applications, such as those
|
||||
based on GTK+, now knows where to find the default set of fonts. Additional
|
||||
fonts installed in the user profile are automatically picked up.
|
||||
|
||||
*** More GUI applications
|
||||
|
||||
The ‘emacs’ and ‘racket’ packages are now linked against GTK+. New GTK+
|
||||
applications have been added (see above.)
|
||||
|
||||
*** Packaging guidelines
|
||||
|
||||
The documentation of packaging guidelines has been augmented. See the manual
|
||||
under “GNU Distribution”.
|
||||
|
||||
*** Support for Python 3 along with Python 2
|
||||
|
||||
Python 3 has been added to the distribution, and Python packages that support
|
||||
it are now built for both Python 2 and Python 3. See the “Python Modules”
|
||||
section of the manual for details.
|
||||
|
||||
** Internationalization
|
||||
|
||||
Updated translations: eo.
|
||||
|
||||
** Bugs fixed
|
||||
|
||||
*** Workarounds for Guile 2.0.5 now work on Debian derivatives
|
||||
*** The dependency graph image has correct size in PDF output
|
||||
*** 'ldd' now works correctly on x86_64
|
||||
*** Xorg server test suite no longer fails (http://bugs.gnu.org/15392)
|
||||
*** module-init-tools now builds (http://bugs.gnu.org/15182, http://bugs.gnu.org/15187)
|
||||
*** Hop 2.4 builds with newer Bigloo (http://bugs.gnu.org/15194)
|
||||
|
||||
* Changes in 0.3 (since 0.2)
|
||||
|
||||
|
||||
@@ -33,23 +33,16 @@ When `--disable-daemon' was passed, you instead need the following:
|
||||
|
||||
- [[http://nixos.org/nix/][Nix]]
|
||||
|
||||
Optionally, packages from Nixpkgs may be transparently reused from Guix.
|
||||
For this to work, you need to have a checkout of the Nixpkgs repository;
|
||||
the `--with-nixpkgs' option allows you to let `configure' know where the
|
||||
Nixpkgs checkout is.
|
||||
* Installation
|
||||
|
||||
- [[http://nixos.org/nixpkgs/][Nixpkgs]]
|
||||
See the manual for the installation instructions, either by running
|
||||
|
||||
When building Guix from a checkout, the following packages are also
|
||||
required:
|
||||
info -f doc/guix.info "(guix) Installation"
|
||||
|
||||
- [[http://www.gnu.org/software/autoconf/][GNU Autoconf]]
|
||||
- [[http://www.gnu.org/software/automake/][GNU Automake]]
|
||||
- [[http://www.gnu.org/software/gettext/][GNU Gettext]]
|
||||
or by checking the [[http://www.gnu.org/software/guix/manual/guix.html#Installation][web copy of the manual]].
|
||||
|
||||
Run the "bootstrap" script to download the Nix daemon and to generate the
|
||||
build system infrastructure using autoconf. It reports an error if an
|
||||
inappropriate version of the above packages is being used.
|
||||
For information on installation from a Git checkout, please see the ‘HACKING’
|
||||
file.
|
||||
|
||||
* Installing Guix from Guix
|
||||
|
||||
|
||||
@@ -11,8 +11,13 @@ infrastructure help:
|
||||
Daniel Clark <dclark@pobox.com>
|
||||
Alexandru Cojocaru <xojoc@gmx.com>
|
||||
Aleix Conchillo Flaqué <aconchillo@gmail.com>
|
||||
John Darrington <john@cellform.com>
|
||||
Rafael Ferreira <rafael.f.f1@gmail.com>
|
||||
Christian Grothoff <christian@grothoff.org>
|
||||
Matthew Lien <bluet@bluet.org>
|
||||
Yutaka Niibe <gniibe@fsij.org>
|
||||
Alex Sassmannshausen <alex.sassmannshausen@gmail.com>
|
||||
Cyrill Schenkel <cyrill.schenkel@gmail.com>
|
||||
Jason Self <jself@gnu.org>
|
||||
Alen Skondro <askondro@gmail.com>
|
||||
Matthias Wachs <wachs@net.in.tum.de>
|
||||
|
||||
@@ -101,19 +101,6 @@ The Guildhall is Guile’s packaging system. It should be easy to add a
|
||||
‘guildhall-build-system’ that does the right thing based on guildhall
|
||||
recipes.
|
||||
|
||||
* gnu-build-system: produce a ‘debug’ derivation
|
||||
|
||||
Set a .gnu_debuglink in the main derivations to point to the sibling
|
||||
file name (only the basename, to not retain a dependency on the ‘debug’
|
||||
derivation.)
|
||||
|
||||
For /nix/store/xyz-foobar/bin/foo, we should have
|
||||
/nix/store/abc-foobar-debug/lib/nix/store/xyz-foobar/bin/foo.debug (info
|
||||
"(gdb) Separate Debug Files").
|
||||
|
||||
Users should have a default GDB setting with ~/.guix-profile/lib/debug
|
||||
as their ‘debug-file-directory’.
|
||||
|
||||
* build-expression->derivation: define `%system' in the builder
|
||||
|
||||
Would allow build expressions to have system-dependent code, like
|
||||
@@ -129,6 +116,16 @@ Support sophisticated collision handling when building a union: check
|
||||
whether the colliding files are identical, honor per-package priorities,
|
||||
etc.
|
||||
|
||||
* add GUIX_ALLOW_EXPENSIVE_TESTS
|
||||
|
||||
Tests that need to download stuff or otherwise take a long time would only be
|
||||
run when that is defined.
|
||||
|
||||
* add "guix challenge"
|
||||
|
||||
Would download a substitute, and compare its contents against a (hopefully
|
||||
locally-built) copy.
|
||||
|
||||
* guix package
|
||||
|
||||
** add ‘--list-generations’, and ‘--delete-generations’
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
#f))))
|
||||
|
||||
(let ((result (every (compose (warn (cut has-substitutes? store <>))
|
||||
derivation-path->output-path)
|
||||
derivation->output-path)
|
||||
total)))
|
||||
(when result
|
||||
(format (current-error-port) "~a packages found substitutable~%"
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
|
||||
(use-modules (guix store)
|
||||
(guix packages)
|
||||
(guix derivations)
|
||||
((guix utils) #:select (%current-system))
|
||||
(gnu packages)
|
||||
(gnu packages base)
|
||||
@@ -58,7 +59,8 @@
|
||||
(define* (package->alist store package system
|
||||
#:optional (package-derivation package-derivation))
|
||||
"Convert PACKAGE to an alist suitable for Hydra."
|
||||
`((derivation . ,(package-derivation store package system))
|
||||
`((derivation . ,(derivation-file-name
|
||||
(package-derivation store package system)))
|
||||
(description . ,(package-synopsis package))
|
||||
(long-description . ,(package-description package))
|
||||
(license . ,(package-license package))
|
||||
@@ -79,7 +81,7 @@ SYSTEM."
|
||||
,(cute package->alist store package system
|
||||
(cut package-cross-derivation <> <> target <>))))
|
||||
|
||||
(define %packages-to-cross-build
|
||||
(define %core-packages
|
||||
(list gmp mpfr mpc coreutils findutils diffutils patch sed grep
|
||||
gawk gettext hello guile-2.0
|
||||
%bootstrap-binaries-tarball
|
||||
@@ -89,6 +91,9 @@ SYSTEM."
|
||||
%guile-bootstrap-tarball
|
||||
%bootstrap-tarballs))
|
||||
|
||||
(define %packages-to-cross-build
|
||||
%core-packages)
|
||||
|
||||
(define %cross-targets
|
||||
'("mips64el-linux-gnu"
|
||||
"mips64el-linux-gnuabi64"))
|
||||
@@ -106,6 +111,11 @@ SYSTEM."
|
||||
(_
|
||||
(list (%current-system)))))
|
||||
|
||||
(define subset
|
||||
(match (assoc-ref arguments 'subset)
|
||||
("core" 'core) ; only build core packages
|
||||
(_ 'all))) ; build everything
|
||||
|
||||
(define job-name
|
||||
(compose string->symbol package-full-name))
|
||||
|
||||
@@ -127,11 +137,23 @@ SYSTEM."
|
||||
inputs))))
|
||||
%final-inputs))))
|
||||
(append-map (lambda (system)
|
||||
(fold-packages (lambda (package result)
|
||||
(if (member package base-packages)
|
||||
result
|
||||
(cons (package-job store (job-name package)
|
||||
package system)
|
||||
result)))
|
||||
(cross-jobs system)))
|
||||
(case subset
|
||||
((all)
|
||||
;; Build everything.
|
||||
(fold-packages (lambda (package result)
|
||||
(if (member package base-packages)
|
||||
result
|
||||
(cons (package-job store (job-name package)
|
||||
package system)
|
||||
result)))
|
||||
(cross-jobs system)))
|
||||
((core)
|
||||
;; Build core packages only.
|
||||
(append (map (lambda (package)
|
||||
(package-job store (job-name package)
|
||||
package system))
|
||||
%core-packages)
|
||||
(cross-jobs system)))
|
||||
(else
|
||||
(error "unknown subset" subset))))
|
||||
systems)))
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;;
|
||||
;;; This file defines build jobs of Guix itself for the Hydra continuation
|
||||
;;; integration tool.
|
||||
;;;
|
||||
|
||||
;; Attempt to use our very own Guix modules.
|
||||
(eval-when (compile load eval)
|
||||
|
||||
;; Ignore any available .go, and force recompilation. This is because our
|
||||
;; checkout in the store has mtime set to the epoch, and thus .go files look
|
||||
;; newer, even though they may not correspond.
|
||||
(set! %fresh-auto-compile #t)
|
||||
|
||||
(and=> (assoc-ref (current-source-location) 'filename)
|
||||
(lambda (file)
|
||||
(let ((dir (string-append (dirname file) "/../..")))
|
||||
(format (current-error-port) "prepending ~s to the load path~%"
|
||||
dir)
|
||||
(set! %load-path (cons dir %load-path))))))
|
||||
|
||||
|
||||
(use-modules (guix store)
|
||||
(guix packages)
|
||||
(guix utils)
|
||||
(guix derivations)
|
||||
(guix build-system gnu)
|
||||
(gnu packages version-control)
|
||||
(gnu packages package-management)
|
||||
(gnu packages graphviz)
|
||||
(srfi srfi-1)
|
||||
(srfi srfi-26)
|
||||
(ice-9 match))
|
||||
|
||||
;; XXX: Debugging hack: since `hydra-eval-guile-jobs' redirects the output
|
||||
;; port to the bit bucket, let us write to the error port instead.
|
||||
(setvbuf (current-error-port) _IOLBF)
|
||||
(set-current-output-port (current-error-port))
|
||||
|
||||
(define* (package->alist store package system
|
||||
#:optional (package-derivation package-derivation))
|
||||
"Convert PACKAGE to an alist suitable for Hydra."
|
||||
`((derivation . ,(derivation-file-name
|
||||
(package-derivation store package system)))
|
||||
(description . ,(package-synopsis package))
|
||||
(long-description . ,(package-description package))
|
||||
(license . ,(package-license package))
|
||||
(home-page . ,(package-home-page package))
|
||||
(maintainers . ("bug-guix@gnu.org"))))
|
||||
|
||||
(define (tarball-package checkout nix-checkout)
|
||||
"Return a package that does `make distcheck' from CHECKOUT, a directory
|
||||
containing a Git checkout of Guix."
|
||||
(let ((dist (dist-package guix checkout)))
|
||||
(package (inherit dist)
|
||||
(location (source-properties->location (current-source-location)))
|
||||
(arguments (substitute-keyword-arguments (package-arguments dist)
|
||||
((#:phases p)
|
||||
`(alist-cons-before
|
||||
'autoreconf 'set-nix-submodule
|
||||
(lambda _
|
||||
;; Tell Git to use the Nix checkout that Hydra gave us.
|
||||
(zero?
|
||||
(system* "git" "config" "submodule.nix-upstream.url"
|
||||
,nix-checkout)))
|
||||
,p))))
|
||||
(native-inputs `(("git" ,git)
|
||||
("graphviz" ,graphviz)
|
||||
,@(package-native-inputs dist))))))
|
||||
|
||||
(define (hydra-jobs store arguments)
|
||||
"Return Hydra jobs."
|
||||
(define systems
|
||||
(match (filter-map (match-lambda
|
||||
(('system . value)
|
||||
value)
|
||||
(_ #f))
|
||||
arguments)
|
||||
((lst ..1)
|
||||
lst)
|
||||
(_
|
||||
(list (%current-system)))))
|
||||
|
||||
(define guix-checkout
|
||||
(assq-ref arguments 'guix))
|
||||
|
||||
(define nix-checkout
|
||||
(assq-ref arguments 'nix))
|
||||
|
||||
(format (current-error-port) "using checkout ~s (Nix: ~s)~%"
|
||||
guix-checkout nix-checkout)
|
||||
(let ((guix (assq-ref guix-checkout 'file-name))
|
||||
(nix (assq-ref nix-checkout 'file-name)))
|
||||
`((tarball . ,(cute package->alist store
|
||||
(tarball-package guix nix)
|
||||
(%current-system))))))
|
||||
+227
-59
@@ -5,6 +5,7 @@ exec guile -l "$0" \
|
||||
!#
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2013 Alex Sassmannshausen <alex.sassmannshausen@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -28,6 +29,7 @@ exec guile -l "$0" \
|
||||
#:use-module (guix gnu-maintenance)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (sxml simple)
|
||||
#:use-module (sxml fold)
|
||||
#:use-module (web uri)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (srfi srfi-1)
|
||||
@@ -47,8 +49,13 @@ exec guile -l "$0" \
|
||||
(equal? (gnu-package-name package) name))
|
||||
gnu))))
|
||||
|
||||
(define (package->sxml package)
|
||||
"Return HTML-as-SXML representing PACKAGE."
|
||||
(define (package->sxml package previous description-ids remaining)
|
||||
"Return 3 values: the HTML-as-SXML for PACKAGE added to all previously
|
||||
collected package output in PREVIOUS, a list of DESCRIPTION-IDS and the number
|
||||
of packages still to be processed in REMAINING. Also Introduces a call to the
|
||||
JavaScript prep_pkg_descs function as part of the output of PACKAGE, every
|
||||
time the length of DESCRIPTION-IDS, increasing, is 15 or when REMAINING,
|
||||
decreasing, is 1."
|
||||
(define (source-url package)
|
||||
(let ((loc (package-location package)))
|
||||
(and loc
|
||||
@@ -65,7 +72,8 @@ exec guile -l "$0" \
|
||||
(let ((uri (license-uri license)))
|
||||
(case (and=> (and uri (string->uri uri)) uri-scheme)
|
||||
((http https)
|
||||
`(div (a (@ (href ,uri))
|
||||
`(div (a (@ (href ,uri)
|
||||
(title "Link to the full license"))
|
||||
,(license-name license))))
|
||||
(else
|
||||
`(div ,(license-name license) " ("
|
||||
@@ -78,7 +86,8 @@ exec guile -l "$0" \
|
||||
(define (url system)
|
||||
`(a (@ (href ,(string-append "http://hydra.gnu.org/job/gnu/master/"
|
||||
(package-full-name package) "."
|
||||
system)))
|
||||
system))
|
||||
(title "View the status of this architecture's build at Hydra"))
|
||||
,system))
|
||||
|
||||
`(div "status: "
|
||||
@@ -89,53 +98,223 @@ exec guile -l "$0" \
|
||||
(and=> (lookup-gnu-package name)
|
||||
gnu-package-logo))
|
||||
|
||||
(define (insert-tr description-id js?)
|
||||
(define (insert-js-call description-ids)
|
||||
"Return an sxml call to prep_pkg_descs, with up to 15 elements of
|
||||
description-ids as formal parameters."
|
||||
`(script (@ (type "text/javascript"))
|
||||
,(format #f "prep_pkg_descs(~a)"
|
||||
(string-append "'"
|
||||
(string-join description-ids "', '")
|
||||
"'"))))
|
||||
|
||||
(let ((description-ids (cons description-id description-ids)))
|
||||
`(tr (td ,(if (gnu-package? package)
|
||||
`(img (@ (src "/graphics/gnu-head-mini.png")
|
||||
(alt "Part of GNU")
|
||||
(title "Part of GNU")))
|
||||
""))
|
||||
(td (a (@ (href ,(source-url package))
|
||||
(title "Link to the Guix package source code"))
|
||||
,(package-name package) " "
|
||||
,(package-version package)))
|
||||
(td (span ,(package-synopsis package))
|
||||
(div (@ (id ,description-id))
|
||||
,(match (package-logo (package-name package))
|
||||
((? string? url)
|
||||
`(img (@ (src ,url)
|
||||
(height "35")
|
||||
(class "package-logo")
|
||||
(alt ("Logo of " ,(package-name package))))))
|
||||
(_ #f))
|
||||
(p ,(package-description package))
|
||||
,(license package)
|
||||
(a (@ (href ,(package-home-page package))
|
||||
(title "Link to the package's website"))
|
||||
,(package-home-page package))
|
||||
,(status package)
|
||||
,(if js?
|
||||
(insert-js-call description-ids)
|
||||
""))))))
|
||||
|
||||
(let ((description-id (symbol->string
|
||||
(gensym (package-name package)))))
|
||||
`(tr (td ,(if (gnu-package? package)
|
||||
`(img (@ (src "/graphics/gnu-head-mini.png")))
|
||||
""))
|
||||
(td (a (@ (href ,(source-url package)))
|
||||
,(package-name package) " "
|
||||
,(package-version package)))
|
||||
(td (@ (colspan "2") (height "0"))
|
||||
(a (@ (href "javascript:void(0)")
|
||||
(title "show/hide package description")
|
||||
(onClick ,(format #f "javascript:show_hide('~a')"
|
||||
description-id)))
|
||||
,(package-synopsis package))
|
||||
(div (@ (id ,description-id)
|
||||
(style "position: relative; display: none;"))
|
||||
,(match (package-logo (package-name package))
|
||||
((? string? url)
|
||||
`(img (@ (src ,url)
|
||||
(height "35em")
|
||||
(style "float: left; padding-right: 1em;"))))
|
||||
(_ #f))
|
||||
(p ,(package-description package))
|
||||
,(license package)
|
||||
(a (@ (href ,(package-home-page package)))
|
||||
,(package-home-page package))
|
||||
,(status package))))))
|
||||
(cond ((= remaining 1) ; Last package in packages
|
||||
(values
|
||||
(reverse ; Fold has reversed packages
|
||||
(cons (insert-tr description-id 'js) ; Prefix final sxml
|
||||
previous))
|
||||
'() ; No more work to do
|
||||
0)) ; End of the line
|
||||
((= (length description-ids) 15) ; Time for a JS call
|
||||
(values
|
||||
(cons (insert-tr description-id 'js)
|
||||
previous) ; Prefix new sxml
|
||||
'() ; Reset description-ids
|
||||
(1- remaining))) ; Reduce remaining
|
||||
(else ; Insert another row, and build description-ids
|
||||
(values
|
||||
(cons (insert-tr description-id #f)
|
||||
previous) ; Prefix new sxml
|
||||
(cons description-id description-ids) ; Update description-ids
|
||||
(1- remaining)))))) ; Reduce remaining
|
||||
|
||||
(define (packages->sxml packages)
|
||||
"Return an HTML page as SXML describing PACKAGES."
|
||||
`(div
|
||||
(h2 "GNU Guix Package List")
|
||||
(div (@ (style "margin-bottom: 5em;"))
|
||||
(div (@ (id "intro"))
|
||||
(div
|
||||
(img (@ (src "graphics/guix-logo.small.png")
|
||||
(alt "GNU Guix and the GNU System")
|
||||
(height "83em"))))
|
||||
"This web page lists the packages currently provided by the "
|
||||
(a (@ (href "manual/guix.html#GNU-Distribution"))
|
||||
"GNU system distribution")
|
||||
" of "
|
||||
(a (@ (href "/software/guix/guix.html")) "GNU Guix") ". "
|
||||
"Our " (a (@ (href "http://hydra.gnu.org/jobset/gnu/master"))
|
||||
"continuous integration system")
|
||||
" shows their current build status.")
|
||||
(table (@ (style "border: none;"))
|
||||
,@(map package->sxml packages))))
|
||||
(height "83"))))
|
||||
(p "This web page lists the packages currently provided by the "
|
||||
(a (@ (href "manual/guix.html#GNU-Distribution"))
|
||||
"GNU system distribution")
|
||||
" of "
|
||||
(a (@ (href "/software/guix/guix.html")) "GNU Guix") ". "
|
||||
"Our " (a (@ (href "http://hydra.gnu.org/jobset/gnu/master"))
|
||||
"continuous integration system")
|
||||
" shows their current build status."))
|
||||
(table (@ (id "packages"))
|
||||
(tr (th "GNU?")
|
||||
(th "Package version")
|
||||
(th "Package details"))
|
||||
,@(fold-values package->sxml packages '() '() (length packages)))
|
||||
(a (@ (href "#intro")
|
||||
(title "Back to top.")
|
||||
(id "top"))
|
||||
"^")))
|
||||
|
||||
|
||||
(define (insert-css)
|
||||
"Return the CSS for the list-packages page."
|
||||
(format #t
|
||||
"<style>
|
||||
/* license: CC0 */
|
||||
a {
|
||||
transition: all 0.3s;
|
||||
}
|
||||
div#intro {
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
div#intro div, div#intro p {
|
||||
padding:0.5em;
|
||||
}
|
||||
div#intro div {
|
||||
float:left;
|
||||
}
|
||||
div#intro img {
|
||||
float:left;
|
||||
padding:0.75em;
|
||||
}
|
||||
table#packages, table#packages tr, table#packages tbody, table#packages td, table#packages th {
|
||||
border: 0px solid black;
|
||||
clear: both;
|
||||
}
|
||||
table#packages tr:nth-child(even) {
|
||||
background-color: #FFF;
|
||||
}
|
||||
table#packages tr:nth-child(odd) {
|
||||
background-color: #EEE;
|
||||
}
|
||||
table#packages tr:hover, table#packages tr:focus, table#packages tr:active {
|
||||
background-color: #DDD;
|
||||
}
|
||||
table#packages tr:first-child, table#packages tr:first-child:hover, table#packages tr:first-child:focus, table#packages tr:first-child:active {
|
||||
background-color: #333;
|
||||
color: #fff;
|
||||
}
|
||||
table#packages td {
|
||||
margin:0px;
|
||||
padding:0.2em 0.5em;
|
||||
}
|
||||
table#packages td:first-child {
|
||||
width:10%;
|
||||
text-align:center;
|
||||
}
|
||||
table#packages td:nth-child(2) {
|
||||
width:30%;
|
||||
}
|
||||
table#packages td:last-child {
|
||||
width:60%;
|
||||
}
|
||||
img.package-logo {
|
||||
float: left;
|
||||
padding: 0.75em;
|
||||
}
|
||||
table#packages span {
|
||||
font-weight: 700;
|
||||
}
|
||||
table#packages span a {
|
||||
float: right;
|
||||
font-weight: 500;
|
||||
}
|
||||
a#top {
|
||||
position:fixed;
|
||||
right:10px;
|
||||
bottom:10px;
|
||||
font-size:150%;
|
||||
background-color:#EEE;
|
||||
padding:10px 7.5px 0 7.5px;
|
||||
text-decoration:none;
|
||||
color:#000;
|
||||
border-radius:5px;
|
||||
}
|
||||
a#top:hover, a#top:focus {
|
||||
background-color:#333;
|
||||
color:#fff;
|
||||
}
|
||||
</style>"))
|
||||
|
||||
(define (insert-js)
|
||||
"Return the JavaScript for the list-packages page."
|
||||
(format #t
|
||||
"<script type=\"text/javascript\">
|
||||
// license: CC0
|
||||
function show_hide(idThing)
|
||||
{
|
||||
if(document.getElementById && document.createTextNode) {
|
||||
var thing = document.getElementById(idThing);
|
||||
/* Used to change the link text, depending on whether description is
|
||||
collapsed or expanded */
|
||||
var thingLink = thing.previousSibling.lastChild.firstChild;
|
||||
if (thing) {
|
||||
if (thing.style.display == \"none\") {
|
||||
thing.style.display = \"\";
|
||||
thingLink.data = 'Collapse';
|
||||
} else {
|
||||
thing.style.display = \"none\";
|
||||
thingLink.data = 'Expand';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Add controllers used for collapse/expansion of package descriptions */
|
||||
function prep(idThing)
|
||||
{
|
||||
var tdThing = document.getElementById(idThing).parentNode;
|
||||
if (tdThing) {
|
||||
var aThing = tdThing.firstChild.appendChild(document.createElement('a'));
|
||||
aThing.setAttribute('href', 'javascript:void(0)');
|
||||
aThing.setAttribute('title', 'show/hide package description');
|
||||
aThing.appendChild(document.createTextNode('Expand'));
|
||||
aThing.onclick=function(){show_hide(idThing);};
|
||||
/* aThing.onkeypress=function(){show_hide(idThing);}; */
|
||||
}
|
||||
}
|
||||
/* Take n element IDs, prepare them for javascript enhanced
|
||||
display and hide the IDs by default. */
|
||||
function prep_pkg_descs()
|
||||
{
|
||||
if(document.getElementById && document.createTextNode) {
|
||||
for(var i=0; i<arguments.length; i++) {
|
||||
prep(arguments[i])
|
||||
show_hide(arguments[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>"))
|
||||
|
||||
|
||||
(define (list-packages . args)
|
||||
@@ -153,26 +332,15 @@ with gnu.org server-side include and all that."
|
||||
(string<? (package-name p1) (package-name p2))))))
|
||||
(format #t "<!--#include virtual=\"/server/html5-header.html\" -->
|
||||
<!-- Parent-Version: 1.70 $ -->
|
||||
|
||||
<title>GNU Guix - GNU Distribution - GNU Project</title>
|
||||
<!--#include virtual=\"/server/banner.html\" -->
|
||||
")
|
||||
(insert-css)
|
||||
(insert-js)
|
||||
(format #t "<!--#include virtual=\"/server/banner.html\" -->")
|
||||
|
||||
<script language=\"javascript\" type=\"text/javascript\">
|
||||
// license: CC0
|
||||
function show_hide(idThing)
|
||||
{
|
||||
var thing = document.getElementById(idThing);
|
||||
if (thing) {
|
||||
if (thing.style.display == \"none\") {
|
||||
thing.style.display = \"\";
|
||||
} else {
|
||||
thing.style.display = \"none\";
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>")
|
||||
(display (sxml->xml (packages->sxml packages)))
|
||||
(format #t "<!--#include virtual=\"/server/footer.html\" -->
|
||||
(sxml->xml (packages->sxml packages))
|
||||
(format #t "</div>
|
||||
<!--#include virtual=\"/server/footer.html\" -->
|
||||
<div id=\"footer\">
|
||||
|
||||
<p>Please send general FSF & GNU inquiries to
|
||||
|
||||
+6
-2
@@ -2,12 +2,12 @@
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ(2.68)
|
||||
AC_INIT([GNU Guix], [0.3], [bug-guix@gnu.org], [guix],
|
||||
AC_INIT([GNU Guix], [0.4], [bug-guix@gnu.org], [guix],
|
||||
[http://www.gnu.org/software/guix/])
|
||||
AC_CONFIG_AUX_DIR([build-aux])
|
||||
|
||||
AM_INIT_AUTOMAKE([1.12 gnu silent-rules subdir-objects \
|
||||
color-tests parallel-tests])
|
||||
color-tests parallel-tests -Woverride])
|
||||
|
||||
AC_CONFIG_SRCDIR([guix.scm])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
@@ -121,6 +121,10 @@ AC_CACHE_SAVE
|
||||
|
||||
m4_include([config-daemon.ac])
|
||||
|
||||
dnl `dot' (from the Graphviz package) is only needed for maintainers.
|
||||
dnl See `HACKING' for more info.
|
||||
AM_MISSING_PROG([DOT], [dot])
|
||||
|
||||
AC_CONFIG_FILES([Makefile
|
||||
po/Makefile.in
|
||||
guix/config.scm])
|
||||
|
||||
@@ -25,6 +25,8 @@ CLEANFILES += $(BUILT_SOURCES)
|
||||
|
||||
noinst_LIBRARIES = libformat.a libutil.a libstore.a
|
||||
|
||||
AM_CXXFLAGS = -Wall
|
||||
|
||||
libformat_a_SOURCES = \
|
||||
nix/boost/format/free_funcs.cc \
|
||||
nix/boost/format/parsing.cc \
|
||||
@@ -119,6 +121,7 @@ libstore_a_CXXFLAGS = \
|
||||
$(SQLITE3_CFLAGS) $(LIBGCRYPT_CFLAGS)
|
||||
|
||||
bin_PROGRAMS = guix-daemon
|
||||
sbin_PROGRAMS = guix-register
|
||||
|
||||
guix_daemon_SOURCES = \
|
||||
nix/nix-daemon/nix-daemon.cc \
|
||||
@@ -135,6 +138,21 @@ guix_daemon_LDADD = \
|
||||
guix_daemon_headers = \
|
||||
nix/nix-daemon/shared.hh
|
||||
|
||||
|
||||
guix_register_SOURCES = \
|
||||
nix/guix-register/guix-register.cc
|
||||
|
||||
guix_register_CPPFLAGS = \
|
||||
$(libutil_a_CPPFLAGS) \
|
||||
$(libstore_a_CPPFLAGS) \
|
||||
-I$(top_srcdir)/nix/libstore
|
||||
|
||||
# XXX: Should we start using shared libs?
|
||||
guix_register_LDADD = \
|
||||
libstore.a libutil.a libformat.a -lbz2 \
|
||||
$(SQLITE3_LIBS) $(LIBGCRYPT_LIBS)
|
||||
|
||||
|
||||
libexec_PROGRAMS = nix-setuid-helper
|
||||
nix_setuid_helper_SOURCES = \
|
||||
nix/nix-setuid-helper/nix-setuid-helper.cc
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
# GNU Guix --- Functional package management for GNU
|
||||
# Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
# Copyright © 2013 Andreas Enge <andreas@enge.fr>
|
||||
#
|
||||
# This file is part of GNU Guix.
|
||||
#
|
||||
# GNU Guix is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3 of the License, or (at
|
||||
# your option) any later version.
|
||||
#
|
||||
# GNU Guix is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
info_TEXINFOS = doc/guix.texi
|
||||
EXTRA_DIST += \
|
||||
doc/fdl-1.3.texi \
|
||||
doc/images/bootstrap-graph.dot \
|
||||
doc/images/bootstrap-graph.eps
|
||||
|
||||
infoimagedir = $(infodir)/images
|
||||
dist_infoimage_DATA = doc/images/bootstrap-graph.png
|
||||
|
||||
# Try hard to obtain an image size and aspect that's reasonable for inclusion
|
||||
# in an Info or PDF document.
|
||||
DOT_OPTIONS = \
|
||||
-Gratio=.9 -Gnodesep=.005 -Granksep=.00005 \
|
||||
-Nfontsize=9 -Nheight=.1 -Nwidth=.1
|
||||
|
||||
.dot.png:
|
||||
$(DOT) -Tpng $(DOT_OPTIONS) < "$<" > "$@.tmp"
|
||||
mv "$@.tmp" "$@"
|
||||
|
||||
.dot.pdf:
|
||||
$(DOT) -Tpdf $(DOT_OPTIONS) < "$<" > "$@.tmp"
|
||||
mv "$@.tmp" "$@"
|
||||
|
||||
.dot.eps:
|
||||
$(DOT) -Teps $(DOT_OPTIONS) < "$<" > "$@.tmp"
|
||||
mv "$@.tmp" "$@"
|
||||
|
||||
# We cannot add new dependencies to `doc/guix.pdf' & co. (info "(automake)
|
||||
# Extending"). Using the `-local' rules is imperfect, because they may be
|
||||
# triggered after the main rule. Oh, well.
|
||||
pdf-local: doc/images/bootstrap-graph.pdf
|
||||
info-local: doc/images/bootstrap-graph.png
|
||||
ps-local: doc/images/bootstrap-graph.eps
|
||||
+230
-69
@@ -23,6 +23,7 @@
|
||||
@title GNU Guix Reference Manual
|
||||
@subtitle Using the GNU Guix Functional Package Manager
|
||||
@author Ludovic Courtès
|
||||
@author Andreas Enge
|
||||
@author Nikita Karetnikov
|
||||
|
||||
@page
|
||||
@@ -30,8 +31,9 @@
|
||||
Edition @value{EDITION} @*
|
||||
@value{UPDATED} @*
|
||||
|
||||
Copyright @copyright{} @value{YEARS} Ludovic Court@`es
|
||||
Copyright @copyright{} @value{YEARS} Ludovic Court@`es, Andreas Enge, Nikita Karetnikov
|
||||
|
||||
@ifinfo
|
||||
@quotation
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
@@ -40,6 +42,8 @@ Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
|
||||
copy of the license is included in the section entitled ``GNU Free
|
||||
Documentation License''.
|
||||
@end quotation
|
||||
@end ifinfo
|
||||
|
||||
@end titlepage
|
||||
|
||||
@copying
|
||||
@@ -64,8 +68,9 @@ Documentation License.''
|
||||
This document describes GNU Guix version @value{VERSION}, a functional
|
||||
package management tool written for the GNU system.
|
||||
|
||||
|
||||
@quotation
|
||||
Copyright @copyright{} @value{YEARS} Ludovic Courtès
|
||||
Copyright @copyright{} @value{YEARS} Ludovic Courtès, Andreas Enge, Nikita Karetnikov
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
@@ -244,6 +249,17 @@ The @code{guix-daemon} program may then be run as @code{root} with:
|
||||
# guix-daemon --build-users-group=guix-builder
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
This way, the daemon starts build processes in a chroot, under one of
|
||||
the @code{guix-builder} users. On GNU/Linux, by default, the chroot
|
||||
environment contains nothing but the @code{/dev} and @code{/proc}
|
||||
directories@footnote{On some systems @code{/dev/shm}, which supports
|
||||
shared memory, is a symlink to another directory such as
|
||||
@code{/run/shm}, that is @emph{not} is the chroot. When that is the
|
||||
case, shared memory support is unavailable in the chroot environment.
|
||||
The workaround is to make sure that @file{/dev/shm} is directly a
|
||||
@code{tmpfs} mount point.}.
|
||||
|
||||
Guix may also be used in a single-user setup, with @command{guix-daemon}
|
||||
running as an unprivileged user. However, to maximize non-interference
|
||||
of build processes, the daemon still needs to perform certain operations
|
||||
@@ -521,9 +537,9 @@ Thus, when installing MPC, the MPFR and GMP libraries also get installed
|
||||
in the profile; removing MPC also removes MPFR and GMP---unless they had
|
||||
also been explicitly installed independently.
|
||||
|
||||
Besides, packages sometime rely on the definition of environment
|
||||
Besides, packages sometimes rely on the definition of environment
|
||||
variables for their search paths (see explanation of
|
||||
@code{--search-paths} below.) Any missing or possibly incorrect
|
||||
@code{--search-paths} below). Any missing or possibly incorrect
|
||||
environment variable definitions are reported here.
|
||||
|
||||
@c XXX: keep me up-to-date
|
||||
@@ -567,9 +583,8 @@ When combined with options such as @code{--install}, roll back occurs
|
||||
before any other actions.
|
||||
|
||||
When rolling back from the first generation that actually contains
|
||||
installed packages, the profile is made to point to the @dfn{empty
|
||||
profile}, also known as @dfn{profile zero}---i.e., it contains no files
|
||||
apart from its own meta-data.
|
||||
installed packages, the profile is made to point to the @dfn{zeroth
|
||||
generation}, which contains no files apart from its own meta-data.
|
||||
|
||||
Installing, removing, or upgrading packages from a generation that has
|
||||
been rolled back to overwrites previous future generations. Thus, the
|
||||
@@ -643,9 +658,9 @@ version: 7.2alpha6
|
||||
|
||||
@item --list-installed[=@var{regexp}]
|
||||
@itemx -I [@var{regexp}]
|
||||
List currently installed packages in the specified profile. When
|
||||
@var{regexp} is specified, list only installed packages whose name
|
||||
matches @var{regexp}.
|
||||
List the currently installed packages in the specified profile, with the
|
||||
most recently installed packages shown last. When @var{regexp} is
|
||||
specified, list only installed packages whose name matches @var{regexp}.
|
||||
|
||||
For each installed package, print the following items, separated by
|
||||
tabs: the package name, its version string, the part of the package that
|
||||
@@ -663,6 +678,61 @@ For each package, print the following items separated by tabs: its name,
|
||||
its version string, the parts of the package (@pxref{Packages with
|
||||
Multiple Outputs}), and the source location of its definition.
|
||||
|
||||
@item --list-generations[=@var{pattern}]
|
||||
@itemx -l [@var{pattern}]
|
||||
Return a list of generations along with their creation dates; for each
|
||||
generation, show the installed packages, with the most recently
|
||||
installed packages shown last. Note that the zeroth generation is never
|
||||
shown.
|
||||
|
||||
For each installed package, print the following items, separated by
|
||||
tabs: the name of a package, its version string, the part of the package
|
||||
that is installed (@pxref{Packages with Multiple Outputs}), and the
|
||||
location of this package in the store.
|
||||
|
||||
When @var{pattern} is used, the command returns only matching
|
||||
generations. Valid patterns include:
|
||||
|
||||
@itemize
|
||||
@item @emph{Integers and comma-separated integers}. Both patterns denote
|
||||
generation numbers. For instance, @code{--list-generations=1} returns
|
||||
the first one.
|
||||
|
||||
And @code{--list-generations=1,8,2} outputs three generations in the
|
||||
specified order. Neither spaces nor trailing commas are allowed.
|
||||
|
||||
@item @emph{Ranges}. @code{--list-generations=2..9} prints the
|
||||
specified generations and everything in between. Note that the start of
|
||||
a range must be lesser than its end.
|
||||
|
||||
It is also possible to omit the endpoint. For example,
|
||||
@code{--list-generations=2..}, returns all generations starting from the
|
||||
second one.
|
||||
|
||||
@item @emph{Durations}. You can also get the last @emph{N}@tie{}days, weeks,
|
||||
or months by passing an integer along with the first letter of the
|
||||
duration. For example, @code{--list-generations=20d} lists generations
|
||||
that are up to 20 days old.
|
||||
@end itemize
|
||||
|
||||
@item --delete-generations[=@var{pattern}]
|
||||
@itemx -d [@var{pattern}]
|
||||
When @var{pattern} is omitted, delete all generations except the current
|
||||
one.
|
||||
|
||||
This command accepts the same patterns as @option{--list-generations}.
|
||||
When @var{pattern} is specified, delete the matching generations. When
|
||||
@var{pattern} specifies a duration, generations @emph{older} than the
|
||||
specified duration match. For instance, @code{--delete-generations=1m}
|
||||
deletes generations that are more than one month old.
|
||||
|
||||
If the current generation matches, it is deleted atomically---i.e., by
|
||||
switching to the previous available generation. Note that the zeroth
|
||||
generation is never deleted.
|
||||
|
||||
Note that deleting generations prevents roll-back to them.
|
||||
Consequently, this command must be used with care.
|
||||
|
||||
@end table
|
||||
|
||||
@node Packages with Multiple Outputs
|
||||
@@ -730,6 +800,12 @@ deleted. The set of garbage collector roots includes default user
|
||||
profiles, and may be augmented with @command{guix build --root}, for
|
||||
example (@pxref{Invoking guix build}).
|
||||
|
||||
Prior to running @code{guix gc --collect-garbage} to make space, it is
|
||||
often useful to remove old generations from user profiles; that way, old
|
||||
package builds referenced by those generations can be reclaimed. This
|
||||
is achieved by running @code{guix package --delete-generations}
|
||||
(@pxref{Invoking guix package}).
|
||||
|
||||
The @command{guix gc} command has three modes of operation: it can be
|
||||
used to garbage-collect any dead files (the default), to delete specific
|
||||
files (the @code{--delete} option), or to print garbage-collector
|
||||
@@ -971,8 +1047,8 @@ The build actions it prescribes may then be realized by using the
|
||||
@code{build-derivations} procedure (@pxref{The Store}).
|
||||
|
||||
@deffn {Scheme Procedure} package-derivation @var{store} @var{package} [@var{system}]
|
||||
Return the derivation path and corresponding @code{<derivation>} object
|
||||
of @var{package} for @var{system} (@pxref{Derivations}).
|
||||
Return the @code{<derivation>} object of @var{package} for @var{system}
|
||||
(@pxref{Derivations}).
|
||||
|
||||
@var{package} must be a valid @code{<package>} object, and @var{system}
|
||||
must be a string denoting the target system type---e.g.,
|
||||
@@ -988,8 +1064,8 @@ package for some other system:
|
||||
|
||||
@deffn {Scheme Procedure} package-cross-derivation @var{store} @
|
||||
@var{package} @var{target} [@var{system}]
|
||||
Return the derivation path and corresponding @code{<derivation>} object
|
||||
of @var{package} cross-built from @var{system} to @var{target}.
|
||||
Return the @code{<derivation>} object of @var{package} cross-built from
|
||||
@var{system} to @var{target}.
|
||||
|
||||
@var{target} must be a valid GNU triplet denoting the target hardware
|
||||
and operating system, such as @code{"mips64el-linux-gnu"}
|
||||
@@ -1045,15 +1121,16 @@ argument.
|
||||
Return @code{#t} when @var{path} is a valid store path.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} add-text-to-store @var{server} @var{name} @var{text} @var{references}
|
||||
@deffn {Scheme Procedure} add-text-to-store @var{server} @var{name} @var{text} [@var{references}]
|
||||
Add @var{text} under file @var{name} in the store, and return its store
|
||||
path. @var{references} is the list of store paths referred to by the
|
||||
resulting store path.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} build-derivations @var{server} @var{derivations}
|
||||
Build @var{derivations} (a list of derivation paths), and return when
|
||||
the worker is done building them. Return @code{#t} on success.
|
||||
Build @var{derivations} (a list of @code{<derivation>} objects or
|
||||
derivation paths), and return when the worker is done building them.
|
||||
Return @code{#t} on success.
|
||||
@end deffn
|
||||
|
||||
@c FIXME
|
||||
@@ -1102,13 +1179,18 @@ derivations as Scheme objects, along with procedures to create and
|
||||
otherwise manipulate derivations. The lowest-level primitive to create
|
||||
a derivation is the @code{derivation} procedure:
|
||||
|
||||
@deffn {Scheme Procedure} derivation @var{store} @var{name} @var{system} @var{builder} @var{args} @var{env-vars} @var{inputs} [#:outputs '("out")] [#:hash #f] [#:hash-algo #f] [#:hash-mode #f]
|
||||
Build a derivation with the given arguments. Return the resulting store
|
||||
path and @code{<derivation>} object.
|
||||
@deffn {Scheme Procedure} derivation @var{store} @var{name} @var{builder} @var{args} [#:outputs '("out")] [#:hash #f] [#:hash-algo #f] [#:hash-mode #f] [#:inputs '()] [#:env-vars '()] [#:system (%current-system)] [#:references-graphs #f]
|
||||
Build a derivation with the given arguments, and return the resulting
|
||||
@code{<derivation>} object.
|
||||
|
||||
When @var{hash}, @var{hash-algo}, and @var{hash-mode} are given, a
|
||||
@dfn{fixed-output derivation} is created---i.e., one whose result is
|
||||
known in advance, such as a file download.
|
||||
|
||||
When @var{references-graphs} is true, it must be a list of file
|
||||
name/store path pairs. In that case, the reference graph of each store
|
||||
path is exported in the build environment in the corresponding file, in
|
||||
a simple text format.
|
||||
@end deffn
|
||||
|
||||
@noindent
|
||||
@@ -1121,23 +1203,20 @@ to a Bash executable in the store:
|
||||
(guix store)
|
||||
(guix derivations))
|
||||
|
||||
(call-with-values
|
||||
(lambda ()
|
||||
(let ((builder ; add the Bash script to the store
|
||||
(add-text-to-store store "my-builder.sh"
|
||||
"echo hello world > $out\n" '())))
|
||||
(derivation store "foo" (%current-system)
|
||||
bash `("-e" ,builder)
|
||||
'(("HOME" . "/homeless")) '())))
|
||||
list)
|
||||
@result{} ("/nix/store/@dots{}-foo.drv" #<<derivation> @dots{}>)
|
||||
(let ((builder ; add the Bash script to the store
|
||||
(add-text-to-store store "my-builder.sh"
|
||||
"echo hello world > $out\n" '())))
|
||||
(derivation store "foo"
|
||||
bash `("-e" ,builder)
|
||||
#:env-vars '(("HOME" . "/homeless"))))
|
||||
@result{} #<derivation /nix/store/@dots{}-foo.drv => /nix/store/@dots{}-foo>
|
||||
@end lisp
|
||||
|
||||
As can be guessed, this primitive is cumbersome to use directly. An
|
||||
improved variant is @code{build-expression->derivation}, which allows
|
||||
the caller to directly pass a Guile expression as the build script:
|
||||
|
||||
@deffn {Scheme Procedure} build-expression->derivation @var{store} @var{name} @var{system} @var{exp} @var{inputs} [#:outputs '("out")] [#:hash #f] [#:hash-algo #f] [#:env-vars '()] [#:modules '()] [#:guile-for-build #f]
|
||||
@deffn {Scheme Procedure} build-expression->derivation @var{store} @var{name} @var{system} @var{exp} @var{inputs} [#:outputs '("out")] [#:hash #f] [#:hash-algo #f] [#:env-vars '()] [#:modules '()] [#:references-graphs #f] [#:guile-for-build #f]
|
||||
Return a derivation that executes Scheme expression @var{exp} as a
|
||||
builder for derivation @var{name}. @var{inputs} must be a list of
|
||||
@code{(name drv-path sub-drv)} tuples; when @var{sub-drv} is omitted,
|
||||
@@ -1158,6 +1237,8 @@ terminates by passing the result of @var{exp} to @code{exit}; thus, when
|
||||
@var{exp} is built using @var{guile-for-build} (a derivation). When
|
||||
@var{guile-for-build} is omitted or is @code{#f}, the value of the
|
||||
@code{%guile-for-build} fluid is used instead.
|
||||
|
||||
See the @code{derivation} procedure for the meaning of @var{references-graphs}.
|
||||
@end deffn
|
||||
|
||||
@noindent
|
||||
@@ -1173,8 +1254,7 @@ containing one file:
|
||||
(build-expression->derivation store "goo" (%current-system)
|
||||
builder '()))
|
||||
|
||||
@result{} "/nix/store/@dots{}-goo.drv"
|
||||
@result{} #<<derivation> @dots{}>
|
||||
@result{} #<derivation /nix/store/@dots{}-goo.drv => @dots{}>
|
||||
@end lisp
|
||||
|
||||
@cindex strata of code
|
||||
@@ -1484,7 +1564,7 @@ tools that help users exert that freedom.
|
||||
@menu
|
||||
* Installing Debugging Files:: Feeding the debugger.
|
||||
* Package Modules:: Packages from the programmer's viewpoint.
|
||||
* Adding New Packages:: Growing the distribution.
|
||||
* Packaging Guidelines:: Growing the distribution.
|
||||
* Bootstrapping:: GNU/Linux built from scratch.
|
||||
* Porting:: Targeting another platform or kernel.
|
||||
@end menu
|
||||
@@ -1569,41 +1649,14 @@ distribution. The root of this dependency graph is a small set of
|
||||
bootstrap)} module. For more information on bootstrapping,
|
||||
@ref{Bootstrapping}.
|
||||
|
||||
@node Adding New Packages
|
||||
@section Adding New Packages
|
||||
@node Packaging Guidelines
|
||||
@section Packaging Guidelines
|
||||
|
||||
The GNU distribution is nascent and may well lack some of your favorite
|
||||
packages. This section describes how you can help make the distribution
|
||||
grow. @ref{Contributing}, for additional information on how you can
|
||||
grow. @xref{Contributing}, for additional information on how you can
|
||||
help.
|
||||
|
||||
@menu
|
||||
* Packaging Guidelines:: What goes into the distribution.
|
||||
* From the Source Tarball to the Package:: The story of a package.
|
||||
@end menu
|
||||
|
||||
@node Packaging Guidelines
|
||||
@subsection Packaging Guidelines
|
||||
|
||||
@c Adapted from http://www.gnu.org/philosophy/philosophy.html.
|
||||
|
||||
The GNU operating system has been developed so that users can have
|
||||
freedom in their computing. GNU is @dfn{free software}, meaning that
|
||||
users have the @url{http://www.gnu.org/philosophy/free-sw.html,four
|
||||
essential freedoms}: to run the program, to study and change the program
|
||||
in source code form, to redistribute exact copies, and to distribute
|
||||
modified versions. Packages found in the GNU distribution provide only
|
||||
software that conveys these four freedoms.
|
||||
|
||||
In addition, the GNU distribution follow the
|
||||
@url{http://www.gnu.org/distros/free-system-distribution-guidelines.html,free
|
||||
software distribution guidelines}. Among other things, these guidelines
|
||||
reject non-free firmware, recommendations of non-free software, and
|
||||
discuss ways to deal with trademarks and patents.
|
||||
|
||||
@node From the Source Tarball to the Package
|
||||
@subsection From the Source Tarball, to the Package Definition, to the Binary Package
|
||||
|
||||
Free software packages are usually distributed in the form of
|
||||
@dfn{source code tarballs}---typically @file{tar.gz} files that contain
|
||||
all the source files. Adding a package to the distribution means
|
||||
@@ -1649,6 +1702,114 @@ package automatically downloads binaries from there (except when using
|
||||
needed is to review and apply the patch.
|
||||
|
||||
|
||||
@menu
|
||||
* Software Freedom:: What may go into the distribution.
|
||||
* Package Naming:: What's in a name?
|
||||
* Version Numbers:: When the name is not enough.
|
||||
* Python Modules:: Taming the snake.
|
||||
@end menu
|
||||
|
||||
@node Software Freedom
|
||||
@subsection Software Freedom
|
||||
|
||||
@c Adapted from http://www.gnu.org/philosophy/philosophy.html.
|
||||
|
||||
The GNU operating system has been developed so that users can have
|
||||
freedom in their computing. GNU is @dfn{free software}, meaning that
|
||||
users have the @url{http://www.gnu.org/philosophy/free-sw.html,four
|
||||
essential freedoms}: to run the program, to study and change the program
|
||||
in source code form, to redistribute exact copies, and to distribute
|
||||
modified versions. Packages found in the GNU distribution provide only
|
||||
software that conveys these four freedoms.
|
||||
|
||||
In addition, the GNU distribution follow the
|
||||
@url{http://www.gnu.org/distros/free-system-distribution-guidelines.html,free
|
||||
software distribution guidelines}. Among other things, these guidelines
|
||||
reject non-free firmware, recommendations of non-free software, and
|
||||
discuss ways to deal with trademarks and patents.
|
||||
|
||||
|
||||
@node Package Naming
|
||||
@subsection Package Naming
|
||||
|
||||
A package has actually two names associated with it:
|
||||
First, there is the name of the @emph{Scheme variable}, the one following
|
||||
@code{define-public}. By this name, the package can be made known in the
|
||||
Scheme code, for instance as input to another package. Second, there is
|
||||
the string in the @code{name} field of a package definition. This name
|
||||
is used by package management commands such as
|
||||
@command{guix package} and @command{guix build}.
|
||||
|
||||
Both are usually the same and correspond to the lowercase conversion of the
|
||||
project name chosen upstream. For instance, the GNUnet project is packaged
|
||||
as @code{gnunet}. We do not add @code{lib} prefixes for library packages,
|
||||
unless these are already part of the official project name. But see
|
||||
@ref{Python Modules} for special rules concerning modules for
|
||||
the Python language.
|
||||
|
||||
|
||||
@node Version Numbers
|
||||
@subsection Version Numbers
|
||||
|
||||
We usually package only the latest version of a given free software
|
||||
project. But sometimes, for instance for incompatible library versions,
|
||||
two (or more) versions of the same package are needed. These require
|
||||
different Scheme variable names. We use the name as defined
|
||||
in @ref{Package Naming}
|
||||
for the most recent version; previous versions use the same name, suffixed
|
||||
by @code{-} and the smallest prefix of the version number that may
|
||||
distinguish the two versions.
|
||||
|
||||
The name inside the package definition is the same for all versions of a
|
||||
package and does not contain any version number.
|
||||
|
||||
For instance, the versions 2.24.20 and 3.9.12 of GTK+ may be packaged as follows:
|
||||
|
||||
@example
|
||||
(define-public gtk+
|
||||
(package
|
||||
(name "gtk+")
|
||||
(version "3.9.12")
|
||||
...))
|
||||
(define-public gtk+-2
|
||||
(package
|
||||
(name "gtk+")
|
||||
(version "2.24.20")
|
||||
...))
|
||||
@end example
|
||||
If we also wanted GTK+ 3.8.2, this would be packaged as
|
||||
@example
|
||||
(define-public gtk+-3.8
|
||||
(package
|
||||
(name "gtk+")
|
||||
(version "3.8.2")
|
||||
...))
|
||||
@end example
|
||||
|
||||
|
||||
@node Python Modules
|
||||
@subsection Python Modules
|
||||
|
||||
We currently package Python 2 and Python 3, under the Scheme variable names
|
||||
@code{python-2} and @code{python} as explained in @ref{Version Numbers}.
|
||||
To avoid confusion and naming clashes with other programming languages, it
|
||||
seems desirable that the name of a package for a Python module contains
|
||||
the word @code{python}.
|
||||
|
||||
Some modules are compatible with only one version of Python, others with both.
|
||||
If the package Foo compiles only with Python 3, we name it
|
||||
@code{python-foo}; if it compiles only with Python 2, we name it
|
||||
@code{python2-foo}. If it is compatible with both versions, we create two
|
||||
packages with the corresponding names.
|
||||
|
||||
If a project already contains the word @code{python}, we drop this;
|
||||
for instance, the module python-dateutil is packaged under the names
|
||||
@code{python-dateutil} and @code{python2-dateutil}.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@node Bootstrapping
|
||||
@section Bootstrapping
|
||||
|
||||
@@ -1677,13 +1838,13 @@ Binutils, libc, and the other packages mentioned above---the
|
||||
@dfn{bootstrap binaries}.
|
||||
|
||||
These bootstrap binaries are ``taken for granted'', though we can also
|
||||
re-create them if needed (more on that later.)
|
||||
re-create them if needed (more on that later).
|
||||
|
||||
@unnumberedsubsec Preparing to Use the Bootstrap Binaries
|
||||
|
||||
@c As of Emacs 24.3, Info-mode displays the image, but since it's a
|
||||
@c large image, it's hard to scroll. Oh well.
|
||||
@image{images/bootstrap-graph,,,Dependency graph of the early bootstrap derivations}
|
||||
@image{images/bootstrap-graph,6in,,Dependency graph of the early bootstrap derivations}
|
||||
|
||||
The figure above shows the very beginning of the dependency graph of the
|
||||
distribution, corresponding to the package definitions of the @code{(gnu
|
||||
@@ -1805,7 +1966,7 @@ In practice, there may be some complications. First, it may be that the
|
||||
extended GNU triplet that specifies an ABI (like the @code{eabi} suffix
|
||||
above) is not recognized by all the GNU tools. Typically, glibc
|
||||
recognizes some of these, whereas GCC uses an extra @code{--with-abi}
|
||||
configure flag (see @code{gcc.scm} for examples of how to handle this.)
|
||||
configure flag (see @code{gcc.scm} for examples of how to handle this).
|
||||
Second, some of the required packages could fail to build for that
|
||||
platform. Lastly, the generated binaries could be broken for some
|
||||
reason.
|
||||
@@ -1818,8 +1979,8 @@ reason.
|
||||
This project is a cooperative effort, and we need your help to make it
|
||||
grow! Please get in touch with us on @email{guix-devel@@gnu.org}. We
|
||||
welcome ideas, bug reports, patches, and anything that may be helpful to
|
||||
the project. We particularly welcome help on packaging (@pxref{Adding
|
||||
New Packages}).
|
||||
the project. We particularly welcome help on packaging
|
||||
(@pxref{Packaging Guidelines}).
|
||||
|
||||
Please see the
|
||||
@url{http://git.savannah.gnu.org/cgit/guix.git/tree/HACKING,
|
||||
|
||||
+28
-5
@@ -24,6 +24,7 @@ GNU_SYSTEM_MODULES = \
|
||||
gnu/packages.scm \
|
||||
gnu/packages/acl.scm \
|
||||
gnu/packages/algebra.scm \
|
||||
gnu/packages/apr.scm \
|
||||
gnu/packages/aspell.scm \
|
||||
gnu/packages/attr.scm \
|
||||
gnu/packages/autotools.scm \
|
||||
@@ -53,6 +54,7 @@ GNU_SYSTEM_MODULES = \
|
||||
gnu/packages/fdisk.scm \
|
||||
gnu/packages/file.scm \
|
||||
gnu/packages/flex.scm \
|
||||
gnu/packages/fonts.scm \
|
||||
gnu/packages/fontutils.scm \
|
||||
gnu/packages/freeipmi.scm \
|
||||
gnu/packages/gawk.scm \
|
||||
@@ -61,10 +63,14 @@ GNU_SYSTEM_MODULES = \
|
||||
gnu/packages/gd.scm \
|
||||
gnu/packages/gdb.scm \
|
||||
gnu/packages/gdbm.scm \
|
||||
gnu/packages/geeqie.scm \
|
||||
gnu/packages/gettext.scm \
|
||||
gnu/packages/ghostscript.scm \
|
||||
gnu/packages/gkrellm.scm \
|
||||
gnu/packages/glib.scm \
|
||||
gnu/packages/global.scm \
|
||||
gnu/packages/gnome.scm \
|
||||
gnu/packages/gnunet.scm \
|
||||
gnu/packages/gnupg.scm \
|
||||
gnu/packages/gnutls.scm \
|
||||
gnu/packages/gperf.scm \
|
||||
@@ -74,6 +80,7 @@ GNU_SYSTEM_MODULES = \
|
||||
gnu/packages/grub.scm \
|
||||
gnu/packages/grue-hunter.scm \
|
||||
gnu/packages/gsasl.scm \
|
||||
gnu/packages/gstreamer.scm \
|
||||
gnu/packages/gtk.scm \
|
||||
gnu/packages/guile.scm \
|
||||
gnu/packages/gv.scm \
|
||||
@@ -87,7 +94,6 @@ GNU_SYSTEM_MODULES = \
|
||||
gnu/packages/ld-wrapper.scm \
|
||||
gnu/packages/less.scm \
|
||||
gnu/packages/lesstif.scm \
|
||||
gnu/packages/libapr.scm \
|
||||
gnu/packages/libdaemon.scm \
|
||||
gnu/packages/libevent.scm \
|
||||
gnu/packages/libffi.scm \
|
||||
@@ -100,6 +106,7 @@ GNU_SYSTEM_MODULES = \
|
||||
gnu/packages/libunistring.scm \
|
||||
gnu/packages/libusb.scm \
|
||||
gnu/packages/libunwind.scm \
|
||||
gnu/packages/lightning.scm \
|
||||
gnu/packages/linux.scm \
|
||||
gnu/packages/linux-initrd.scm \
|
||||
gnu/packages/lout.scm \
|
||||
@@ -108,8 +115,9 @@ GNU_SYSTEM_MODULES = \
|
||||
gnu/packages/lua.scm \
|
||||
gnu/packages/lvm.scm \
|
||||
gnu/packages/m4.scm \
|
||||
gnu/packages/mailutils.scm \
|
||||
gnu/packages/mail.scm \
|
||||
gnu/packages/make-bootstrap.scm \
|
||||
gnu/packages/maths.scm \
|
||||
gnu/packages/mit-krb5.scm \
|
||||
gnu/packages/mp3.scm \
|
||||
gnu/packages/multiprecision.scm \
|
||||
@@ -120,9 +128,11 @@ GNU_SYSTEM_MODULES = \
|
||||
gnu/packages/nettle.scm \
|
||||
gnu/packages/noweb.scm \
|
||||
gnu/packages/ocaml.scm \
|
||||
gnu/packages/ocrad.scm \
|
||||
gnu/packages/oggvorbis.scm \
|
||||
gnu/packages/openldap.scm \
|
||||
gnu/packages/openssl.scm \
|
||||
gnu/packages/package-management.scm \
|
||||
gnu/packages/parted.scm \
|
||||
gnu/packages/patchelf.scm \
|
||||
gnu/packages/pcre.scm \
|
||||
@@ -155,6 +165,7 @@ GNU_SYSTEM_MODULES = \
|
||||
gnu/packages/tmux.scm \
|
||||
gnu/packages/tor.scm \
|
||||
gnu/packages/unrtf.scm \
|
||||
gnu/packages/valgrind.scm \
|
||||
gnu/packages/version-control.scm \
|
||||
gnu/packages/vim.scm \
|
||||
gnu/packages/vpn.scm \
|
||||
@@ -165,18 +176,29 @@ GNU_SYSTEM_MODULES = \
|
||||
gnu/packages/wordnet.scm \
|
||||
gnu/packages/xlockmore.scm \
|
||||
gnu/packages/xml.scm \
|
||||
gnu/packages/xnee.scm \
|
||||
gnu/packages/xorg.scm \
|
||||
gnu/packages/yasm.scm \
|
||||
gnu/packages/zile.scm \
|
||||
gnu/packages/zip.scm \
|
||||
\
|
||||
gnu/system/dmd.scm \
|
||||
gnu/system/grub.scm \
|
||||
gnu/system/linux.scm \
|
||||
gnu/system/shadow.scm \
|
||||
gnu/system/vm.scm
|
||||
|
||||
patchdir = $(guilemoduledir)/gnu/packages/patches
|
||||
dist_patch_DATA = \
|
||||
gnu/packages/patches/apr-skip-getservbyname-test.patch \
|
||||
gnu/packages/patches/automake-skip-amhello-tests.patch \
|
||||
gnu/packages/patches/avahi-localstatedir.patch \
|
||||
gnu/packages/patches/bigloo-gc-shebangs.patch \
|
||||
gnu/packages/patches/binutils-ld-new-dtags.patch \
|
||||
gnu/packages/patches/cdparanoia-fpic.patch \
|
||||
gnu/packages/patches/cmake-fix-tests.patch \
|
||||
gnu/packages/patches/cpio-gets-undeclared.patch \
|
||||
gnu/packages/patches/dbus-localstatedir.patch \
|
||||
gnu/packages/patches/diffutils-gets-undeclared.patch \
|
||||
gnu/packages/patches/emacs-configure-sh.patch \
|
||||
gnu/packages/patches/findutils-absolute-paths.patch \
|
||||
@@ -188,19 +210,18 @@ dist_patch_DATA = \
|
||||
gnu/packages/patches/glib-tests-homedir.patch \
|
||||
gnu/packages/patches/glib-tests-prlimit.patch \
|
||||
gnu/packages/patches/glibc-bootstrap-system.patch \
|
||||
gnu/packages/patches/glibc-ldd-x86_64.patch \
|
||||
gnu/packages/patches/glibc-no-ld-so-cache.patch \
|
||||
gnu/packages/patches/gnutls-fix-tests-on-32-bits-system.patch \
|
||||
gnu/packages/patches/grub-gets-undeclared.patch \
|
||||
gnu/packages/patches/guile-1.8-cpp-4.5.patch \
|
||||
gnu/packages/patches/guile-default-utf8.patch \
|
||||
gnu/packages/patches/guile-linux-syscalls.patch \
|
||||
gnu/packages/patches/guile-relocatable.patch \
|
||||
gnu/packages/patches/libapr-skip-getservbyname-test.patch \
|
||||
gnu/packages/patches/hop-bigloo-4.0b.patch \
|
||||
gnu/packages/patches/libevent-dns-tests.patch \
|
||||
gnu/packages/patches/libtool-skip-tests.patch \
|
||||
gnu/packages/patches/m4-gets-undeclared.patch \
|
||||
gnu/packages/patches/m4-readlink-EINVAL.patch \
|
||||
gnu/packages/patches/m4-s_isdir.patch \
|
||||
gnu/packages/patches/make-impure-dirs.patch \
|
||||
gnu/packages/patches/mcron-install.patch \
|
||||
gnu/packages/patches/perl-no-sys-dirs.patch \
|
||||
@@ -209,10 +230,12 @@ dist_patch_DATA = \
|
||||
gnu/packages/patches/python-fix-dbm.patch \
|
||||
gnu/packages/patches/qemu-multiple-smb-shares.patch \
|
||||
gnu/packages/patches/readline-link-ncurses.patch \
|
||||
gnu/packages/patches/ripperx-libm.patch \
|
||||
gnu/packages/patches/scheme48-tests.patch \
|
||||
gnu/packages/patches/tar-gets-undeclared.patch \
|
||||
gnu/packages/patches/tcsh-fix-autotest.patch \
|
||||
gnu/packages/patches/teckit-cstdio.patch \
|
||||
gnu/packages/patches/valgrind-glibc.patch \
|
||||
gnu/packages/patches/vpnc-script.patch \
|
||||
gnu/packages/patches/w3m-fix-compile.patch \
|
||||
gnu/packages/patches/xpdf-constchar.patch
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
(define-public mpfrcx
|
||||
(package
|
||||
(name "mpfrcx")
|
||||
(version "0.4.1")
|
||||
(version "0.4.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@@ -40,7 +40,7 @@
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1rrc75chxyicqjgg5mfhgbz7p9mx1fgh0qlx14a82m25vfhifnd1"))))
|
||||
"0grw66b255r574lvll1bqccm5myj2m8ajzsjaygcyq9zjnnbnhhy"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("gmp" ,gmp)
|
||||
("mpfr" ,mpfr)
|
||||
@@ -60,14 +60,14 @@ multiplication routines such as Toom–Cook and the FFT. ")
|
||||
(define-public fplll
|
||||
(package
|
||||
(name "fplll")
|
||||
(version "4.0.2")
|
||||
(version "4.0.4")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://perso.ens-lyon.fr/damien.stehle/fplll/libfplll-"
|
||||
version ".tar.gz"))
|
||||
(sha256 (base32
|
||||
"0zkifm4s77cl2qib905lxpwvlwf6liy8q7bnmvfdfyz0fbgxl8z8"))))
|
||||
"1cbiby7ykis4z84swclpysrljmqhfcllpkcbll1m08rzskgb1a6b"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("gmp" ,gmp)
|
||||
("mpfr" ,mpfr)))
|
||||
@@ -78,43 +78,17 @@ solve the shortest vector problem.")
|
||||
(license lgpl2.1+)
|
||||
(home-page "http://perso.ens-lyon.fr/damien.stehle/fplll/")))
|
||||
|
||||
(define-public gsl
|
||||
(package
|
||||
(name "gsl")
|
||||
(version "1.15")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/gsl/gsl-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"18qf6jzz1r3mzb5qynywv4xx3z9g61hgkbpkdrhbgqh2g7jhgfc5"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "http://www.gnu.org/software/gsl/")
|
||||
(synopsis "Numerical library for C and C++")
|
||||
(description
|
||||
"The GNU Scientific Library (GSL) is a numerical library for C
|
||||
and C++ programmers. It is free software under the GNU General
|
||||
Public License.
|
||||
|
||||
The library provides a wide range of mathematical routines such
|
||||
as random number generators, special functions and least-squares
|
||||
fitting. There are over 1000 functions in total with an
|
||||
extensive test suite.")
|
||||
(license gpl3+)))
|
||||
|
||||
(define-public pari-gp
|
||||
(package
|
||||
(name "pari-gp")
|
||||
(version "2.5.3")
|
||||
(version "2.5.4")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://pari.math.u-bordeaux.fr/pub/pari/unix/pari-"
|
||||
version ".tar.gz"))
|
||||
(sha256 (base32
|
||||
"0zsjccnnv00kwj2gk3ww2v530kjin1rgj8p8hbl4pwcnwc7m68gl"))))
|
||||
"0gpsj5n8d1gyl7nq2y915sscs3d334ryrv8qgjdwqf3cr95f2dwz"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("gmp" ,gmp)
|
||||
("perl" ,perl)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages libapr)
|
||||
(define-module (gnu packages apr)
|
||||
#:use-module (guix licenses)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
@@ -25,9 +25,9 @@
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages autotools))
|
||||
|
||||
(define-public libapr
|
||||
(define-public apr
|
||||
(package
|
||||
(name "libapr")
|
||||
(name "apr")
|
||||
(version "1.4.8")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
@@ -44,7 +44,7 @@
|
||||
(inputs `(("perl" ,perl)
|
||||
("libtool" ,libtool)
|
||||
("patch/skip-test"
|
||||
,(search-patch "libapr-skip-getservbyname-test.patch"))))
|
||||
,(search-patch "apr-skip-getservbyname-test.patch"))))
|
||||
(home-page "http://apr.apache.org/")
|
||||
(synopsis "The Apache Portable Runtime Library")
|
||||
(description
|
||||
@@ -57,9 +57,9 @@ built, relieving them of the need to code special-case conditions to work
|
||||
around or take advantage of platform-specific deficiencies or features.")
|
||||
(license asl2.0)))
|
||||
|
||||
(define-public libaprutil
|
||||
(define-public apr-util
|
||||
(package
|
||||
(name "libaprutil")
|
||||
(name "apr-util")
|
||||
(version "1.5.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
@@ -70,19 +70,19 @@ around or take advantage of platform-specific deficiencies or features.")
|
||||
"19qjxpckb9p4j9pbk8kcirg6k5vqnjrqhnk9xx2c5m9964p3vkls"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("libapr" ,libapr)))
|
||||
`(("apr" ,apr)))
|
||||
(arguments
|
||||
'(#:phases
|
||||
(alist-replace
|
||||
'configure
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out"))
|
||||
(libapr (assoc-ref inputs "libapr")))
|
||||
(apr (assoc-ref inputs "apr")))
|
||||
(setenv "CONFIG_SHELL" (which "bash"))
|
||||
(zero?
|
||||
(system* "./configure"
|
||||
(string-append "--prefix=" out)
|
||||
(string-append "--with-apr=" libapr)))))
|
||||
(string-append "--with-apr=" apr)))))
|
||||
%standard-phases)))
|
||||
(home-page "http://apr.apache.org/")
|
||||
(synopsis "One of the Apache Portable Runtime Library companions")
|
||||
@@ -21,6 +21,7 @@
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages gdbm)
|
||||
#:use-module (gnu packages libdaemon)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
@@ -42,13 +43,15 @@
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:configure-flags '("--with-distro=none"
|
||||
"--localstatedir=/var" ; for the DBus socket
|
||||
"--disable-python"
|
||||
"--disable-mono"
|
||||
"--disable-doxygen-doc"
|
||||
"--disable-xmltoman"
|
||||
"--enable-tests"
|
||||
"--disable-qt3" "--disable-qt4"
|
||||
"--disable-gtk" "--disable-gtk3")))
|
||||
"--disable-gtk" "--disable-gtk3")
|
||||
#:patches (list (assoc-ref %build-inputs "patch/localstatedir"))))
|
||||
(inputs
|
||||
`(("expat" ,expat)
|
||||
("glib" ,glib)
|
||||
@@ -56,7 +59,10 @@
|
||||
("libdaemon" ,libdaemon)
|
||||
("intltool" ,intltool)
|
||||
("pkg-config" ,pkg-config)
|
||||
("gdbm" ,gdbm)))
|
||||
("gdbm" ,gdbm)
|
||||
|
||||
("patch/localstatedir"
|
||||
,(search-patch "avahi-localstatedir.patch"))))
|
||||
(synopsis "Avahi, an mDNS/DNS-SD implementation")
|
||||
(description
|
||||
"Avahi is a system which facilitates service discovery on a local
|
||||
|
||||
@@ -387,14 +387,14 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.")
|
||||
(define-public glibc
|
||||
(package
|
||||
(name "glibc")
|
||||
(version "2.17")
|
||||
(version "2.18")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/glibc/glibc-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0gmjnn4kma9vgizccw1jv979xw55a8n1nkk94gg0l3hy80vy6539"))))
|
||||
"18spla703zav8dq9fw7rbzkyv9qfisxb26p7amg1x3wjh7iy3d1c"))))
|
||||
(build-system gnu-build-system)
|
||||
|
||||
;; Glibc's <limits.h> refers to <linux/limit.h>, for instance, so glibc
|
||||
@@ -409,7 +409,8 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.")
|
||||
|
||||
(arguments
|
||||
`(#:out-of-source? #t
|
||||
#:patches (list (assoc-ref %build-inputs "patch/ld.so.cache"))
|
||||
#:patches (list (assoc-ref %build-inputs "patch/ld.so.cache")
|
||||
(assoc-ref %build-inputs "patch/ldd"))
|
||||
#:configure-flags
|
||||
(list "--enable-add-ons"
|
||||
"--sysconfdir=/etc"
|
||||
@@ -422,7 +423,6 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.")
|
||||
(assoc-ref %outputs "locales")
|
||||
"/share/locale")
|
||||
|
||||
|
||||
(string-append "--with-headers="
|
||||
(assoc-ref %build-inputs "linux-headers")
|
||||
"/include")
|
||||
@@ -496,6 +496,8 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.")
|
||||
|
||||
(inputs `(("patch/ld.so.cache"
|
||||
,(search-patch "glibc-no-ld-so-cache.patch"))
|
||||
("patch/ldd"
|
||||
,(search-patch "glibc-ldd-x86_64.patch"))
|
||||
("static-bash" ,(static-package bash-light))))
|
||||
(synopsis "The GNU C Library")
|
||||
(description
|
||||
@@ -566,7 +568,7 @@ with the Linux kernel.")
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"13xd30ngwhqmj7w216ghd5knvg047hzpc0xca5l297g5cwb62hza"))))))
|
||||
"1dh7nzmfxs8fps4bzcd2lz5fz24zxy2123a99avxsk34jh6bk7id"))))))
|
||||
(home-page "http://www.iana.org/time-zones")
|
||||
(synopsis "Database of current and historical time zones")
|
||||
(description "The Time Zone Database (often called tz or zoneinfo)
|
||||
|
||||
@@ -184,9 +184,10 @@ cd $out
|
||||
$out/bin/guile --version~%"
|
||||
mkdir xz guile tar)
|
||||
(list mkdir xz guile tar))))
|
||||
(derivation store name system
|
||||
bash `(,builder) '()
|
||||
`((,bash) (,builder)))))))))
|
||||
(derivation store name
|
||||
bash `(,builder)
|
||||
#:system system
|
||||
#:inputs `((,bash) (,builder)))))))))
|
||||
(package
|
||||
(name "guile-bootstrap")
|
||||
(version "2.0")
|
||||
|
||||
+71
-2
@@ -1,5 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -19,15 +20,18 @@
|
||||
(define-module (gnu packages cdrom)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix packages)
|
||||
#:use-module ((guix licenses) #:select (lgpl2.1+ gpl3+))
|
||||
#:use-module ((guix licenses) #:select (lgpl2.1+ gpl2 gpl2+ gpl3+))
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages acl)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module ((gnu packages gettext) #:renamer (symbol-prefix-proc 'gnu:))
|
||||
#:use-module (gnu packages gtk)
|
||||
#:use-module (gnu packages readline)
|
||||
#:use-module (gnu packages ncurses)
|
||||
#:use-module (gnu packages help2man)
|
||||
#:use-module (gnu packages pkg-config))
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages which))
|
||||
|
||||
(define-public libcddb
|
||||
(package
|
||||
@@ -113,3 +117,68 @@ images and it writes the session results to optical media or to filesystem
|
||||
objects. Vice versa xorriso is able to copy file objects out of ISO 9660
|
||||
filesystems.")
|
||||
(license gpl3+)))
|
||||
|
||||
(define-public cdparanoia
|
||||
(package
|
||||
(name "cdparanoia")
|
||||
(version "10.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://downloads.xiph.org/releases/cdparanoia/cdparanoia-III-"
|
||||
version ".src.tgz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1pv4zrajm46za0f6lv162iqffih57a8ly4pc69f7y0gfyigb8p80"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("patch/fpic" ,(search-patch "cdparanoia-fpic.patch"))))
|
||||
(arguments
|
||||
`(#:tests? #f ; there is no check target
|
||||
#:patches (list (assoc-ref %build-inputs "patch/fpic"))))
|
||||
(home-page "http://www.xiph.org/paranoia/")
|
||||
(synopsis "audio CD reading utility which includes extra data verification features")
|
||||
(description "Cdparanoia retrieves audio tracks from CDDA capable CDROM
|
||||
drives. The data can be saved to a file or directed to standard output
|
||||
in WAV, AIFF, AIFF-C or raw format. Most ATAPI, SCSI and several
|
||||
proprietary CDROM drive makes are supported; cdparanoia can determine if the
|
||||
target drive is CDDA capable. In addition to simple reading, cdparanoia adds
|
||||
extra-robust data verification, synchronization, error handling and scratch
|
||||
reconstruction capability.")
|
||||
(license gpl2))) ; libraries under lgpl2.1
|
||||
|
||||
(define-public dvdisaster
|
||||
(package
|
||||
(name "dvdisaster")
|
||||
(version "0.72.4")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://dvdisaster.net/downloads/dvdisaster-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0pm039a78h7m9vvjmmjfkl05ii6qdmfhvbypxjbc7j5w82y66is4"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("gettext" ,gnu:gettext)
|
||||
("gtk+" ,gtk+)
|
||||
("pkg-config" ,pkg-config)
|
||||
("which" ,which)))
|
||||
(arguments
|
||||
`(#:tests? #f)) ; no check target
|
||||
(home-page "http://dvdisaster.net/en/index.html")
|
||||
(synopsis "error correcting codes for optical media images")
|
||||
(description "Optical media (CD,DVD,BD) keep their data only for a
|
||||
finite time (typically for many years). After that time, data loss develops
|
||||
slowly with read errors growing from the outer media region towards the
|
||||
inside.
|
||||
|
||||
Dvdisaster stores data on CD/DVD/BD (supported media) in a way that it is
|
||||
fully recoverable even after some read errors have developed. This enables
|
||||
you to rescue the complete data to a new medium.
|
||||
|
||||
Data loss is prevented by using error correcting codes. Error correction
|
||||
data is either added to the medium or kept in separate error correction
|
||||
files. Dvdisaster works at the image level so that the recovery does not
|
||||
depend on the file system of the medium. The maximum error correction
|
||||
capacity is user-selectable.")
|
||||
(license gpl2+)))
|
||||
|
||||
@@ -189,6 +189,7 @@ than gzip and 15 % smaller output than bzip2.")
|
||||
(base32
|
||||
"0wryshs446s7cclrbjykyj766znhcpnr7s3cxy33ybfn6vwfcygz"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments '(#:configure-flags '("--enable-shared")))
|
||||
(home-page "http://www.oberhumer.com/opensource/lzo")
|
||||
(synopsis
|
||||
"A data compresion library suitable for real-time data de-/compression")
|
||||
@@ -200,3 +201,24 @@ compression ratio.
|
||||
LZO is written in ANSI C. Both the source code and the compressed data
|
||||
format are designed to be portable across platforms.")
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define-public lzip
|
||||
(package
|
||||
(name "lzip")
|
||||
(version "1.14")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://savannah/lzip/lzip-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1rybhk2pxpfh2789ck9mrkdv3bpx7b7miwndlshb5vb02m9crxbz"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "http://www.nongnu.org/lzip/lzip.html")
|
||||
(synopsis "Lossless data compressor based on the LZMA algorithm")
|
||||
(description
|
||||
"Lzip is a lossless data compressor with a user interface similar to the
|
||||
one of gzip or bzip2. Lzip decompresses almost as fast as gzip and compresses
|
||||
more than bzip2, which makes it well suited for software distribution and data
|
||||
archiving. Lzip is a clean implementation of the LZMA algorithm.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
`(("libgcrypt" ,libgcrypt)
|
||||
("lvm2" ,lvm2)
|
||||
("popt" ,popt)
|
||||
("python" ,python)
|
||||
("python" ,python-wrapper)
|
||||
("util-linux" ,util-linux)))
|
||||
(synopsis "hard disk encryption tool")
|
||||
(description
|
||||
|
||||
@@ -20,24 +20,25 @@
|
||||
#:use-module (guix licenses)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu))
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module ((gnu packages compression) #:select (lzip)))
|
||||
|
||||
(define-public ddrescue
|
||||
(package
|
||||
(name "ddrescue")
|
||||
(version "1.16")
|
||||
(version "1.17")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/ddrescue/ddrescue-"
|
||||
version ".tar.gz"))
|
||||
version ".tar.lz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1rixya7p8c4jrn4p0flf6h5dqwybrilf3hrj4r7x41h3zgjz5cvn"))))
|
||||
"0bvmsbzli2j4czwkabzs978n1y6vx31axh02kpgcf7033cc6rydy"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page
|
||||
"http://www.gnu.org/software/ddrescue/ddrescue.html")
|
||||
(home-page "http://www.gnu.org/software/ddrescue/ddrescue.html")
|
||||
(synopsis "Data recovery utility")
|
||||
(native-inputs `(("lzip" ,lzip)))
|
||||
(description
|
||||
"GNU Ddrescue is a data recovery tool. It copies data from one
|
||||
file or block device (e.g., hard disk, CD-ROM) to another, trying hard to
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages gtk)
|
||||
#:use-module (gnu packages ncurses)
|
||||
#:use-module (gnu packages texinfo)
|
||||
#:use-module (gnu packages gnutls)
|
||||
@@ -71,8 +72,7 @@
|
||||
|
||||
;; TODO: Add the optional dependencies.
|
||||
("xlibs" ,libx11)
|
||||
("libXaw" ,libxaw) ; XXX: eventually replace by GTK+
|
||||
;; ("gtk+" ,gtk+)
|
||||
("gtk+" ,gtk+)
|
||||
("libXft" ,libxft)
|
||||
("libtiff" ,libtiff)
|
||||
;; ("libungif" ,libungif)
|
||||
|
||||
@@ -0,0 +1,133 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages fonts)
|
||||
#:use-module ((guix licenses)
|
||||
#:renamer (symbol-prefix-proc 'license:))
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system trivial)
|
||||
#:use-module ((gnu packages base)
|
||||
#:select (tar))
|
||||
#:use-module (gnu packages compression))
|
||||
|
||||
(define-public ttf-bitstream-vera
|
||||
(package
|
||||
(name "ttf-bitstream-vera")
|
||||
(version "1.10")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnome/sources/ttf-bitstream-vera/"
|
||||
version "/ttf-bitstream-vera-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1p3qs51x5327gnk71yq8cvmxc6wgx79sqxfvxcv80cdvgggjfnyv"))))
|
||||
(build-system trivial-build-system)
|
||||
(arguments
|
||||
`(#:modules ((guix build utils))
|
||||
#:builder (begin
|
||||
(use-modules (guix build utils)
|
||||
(srfi srfi-26))
|
||||
|
||||
(let ((tar (string-append (assoc-ref %build-inputs
|
||||
"tar")
|
||||
"/bin/tar"))
|
||||
(PATH (string-append (assoc-ref %build-inputs
|
||||
"bzip2")
|
||||
"/bin"))
|
||||
(font-dir (string-append %output
|
||||
"/share/fonts/truetype"))
|
||||
(doc-dir (string-append %output "/share/doc/"
|
||||
,name "-" ,version)))
|
||||
(setenv "PATH" PATH)
|
||||
(system* tar "xvf" (assoc-ref %build-inputs "source"))
|
||||
|
||||
(mkdir-p font-dir)
|
||||
(mkdir-p doc-dir)
|
||||
(chdir (string-append "ttf-bitstream-vera-" ,version))
|
||||
(for-each (lambda (ttf)
|
||||
(copy-file ttf
|
||||
(string-append font-dir "/" ttf)))
|
||||
(find-files "." "\\.ttf$"))
|
||||
(for-each (lambda (doc)
|
||||
(copy-file doc
|
||||
(string-append doc-dir "/" doc)))
|
||||
(find-files "." "\\.TXT$"))))))
|
||||
(native-inputs `(("source" ,source)
|
||||
("tar" ,tar)
|
||||
("bzip2" ,bzip2)))
|
||||
(home-page "https://www-old.gnome.org/fonts/")
|
||||
(synopsis "Bitstream Vera sans-serif typeface")
|
||||
(description "Vera is a sans-serif typeface from Bitstream, Inc. This
|
||||
package provides the TrueType (TTF) files.")
|
||||
(license
|
||||
(license:x11-style
|
||||
"https://www-old.gnome.org/fonts/#Final_Bitstream_Vera_Fonts"))))
|
||||
|
||||
(define-public freefont-ttf
|
||||
(package
|
||||
(name "freefont-ttf")
|
||||
(version "20100919")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/freefont/freefont-ttf-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1q3h5jp1mbdkinkwxy0lfd0a1q7azlbagraydlzaa2ng82836wg4"))))
|
||||
(build-system trivial-build-system)
|
||||
(arguments
|
||||
`(#:modules ((guix build utils))
|
||||
#:builder (begin
|
||||
(use-modules (guix build utils)
|
||||
(srfi srfi-26))
|
||||
|
||||
(let ((tar (string-append (assoc-ref %build-inputs
|
||||
"tar")
|
||||
"/bin/tar"))
|
||||
(PATH (string-append (assoc-ref %build-inputs
|
||||
"gzip")
|
||||
"/bin"))
|
||||
(font-dir (string-append %output
|
||||
"/share/fonts/truetype"))
|
||||
(doc-dir (string-append %output "/share/doc/"
|
||||
,name "-" ,version)))
|
||||
(setenv "PATH" PATH)
|
||||
(system* tar "xvf" (assoc-ref %build-inputs "source"))
|
||||
|
||||
(mkdir-p font-dir)
|
||||
(mkdir-p doc-dir)
|
||||
(chdir (string-append "freefont-" ,version))
|
||||
(for-each (lambda (file)
|
||||
(let ((dir (if (string-suffix? "ttf" file)
|
||||
font-dir
|
||||
doc-dir)))
|
||||
(copy-file file
|
||||
(string-append dir "/" file))))
|
||||
(find-files "." ""))))))
|
||||
(native-inputs `(("source" ,source)
|
||||
("tar" ,tar)
|
||||
("gzip" ,gzip)))
|
||||
(home-page "http://www.gnu.org/software/freefont/")
|
||||
(synopsis "Unicode-encoded outline fonts")
|
||||
(description
|
||||
"The GNU Freefont project aims to provide a set of free outline
|
||||
(PostScript Type0, TrueType, OpenType...) fonts covering the ISO
|
||||
10646/Unicode UCS (Universal Character Set).")
|
||||
(license license:gpl3+)))
|
||||
@@ -19,6 +19,7 @@
|
||||
(define-module (gnu packages fontutils)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages ghostscript)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages xml)
|
||||
#:use-module ((guix licenses) #:renamer (symbol-prefix-proc 'license:))
|
||||
@@ -64,18 +65,27 @@ anti-aliased glyph bitmap generation with 256 gray levels.")
|
||||
(define-public fontconfig
|
||||
(package
|
||||
(name "fontconfig")
|
||||
(version "2.10.91")
|
||||
(version "2.10.93")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://www.freedesktop.org/software/fontconfig/release/fontconfig-"
|
||||
version ".tar.bz2"))
|
||||
(sha256 (base32
|
||||
"1vk37q3zj8bjppj3l0pkby1psialpwl263jqf6pbih2hx5a7jwm4"))))
|
||||
"172j5vsgx2xplsk5mrxrspbn5lrswq6gnxkxjgcrx0j8i0kiz47a"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("expat" ,expat)
|
||||
("freetype" ,freetype)
|
||||
("gs-fonts" ,gs-fonts)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
;; point to user profile instead of /usr/share/fonts in /etc/fonts.conf
|
||||
(list "--with-default-fonts=~/.guix-profile/share/fonts"
|
||||
;; register gs-fonts
|
||||
(string-append "--with-add-fonts="
|
||||
(assoc-ref %build-inputs "gs-fonts")
|
||||
"/share/fonts"))))
|
||||
(synopsis "Fontconfig, a library for configuring and customising font access.")
|
||||
(description
|
||||
"Fontconfig can discover new fonts when installed automatically;
|
||||
|
||||
@@ -221,7 +221,7 @@ used in the GNU system including the GNU/Linux variant.")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (list (string-append
|
||||
"ftp://ftp.linux.student.kuleuven.be/pub/people/skimo/isl/isl-"
|
||||
"http://isl.gforge.inria.fr/isl-"
|
||||
version
|
||||
".tar.bz2")
|
||||
(string-append %gcc-infrastructure
|
||||
@@ -231,7 +231,7 @@ used in the GNU system including the GNU/Linux variant.")
|
||||
"13d9cqa5rzhbjq0xf0b2dyxag7pqa72xj9dhsa03m8ccr1a4npq9"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("gmp" ,gmp)))
|
||||
(home-page "http://www.kotnet.org/~skimo/isl/")
|
||||
(home-page "http://isl.gforge.inria.fr/")
|
||||
(synopsis
|
||||
"A library for manipulating sets and relations of integer points bounded
|
||||
by linear constraints")
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
("gmp" ,gmp)
|
||||
("readline" ,readline)
|
||||
("ncurses" ,ncurses)
|
||||
("python" ,python)
|
||||
("python" ,python-wrapper)
|
||||
("texinfo" ,texinfo)
|
||||
("dejagnu" ,dejagnu)))
|
||||
(home-page "http://www.gnu.org/software/gdb/")
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages geeqie)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module ((guix licenses)
|
||||
#:renamer (symbol-prefix-proc 'l:))
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages gtk)
|
||||
#:use-module (gnu packages libpng)
|
||||
#:use-module ((gnu packages ghostscript)
|
||||
#:select (lcms))
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages xml))
|
||||
|
||||
(define-public exiv2 ; XXX: move elsewhere?
|
||||
(package
|
||||
(name "exiv2")
|
||||
(version "0.23")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://www.exiv2.org/exiv2-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"04bbg2cg6mgcyz435zamx37sp5zw44n2alb59ki1daz71f851yl1"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments '(#:tests? #f)) ; no `check' target
|
||||
(propagated-inputs
|
||||
`(("expat" ,expat) ("zlib" ,zlib)))
|
||||
(home-page "http://www.exiv2.org/")
|
||||
(synopsis "Library and command-line utility to manage image metadata")
|
||||
(description
|
||||
"Exiv2 is a C++ library and a command line utility to manage image
|
||||
metadata. It provides fast and easy read and write access to the Exif, IPTC
|
||||
and XMP metadata of images in various formats.")
|
||||
|
||||
;; Files under `xmpsdk' are a copy of Adobe's XMP SDK, licensed under the
|
||||
;; 3-clause BSD license: <http://www.adobe.com/devnet/xmp/sdk/eula.html>.
|
||||
;; The core is GPLv2+: <https://launchpad.net/ubuntu/precise/+source/exiv2/+copyright>.
|
||||
(license l:gpl2+)))
|
||||
|
||||
(define-public geeqie
|
||||
(package
|
||||
(name "geeqie")
|
||||
(version "1.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/geeqie/geeqie-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1kzy39z9505xkayyx7rjj2wda76xy3ch1s5z35zn8yli54ffhi2m"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(;; ("libchamplain" ,libchamplain)
|
||||
("intltool" ,intltool)
|
||||
("lcms" ,lcms)
|
||||
("exiv2" ,exiv2)
|
||||
("libpng" ,libpng)
|
||||
("gtk+" ,gtk+)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(home-page "http://geeqie.sourceforge.net")
|
||||
(synopsis "Lightweight GTK+ based image viewer")
|
||||
(description
|
||||
"Geeqie is a lightweight GTK+ based image viewer for Unix like operating
|
||||
systems. It features: EXIF, IPTC and XMP metadata browsing and editing
|
||||
interoperability; easy integration with other software; geeqie works on files
|
||||
and directories, there is no need to import images; fast preview for many raw
|
||||
image formats; tools for image comparison, sorting and managing photo
|
||||
collection. Geeqie was initially based on GQview.")
|
||||
(license l:gpl2+)))
|
||||
@@ -136,7 +136,7 @@ printing, and psresize, for adjusting page sizes.")
|
||||
("libtiff" ,libtiff)
|
||||
("perl" ,perl)
|
||||
("pkg-config" ,pkg-config) ; needed to find libtiff
|
||||
("python" ,python)
|
||||
("python" ,python-wrapper)
|
||||
("tcl" ,tcl)
|
||||
("zlib" ,zlib)))
|
||||
(arguments
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages gkrellm)
|
||||
#:use-module ((guix licenses)
|
||||
#:renamer (symbol-prefix-proc 'license:))
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module ((gnu packages gettext)
|
||||
#:renamer (symbol-prefix-proc 'gnu:))
|
||||
#:use-module (gnu packages gtk)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages xorg))
|
||||
|
||||
(define-public gkrellm
|
||||
(package
|
||||
(name "gkrellm")
|
||||
(version "2.3.5")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://members.dslextreme.com/users/billw/gkrellm/gkrellm-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"12rc6zaa7kb60b9744lbrlfkxxfniprm6x0mispv63h4kh75navh"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("gettext" ,gnu:gettext)
|
||||
("gtk+" ,gtk+)
|
||||
("libice" ,libice)
|
||||
("libsm" ,libsm)))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(arguments
|
||||
`(#:tests? #f ; there is no check target
|
||||
#:phases
|
||||
(alist-delete
|
||||
'configure
|
||||
%standard-phases)
|
||||
#:make-flags
|
||||
(let ((out (assoc-ref %outputs "out")))
|
||||
(list (string-append "INSTALLROOT=" out)
|
||||
"CC=gcc"
|
||||
"X11_LIBS = -lX11 -lSM -lICE -lgmodule-2.0"))))
|
||||
(home-page "http://members.dslextreme.com/users/billw/gkrellm/gkrellm.html")
|
||||
(synopsis "System monitors")
|
||||
(description
|
||||
"GKrellM is a single process stack of system monitors which supports
|
||||
applying themes to match its appearance to your window manager, Gtk, or any
|
||||
other theme.")
|
||||
(license license:gpl3+)))
|
||||
+95
-6
@@ -34,9 +34,19 @@
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages xml)
|
||||
#:use-module (gnu packages bash))
|
||||
#:use-module (gnu packages bash)
|
||||
#:use-module (gnu packages file)
|
||||
#:use-module (gnu packages xorg)
|
||||
|
||||
(define-public dbus
|
||||
;; Export variables up-front to allow circular dependency with the 'xorg'
|
||||
;; module.
|
||||
#:export (dbus
|
||||
glib
|
||||
dbus-glib
|
||||
intltool
|
||||
itstool))
|
||||
|
||||
(define dbus
|
||||
(package
|
||||
(name "dbus")
|
||||
(version "1.6.4")
|
||||
@@ -49,9 +59,26 @@
|
||||
(base32
|
||||
"1wacqyfkcpayg7f8rvx9awqg275n5pksxq5q7y21lxjx85x6pfjz"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:configure-flags (list ;; Install the system bus socket under /var.
|
||||
"--localstatedir=/var"
|
||||
|
||||
;; XXX: Fix the following to allow system-wide
|
||||
;; config.
|
||||
;; "--sysconfdir=/etc"
|
||||
|
||||
"--with-session-socket-dir=/tmp")
|
||||
#:patches (list (assoc-ref %build-inputs "patch/localstatedir"))))
|
||||
(inputs
|
||||
`(("expat" ,expat)
|
||||
("pkg-config" ,pkg-config)))
|
||||
("pkg-config" ,pkg-config)
|
||||
("patch/localstatedir"
|
||||
,(search-patch "dbus-localstatedir.patch"))
|
||||
|
||||
;; Add a dependency on libx11 so that 'dbus-launch' has support for
|
||||
;; '--autolaunch'.
|
||||
("libx11" ,libx11)))
|
||||
|
||||
(home-page "http://dbus.freedesktop.org/")
|
||||
(synopsis "Message bus for inter-process communication (IPC)")
|
||||
(description
|
||||
@@ -72,7 +99,7 @@ or through unencrypted TCP/IP suitable for use behind a firewall with
|
||||
shared NFS home directories.")
|
||||
(license license:gpl2+))) ; or Academic Free License 2.1
|
||||
|
||||
(define-public glib
|
||||
(define glib
|
||||
(package
|
||||
(name "glib")
|
||||
(version "2.37.1")
|
||||
@@ -91,7 +118,7 @@ shared NFS home directories.")
|
||||
("gettext" ,guix:gettext)
|
||||
("libffi" ,libffi)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python" ,python)
|
||||
("python" ,python-wrapper)
|
||||
("zlib" ,zlib)
|
||||
("perl" ,perl) ; needed by GIO tests
|
||||
("dbus" ,dbus) ; for GDBus tests
|
||||
@@ -144,7 +171,7 @@ dynamic loading, and an object system.")
|
||||
(home-page "http://developer.gnome.org/glib/")
|
||||
(license license:lgpl2.0+))) ; some files are under lgpl2.1+
|
||||
|
||||
(define-public intltool
|
||||
(define intltool
|
||||
(package
|
||||
(name "intltool")
|
||||
(version "0.50.2")
|
||||
@@ -162,6 +189,9 @@ dynamic loading, and an object system.")
|
||||
;; the `intltool-update' script.
|
||||
("gettext" ,guix:gettext)
|
||||
|
||||
;; `file' is used by `intltool-update' too.
|
||||
("file" ,file)
|
||||
|
||||
("perl-xml-parser" ,perl-xml-parser)
|
||||
("perl" ,perl)))
|
||||
(home-page "https://launchpad.net/intltool/+download")
|
||||
@@ -181,3 +211,62 @@ The intltool collection can be used to do these things:
|
||||
Merge back the translations from .po files into .xml, .desktop and
|
||||
oaf files. This merge step will happen at build resp. installation time.")
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define itstool
|
||||
(package
|
||||
(name "itstool")
|
||||
(version "1.2.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://files.itstool.org/itstool/itstool-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1akq75aflihm3y7js8biy7b5mw2g11vl8yq90gydnwlwp0zxdzj6"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "http://www.itstool.org")
|
||||
(synopsis "Tool to translate XML documents with PO files")
|
||||
(description
|
||||
"ITS Tool allows you to translate your XML documents with PO files, using
|
||||
rules from the W3C Internationalization Tag Set (ITS) to determine what to
|
||||
translate and how to separate it into PO file messages.
|
||||
|
||||
PO files are the standard translation format for GNU and other Unix-like
|
||||
systems. They present translatable information as discrete messages, allowing
|
||||
each message to be translated independently. In contrast to whole-page
|
||||
translation, translating with a message-based format like PO means you can
|
||||
easily track changes to the source document down to the paragraph. When new
|
||||
strings are added or existing strings are modified, you only need to update the
|
||||
corresponding messages.
|
||||
|
||||
ITS Tool is designed to make XML documents translatable through PO files by
|
||||
applying standard ITS rules, as well as extension rules specific to ITS Tool.
|
||||
ITS also provides an industry standard way for authors to override translation
|
||||
information in their documents, such as whether a particular element should be
|
||||
translated.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define dbus-glib
|
||||
(package
|
||||
(name "dbus-glib")
|
||||
(version "0.100.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
(string-append "http://dbus.freedesktop.org/releases/dbus-glib/dbus-glib-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1ibav91yg70f2l3l18cr0hf4mna1h9d4mrg0c60w4l8zjbd45fx5"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("dbus" ,dbus)
|
||||
("expat" ,expat)
|
||||
("glib" ,glib)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(home-page "http://dbus.freedesktop.org/doc/dbus-glib/")
|
||||
(synopsis "D-Bus GLib bindings")
|
||||
(description
|
||||
"GLib bindings for D-Bus. The package is obsolete and superseded
|
||||
by GDBus included in Glib.")
|
||||
(license license:gpl2))) ; or Academic Free License 2.1
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages gnome)
|
||||
#:use-module ((guix licenses) #:select (gpl2+))
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages xml))
|
||||
|
||||
(define-public gnome-doc-utils
|
||||
(package
|
||||
(name "gnome-doc-utils")
|
||||
(version "0.20.10")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnome/sources/" name "/0.20/"
|
||||
name "-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"19n4x25ndzngaciiyd8dd6s2mf9gv6nv3wv27ggns2smm7zkj1nb"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("intltool" ,intltool)
|
||||
("libxml2" ,libxml2)
|
||||
("libxslt" ,libxslt)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python-2" ,python-2)))
|
||||
(arguments
|
||||
`(#:tests? #f)) ; tries to load http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd
|
||||
(home-page "https://wiki.gnome.org/GnomeDocUtils")
|
||||
(synopsis
|
||||
"Documentation utilities for the Gnome project")
|
||||
(description
|
||||
"Gnome-doc-utils is a collection of documentation utilities for the
|
||||
Gnome project. It includes xml2po tool which makes it easier to translate
|
||||
and keep up to date translations of documentation.")
|
||||
(license gpl2+))) ; xslt under lgpl
|
||||
@@ -0,0 +1,138 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages gnunet)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages curl)
|
||||
#:use-module ((gnu packages gettext)
|
||||
#:renamer (symbol-prefix-proc 'gnu:))
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages gnupg)
|
||||
#:use-module (gnu packages gnutls)
|
||||
#:use-module (gnu packages libjpeg)
|
||||
#:use-module (gnu packages libtiff)
|
||||
#:use-module (gnu packages oggvorbis)
|
||||
#:use-module (gnu packages openssl)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module ((guix licenses)
|
||||
#:renamer (symbol-prefix-proc 'license:))
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu))
|
||||
|
||||
(define-public libextractor
|
||||
(package
|
||||
(name "libextractor")
|
||||
(version "1.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/libextractor/libextractor-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1zvj64ig456c9ya3r8ib48ms42cnli9y7ig5p04xqm16z7vw5dyb"))))
|
||||
(build-system gnu-build-system)
|
||||
;; WARNING: Checks require /dev/shm to be in the build chroot, especially
|
||||
;; not to be a symbolic link to /run/shm.
|
||||
;; FIXME:
|
||||
;; The following dependencies are all optional, but should be
|
||||
;; available for maximum coverage:
|
||||
;; * libarchive
|
||||
;; * libavutil / libavformat / libavcodec / libswscale (ffmpeg)
|
||||
;; * libexiv2
|
||||
;; * libgif (giflib)
|
||||
;; * libgtk+ >= 3.0.0 (may probably drop glib then as a propagated input of
|
||||
;; gtk)
|
||||
;; * libgsf
|
||||
;; * libgstreamer
|
||||
;; * libmagic (file)
|
||||
;; * libmpeg2
|
||||
;; * libmp4v2
|
||||
;; * librpm
|
||||
;; * libsmf
|
||||
;; * libtidy
|
||||
(inputs
|
||||
`(("gettext" ,gnu:gettext)
|
||||
("flac" ,flac)
|
||||
("glib" ,glib)
|
||||
("libjpeg" ,libjpeg)
|
||||
("libogg" ,libogg)
|
||||
("libtiff" ,libtiff)
|
||||
("libtool" ,libtool)
|
||||
("libvorbis" ,libvorbis)
|
||||
("pkg-config" ,pkg-config)
|
||||
("zlib" ,zlib)))
|
||||
(synopsis "Library to extract meta-data from media files")
|
||||
(description
|
||||
"GNU Libextractor is a library used to extract meta data from files.
|
||||
The goal is to provide developers of file-sharing networks, browsers or
|
||||
WWW-indexing bots with a universal library to obtain simple keywords and
|
||||
meta data to match against queries and to show to users instead of only
|
||||
relying on filenames. libextractor contains the shell command extract that,
|
||||
similar to the well-known file command, can extract meta data from a file
|
||||
and print the results to stdout.
|
||||
|
||||
Currently, libextractor supports the following formats: HTML, MAN, PS, DVI,
|
||||
OLE2 (DOC, XLS, PPT), OpenOffice (sxw), StarOffice (sdw), FLAC,
|
||||
MP3 (ID3v1 and ID3v2), OGG, WAV, S3M (Scream Tracker 3), XM (eXtended Module),
|
||||
IT (Impulse Tracker), NSF(E) (NES music), SID (C64 music), EXIV2, JPEG, GIF,
|
||||
PNG, TIFF, DEB, RPM, TAR(.GZ), LZH, LHA, RAR, ZIP, CAB, 7-ZIP, AR, MTREE,
|
||||
PAX, CPIO, ISO9660, SHAR, RAW, XAR FLV, REAL, RIFF (AVI), MPEG, QT and ASF.
|
||||
Also, various additional MIME types are detected.")
|
||||
(license license:gpl3+)
|
||||
(home-page "http://www.gnu.org/software/libextractor/")))
|
||||
|
||||
(define-public libmicrohttpd
|
||||
(package
|
||||
(name "libmicrohttpd")
|
||||
(version "0.9.29")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/libmicrohttpd/libmicrohttpd-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"169qpbmqprm296kicym63njxqf3qnjkk16qar73b813l7mj4jn8s"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("curl" ,curl)
|
||||
("gnutls" ,gnutls)
|
||||
("libgcrypt" ,libgcrypt)
|
||||
("openssl" ,openssl)
|
||||
("zlib" ,zlib)))
|
||||
(synopsis "C library implementing an HTTP 1.1 server")
|
||||
(description
|
||||
"GNU libmicrohttpd is a small C library that is supposed to make it
|
||||
easy to run an HTTP server as part of another application. Key features
|
||||
that distinguish GNU Libmicrohttpd from other projects are:
|
||||
C library is fast and small;
|
||||
API is simple, expressive and fully reentrant;
|
||||
implementation is HTTP 1.1 compliant;
|
||||
HTTP server can listen on multiple ports;
|
||||
four different threading models (select, poll, pthread, thread pool);
|
||||
supported platforms include GNU/Linux, FreeBSD, OpenBSD, NetBSD, Android,
|
||||
OS X, W32, Symbian and z/OS;
|
||||
support for IPv6;
|
||||
support for SHOUTcast;
|
||||
support for incremental processing of POST data (optional);
|
||||
support for basic and digest authentication (optional);
|
||||
support for SSL3 and TLS (requires libgcrypt and libgnutls, optional);
|
||||
binary is only about 32k (without TLS/SSL support and other optional features).")
|
||||
(license license:lgpl2.1+)
|
||||
(home-page "http://www.gnu.org/software/libmicrohttpd/")))
|
||||
+19
-17
@@ -57,14 +57,14 @@ Daemon and possibly more in the future.")
|
||||
(define-public libgcrypt
|
||||
(package
|
||||
(name "libgcrypt")
|
||||
(version "1.5.2")
|
||||
(version "1.5.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0gwnzqd64cpwdmk93nll54nidsr74jpimxzj4p4z7502ylwl66p4"))))
|
||||
"1lar8y3lh61zl5flljpz540d78g99h4d5idfwrfw8lm3gm737xdw"))))
|
||||
(build-system gnu-build-system)
|
||||
(propagated-inputs
|
||||
`(("libgpg-error" ,libgpg-error)))
|
||||
@@ -106,7 +106,7 @@ provided.")
|
||||
(define-public libksba
|
||||
(package
|
||||
(name "libksba")
|
||||
(version "1.2.0")
|
||||
(version "1.3.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -115,7 +115,7 @@ provided.")
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0jwk7hm3x3g4hd7l12z3d79dy7359x7lc88dq6z7q0ixn1jwxbq9"))))
|
||||
"0w8rfb6yhcwkwzvjafrashcygy4hd9xwwmvlnkfd1m2h0paywqas"))))
|
||||
(build-system gnu-build-system)
|
||||
(propagated-inputs
|
||||
`(("libgpg-error" ,libgpg-error)))
|
||||
@@ -131,7 +131,7 @@ specifications are building blocks of S/MIME and TLS.")
|
||||
(define-public gnupg
|
||||
(package
|
||||
(name "gnupg")
|
||||
(version "2.0.20")
|
||||
(version "2.0.21")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -139,12 +139,10 @@ specifications are building blocks of S/MIME and TLS.")
|
||||
".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"16mp0j5inrcqcb3fxbn0b3aamascy3n923wiy0y8marc0rzrp53f"))))
|
||||
"1xgf1q1phdawk6y66haaqcvfnlsqk12jmjin1m2d5x6fqw18kpq0"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(;; TODO: Add missing optional dep libusb.
|
||||
;; ("libusb" ,libusb)
|
||||
("bzip2" ,guix:bzip2)
|
||||
`(("bzip2" ,guix:bzip2)
|
||||
("curl" ,curl)
|
||||
("libassuan" ,libassuan)
|
||||
("libgcrypt" ,libgcrypt)
|
||||
@@ -191,7 +189,8 @@ S/MIME.")
|
||||
"1g1jly3wl4ks6h8ydkygyl2c4i7v3z91rg42005m6vm70y1d8b3d"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("perl" ,perl)
|
||||
("python" ,python)))
|
||||
("python" ,python-wrapper)
|
||||
("gpg" ,gnupg)))
|
||||
(arguments
|
||||
`(#:tests? #f
|
||||
#:phases
|
||||
@@ -203,16 +202,19 @@ S/MIME.")
|
||||
(lambda* (#:key #:allow-other-keys) #t)
|
||||
(alist-replace
|
||||
'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(gpg (string-append (assoc-ref inputs "gpg")
|
||||
"/bin/gpg2")))
|
||||
(mkdir out)
|
||||
(mkdir (string-append out "/bin"))
|
||||
(for-each
|
||||
(lambda (filename)
|
||||
(copy-file filename (string-append out "/bin/" filename)))
|
||||
'("pius" "pius-keyring-mgr" "pius-party-worksheet"))))
|
||||
(for-each (lambda (file)
|
||||
(substitute* file
|
||||
(("/usr/bin/gpg") gpg))
|
||||
(copy-file file (string-append out "/bin/" file)))
|
||||
'("pius" "pius-keyring-mgr" "pius-party-worksheet"))))
|
||||
%standard-phases)))))
|
||||
(synopsis "programs to simplify gnupg key signing")
|
||||
(synopsis "Programs to simplify GnuPG key signing")
|
||||
(description
|
||||
"Pius (PGP Individual UID Signer) helps attendees of PGP keysigning
|
||||
parties. It is the main utility and makes it possible to quickly and easily
|
||||
|
||||
@@ -54,7 +54,7 @@ portable, and only require an ANSI C89 platform.")
|
||||
(define-public gnutls
|
||||
(package
|
||||
(name "gnutls")
|
||||
(version "3.2.1")
|
||||
(version "3.2.4")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
@@ -64,20 +64,14 @@ portable, and only require an ANSI C89 platform.")
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1zi2kq3vcbqdy9khl7r6pgk4hgwibniasm9k6siasdvqjijq3ymb"))))
|
||||
"0zvhzy87v9dfxfvmg1pl951kw55rp647cqdza8942fxq7spp158i"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:patches (list (assoc-ref %build-inputs
|
||||
"patch/fix-tests"))
|
||||
#:patch-flags '("-p0")))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
`(("guile" ,guile-2.0)
|
||||
("zlib" ,guix:zlib)
|
||||
("perl" ,perl)
|
||||
("patch/fix-tests"
|
||||
,(search-patch "gnutls-fix-tests-on-32-bits-system.patch"))))
|
||||
("perl" ,perl)))
|
||||
(propagated-inputs
|
||||
`(("libtasn1" ,libtasn1)
|
||||
("nettle" ,nettle)
|
||||
|
||||
+28
-2
@@ -29,7 +29,33 @@
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages qemu)
|
||||
#:use-module (gnu packages ncurses)
|
||||
#:use-module (gnu packages cdrom))
|
||||
#:use-module (gnu packages cdrom)
|
||||
#:use-module (srfi srfi-1))
|
||||
|
||||
(define qemu-for-tests
|
||||
;; Newer QEMU versions, such as 1.5.1, no longer support the 'shutdown'
|
||||
;; instruction. This leads to test hangs, as reported at
|
||||
;; <https://bugs.launchpad.net/bugs/947597> and fixed at
|
||||
;; <http://bzr.savannah.gnu.org/lh/grub/trunk/grub/revision/4828>.
|
||||
;; Work around it by using an older QEMU.
|
||||
(package (inherit qemu)
|
||||
(version "1.3.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://wiki.qemu-project.org/download/qemu-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1bqfrb5dlsxm8gxhkksz8qzi5fhj3xqhxyfwbqcphhcv1kpyfwip"))))
|
||||
|
||||
;; With recent GLib versions, we get a test failure:
|
||||
;; ERROR:tests/rtc-test.c:176:check_time: assertion failed (ABS(t - s) <= wiggle): (382597824 <= 2)
|
||||
;; Simply disable the tests.
|
||||
(arguments `(#:tests? #f
|
||||
,@(package-arguments qemu)))
|
||||
|
||||
;; The manual fails to build with Texinfo 5.x.
|
||||
(native-inputs (alist-delete "texinfo" (package-native-inputs qemu)))))
|
||||
|
||||
(define-public grub
|
||||
(package
|
||||
@@ -70,7 +96,7 @@
|
||||
|
||||
;; Dependencies for the test suite. The "real" QEMU is needed here,
|
||||
;; because several targets are used.
|
||||
("qemu" ,qemu)
|
||||
("qemu" ,qemu-for-tests)
|
||||
("xorriso" ,xorriso)))
|
||||
(home-page "http://www.gnu.org/software/grub/")
|
||||
(synopsis "GRand unified boot loader")
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages gstreamer)
|
||||
#:use-module ((guix licenses) #:select (lgpl2.0+))
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (gnu packages bison)
|
||||
#:use-module (gnu packages flex)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages python))
|
||||
|
||||
(define-public gstreamer
|
||||
(package
|
||||
(name "gstreamer")
|
||||
(version "1.0.10")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0c0irk85jd2cihm5pmf4zxhlpg08qpxjcqv1l9qn2n3h2gsaj2lf"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("bison" ,bison)
|
||||
("flex" ,flex)
|
||||
("glib" ,glib)
|
||||
("perl" ,perl)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python-wrapper" ,python-wrapper)))
|
||||
(home-page "http://gstreamer.freedesktop.org/")
|
||||
(synopsis
|
||||
"Multimedia library")
|
||||
(description
|
||||
"GStreamer is a library for constructing graphs of media-handling
|
||||
components. The applications it supports range from simple Ogg/Vorbis
|
||||
playback, audio/video streaming to complex audio (mixing) and video
|
||||
(non-linear editing) processing.
|
||||
|
||||
Applications can take advantage of advances in codec and filter technology
|
||||
transparently. Developers can add new codecs and filters by writing a
|
||||
simple plugin with a clean, generic interface.
|
||||
|
||||
This package provides the core library and elements.")
|
||||
(license lgpl2.0+)))
|
||||
|
||||
(define-public gst-plugins-base
|
||||
(package
|
||||
(name "gst-plugins-base")
|
||||
(version "1.0.10")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1s4pphbb5kpdh4rrmb8rala4sp499k4by59925k15xiz58xyhm4p"))))
|
||||
(build-system gnu-build-system)
|
||||
;; FIXME: Add more dependencies for further plugins.
|
||||
(inputs
|
||||
`(("glib" ,glib)
|
||||
("gstreamer" ,gstreamer)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python-wrapper" ,python-wrapper)))
|
||||
(arguments
|
||||
`(#:tests? #f))
|
||||
;; All tests pass except for one:
|
||||
;; Running suite(s): pbutils library
|
||||
;; 85%: Checks: 7, Failures: 1, Errors: 0
|
||||
;; libs/pbutils.c:522:F:general:test_pb_utils_install_plugins:0: gst_install_plugins_sync() failed ;; with unexpected ret 201, which is neither HELPER_MISSING nor 1
|
||||
;; FAIL: libs/pbutils
|
||||
;; According to the documentation, "gst_install_plugins_sync (...)
|
||||
;; should almost never be used".
|
||||
(home-page "http://gstreamer.freedesktop.org/")
|
||||
(synopsis
|
||||
"Plugins for the gstreamer multimedia library")
|
||||
(description
|
||||
"GStreamer is a library for constructing graphs of media-handling
|
||||
components. The applications it supports range from simple Ogg/Vorbis
|
||||
playback, audio/video streaming to complex audio (mixing) and video
|
||||
(non-linear editing) processing.
|
||||
|
||||
Applications can take advantage of advances in codec and filter technology
|
||||
transparently. Developers can add new codecs and filters by writing a
|
||||
simple plugin with a clean, generic interface.
|
||||
|
||||
This package provides an essential exemplary set of elements.")
|
||||
(license lgpl2.0+)))
|
||||
@@ -60,14 +60,14 @@ tools have full access to view and control running applications.")
|
||||
(define-public cairo
|
||||
(package
|
||||
(name "cairo")
|
||||
(version "1.12.14")
|
||||
(version "1.12.16")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://cairographics.org/releases/cairo-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"04xcykglff58ygs0dkrmmnqljmpjwp2qgwcz8sijqkdpz7ix3l4n"))))
|
||||
"0inqwsylqkrzcjivdirkjx5nhdgxbdc62fq284c3xppinfg9a195"))))
|
||||
(build-system gnu-build-system)
|
||||
(propagated-inputs
|
||||
`(("fontconfig" ,fontconfig)
|
||||
@@ -83,7 +83,7 @@ tools have full access to view and control running applications.")
|
||||
("libspectre" ,libspectre)
|
||||
("pkg-config" ,pkg-config)
|
||||
("poppler" ,poppler)
|
||||
("python" ,python)
|
||||
("python" ,python-wrapper)
|
||||
("xextproto" ,xextproto)
|
||||
("zlib" ,zlib)))
|
||||
(arguments
|
||||
@@ -110,20 +110,20 @@ affine transformation (scale, rotation, shear, etc.)")
|
||||
(define-public harfbuzz
|
||||
(package
|
||||
(name "harfbuzz")
|
||||
(version "0.9.18")
|
||||
(version "0.9.21")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"026rlwspf1zn5akds9fwibpqpn47kmlnmqm5fi0cp4k4dnygpw7y"))))
|
||||
"1s6sffgf6ndy12fyln2bdnkn3cb1qfkch0rakdgkgwlq7n46zlx0"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("cairo" ,cairo)
|
||||
("icu4c" ,icu4c)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python" ,python)))
|
||||
("python" ,python-wrapper)))
|
||||
(synopsis "opentype text shaping engine")
|
||||
(description
|
||||
"HarfBuzz is an OpenType text shaping engine.")
|
||||
@@ -211,7 +211,7 @@ in the GNOME project.")
|
||||
(("SUBDIRS = theme-bits . tests") "SUBDIRS = theme-bits ."))
|
||||
(apply configure args)))
|
||||
%standard-phases)))
|
||||
(synopsis "multi-platform toolkit for creating graphical user interfaces")
|
||||
(synopsis "Cross-platform toolkit for creating graphical user interfaces")
|
||||
(description
|
||||
"GTK+, or the GIMP Toolkit, is a multi-platform toolkit for creating
|
||||
graphical user interfaces. Offering a complete set of widgets, GTK+ is
|
||||
|
||||
+35
-1
@@ -250,7 +250,7 @@ many readers as needed).")
|
||||
(arguments
|
||||
'(#:configure-flags (list (string-append "--with-guilesitedir="
|
||||
(assoc-ref %outputs "out")
|
||||
"/share/guile/site"))
|
||||
"/share/guile/site/2.0"))
|
||||
#:phases (alist-cons-after
|
||||
'install 'post-install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
@@ -298,4 +298,38 @@ flexibility in specifying when jobs should be run. Mcron was written by Dale
|
||||
Mellor.")
|
||||
(license gpl3+)))
|
||||
|
||||
(define-public guile-lib
|
||||
(package
|
||||
(name "guile-lib")
|
||||
(version "0.2.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://savannah/guile-lib/guile-lib-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1f9n2b5b5r75lzjinyk6zp6g20g60msa0jpfrk5hhg4j8cy0ih4b"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:phases (alist-cons-before
|
||||
'configure 'patch-module-dir
|
||||
(lambda _
|
||||
(substitute* "src/Makefile.in"
|
||||
(("^moddir[[:blank:]]*=[[:blank:]]*([[:graph:]]+)" _ rhs)
|
||||
(string-append "moddir = " rhs "/2.0\n"))))
|
||||
%standard-phases)))
|
||||
(inputs `(("guile" ,guile-2.0)))
|
||||
(home-page "http://www.nongnu.org/guile-lib/")
|
||||
(synopsis "Collection of useful Guile Scheme modules")
|
||||
(description
|
||||
"guile-lib is intended as an accumulation place for pure-scheme Guile
|
||||
modules, allowing for people to cooperate integrating their generic Guile
|
||||
modules into a coherent library. Think \"a down-scaled, limited-scope CPAN
|
||||
for Guile\".")
|
||||
|
||||
;; The whole is under GPLv3+, but some modules are under laxer
|
||||
;; distribution terms such as LGPL and public domain. See `COPYING' for
|
||||
;; details.
|
||||
(license gpl3+)))
|
||||
|
||||
;;; guile.scm ends here
|
||||
|
||||
@@ -37,14 +37,14 @@
|
||||
(define-public imagemagick
|
||||
(package
|
||||
(name "imagemagick")
|
||||
(version "6.8.6-0")
|
||||
(version "6.8.6-9")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://imagemagick/ImageMagick-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1qmwpnq2mcxjnp0rjyb2g7v87lhmll19imx3iys6kplh8amrmqnv"))))
|
||||
"1bpj8676mph5cvyjsdgf27i6yg2iw9iskk5c69mvpxkyawgjw1vg"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases (alist-cons-before
|
||||
|
||||
@@ -18,7 +18,8 @@
|
||||
|
||||
(define-module (gnu packages indent)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (guix licenses)
|
||||
#:use-module ((guix licenses)
|
||||
#:renamer (symbol-prefix-proc 'license:))
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu))
|
||||
@@ -40,5 +41,5 @@
|
||||
from one style of writing C to another. Indent understands a substantial
|
||||
amount about the syntax of C, but it also attempts to cope with incomplete
|
||||
and misformed syntax. The GNU style of indenting is the default.")
|
||||
(license gpl3+)
|
||||
(license license:gpl3+)
|
||||
(home-page "http://www.gnu.org/software/indent/")))
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
|
||||
;; Dependencies used for the tests and for `event_rpcgen.py'.
|
||||
("which" ,which)
|
||||
("python" ,python)))
|
||||
("python" ,python-wrapper)))
|
||||
(arguments
|
||||
'(#:patches (list (assoc-ref %build-inputs "patch/dns-tests"))))
|
||||
(home-page "http://libevent.org/")
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages lightning)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix licenses))
|
||||
|
||||
(define-public lightning
|
||||
(package
|
||||
(name "lightning")
|
||||
(version "2.0.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/lightning/lightning-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0m0hc9aqw72wsg2sq2hx8zwhfvz814rfr7rz9qcyn3n4qv2kc5z4"))))
|
||||
(build-system gnu-build-system)
|
||||
(synopsis "Library for generating assembly code at runtime")
|
||||
(description
|
||||
"GNU lightning is a library that generates assembly language code at
|
||||
run-time; it is very fast, making it ideal for Just-In-Time compilers, and it
|
||||
abstracts over the target CPU, as it exposes to the clients a standardized
|
||||
RISC instruction set inspired by the MIPS and SPARC chips.")
|
||||
(home-page "http://www.gnu.org/software/lightning/")
|
||||
(license gpl3+)))
|
||||
+196
-80
@@ -19,10 +19,14 @@
|
||||
(define-module (gnu packages linux-initrd)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix licenses)
|
||||
#:use-module (guix build-system)
|
||||
#:use-module ((guix derivations)
|
||||
#:select (imported-modules compiled-modules %guile-for-build))
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages cpio)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages guile)
|
||||
#:use-module ((gnu packages make-bootstrap)
|
||||
#:select (%guile-static-stripped))
|
||||
#:use-module (guix packages)
|
||||
@@ -38,6 +42,49 @@
|
||||
;;; Code:
|
||||
|
||||
|
||||
(define-syntax-rule (raw-build-system (store system name inputs) body ...)
|
||||
"Lift BODY to a package build system."
|
||||
;; TODO: Generalize.
|
||||
(build-system
|
||||
(name "raw")
|
||||
(description "Raw build system")
|
||||
(build (lambda* (store name source inputs #:key system #:allow-other-keys)
|
||||
(parameterize ((%guile-for-build (package-derivation store
|
||||
guile-2.0)))
|
||||
body ...)))))
|
||||
|
||||
(define (module-package modules)
|
||||
"Return a package that contains all of MODULES, a list of Guile module
|
||||
names."
|
||||
(package
|
||||
(name "guile-modules")
|
||||
(version "0")
|
||||
(source #f)
|
||||
(build-system (raw-build-system (store system name inputs)
|
||||
(imported-modules store modules
|
||||
#:name name
|
||||
#:system system)))
|
||||
(synopsis "Set of Guile modules")
|
||||
(description synopsis)
|
||||
(license gpl3+)
|
||||
(home-page "http://www.gnu.org/software/guix/")))
|
||||
|
||||
(define (compiled-module-package modules)
|
||||
"Return a package that contains the .go files corresponding to MODULES, a
|
||||
list of Guile module names."
|
||||
(package
|
||||
(name "guile-compiled-modules")
|
||||
(version "0")
|
||||
(source #f)
|
||||
(build-system (raw-build-system (store system name inputs)
|
||||
(compiled-modules store modules
|
||||
#:name name
|
||||
#:system system)))
|
||||
(synopsis "Set of compiled Guile modules")
|
||||
(description synopsis)
|
||||
(license gpl3+)
|
||||
(home-page "http://www.gnu.org/software/guix/")))
|
||||
|
||||
(define* (expression->initrd exp
|
||||
#:key
|
||||
(guile %guile-static-stripped)
|
||||
@@ -45,12 +92,13 @@
|
||||
(gzip gzip)
|
||||
(name "guile-initrd")
|
||||
(system (%current-system))
|
||||
(modules '())
|
||||
(linux #f)
|
||||
(linux-modules '()))
|
||||
"Return a package that contains a Linux initrd (a gzipped cpio archive)
|
||||
containing GUILE and that evaluates EXP upon booting. LINUX-MODULES is a list
|
||||
of `.ko' file names to be copied from LINUX into the initrd."
|
||||
;; TODO: Add a `modules' parameter.
|
||||
of `.ko' file names to be copied from LINUX into the initrd. MODULES is a
|
||||
list of Guile module names to be embedded in the initrd."
|
||||
|
||||
;; General Linux overview in `Documentation/early-userspace/README' and
|
||||
;; `Documentation/filesystems/ramfs-rootfs-initramfs.txt'.
|
||||
@@ -67,12 +115,22 @@ of `.ko' file names to be copied from LINUX into the initrd."
|
||||
(rnrs bytevectors)
|
||||
((system foreign) #:select (sizeof)))
|
||||
|
||||
(let ((guile (assoc-ref %build-inputs "guile"))
|
||||
(cpio (string-append (assoc-ref %build-inputs "cpio")
|
||||
"/bin/cpio"))
|
||||
(gzip (string-append (assoc-ref %build-inputs "gzip")
|
||||
"/bin/gzip"))
|
||||
(out (assoc-ref %outputs "out")))
|
||||
(let ((guile (assoc-ref %build-inputs "guile"))
|
||||
(cpio (string-append (assoc-ref %build-inputs "cpio")
|
||||
"/bin/cpio"))
|
||||
(gzip (string-append (assoc-ref %build-inputs "gzip")
|
||||
"/bin/gzip"))
|
||||
(modules (assoc-ref %build-inputs "modules"))
|
||||
(gos (assoc-ref %build-inputs "modules/compiled"))
|
||||
(scm-dir (string-append "share/guile/" (effective-version)))
|
||||
(go-dir (format #f ".cache/guile/ccache/~a-~a-~a-~a"
|
||||
(effective-version)
|
||||
(if (eq? (native-endianness) (endianness little))
|
||||
"LE"
|
||||
"BE")
|
||||
(sizeof '*)
|
||||
(effective-version)))
|
||||
(out (assoc-ref %outputs "out")))
|
||||
(mkdir out)
|
||||
(mkdir "contents")
|
||||
(with-directory-excursion "contents"
|
||||
@@ -84,19 +142,23 @@ of `.ko' file names to be copied from LINUX into the initrd."
|
||||
(chmod "init" #o555)
|
||||
(chmod "bin/guile" #o555)
|
||||
|
||||
;; Compile `init'.
|
||||
(let ((go-dir (format #f ".cache/guile/ccache/~a-~a-~a-~a"
|
||||
(effective-version)
|
||||
(if (eq? (native-endianness) (endianness little))
|
||||
"LE"
|
||||
"BE")
|
||||
(sizeof '*)
|
||||
(effective-version))))
|
||||
(mkdir-p go-dir)
|
||||
(compile-file "init"
|
||||
#:opts %auto-compilation-options
|
||||
#:output-file (string-append go-dir "/init.go")))
|
||||
;; Copy Guile modules.
|
||||
(chmod scm-dir #o777)
|
||||
(copy-recursively modules scm-dir
|
||||
#:follow-symlinks? #t)
|
||||
(copy-recursively gos (string-append "lib/guile/"
|
||||
(effective-version) "/ccache")
|
||||
#:follow-symlinks? #t)
|
||||
|
||||
;; Compile `init'.
|
||||
(mkdir-p go-dir)
|
||||
(set! %load-path (cons modules %load-path))
|
||||
(set! %load-compiled-path (cons gos %load-compiled-path))
|
||||
(compile-file "init"
|
||||
#:opts %auto-compilation-options
|
||||
#:output-file (string-append go-dir "/init.go"))
|
||||
|
||||
;; Copy Linux modules.
|
||||
(let* ((linux (assoc-ref %build-inputs "linux"))
|
||||
(module-dir (and linux
|
||||
(string-append linux "/lib/modules"))))
|
||||
@@ -161,6 +223,8 @@ of `.ko' file names to be copied from LINUX into the initrd."
|
||||
(inputs `(("guile" ,guile)
|
||||
("cpio" ,cpio)
|
||||
("gzip" ,gzip)
|
||||
("modules" ,(module-package modules))
|
||||
("modules/compiled" ,(compiled-module-package modules))
|
||||
,@(if linux
|
||||
`(("linux" ,linux))
|
||||
'())))
|
||||
@@ -174,26 +238,18 @@ the Linux kernel.")
|
||||
(define-public qemu-initrd
|
||||
(expression->initrd
|
||||
'(begin
|
||||
(use-modules (rnrs io ports)
|
||||
(srfi srfi-1)
|
||||
(use-modules (srfi srfi-1)
|
||||
(srfi srfi-26)
|
||||
(ice-9 match)
|
||||
((system foreign) #:select (string->pointer))
|
||||
((system base compile) #:select (compile-file)))
|
||||
((system base compile) #:select (compile-file))
|
||||
(guix build utils)
|
||||
(guix build linux-initrd))
|
||||
|
||||
(display "Welcome, this is GNU/Guile!\n")
|
||||
(display "Welcome, this is GNU's early boot Guile.\n")
|
||||
(display "Use '--repl' for an initrd REPL.\n\n")
|
||||
|
||||
(mkdir "/proc")
|
||||
(mount "none" "/proc" "proc")
|
||||
|
||||
(mkdir "/sys")
|
||||
(mount "none" "/sys" "sysfs")
|
||||
|
||||
(let* ((command (string-trim-both
|
||||
(call-with-input-file "/proc/cmdline"
|
||||
get-string-all)))
|
||||
(args (string-split command char-set:blank))
|
||||
(mount-essential-file-systems)
|
||||
(let* ((args (linux-command-line))
|
||||
(option (lambda (opt)
|
||||
(let ((opt (string-append opt "=")))
|
||||
(and=> (find (cut string-prefix? opt <>)
|
||||
@@ -206,34 +262,16 @@ the Linux kernel.")
|
||||
(when (member "--repl" args)
|
||||
((@ (system repl repl) start-repl)))
|
||||
|
||||
(let ((slurp (lambda (module)
|
||||
(call-with-input-file
|
||||
(string-append "/modules/" module)
|
||||
get-bytevector-all))))
|
||||
(display "loading CIFS and companion modules...\n")
|
||||
(for-each (compose load-linux-module slurp)
|
||||
(list "md4.ko" "ecb.ko" "cifs.ko")))
|
||||
(display "loading CIFS and companion modules...\n")
|
||||
(for-each (compose load-linux-module*
|
||||
(cut string-append "/modules/" <>))
|
||||
(list "md4.ko" "ecb.ko" "cifs.ko"))
|
||||
|
||||
;; See net/slirp.c for default QEMU networking values.
|
||||
(display "configuring network...\n")
|
||||
(let* ((sock (socket AF_INET SOCK_STREAM 0))
|
||||
(address (make-socket-address AF_INET
|
||||
(inet-pton AF_INET
|
||||
"10.0.2.10")
|
||||
0))
|
||||
(flags (network-interface-flags sock "eth0")))
|
||||
(set-network-interface-address sock "eth0" address)
|
||||
(set-network-interface-flags sock "eth0"
|
||||
(logior flags IFF_UP))
|
||||
(if (logand (network-interface-flags sock "eth0") IFF_UP)
|
||||
(display "network interface is up\n")
|
||||
(display "network interface is DOWN\n"))
|
||||
(unless (configure-qemu-networking)
|
||||
(display "network interface is DOWN\n"))
|
||||
|
||||
(mkdir "/etc")
|
||||
(call-with-output-file "/etc/resolv.conf"
|
||||
(lambda (p)
|
||||
(display "nameserver 10.0.2.3\n" p)))
|
||||
(sleep 1))
|
||||
;; Make /dev nodes.
|
||||
(make-essential-device-nodes)
|
||||
|
||||
;; Prepare the real root file system under /root.
|
||||
(unless (file-exists? "/root")
|
||||
@@ -241,27 +279,31 @@ the Linux kernel.")
|
||||
(if root
|
||||
(mount root "/root" "ext3")
|
||||
(mount "none" "/root" "tmpfs"))
|
||||
(mkdir "/root/proc")
|
||||
(mount "none" "/root/proc" "proc")
|
||||
(mkdir "/root/sys")
|
||||
(mount "none" "/root/sys" "sysfs")
|
||||
(mkdir "/root/xchg")
|
||||
(mkdir "/root/nix")
|
||||
(mkdir "/root/nix/store")
|
||||
(mount-essential-file-systems #:root "/root")
|
||||
|
||||
(mkdir "/root/dev")
|
||||
(let ((makedev (lambda (major minor)
|
||||
(+ (* major 256) minor))))
|
||||
(mknod "/root/dev/null" 'char-special #o666 (makedev 1 3))
|
||||
(mknod "/root/dev/zero" 'char-special #o666 (makedev 1 5)))
|
||||
(mkdir "/root/xchg")
|
||||
(mkdir-p "/root/nix/store")
|
||||
|
||||
(unless (file-exists? "/root/dev")
|
||||
(mkdir "/root/dev")
|
||||
(make-essential-device-nodes #:root "/root"))
|
||||
|
||||
;; Mount the host's store and exchange directory.
|
||||
(display "mounting QEMU's SMB shares...\n")
|
||||
(let ((server "10.0.2.4"))
|
||||
(mount (string-append "//" server "/store") "/root/nix/store" "cifs" 0
|
||||
(string->pointer "guest,sec=none"))
|
||||
(mount (string-append "//" server "/xchg") "/root/xchg" "cifs" 0
|
||||
(string->pointer "guest,sec=none")))
|
||||
(mount-qemu-smb-share "/store" "/root/nix/store")
|
||||
(mount-qemu-smb-share "/xchg" "/root/xchg")
|
||||
|
||||
;; Copy the directories that contain .scm and .go files so that the
|
||||
;; child process in the chroot can load modules (we would bind-mount
|
||||
;; them but for some reason that fails with EINVAL -- XXX).
|
||||
(mkdir "/root/share")
|
||||
(mkdir "/root/lib")
|
||||
(mount "none" "/root/share" "tmpfs")
|
||||
(mount "none" "/root/lib" "tmpfs")
|
||||
(copy-recursively "/share" "/root/share"
|
||||
#:log (%make-void-port "w"))
|
||||
(copy-recursively "/lib" "/root/lib"
|
||||
#:log (%make-void-port "w"))
|
||||
|
||||
|
||||
(if to-load
|
||||
(begin
|
||||
@@ -272,7 +314,10 @@ the Linux kernel.")
|
||||
(match (primitive-fork)
|
||||
(0
|
||||
(chroot "/root")
|
||||
(load-compiled "/loader.go"))
|
||||
(load-compiled "/loader.go")
|
||||
|
||||
;; TODO: Remove /lib, /share, and /loader.go.
|
||||
)
|
||||
(pid
|
||||
(format #t "boot file loaded under PID ~a~%" pid)
|
||||
(let ((status (waitpid pid)))
|
||||
@@ -282,7 +327,78 @@ the Linux kernel.")
|
||||
(display "entering a warm and cozy REPL\n")
|
||||
((@ (system repl repl) start-repl))))))
|
||||
#:name "qemu-initrd"
|
||||
#:modules '((guix build utils)
|
||||
(guix build linux-initrd))
|
||||
#:linux linux-libre
|
||||
#:linux-modules '("cifs.ko" "md4.ko" "ecb.ko")))
|
||||
|
||||
(define-public gnu-system-initrd
|
||||
;; Initrd for the GNU system itself, with nothing QEMU-specific.
|
||||
(expression->initrd
|
||||
'(begin
|
||||
(use-modules (srfi srfi-1)
|
||||
(srfi srfi-26)
|
||||
(ice-9 match)
|
||||
(guix build utils)
|
||||
(guix build linux-initrd))
|
||||
|
||||
(display "Welcome, this is GNU's early boot Guile.\n")
|
||||
(display "Use '--repl' for an initrd REPL.\n\n")
|
||||
|
||||
(mount-essential-file-systems)
|
||||
(let* ((args (linux-command-line))
|
||||
(option (lambda (opt)
|
||||
(let ((opt (string-append opt "=")))
|
||||
(and=> (find (cut string-prefix? opt <>)
|
||||
args)
|
||||
(lambda (arg)
|
||||
(substring arg (+ 1 (string-index arg #\=))))))))
|
||||
(to-load (option "--load"))
|
||||
(root (option "--root")))
|
||||
|
||||
(when (member "--repl" args)
|
||||
((@ (system repl repl) start-repl)))
|
||||
|
||||
;; Make /dev nodes.
|
||||
(make-essential-device-nodes)
|
||||
|
||||
;; Prepare the real root file system under /root.
|
||||
(mkdir-p "/root")
|
||||
(if root
|
||||
;; Assume ROOT has a usable /dev tree.
|
||||
(mount root "/root" "ext3")
|
||||
(begin
|
||||
(mount "none" "/root" "tmpfs")
|
||||
(make-essential-device-nodes #:root "/root")))
|
||||
|
||||
(mount-essential-file-systems #:root "/root")
|
||||
|
||||
(mkdir-p "/root/tmp")
|
||||
(mount "none" "/root/tmp" "tmpfs")
|
||||
|
||||
;; XXX: We don't copy our fellow Guile modules to /root (see
|
||||
;; 'qemu-initrd'), so if TO-LOAD tries to load a module (which can
|
||||
;; happen if it throws, to display the exception!), then we're
|
||||
;; screwed. Hopefully TO-LOAD is a simple expression that just does
|
||||
;; '(execlp ...)'.
|
||||
|
||||
(if to-load
|
||||
(begin
|
||||
(format #t "loading '~a'...\n" to-load)
|
||||
(chroot "/root")
|
||||
(primitive-load to-load)
|
||||
(format (current-error-port)
|
||||
"boot program '~a' terminated, rebooting~%"
|
||||
to-load)
|
||||
(sleep 2)
|
||||
(reboot))
|
||||
(begin
|
||||
(display "no init file passed via '--exec'\n")
|
||||
(display "entering a warm and cozy REPL\n")
|
||||
((@ (system repl repl) start-repl))))))
|
||||
#:name "qemu-system-initrd"
|
||||
#:modules '((guix build linux-initrd)
|
||||
(guix build utils))
|
||||
#:linux linux-libre))
|
||||
|
||||
;;; linux-initrd.scm ends here
|
||||
|
||||
+111
-21
@@ -29,6 +29,9 @@
|
||||
#:use-module (gnu packages bdb)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages algebra)
|
||||
#:use-module ((gnu packages gettext)
|
||||
#:renamer (symbol-prefix-proc 'g:))
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu))
|
||||
@@ -119,24 +122,16 @@
|
||||
(base32
|
||||
"0jxnz9ahfic79rp93l5wxcbgh4pkv85mwnjlbv1gz3jawv5cvwp1"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
;; The upstream tarball lacks man pages, and building them would require
|
||||
;; DocBook & co. Thus, use Gentoo's pre-built man pages.
|
||||
`(("man-pages"
|
||||
,(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://distfiles.gentoo.org/distfiles/module-init-tools-" version
|
||||
"-man.tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1j1nzi87kgsh4scl645fhwhjvljxj83cmdasa4n4p5krhasgw358"))))))
|
||||
(arguments
|
||||
;; FIXME: The upstream tarball lacks man pages, and building them would
|
||||
;; require DocBook & co. We used to use Gentoo's pre-built man pages,
|
||||
;; but they vanished. In the meantime, fake it.
|
||||
'(#:phases (alist-cons-before
|
||||
'unpack 'unpack-man-pages
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((man-pages (assoc-ref inputs "man-pages")))
|
||||
(zero? (system* "tar" "xvf" man-pages))))
|
||||
'configure 'fake-docbook
|
||||
(lambda _
|
||||
(substitute* "Makefile.in"
|
||||
(("^DOCBOOKTOMAN.*$")
|
||||
"DOCBOOKTOMAN = true\n")))
|
||||
%standard-phases)))
|
||||
(home-page "http://www.kernel.org/pub/linux/utils/kernel/module-init-tools/")
|
||||
(synopsis "Tools for loading and managing Linux kernel modules")
|
||||
@@ -146,7 +141,7 @@
|
||||
(license gpl2+)))
|
||||
|
||||
(define-public linux-libre
|
||||
(let* ((version* "3.3.8")
|
||||
(let* ((version* "3.11")
|
||||
(build-phase
|
||||
'(lambda* (#:key system #:allow-other-keys #:rest args)
|
||||
(let ((arch (car (string-split system #\-))))
|
||||
@@ -192,9 +187,10 @@
|
||||
(uri (linux-libre-urls version))
|
||||
(sha256
|
||||
(base32
|
||||
"0jkfh0z1s6izvdnc3njm39dhzp1cg8i06jv06izwqz9w9qsprvnl"))))
|
||||
"1vlk04xkvyy1kc9zz556md173rn1qzlnvhz7c9sljv4bpk3mdspl"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs `(("perl" ,perl)
|
||||
("bc" ,bc)
|
||||
("module-init-tools" ,module-init-tools)))
|
||||
(arguments
|
||||
`(#:modules ((guix build gnu-build-system)
|
||||
@@ -212,6 +208,11 @@
|
||||
(license gpl2)
|
||||
(home-page "http://www.gnu.org/software/linux-libre/"))))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Pluggable authentication modules (PAM).
|
||||
;;;
|
||||
|
||||
(define-public linux-pam
|
||||
(package
|
||||
(name "linux-pam")
|
||||
@@ -235,9 +236,15 @@
|
||||
;; ("cracklib" ,cracklib)
|
||||
))
|
||||
(arguments
|
||||
;; XXX: Tests won't run in chroot, presumably because /etc/pam.d
|
||||
;; isn't available.
|
||||
'(#:tests? #f))
|
||||
'(;; Most users, such as `shadow', expect the headers to be under
|
||||
;; `security'.
|
||||
#:configure-flags (list (string-append "--includedir="
|
||||
(assoc-ref %outputs "out")
|
||||
"/include/security"))
|
||||
|
||||
;; XXX: Tests won't run in chroot, presumably because /etc/pam.d
|
||||
;; isn't available.
|
||||
#:tests? #f))
|
||||
(home-page "http://www.linux-pam.org/")
|
||||
(synopsis "Pluggable authentication modules for Linux")
|
||||
(description
|
||||
@@ -247,6 +254,11 @@ be used through the PAM API to perform tasks, like authenticating a user
|
||||
at login. Local and dynamic reconfiguration are its key features")
|
||||
(license bsd-3)))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Miscellaneous.
|
||||
;;;
|
||||
|
||||
(define-public psmisc
|
||||
(package
|
||||
(name "psmisc")
|
||||
@@ -548,3 +560,81 @@ controls IPv4 and IPv6 configuration and tc stands for traffic control. Both
|
||||
tools print detailed usage messages and are accompanied by a set of
|
||||
manpages.")
|
||||
(license gpl2+)))
|
||||
|
||||
(define-public net-tools
|
||||
;; XXX: This package is basically unmaintained, but it provides a few
|
||||
;; commands not yet provided by Inetutils, such as 'route', so we have to
|
||||
;; live with it.
|
||||
(package
|
||||
(name "net-tools")
|
||||
(version "1.60")
|
||||
(home-page "http://www.tazenda.demon.co.uk/phil/net-tools/")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append home-page "/" name "-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0yvxrzk0mzmspr7sa34hm1anw6sif39gyn85w4c5ywfn8inxvr3s"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:phases (alist-replace
|
||||
'patch
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(define (apply-patch file)
|
||||
(zero? (system* "patch" "-p1" "--batch"
|
||||
"--input" file)))
|
||||
|
||||
(let ((patch.gz (assoc-ref inputs "patch")))
|
||||
(format #t "applying Debian patch set '~a'...~%"
|
||||
patch.gz)
|
||||
(system (string-append "gunzip < " patch.gz " > the-patch"))
|
||||
(pk 'here)
|
||||
(and (apply-patch "the-patch")
|
||||
(for-each apply-patch
|
||||
(find-files "debian/patches"
|
||||
"\\.patch")))))
|
||||
(alist-replace
|
||||
'configure
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(mkdir-p (string-append out "/bin"))
|
||||
(mkdir-p (string-append out "/sbin"))
|
||||
|
||||
;; Pretend we have everything...
|
||||
(system "yes | make config")
|
||||
|
||||
;; ... except we don't have libdnet, so remove that
|
||||
;; definition.
|
||||
(substitute* '("config.make" "config.h")
|
||||
(("^.*HAVE_AFDECnet.*$") ""))))
|
||||
%standard-phases))
|
||||
|
||||
;; Binaries that depend on libnet-tools.a don't declare that
|
||||
;; dependency, making it parallel-unsafe.
|
||||
#:parallel-build? #f
|
||||
|
||||
#:tests? #f ; no test suite
|
||||
#:make-flags (list "CC=gcc"
|
||||
(string-append "BASEDIR="
|
||||
(assoc-ref %outputs "out")))))
|
||||
|
||||
;; Use the big Debian patch set (the thing does not even compile out of
|
||||
;; the box.)
|
||||
(inputs `(("patch" ,(origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
"http://ftp.de.debian.org/debian/pool/main/n/net-tools/net-tools_1.60-24.2.diff.gz")
|
||||
(sha256
|
||||
(base32
|
||||
"0p93lsqx23v5fv4hpbrydmfvw1ha2rgqpn2zqbs2jhxkzhjc030p"))))))
|
||||
(native-inputs `(("gettext" ,g:gettext)))
|
||||
|
||||
(synopsis "Tools for controlling the network subsystem in Linux")
|
||||
(description
|
||||
"This package includes the important tools for controlling the network
|
||||
subsystem of the Linux kernel. This includes arp, hostname, ifconfig,
|
||||
netstat, rarp and route. Additionally, this package contains utilities
|
||||
relating to particular network hardware types (plipconfig, slattach) and
|
||||
advanced aspects of IP configuration (iptunnel, ipmaddr).")
|
||||
(license gpl2+)))
|
||||
|
||||
+6
-10
@@ -26,14 +26,14 @@
|
||||
(define-public m4
|
||||
(package
|
||||
(name "m4")
|
||||
(version "1.4.16")
|
||||
(version "1.4.17")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/m4/m4-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"035r7ma272j2cwni2961jp22k6bn3n9xwn3b3qbcn2yrvlghql22"))))
|
||||
"0w0da1chh12mczxa5lnwzjk9czi3dq6gnnndbpa6w4rj76b1yklf"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
;; XXX: Disable tests on those platforms with know issues.
|
||||
@@ -41,10 +41,8 @@
|
||||
'("x86_64-darwin"
|
||||
"i686-cygwin"
|
||||
"i686-sunos")))
|
||||
#:patches (list (assoc-ref %build-inputs "patch/s_isdir")
|
||||
(assoc-ref %build-inputs
|
||||
"patch/readlink-EINVAL")
|
||||
(assoc-ref %build-inputs "patch/gets"))
|
||||
#:patches (list (assoc-ref %build-inputs
|
||||
"patch/readlink-EINVAL"))
|
||||
#:phases (alist-cons-before
|
||||
'check 'pre-check
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
@@ -57,10 +55,8 @@
|
||||
(("/bin/sh")
|
||||
(format #f "~a/bin/bash" bash)))))
|
||||
%standard-phases)))
|
||||
(inputs `(("patch/s_isdir" ,(search-patch "m4-s_isdir.patch"))
|
||||
("patch/readlink-EINVAL"
|
||||
,(search-patch "m4-readlink-EINVAL.patch"))
|
||||
("patch/gets" ,(search-patch "m4-gets-undeclared.patch"))))
|
||||
(inputs `(("patch/readlink-EINVAL"
|
||||
,(search-patch "m4-readlink-EINVAL.patch"))))
|
||||
(synopsis "Macro processor")
|
||||
(description
|
||||
"GNU M4 is an implementation of the traditional Unix macro processor. It
|
||||
|
||||
@@ -16,20 +16,24 @@
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages mailutils)
|
||||
(define-module (gnu packages mail)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages gnutls)
|
||||
#:use-module (gnu packages gdbm)
|
||||
#:use-module (gnu packages guile)
|
||||
#:use-module (gnu packages ncurses)
|
||||
#:use-module (gnu packages readline)
|
||||
#:use-module (gnu packages dejagnu)
|
||||
#:use-module (gnu packages m4)
|
||||
#:use-module (gnu packages texinfo)
|
||||
#:use-module (gnu packages mysql)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (guix licenses)
|
||||
#:use-module (gnu packages cyrus-sasl)
|
||||
#:use-module (gnu packages dejagnu)
|
||||
#:use-module (gnu packages gdbm)
|
||||
#:use-module (gnu packages gnutls)
|
||||
#:use-module (gnu packages guile)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages m4)
|
||||
#:use-module (gnu packages mysql)
|
||||
#:use-module (gnu packages ncurses)
|
||||
#:use-module (gnu packages openssl)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages readline)
|
||||
#:use-module (gnu packages texinfo)
|
||||
#:use-module ((guix licenses)
|
||||
#:select (gpl2+ gpl3+ lgpl3+))
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu))
|
||||
@@ -104,3 +108,69 @@ message handling system.")
|
||||
(license
|
||||
;; Libraries are under LGPLv3+, and programs under GPLv3+.
|
||||
(list gpl3+ lgpl3+))))
|
||||
|
||||
(define-public fetchmail
|
||||
(package
|
||||
(name "fetchmail")
|
||||
(version "6.3.26")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/fetchmail/branch_6.3/fetchmail-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0l78ayvi9dm8hd190gl139cs2xqsrf7r9ncilslw20mgvd6cbd3r"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("openssl" ,openssl)))
|
||||
(arguments
|
||||
`(#:configure-flags (list (string-append "--with-ssl="
|
||||
(assoc-ref %build-inputs "openssl")))))
|
||||
(home-page "http://fetchmail.berlios.de/")
|
||||
(synopsis "Remote-mailr etrieval and forwarding utility")
|
||||
(description
|
||||
"Fetchmail is a full-featured, robust, well-documented remote-mail
|
||||
retrieval and forwarding utility intended to be used over on-demand
|
||||
TCP/IP links (such as SLIP or PPP connections). It supports every
|
||||
remote-mail protocol now in use on the Internet: POP2, POP3, RPOP, APOP,
|
||||
KPOP, all flavors of IMAP, ETRN, and ODMR. It can even support IPv6
|
||||
and IPSEC.
|
||||
|
||||
Fetchmail retrieves mail from remote mail servers and forwards it via SMTP,
|
||||
so it can then be read by normal mail user agents such as mutt, elm
|
||||
or BSD Mail. It allows all your system MTA's filtering, forwarding, and
|
||||
aliasing facilities to work just as they would on normal mail.")
|
||||
(license gpl2+))) ; most files are actually public domain or x11
|
||||
|
||||
(define-public mutt
|
||||
(package
|
||||
(name "mutt")
|
||||
(version "1.5.21")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "ftp://ftp.mutt.org/mutt/devel/mutt-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1864cwz240gh0zy56fb47qqzwyf6ghg01037rb4p2kqgimpg6h91"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("cyrus-sasl" ,cyrus-sasl)
|
||||
("ncurses" ,ncurses)
|
||||
("openssl" ,openssl)
|
||||
("perl" ,perl)))
|
||||
(arguments
|
||||
`(#:configure-flags '("--enable-smtp"
|
||||
"--enable-imap"
|
||||
"--enable-pop"
|
||||
"--with-ssl"
|
||||
"--with-sasl"
|
||||
;; so that mutt does not check whether the path
|
||||
;; exists, which it does not in the chroot
|
||||
"--with-mailpath=/var/mail")))
|
||||
(home-page "http://www.mutt.org/")
|
||||
(synopsis "Mail client")
|
||||
(description
|
||||
"Mutt is a small but very powerful text-based mail client for Unix
|
||||
operating systems.")
|
||||
(license gpl2+)))
|
||||
@@ -44,7 +44,7 @@
|
||||
|
||||
;;; Commentary:
|
||||
;;;
|
||||
;;; This modules provides tools to build tarballs of the "bootstrap binaries"
|
||||
;;; This module provides tools to build tarballs of the "bootstrap binaries"
|
||||
;;; used in (gnu packages bootstrap). These statically-linked binaries are
|
||||
;;; taken for granted and used as the root of the whole bootstrap procedure.
|
||||
;;;
|
||||
@@ -127,7 +127,10 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
|
||||
;; cross-compiling).
|
||||
(inputs (match (assoc "perl" (package-inputs coreutils))
|
||||
(#f '())
|
||||
(x (list x))))))
|
||||
(x (list x))))
|
||||
|
||||
;; Remove the `debug' output.
|
||||
(outputs '("out"))))
|
||||
(bzip2 (package (inherit bzip2)
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments bzip2)
|
||||
@@ -451,6 +454,7 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
|
||||
;; than in hard-coded configure-time paths.
|
||||
(let* ((guile (package (inherit guile-2.0)
|
||||
(name (string-append (package-name guile-2.0) "-static"))
|
||||
(synopsis "Statically-linked and relocatable Guile")
|
||||
(inputs
|
||||
`(("patch/relocatable"
|
||||
,(search-patch "guile-relocatable.patch"))
|
||||
@@ -511,8 +515,10 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
|
||||
(let ()
|
||||
(use-modules (guix build utils))
|
||||
|
||||
(let ((in (assoc-ref %build-inputs "guile"))
|
||||
(out (assoc-ref %outputs "out")))
|
||||
(let* ((in (assoc-ref %build-inputs "guile"))
|
||||
(out (assoc-ref %outputs "out"))
|
||||
(guile1 (string-append in "/bin/guile"))
|
||||
(guile2 (string-append out "/bin/guile")))
|
||||
(mkdir-p (string-append out "/share/guile/2.0"))
|
||||
(copy-recursively (string-append in "/share/guile/2.0")
|
||||
(string-append out "/share/guile/2.0"))
|
||||
@@ -522,12 +528,26 @@ for `sh' in $PATH, and without nscd, and with static NSS modules."
|
||||
(string-append out "/lib/guile/2.0/ccache"))
|
||||
|
||||
(mkdir (string-append out "/bin"))
|
||||
(copy-file (string-append in "/bin/guile")
|
||||
(string-append out "/bin/guile"))
|
||||
(remove-store-references (string-append out "/bin/guile"))
|
||||
#t))))
|
||||
(copy-file guile1 guile2)
|
||||
|
||||
;; Does the relocated Guile work?
|
||||
(and ,(if (%current-target-system)
|
||||
#t
|
||||
'(zero? (system* guile2 "--version")))
|
||||
(begin
|
||||
;; Strip store references.
|
||||
(remove-store-references guile2)
|
||||
|
||||
;; Does the stripped Guile work? If it aborts, it could be
|
||||
;; that it tries to open iconv descriptors and fails because
|
||||
;; libc's iconv data isn't available (see
|
||||
;; `guile-default-utf8.patch'.)
|
||||
,(if (%current-target-system)
|
||||
#t
|
||||
'(zero? (system* guile2 "--version")))))))))
|
||||
(inputs `(("guile" ,%guile-static)))
|
||||
(outputs '("out"))))
|
||||
(outputs '("out"))
|
||||
(synopsis "Minimal statically-linked and relocatable Guile")))
|
||||
|
||||
(define (tarball-package pkg)
|
||||
"Return a package containing a tarball of PKG."
|
||||
|
||||
@@ -0,0 +1,146 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages maths)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module ((guix licenses)
|
||||
#:renamer (symbol-prefix-proc 'license:))
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module ((gnu packages gettext)
|
||||
#:renamer (symbol-prefix-proc 'gnu:))
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages readline)
|
||||
#:use-module (gnu packages xml))
|
||||
|
||||
(define-public units
|
||||
(package
|
||||
(name "units")
|
||||
(version "2.01")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/units/units-" version
|
||||
".tar.gz"))
|
||||
(sha256 (base32
|
||||
"1wl8kaxgk4l5jgc1f71mx1rwa6ib84krjmzyzn2f987z1g3i52qk"))))
|
||||
(build-system gnu-build-system)
|
||||
(synopsis "Conversion between thousands of scales")
|
||||
(description
|
||||
"GNU Units converts quantities expressed in various systems of
|
||||
measurement to their equivalents in other systems of measurement. Like
|
||||
many similar programs, it can handle multiplicative scale changes. It can
|
||||
also handle nonlinear conversions such as Fahrenheit to Celsius or wire
|
||||
gauge, and it can convert from and to sums of units, such as converting
|
||||
between meters and feet plus inches.
|
||||
|
||||
Beyond simple unit conversions, GNU Units can be used as a general-purpose
|
||||
scientific calculator that keeps track of units in its calculations. You
|
||||
can form arbitrary complex mathematical expressions of dimensions including
|
||||
sums, products, quotients, powers, and even roots of dimensions. Thus you
|
||||
can ensure accuracy and dimensional consistency when working with long
|
||||
expressions that involve many different units that may combine in complex
|
||||
ways.
|
||||
|
||||
The units are defined in an external data file. You can use the extensive
|
||||
data file that comes with this program, or you can provide your own data
|
||||
file to suit your needs. You can also use your own data file to supplement
|
||||
the standard data file.")
|
||||
(license license:gpl3+)
|
||||
(home-page "http://www.gnu.org/software/units/")))
|
||||
|
||||
(define-public gsl
|
||||
(package
|
||||
(name "gsl")
|
||||
(version "1.15")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/gsl/gsl-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"18qf6jzz1r3mzb5qynywv4xx3z9g61hgkbpkdrhbgqh2g7jhgfc5"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
(alist-replace
|
||||
'configure
|
||||
(lambda* (#:key target system outputs #:allow-other-keys #:rest args)
|
||||
(let ((configure (assoc-ref %standard-phases 'configure)))
|
||||
;; disable numerically unstable test on i686, see thread at
|
||||
;; http://lists.gnu.org/archive/html/bug-gsl/2011-11/msg00019.html
|
||||
(if (string=? (or target system) "i686-linux")
|
||||
(substitute* "ode-initval2/Makefile.in"
|
||||
(("TESTS = \\$\\(check_PROGRAMS\\)") "TESTS =")))
|
||||
(apply configure args)))
|
||||
%standard-phases)))
|
||||
(home-page "http://www.gnu.org/software/gsl/")
|
||||
(synopsis "Numerical library for C and C++")
|
||||
(description
|
||||
"The GNU Scientific Library (GSL) is a numerical library for C
|
||||
and C++ programmers. It is free software under the GNU General
|
||||
Public License.
|
||||
|
||||
The library provides a wide range of mathematical routines such
|
||||
as random number generators, special functions and least-squares
|
||||
fitting. There are over 1000 functions in total with an
|
||||
extensive test suite.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public pspp
|
||||
(package
|
||||
(name "pspp")
|
||||
(version "0.8.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/pspp/pspp-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0qhxsdbwxd3cn1shc13wxvx2lg32lp4z6sz24kv3jz7p5xfi8j7x"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("gettext" ,gnu:gettext)
|
||||
("gsl" ,gsl)
|
||||
("libxml2" ,libxml2)
|
||||
("readline" ,readline)
|
||||
("zlib" ,zlib)))
|
||||
(native-inputs
|
||||
`(("perl" ,perl)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
`("--without-cairo" ; FIXME: tests currently fail for lack of font
|
||||
"--without-gui"))) ; FIXME: package missing dependencies
|
||||
(home-page "http://www.gnu.org/software/pspp/")
|
||||
(synopsis "Statistical analysis")
|
||||
(description
|
||||
"PSPP is a program for statistical analysis of sampled data. It is a
|
||||
free replacement for the proprietary program SPSS, and appears very similar
|
||||
to it.
|
||||
|
||||
PSPP can perform descriptive statistics, T-tests, anova, linear and logistic
|
||||
regression, cluster analysis, factor analysis, non-parametric tests and
|
||||
more. Its backend is designed to perform its analyses as fast as possible,
|
||||
regardless of the size of the input data. You can use PSPP with its
|
||||
graphical interface or the more traditional syntax commands.")
|
||||
(license license:gpl3+)))
|
||||
@@ -19,8 +19,13 @@
|
||||
(define-module (gnu packages mp3)
|
||||
#:use-module ((guix licenses)
|
||||
#:renamer (symbol-prefix-proc 'license:))
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages cdrom)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages ghostscript)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages gtk)
|
||||
#:use-module (gnu packages oggvorbis)
|
||||
#:use-module (gnu packages pcre)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
@@ -205,3 +210,58 @@ This package contains the binary.")
|
||||
frontends, as an mp3 player and as an mp3 to wave file decoder (primarily for
|
||||
use with CD-recording software).")
|
||||
(license license:gpl2)))
|
||||
|
||||
(define-public lame
|
||||
(package
|
||||
(name "lame")
|
||||
(version "3.99.5")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/lame/lame/3.99/lame-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1zr3kadv35ii6liia0bpfgxpag27xcivp571ybckpbz4b10nnd14"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "http://lame.sourceforge.net/")
|
||||
(synopsis "MPEG Audio Layer III (MP3) encoder")
|
||||
(description "LAME is a high quality MPEG Audio Layer III (MP3) encoder.")
|
||||
(license license:lgpl2.0)))
|
||||
|
||||
(define-public ripperx
|
||||
(package
|
||||
(name "ripperx")
|
||||
(version "2.7.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/ripperx/ripperx/"
|
||||
version "/ripperX-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"130rsb2ly0l6hz728m9qr605ir4073xfl2acvf83id63kxfzjn3x"))))
|
||||
(build-system gnu-build-system)
|
||||
(propagated-inputs
|
||||
`(("gs-fonts" ,gs-fonts)
|
||||
("cdparanoia" ,cdparanoia)
|
||||
("flac" ,flac)
|
||||
("lame" ,lame)
|
||||
("vorbis-tools" ,vorbis-tools)))
|
||||
(inputs
|
||||
`(("patch/libm" ,(search-patch "ripperx-libm.patch"))
|
||||
("glib" ,glib)
|
||||
("gtk+" ,gtk+)
|
||||
("id3lib" ,id3lib)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(arguments
|
||||
`(#:patches
|
||||
;; see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=713684
|
||||
(list (assoc-ref %build-inputs "patch/libm"))))
|
||||
(synopsis "GTK program to rip and encode CD audio tracks")
|
||||
(description
|
||||
"RipperX is a GTK program to rip CD audio tracks and encode them to the
|
||||
Ogg, MP3, or FLAC formats. It's goal is to be easy to use, requiring only
|
||||
a few mouse clicks to convert an entire album. It supports CDDB lookups
|
||||
for album and track information.")
|
||||
(license license:gpl2)
|
||||
(home-page "http://sourceforge.net/projects/ripperx/")))
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
("libxml2" ,libxml2)
|
||||
("perl" ,perl)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python" ,python)
|
||||
("python" ,python-wrapper)
|
||||
("zlib" ,zlib)))
|
||||
(arguments
|
||||
`(#:phases
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages ocrad)
|
||||
#:use-module (guix licenses)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module ((gnu packages compression)
|
||||
#:select (lzip)))
|
||||
|
||||
(define-public ocrad
|
||||
(package
|
||||
(name "ocrad")
|
||||
(version "0.22")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/ocrad/ocrad-"
|
||||
version ".tar.lz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1zcqa4ydcmmhzyg730wywnmkjv2x2av3r875vwz69k69yjydrjfn"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs `(("lzip" ,lzip)))
|
||||
(home-page "http://www.gnu.org/software/ocrad/")
|
||||
(synopsis "Optical character recognition based on feature extraction")
|
||||
(description
|
||||
"GNU Ocrad is an OCR (Optical Character Recognition) program based on a
|
||||
feature extraction method. It reads images in pbm (bitmap), pgm
|
||||
(greyscale) or ppm (color) formats and produces text in byte (8-bit)
|
||||
or UTF-8 formats.
|
||||
|
||||
Also includes a layout analyser able to separate the columns or blocks of text
|
||||
normally found on printed pages.
|
||||
|
||||
Ocrad can be used as a stand-alone console application, or as a backend to
|
||||
other programs.")
|
||||
(license gpl3+)))
|
||||
@@ -191,7 +191,7 @@ meaning that audio is compressed in FLAC without any loss in quality.")
|
||||
("libogg" ,libogg)
|
||||
("libpng" ,libpng)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python" ,python)
|
||||
("python" ,python-wrapper)
|
||||
("zlib" ,zlib)))
|
||||
(synopsis "kate, a karaoke and text codec for embedding in ogg")
|
||||
(description
|
||||
|
||||
@@ -0,0 +1,119 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages package-management)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module ((guix licenses) #:select (gpl3+))
|
||||
#:use-module (gnu packages guile)
|
||||
#:use-module ((gnu packages compression) #:select (bzip2 gzip))
|
||||
#:use-module (gnu packages gnupg)
|
||||
#:use-module (gnu packages sqlite)
|
||||
#:use-module (gnu packages pkg-config))
|
||||
|
||||
(define-public guix
|
||||
(package
|
||||
(name "guix")
|
||||
(version "0.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "ftp://alpha.gnu.org/gnu/guix/guix-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0xpfdmlfkkpmgrb8lpaqs5wxx31m4jslajs6b9waz5wp91zk7fix"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags (list
|
||||
"--localstatedir=/var"
|
||||
(string-append "--with-libgcrypt-prefix="
|
||||
(assoc-ref %build-inputs
|
||||
"libgcrypt")))
|
||||
#:phases (alist-cons-before
|
||||
'configure 'copy-bootstrap-guile
|
||||
(lambda* (#:key system inputs #:allow-other-keys)
|
||||
(define (copy arch)
|
||||
(let ((guile (assoc-ref inputs
|
||||
(string-append "boot-guile/"
|
||||
arch)))
|
||||
(target (string-append "gnu/packages/bootstrap/"
|
||||
arch "-linux/"
|
||||
"/guile-2.0.7.tar.xz")))
|
||||
(copy-file guile target)))
|
||||
|
||||
(copy "i686")
|
||||
(copy "x86_64")
|
||||
#t)
|
||||
%standard-phases)))
|
||||
(inputs
|
||||
(let ((boot-guile (lambda (arch hash)
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://alpha.gnu.org/gnu/guix/bootstrap/"
|
||||
arch "-linux"
|
||||
"/20130105/guile-2.0.7.tar.xz"))
|
||||
(sha256 hash)))))
|
||||
`(("bzip2" ,bzip2)
|
||||
("gzip" ,gzip)
|
||||
|
||||
("sqlite" ,sqlite)
|
||||
("libgcrypt" ,libgcrypt)
|
||||
("guile" ,guile-2.0)
|
||||
("pkg-config" ,pkg-config)
|
||||
|
||||
("boot-guile/i686"
|
||||
,(boot-guile "i686"
|
||||
(base32
|
||||
"0z11rlyclnh9palrsk0xhgm84rmvzza0gkwvlsiazsjnqpscd9zr")))
|
||||
("boot-guile/x86_64"
|
||||
,(boot-guile "x86_64"
|
||||
(base32
|
||||
"0b5a2ngd9a7z2wnm01wc27rlwb61x854ndadxwmj8v8lrl6j2hxw"))))))
|
||||
(home-page "http://www.gnu.org/software/guix")
|
||||
(synopsis "Managing installed software packages and versions")
|
||||
(description
|
||||
"GNU Guix is a purely functional package manager for the GNU system,
|
||||
and a distribution thereof.
|
||||
|
||||
In addition to standard package management features, Guix supports
|
||||
transactional upgrades and roll-backs, unprivileged package management,
|
||||
per-user profiles, and garbage collection.
|
||||
|
||||
It provides Guile Scheme APIs, including high-level embedded domain-specific
|
||||
languages (EDSLs), to describe how packages are built and composed.
|
||||
|
||||
A user-land free software distribution for GNU/Linux comes as part of Guix.
|
||||
|
||||
Guix is based on the Nix package manager.")
|
||||
(license gpl3+)))
|
||||
|
||||
(define-public guix-0.4
|
||||
;; XXX: Hack to allow the use of a 0.4ish tarball. This assumes that you
|
||||
;; have run 'make dist' in your build tree. Remove when 0.4 is out.
|
||||
(let* ((builddir (dirname
|
||||
(canonicalize-path
|
||||
(dirname (search-path %load-path
|
||||
"guix/config.scm")))))
|
||||
(tarball (string-append builddir "/guix-0.4.tar.gz")))
|
||||
(package (inherit guix)
|
||||
(version "0.4rc")
|
||||
(source (if (file-exists? tarball)
|
||||
tarball
|
||||
(package-source guix))))))
|
||||
@@ -0,0 +1,12 @@
|
||||
Don't "mkdir $(localstatedir)" since we can't do it (/var).
|
||||
|
||||
--- avahi-0.6.27/avahi-daemon/Makefile.in 2010-07-13 05:06:35.000000000 +0200
|
||||
+++ avahi-0.6.27/avahi-daemon/Makefile.in 2010-07-13 18:03:45.000000000 +0200
|
||||
@@ -1554,7 +1554,6 @@ xmllint:
|
||||
done
|
||||
|
||||
install-data-local:
|
||||
- test -z "$(localstatedir)/run" || $(mkdir_p) "$(DESTDIR)$(localstatedir)/run"
|
||||
|
||||
update-systemd:
|
||||
curl http://cgit.freedesktop.org/systemd/plain/src/sd-daemon.c > sd-daemon.c
|
||||
@@ -1,17 +1,18 @@
|
||||
Patch shebangs in source that gets unpacked by `configure'.
|
||||
|
||||
--- bigloo3.9a/gc/install-gc-7.2d 2013-01-14 15:24:01.000000000 +0100
|
||||
+++ bigloo3.9a/gc/install-gc-7.2d 2013-01-14 15:23:51.000000000 +0100
|
||||
@@ -29,9 +29,11 @@ fi
|
||||
--- bigloo4.0b/gc/install-gc-7.3alpha3-20130330 2013-08-19 10:45:20.000000000 +0200
|
||||
+++ bigloo4.0b/gc/install-gc-7.3alpha3-20130330 2013-08-19 10:46:36.000000000 +0200
|
||||
@@ -29,10 +29,12 @@ fi
|
||||
|
||||
# untar the two versions of the GC
|
||||
$tar xfz $src -C ../gc || (echo "$tar xfz $src failed"; exit 1)
|
||||
/bin/rm -rf "../gc/$gc"_fth
|
||||
+find ../gc/gc-7.2 -perm /111 -type f | xargs sed -i -e"s|/bin/sh|`type -P bash`|g"
|
||||
mv ../gc/gc-7.2 "../gc/$gc"_fth || (echo "mv gc-7.2 failed"; exit 1)
|
||||
-/bin/rm -rf "../gc/$gc"_fth
|
||||
+rm -rf "../gc/$gc"_fth
|
||||
+find ../gc/$gc -perm /111 -type f | xargs sed -i -e"s|/bin/sh|`type -P sh`|g"
|
||||
mv ../gc/$gc "../gc/$gc"_fth || (echo "mv $gc failed"; exit 1)
|
||||
|
||||
$tar xfz $src -C ../gc || (echo "$tar xfz $src failed"; exit 1)
|
||||
+find ../gc/gc-7.2 -perm /111 -type f | xargs sed -i -e"s|/bin/sh|`type -P bash`|g"
|
||||
mv ../gc/gc-7.2 "../gc/$gc"
|
||||
+find ../gc/$gc -perm /111 -type f | xargs sed -i -e"s|/bin/sh|`type -P sh`|g"
|
||||
|
||||
# general Bigloo patch
|
||||
|
||||
(cd "../gc/$gc"_fth && $patch -p1 < ../$gc.patch > /dev/null)
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
diff -r -u cdparanoia-III-10.2.old/interface/Makefile.in cdparanoia-III-10.2.new/interface/Makefile.in
|
||||
--- cdparanoia-III-10.2.old/interface/Makefile.in 2008-08-21 18:08:54.000000000 +0200
|
||||
+++ cdparanoia-III-10.2.new/interface/Makefile.in 2013-08-07 18:48:32.000000000 +0200
|
||||
@@ -7,7 +7,7 @@
|
||||
srcdir=@srcdir@
|
||||
|
||||
@SET_MAKE@
|
||||
-FLAGS=@SBPCD_H@ @UCDROM_H@ @TYPESIZES@ @CFLAGS@
|
||||
+FLAGS=@SBPCD_H@ @UCDROM_H@ @TYPESIZES@ @CFLAGS@ -fPIC
|
||||
OPT=@OPT@ $(FLAGS)
|
||||
DEBUG=@DEBUG@ -DCDDA_TEST
|
||||
CC=@CC@
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
slib:
|
||||
$(MAKE) lessmessy
|
||||
- $(MAKE) libcdda_interface.so CFLAGS="$(OPT) -fpic"
|
||||
+ $(MAKE) libcdda_interface.so CFLAGS="$(OPT)"
|
||||
[ -e libcdda_interface.so.0 ] || ln -s libcdda_interface.so libcdda_interface.so.0
|
||||
|
||||
test:
|
||||
@@ -46,7 +46,7 @@
|
||||
$(RANLIB) libcdda_interface.a
|
||||
|
||||
libcdda_interface.so: $(OFILES)
|
||||
- $(CC) -fpic -shared -o libcdda_interface.so.0.$(VERSION) -Wl,-soname -Wl,libcdda_interface.so.0 $(OFILES) $(LIBS)
|
||||
+ $(CC) -fPIC -shared -o libcdda_interface.so.0.$(VERSION) -Wl,-soname -Wl,libcdda_interface.so.0 $(OFILES) $(LIBS)
|
||||
[ -e libcdda_interface.so.0 ] || ln -s libcdda_interface.so.0.$(VERSION) libcdda_interface.so.0
|
||||
[ -e libcdda_interface.so ] || ln -s libcdda_interface.so.0.$(VERSION) libcdda_interface.so
|
||||
|
||||
diff -r -u cdparanoia-III-10.2.old/paranoia/Makefile.in cdparanoia-III-10.2.new/paranoia/Makefile.in
|
||||
--- cdparanoia-III-10.2.old/paranoia/Makefile.in 2008-09-04 21:02:47.000000000 +0200
|
||||
+++ cdparanoia-III-10.2.new/paranoia/Makefile.in 2013-08-07 18:49:54.000000000 +0200
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
@SET_MAKE@
|
||||
FLAGS=@TYPESIZES@ @CFLAGS@
|
||||
-OPT=@OPT@ $(FLAGS)
|
||||
+OPT=@OPT@ $(FLAGS) -fPIC
|
||||
DEBUG=@DEBUG@
|
||||
CC=@CC@
|
||||
LD=@CC@
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
slib:
|
||||
$(MAKE) lessmessy
|
||||
- $(MAKE) libcdda_paranoia.so CFLAGS="$(OPT) -fpic"
|
||||
+ $(MAKE) libcdda_paranoia.so CFLAGS="$(OPT)"
|
||||
|
||||
#test: $(TFILES)
|
||||
#
|
||||
@@ -44,7 +44,7 @@
|
||||
$(RANLIB) libcdda_paranoia.a
|
||||
|
||||
libcdda_paranoia.so: $(OFILES)
|
||||
- $(CC) -fpic -shared -o libcdda_paranoia.so.0.$(VERSION) -Wl,-soname -Wl,libcdda_paranoia.so.0 $(OFILES) -L ../interface -lcdda_interface
|
||||
+ $(CC) -fPIC -shared -o libcdda_paranoia.so.0.$(VERSION) -Wl,-soname -Wl,libcdda_paranoia.so.0 $(OFILES) -L ../interface -lcdda_interface
|
||||
[ -e libcdda_paranoia.so.0 ] || ln -s libcdda_paranoia.so.0.$(VERSION) libcdda_paranoia.so.0
|
||||
[ -e libcdda_paranoia.so ] || ln -s libcdda_paranoia.so.0.$(VERSION) libcdda_paranoia.so
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
Do not try to create $localstatedir and $sysconfdir since we cannot do this
|
||||
when they are /var and /etc.
|
||||
|
||||
--- dbus-1.6.4/bus/Makefile.in 2013-09-11 16:15:13.000000000 +0200
|
||||
+++ dbus-1.6.4/bus/Makefile.in 2013-09-11 16:15:15.000000000 +0200
|
||||
@@ -1510,9 +1510,6 @@ clean-local:
|
||||
/bin/rm *.bb *.bbg *.da *.gcov || true
|
||||
|
||||
install-data-hook:
|
||||
- $(mkinstalldirs) $(DESTDIR)$(localstatedir)/run/dbus
|
||||
- $(mkinstalldirs) $(DESTDIR)$(configdir)/system.d
|
||||
- $(mkinstalldirs) $(DESTDIR)$(configdir)/session.d
|
||||
$(mkinstalldirs) $(DESTDIR)$(datadir)/dbus-1/services
|
||||
$(mkinstalldirs) $(DESTDIR)$(datadir)/dbus-1/system-services
|
||||
# Install dbus.socket as default implementation of a D-Bus stack.
|
||||
|
||||
--- dbus-1.6.4/tools/Makefile.in 2013-09-11 16:10:31.000000000 +0200
|
||||
+++ dbus-1.6.4/tools/Makefile.in 2013-09-11 16:10:32.000000000 +0200
|
||||
@@ -757,11 +757,6 @@ uninstall-am: uninstall-binPROGRAMS
|
||||
|
||||
|
||||
# create the /var/lib/dbus directory for dbus-uuidgen
|
||||
-install-data-local:
|
||||
- $(MKDIR_P) $(DESTDIR)$(localstatedir)/lib/dbus
|
||||
-
|
||||
-installcheck-local:
|
||||
- test -d $(DESTDIR)$(localstatedir)/lib/dbus
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
@@ -0,0 +1,10 @@
|
||||
By default, 'RTDLLIST' in 'ldd' refers to 'lib64/ld-linux-x86-64.so', whereas
|
||||
it's in 'lib/' for us. This patch fixes that.
|
||||
|
||||
--- glibc-2.17/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed 2012-12-25 04:02:13.000000000 +0100
|
||||
+++ glibc-2.17/sysdeps/unix/sysv/linux/x86_64/ldd-rewrite.sed 2013-09-15 23:08:03.000000000 +0200
|
||||
@@ -1,3 +1,3 @@
|
||||
/LD_TRACE_LOADED_OBJECTS=1/a\
|
||||
add_env="$add_env LD_LIBRARY_VERSION=\\$verify_out"
|
||||
-s_^\(RTLDLIST=\)\(.*lib\)\(\|64\|x32\)\(/[^/]*\)\(-x86-64\|-x32\)\(\.so\.[0-9.]*\)[ ]*$_\1"\2\4\6 \264\4-x86-64\6 \2x32\4-x32\6"_
|
||||
+s_^\(RTLDLIST=\)\(.*lib\)\(\|64\|x32\)\(/[^/]*\)\(-x86-64\|-x32\)\(\.so\.[0-9.]*\)[ ]*$_\1"\2\4\6 \2\4-x86-64\6 \2x32\4-x32\6"_
|
||||
@@ -1,36 +0,0 @@
|
||||
From b12040aeab5fbaf02677571db1d8bf1995bd5ee0 Mon Sep 17 00:00:00 2001
|
||||
From: Nikos Mavrogiannopoulos <nmav@gnutls.org>
|
||||
Date: Sun, 2 Jun 2013 12:10:06 +0200
|
||||
Subject: [PATCH] Avoid comparing the expiration date to prevent false positive
|
||||
error in 32-bit systems.
|
||||
|
||||
---
|
||||
tests/cert-tests/pem-decoding | 6 ++++--
|
||||
1 files changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/tests/cert-tests/pem-decoding b/tests/cert-tests/pem-decoding
|
||||
index fe769ec..f8c6372 100755
|
||||
--- tests/cert-tests/pem-decoding
|
||||
+++ tests/cert-tests/pem-decoding
|
||||
@@ -61,7 +61,9 @@ if test "$rc" != "0"; then
|
||||
exit $rc
|
||||
fi
|
||||
|
||||
-diff $srcdir/complex-cert.pem tmp-pem.pem
|
||||
+cat $srcdir/complex-cert.pem |grep -v "Not After:" >tmp1
|
||||
+cat $srcdir/tmp-pem.pem |grep -v "Not After:" >tmp2
|
||||
+diff tmp1 tmp2
|
||||
rc=$?
|
||||
|
||||
if test "$rc" != "0"; then
|
||||
@@ -69,6 +71,6 @@ if test "$rc" != "0"; then
|
||||
exit $rc
|
||||
fi
|
||||
|
||||
-rm -f tmp-pem.pem
|
||||
+rm -f tmp-pem.pem tmp1 tmp2
|
||||
|
||||
exit 0
|
||||
--
|
||||
1.7.1
|
||||
|
||||
@@ -109,3 +109,14 @@ index 5d0db23..8266247 100644
|
||||
(enum iconv_ilseq_handler) handler, NULL,
|
||||
&buf, &len);
|
||||
|
||||
--- guile-2.0.9/libguile/ports.c 2013-08-21 11:08:50.000000000 +0200
|
||||
+++ guile-2.0.9/libguile/ports.c 2013-08-21 11:09:47.000000000 +0200
|
||||
@@ -2512,7 +2512,7 @@ scm_i_port_iconv_descriptors (SCM port,
|
||||
const char *precise_encoding;
|
||||
|
||||
if (!pt->encoding)
|
||||
- pt->encoding = "ISO-8859-1";
|
||||
+ pt->encoding = "UTF-8";
|
||||
|
||||
/* If the specified encoding is UTF-16 or UTF-32, then make
|
||||
that more precise by deciding what byte order to use. */
|
||||
|
||||
@@ -0,0 +1,122 @@
|
||||
Bigloo 4.0b removes `xml-attribute-encode', which leads to a build failure
|
||||
in Hop.
|
||||
|
||||
This patch allows Hop to be compiled with Bigloo 4.0b.
|
||||
|
||||
|
||||
changeset: 3327:3515f7f1aef2
|
||||
branch: 2.4.x
|
||||
user: Manuel Serrano <Manuel.Serrano@inria.fr>
|
||||
date: Wed Jul 31 12:41:10 2013 +0200
|
||||
summary: Fix serialization bug
|
||||
|
||||
diff -r 7244c4d30ad4 -r 3515f7f1aef2 runtime/js_comp.scm
|
||||
--- a/runtime/js_comp.scm Fri Jul 19 08:28:13 2013 +0200
|
||||
+++ b/runtime/js_comp.scm Wed Jul 31 12:41:10 2013 +0200
|
||||
@@ -143,10 +143,17 @@
|
||||
(display "{ " op)
|
||||
(display-seq fields op
|
||||
(lambda (f op)
|
||||
+ (let ((iv (class-field-info f)))
|
||||
(display "'" op)
|
||||
(display (class-field-name f) op)
|
||||
(display "': " op)
|
||||
- (compile ((class-field-accessor f) obj) op)))
|
||||
+ (cond
|
||||
+ ((and (pair? iv) (memq :client iv))
|
||||
+ =>
|
||||
+ (lambda (x)
|
||||
+ (compile (when (pair? (cdr x)) (cadr x)) op)))
|
||||
+ (else
|
||||
+ (compile ((class-field-accessor f) obj) op))))))
|
||||
(display "}" op))
|
||||
|
||||
(let ((klass (object-class obj)))
|
||||
diff -r 7244c4d30ad4 -r 3515f7f1aef2 runtime/xml.scm
|
||||
--- a/runtime/xml.scm Fri Jul 19 08:28:13 2013 +0200
|
||||
+++ b/runtime/xml.scm Wed Jul 31 12:41:10 2013 +0200
|
||||
@@ -55,6 +55,7 @@
|
||||
(generic xml-write-attribute ::obj ::obj ::output-port ::xml-backend)
|
||||
(generic xml-write-expression ::obj ::output-port)
|
||||
(xml-write-attributes ::pair-nil ::output-port ::xml-backend)
|
||||
+ (xml-attribute-encode obj)
|
||||
|
||||
(xml->string ::obj ::xml-backend)
|
||||
|
||||
@@ -613,6 +614,52 @@
|
||||
(display ">" p))))
|
||||
|
||||
;*---------------------------------------------------------------------*/
|
||||
+;* xml-attribute-encode ... */
|
||||
+;*---------------------------------------------------------------------*/
|
||||
+(define (xml-attribute-encode obj)
|
||||
+ (if (not (string? obj))
|
||||
+ obj
|
||||
+ (let ((ol (string-length obj)))
|
||||
+ (define (count str ol)
|
||||
+ (let loop ((i 0)
|
||||
+ (j 0))
|
||||
+ (if (=fx i ol)
|
||||
+ j
|
||||
+ (let ((c (string-ref str i)))
|
||||
+ ;; attribute values should escape &#...
|
||||
+ (if (or (char=? c #\') (char=? c #\&))
|
||||
+ (loop (+fx i 1) (+fx j 5))
|
||||
+ (loop (+fx i 1) (+fx j 1)))))))
|
||||
+ (define (encode str ol nl)
|
||||
+ (if (=fx nl ol)
|
||||
+ obj
|
||||
+ (let ((nstr (make-string nl)))
|
||||
+ (let loop ((i 0)
|
||||
+ (j 0))
|
||||
+ (if (=fx j nl)
|
||||
+ nstr
|
||||
+ (let ((c (string-ref str i)))
|
||||
+ (case c
|
||||
+ ((#\')
|
||||
+ (string-set! nstr j #\&)
|
||||
+ (string-set! nstr (+fx j 1) #\#)
|
||||
+ (string-set! nstr (+fx j 2) #\3)
|
||||
+ (string-set! nstr (+fx j 3) #\9)
|
||||
+ (string-set! nstr (+fx j 4) #\;)
|
||||
+ (loop (+fx i 1) (+fx j 5)))
|
||||
+ ((#\&)
|
||||
+ (string-set! nstr j #\&)
|
||||
+ (string-set! nstr (+fx j 1) #\#)
|
||||
+ (string-set! nstr (+fx j 2) #\3)
|
||||
+ (string-set! nstr (+fx j 3) #\8)
|
||||
+ (string-set! nstr (+fx j 4) #\;)
|
||||
+ (loop (+fx i 1) (+fx j 5)))
|
||||
+ (else
|
||||
+ (string-set! nstr j c)
|
||||
+ (loop (+fx i 1) (+fx j 1))))))))))
|
||||
+ (encode obj ol (count obj ol)))))
|
||||
+
|
||||
+;*---------------------------------------------------------------------*/
|
||||
;* xml-write-attributes ... */
|
||||
;*---------------------------------------------------------------------*/
|
||||
(define (xml-write-attributes attr p backend)
|
||||
diff -r 7244c4d30ad4 -r 3515f7f1aef2 share/hop-serialize.js
|
||||
--- a/share/hop-serialize.js Fri Jul 19 08:28:13 2013 +0200
|
||||
+++ b/share/hop-serialize.js Wed Jul 31 12:41:10 2013 +0200
|
||||
@@ -942,7 +942,7 @@
|
||||
case 0x2e /* . */: return null;
|
||||
case 0x3c /* < */: return read_cnst();
|
||||
case 0x22 /* " */: return read_string( s );
|
||||
- case 0x25 /* " */: return decodeURIComponent( read_string( s ) );
|
||||
+ case 0x25 /* % */: return decodeURIComponent( read_string( s ) );
|
||||
case 0x55 /* U */: return read_string( s );
|
||||
case 0x5b /* [ */: return read_vector( read_size( s ) );
|
||||
case 0x28 /* ( */: return read_list( read_size( s ) );
|
||||
diff -r 7244c4d30ad4 -r 3515f7f1aef2 src/main.scm
|
||||
--- a/src/main.scm Fri Jul 19 08:28:13 2013 +0200
|
||||
+++ b/src/main.scm Wed Jul 31 12:41:10 2013 +0200
|
||||
@@ -59,8 +59,6 @@
|
||||
(for-each register-srfi! (cons 'hop-server (hop-srfis)))
|
||||
;; set the library load path
|
||||
(bigloo-library-path-set! (hop-library-path))
|
||||
- ;; define the Hop macros
|
||||
- (hop-install-expanders!)
|
||||
;; setup the hop readers
|
||||
(bigloo-load-reader-set! hop-read)
|
||||
(bigloo-load-module-set!
|
||||
@@ -1,14 +0,0 @@
|
||||
Fails to build with glibc 2.12.1 without this patch.
|
||||
|
||||
http://lists.gnu.org/archive/html/bug-m4/2010-05/msg00002.html
|
||||
|
||||
--- a/src/path.c
|
||||
+++ b/src/path.c
|
||||
@@ -22,6 +22,7 @@
|
||||
/* Handling of path search of included files via the builtins "include"
|
||||
and "sinclude". */
|
||||
|
||||
#include "m4.h"
|
||||
+#include "sys/stat.h"
|
||||
|
||||
struct includes
|
||||
@@ -0,0 +1,12 @@
|
||||
diff -r -u ripperX-2.7.3.old/src/Makefile.in ripperX-2.7.3.new/src/Makefile.in
|
||||
--- ripperX-2.7.3.old/src/Makefile.in 2008-01-25 10:53:50.000000000 +0100
|
||||
+++ ripperX-2.7.3.new/src/Makefile.in 2013-08-07 16:14:21.000000000 +0200
|
||||
@@ -43,7 +43,7 @@
|
||||
|
||||
ripperX_LDADD = \
|
||||
$(INTLLIBS) \
|
||||
- $(GTK_LIBS)
|
||||
+ $(GTK_LIBS) -lm
|
||||
|
||||
AM_CPPFLAGS = \
|
||||
-DG_LOG_DOMAIN=\"ripperX\" \
|
||||
@@ -0,0 +1,78 @@
|
||||
commit 3781ac11ff374b3517011c1710ec517d52f25cd2
|
||||
Author: tom <tom@a5019735-40e9-0310-863c-91ae7b9d1cf9>
|
||||
Date: Mon Jan 14 09:48:49 2013 +0000
|
||||
|
||||
Accept glibc 2.17 as valid.
|
||||
|
||||
|
||||
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13228 a5019735-40e9-0310-863c-91ae7b9d1cf9
|
||||
|
||||
diff --git a/configure.in b/configure.in
|
||||
index e0fb12d..0f3b3df 100644
|
||||
--- a/configure.in
|
||||
+++ b/configure.in
|
||||
@@ -906,6 +906,13 @@ case "${GLIBC_VERSION}" in
|
||||
DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
|
||||
DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
|
||||
;;
|
||||
+ 2.17)
|
||||
+ AC_MSG_RESULT(2.17 family)
|
||||
+ AC_DEFINE([GLIBC_2_17], 1, [Define to 1 if you're using glibc 2.17.x])
|
||||
+ DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
|
||||
+ DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
|
||||
+ DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
|
||||
+ ;;
|
||||
darwin)
|
||||
AC_MSG_RESULT(Darwin)
|
||||
AC_DEFINE([DARWIN_LIBC], 1, [Define to 1 if you're using Darwin])
|
||||
@@ -919,7 +926,7 @@ case "${GLIBC_VERSION}" in
|
||||
|
||||
*)
|
||||
AC_MSG_RESULT([unsupported version ${GLIBC_VERSION}])
|
||||
- AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.16])
|
||||
+ AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.17])
|
||||
AC_MSG_ERROR([or Darwin libc])
|
||||
;;
|
||||
esac
|
||||
diff -ur valgrind-3.8.1/config.h.in valgrind-3.8.1/config.h.in
|
||||
--- valgrind-3.8.1/config.h.in 2013-01-16 17:15:33.531018561 +0100
|
||||
+++ valgrind-3.8.1/config.h.in 2013-01-16 17:19:21.000000000 +0100
|
||||
@@ -48,6 +48,9 @@
|
||||
/* Define to 1 if you're using glibc 2.16.x */
|
||||
#undef GLIBC_2_16
|
||||
|
||||
+/* Define to 1 if you're using glibc 2.17.x */
|
||||
+#undef GLIBC_2_17
|
||||
+
|
||||
/* Define to 1 if you're using glibc 2.2.x */
|
||||
#undef GLIBC_2_2
|
||||
|
||||
diff -ur valgrind-3.8.1/configure valgrind-3.8.1/configure
|
||||
--- valgrind-3.8.1/configure 2013-01-16 17:15:33.563018480 +0100
|
||||
+++ valgrind-3.8.1/configure 2013-01-16 17:19:21.373643238 +0100
|
||||
@@ -6610,6 +6610,16 @@
|
||||
DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
|
||||
DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
|
||||
;;
|
||||
+ 2.17)
|
||||
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.17 family" >&5
|
||||
+$as_echo "2.17 family" >&6; }
|
||||
+
|
||||
+$as_echo "#define GLIBC_2_17 1" >>confdefs.h
|
||||
+
|
||||
+ DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
|
||||
+ DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
|
||||
+ DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
|
||||
+ ;;
|
||||
darwin)
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin" >&5
|
||||
$as_echo "Darwin" >&6; }
|
||||
@@ -6630,7 +6640,7 @@
|
||||
*)
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported version ${GLIBC_VERSION}" >&5
|
||||
$as_echo "unsupported version ${GLIBC_VERSION}" >&6; }
|
||||
- as_fn_error "Valgrind requires glibc version 2.2 - 2.16" "$LINENO" 5
|
||||
+ as_fn_error "Valgrind requires glibc version 2.2 - 2.17" "$LINENO" 5
|
||||
as_fn_error "or Darwin libc" "$LINENO" 5
|
||||
;;
|
||||
esac
|
||||
+300
-15
@@ -1,6 +1,7 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -18,22 +19,28 @@
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages python)
|
||||
#:use-module ((guix licenses) #:select (bsd-3 psfl x11))
|
||||
#:use-module ((guix licenses) #:select (bsd-3 bsd-style psfl x11))
|
||||
#:use-module ((guix licenses) #:select (zlib)
|
||||
#:renamer (symbol-prefix-proc 'license:))
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages gdbm)
|
||||
#:use-module (gnu packages icu4c)
|
||||
#:use-module (gnu packages readline)
|
||||
#:use-module (gnu packages openssl)
|
||||
#:use-module (gnu packages patchelf)
|
||||
#:use-module (gnu packages sqlite)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system python))
|
||||
#:use-module (guix build-system python)
|
||||
#:use-module (guix build-system trivial))
|
||||
|
||||
(define-public python
|
||||
(define-public python-2
|
||||
(package
|
||||
(name "python")
|
||||
(version "2.7.4")
|
||||
(version "2.7.5")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -41,10 +48,52 @@
|
||||
version "/Python-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0bdn4dylm92n2dsvqvjfyask9jbz88aan5hi4lgkawkxs2v6wqmn"))))
|
||||
"1c8xan2dlsqfq8q82r3mhl72v3knq3qyn71fjq89xikx2smlqg7k"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; XXX: some tests fail
|
||||
`(#:tests? #f
|
||||
;; 258 tests OK.
|
||||
;; 103 tests failed:
|
||||
;; test_bz2 test_distutils test_file test_file2k test_popen2
|
||||
;; test_shutil test_signal test_site test_slice test_smtplib
|
||||
;; test_smtpnet test_socket test_socketserver test_softspace
|
||||
;; test_sort test_sqlite test_ssl test_startfile test_str
|
||||
;; test_strftime test_string test_stringprep test_strop test_strptime
|
||||
;; test_strtod test_struct test_structmembers test_structseq
|
||||
;; test_subprocess test_sunaudiodev test_sundry test_symtable
|
||||
;; test_syntax test_sys test_sys_setprofile test_sys_settrace
|
||||
;; test_sysconfig test_tarfile test_tcl test_telnetlib test_tempfile
|
||||
;; test_textwrap test_thread test_threaded_import
|
||||
;; test_threadedtempfile test_threading test_threading_local
|
||||
;; test_threadsignals test_time test_timeout test_tk test_tokenize
|
||||
;; test_tools test_trace test_traceback test_transformer
|
||||
;; test_ttk_guionly test_ttk_textonly test_tuple test_typechecks
|
||||
;; test_ucn test_unary test_undocumented_details test_unicode
|
||||
;; test_unicode_file test_unicodedata test_univnewlines
|
||||
;; test_univnewlines2k test_unpack test_urllib test_urllib2
|
||||
;; test_urllib2_localnet test_urllib2net test_urllibnet test_urlparse
|
||||
;; test_userdict test_userlist test_userstring test_uu test_uuid
|
||||
;; test_wait3 test_wait4 test_warnings test_wave test_weakref
|
||||
;; test_weakset test_whichdb test_winreg test_winsound test_with
|
||||
;; test_wsgiref test_xdrlib test_xml_etree test_xml_etree_c
|
||||
;; test_xmllib test_xmlrpc test_xpickle test_xrange test_zipfile
|
||||
;; test_zipfile64 test_zipimport test_zipimport_support test_zlib
|
||||
;; 31 tests skipped:
|
||||
;; test_aepack test_al test_applesingle test_ascii_formatd test_bsddb
|
||||
;; test_bsddb185 test_bsddb3 test_cd test_cl test_codecmaps_cn
|
||||
;; test_codecmaps_hk test_codecmaps_jp test_codecmaps_kr
|
||||
;; test_codecmaps_tw test_ctypes test_curses test_dl test_gdb test_gl
|
||||
;; test_imageop test_imgfile test_ioctl test_kqueue
|
||||
;; test_linuxaudiodev test_macos test_macostools test_msilib
|
||||
;; test_multiprocessing test_ossaudiodev test_pep277
|
||||
;; test_scriptpackages
|
||||
;; 7 skips unexpected on linux2:
|
||||
;; test_ascii_formatd test_bsddb test_bsddb3 test_ctypes test_gdb
|
||||
;; test_ioctl test_multiprocessing
|
||||
;; One of the typical errors:
|
||||
;; test_unicode
|
||||
;; test test_unicode crashed -- <type 'exceptions.OSError'>: [Errno 2] No such file or directory
|
||||
#:test-target "test"
|
||||
#:configure-flags
|
||||
(let ((bz2 (assoc-ref %build-inputs "bzip2"))
|
||||
(gdbm (assoc-ref %build-inputs "gdbm"))
|
||||
@@ -108,9 +157,50 @@ packages; exception-based error handling; and very high level dynamic
|
||||
data types.")
|
||||
(license psfl)))
|
||||
|
||||
(define-public pytz
|
||||
(define-public python
|
||||
(package (inherit python-2)
|
||||
(version "3.3.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://www.python.org/ftp/python/"
|
||||
version "/Python-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0hsbwqjnhr85a2w252c8d3yj8d9i5sy8s6a6cfk6zqqhp3234nvl"))))
|
||||
(native-search-paths
|
||||
(list (search-path-specification
|
||||
(variable "PYTHONPATH")
|
||||
(directories '("lib/python3.3/site-packages")))))))
|
||||
|
||||
(define-public python-wrapper
|
||||
(package (inherit python)
|
||||
(name "python-wrapper")
|
||||
(source #f)
|
||||
(build-system trivial-build-system)
|
||||
(inputs `(("python" ,python)))
|
||||
(arguments
|
||||
`(#:modules ((guix build utils))
|
||||
#:builder
|
||||
(begin
|
||||
(use-modules (guix build utils))
|
||||
(let ((bin (string-append (assoc-ref %outputs "out") "/bin"))
|
||||
(python (string-append (assoc-ref %build-inputs "python") "/bin/")))
|
||||
(mkdir-p bin)
|
||||
(for-each
|
||||
(lambda (old new)
|
||||
(symlink (string-append python old)
|
||||
(string-append bin "/" new)))
|
||||
`("python3", "pydoc3", "idle3")
|
||||
`("python", "pydoc", "idle"))))))
|
||||
(description (string-append (package-description python)
|
||||
"\n\nThis wrapper package provides symbolic links to the python binaries
|
||||
without version suffix."))))
|
||||
|
||||
|
||||
(define-public python-pytz
|
||||
(package
|
||||
(name "pytz")
|
||||
(name "python-pytz")
|
||||
(version "2013b")
|
||||
(source
|
||||
(origin
|
||||
@@ -121,6 +211,7 @@ data types.")
|
||||
(base32
|
||||
"19giwgfcrg0nr1gdv49qnmf2jb2ilkcfc7qyqvfpz4dp0p64ksv5"))))
|
||||
(build-system python-build-system)
|
||||
(arguments `(#:tests? #f)) ; no test target
|
||||
(home-page "https://launchpad.net/pytz")
|
||||
(synopsis "The Python timezone library.")
|
||||
(description
|
||||
@@ -128,22 +219,28 @@ data types.")
|
||||
using Python 2.4 or higher and provides access to the Olson timezone database.")
|
||||
(license x11)))
|
||||
|
||||
(define-public babel
|
||||
(define-public python2-pytz
|
||||
(package-with-python2 python-pytz))
|
||||
|
||||
|
||||
(define-public python-babel
|
||||
(package
|
||||
(name "babel")
|
||||
(version "0.9.6")
|
||||
(name "python-babel")
|
||||
(version "1.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://ftp.edgewall.com/pub/babel/Babel-"
|
||||
(uri (string-append "https://pypi.python.org/packages/source/B/Babel/Babel-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"03vmr54jq5vf3qw6kpdv7cdk7x7i2jhzyf1mawv2gk8zrxg0hfja"))))
|
||||
"0bnin777lc53nxd1hp3apq410jj5wx92n08h7h4izpl4f4sx00lz"))))
|
||||
(build-system python-build-system)
|
||||
(inputs
|
||||
`(("pytz" ,pytz)))
|
||||
(home-page "http://babel.edgewall.org/")
|
||||
`(("python-pytz" ,python-pytz)
|
||||
("python-setuptools" ,python-setuptools)))
|
||||
(arguments `(#:tests? #f)) ; no test target
|
||||
(home-page "http://babel.pocoo.org/")
|
||||
(synopsis
|
||||
"Tools for internationalizing Python applications")
|
||||
(description
|
||||
@@ -153,3 +250,191 @@ using Python 2.4 or higher and provides access to the Olson timezone database.")
|
||||
access to various locale display names, localized number and date formatting,
|
||||
etc. ")
|
||||
(license bsd-3)))
|
||||
|
||||
(define-public python2-babel
|
||||
(package-with-python2 python-babel))
|
||||
|
||||
|
||||
(define-public python-setuptools
|
||||
(package
|
||||
(name "python-setuptools")
|
||||
(version "1.1.4")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://pypi.python.org/packages/source/s/setuptools/setuptools-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0hl9sa5xr9bi2ifq51wy1bawsjv5nzvpbac7m9z1ciz778874csf"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f))
|
||||
;;FIXME: test_sdist_with_utf8_encoded_filename fails in
|
||||
;; /tmp/nix-build-python2-setuptools-1.1.4.drv-0/setuptools-1.1.4/setuptools/tests/test_sdist.py"
|
||||
;; line 354
|
||||
;; The tests pass with Python 2.7.5.
|
||||
(home-page "https://pypi.python.org/pypi/setuptools")
|
||||
(synopsis
|
||||
"Library designed to facilitate packaging Python projects")
|
||||
(description
|
||||
"Setuptools is a fully-featured, stable library designed to facilitate
|
||||
packaging Python projects, where packaging includes:
|
||||
Python package and module definitions,
|
||||
distribution package metadata,
|
||||
test hooks,
|
||||
project installation,
|
||||
platform-specific details,
|
||||
Python 3 support.")
|
||||
(license psfl)))
|
||||
|
||||
(define-public python2-setuptools
|
||||
(package-with-python2 python-setuptools))
|
||||
|
||||
|
||||
(define-public python-dateutil
|
||||
(package
|
||||
(name "python-dateutil")
|
||||
(version "1.5") ; last version for python < 3
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://labix.org/download/python-dateutil/python-dateutil-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0fqfglhy5khbvsipr3x7m6bcaqljh8xl5cw33vbfxy7qhmywm2n0"))))
|
||||
(build-system python-build-system)
|
||||
(inputs
|
||||
`(("python-setuptools" ,python-setuptools)))
|
||||
(home-page "http://labix.org/python-dateutil")
|
||||
(synopsis
|
||||
"Extensions to the standard datetime module, available in Python 2.3+")
|
||||
(description
|
||||
"The dateutil module provides powerful extensions to the standard
|
||||
datetime module, available in Python 2.3+.")
|
||||
(license psfl)))
|
||||
|
||||
(define-public python2-dateutil
|
||||
(package-with-python2 python-dateutil))
|
||||
|
||||
|
||||
(define-public python2-pysqlite
|
||||
(package
|
||||
(name "python2-pysqlite")
|
||||
(version "2.6.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://pysqlite.googlecode.com/files/pysqlite-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0nsqqfp072rgqbls100rdvbzkjkin7li3kprhfxlfqvzf608hlqd"))))
|
||||
(build-system python-build-system)
|
||||
(inputs
|
||||
`(("sqlite" ,sqlite)))
|
||||
(arguments
|
||||
`(#:python ,python-2 ; incompatible with Python 3
|
||||
#:tests? #f)) ; no test target
|
||||
(home-page "http://labix.org/python-dateutil")
|
||||
(synopsis
|
||||
"SQLite bindings for Python.")
|
||||
(description
|
||||
"Pysqlite provides SQLite bindings for Python that comply to the
|
||||
Database API 2.0T.")
|
||||
(license license:zlib)))
|
||||
|
||||
|
||||
(define-public python2-mechanize
|
||||
(package
|
||||
(name "python2-mechanize")
|
||||
(version "0.2.5")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://pypi.python.org/packages/source/m/mechanize/mechanize-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0rj7r166i1dyrq0ihm5rijfmvhs8a04im28lv05c0c3v206v4rrf"))))
|
||||
(build-system python-build-system)
|
||||
(inputs
|
||||
`(("python2-setuptools" ,python2-setuptools)))
|
||||
(arguments
|
||||
`(#:python ,python-2 ; apparently incompatible with Python 3
|
||||
#:tests? #f))
|
||||
;; test fails with message
|
||||
;; AttributeError: 'module' object has no attribute 'test_pullparser'
|
||||
;; (python-3.3.2) or
|
||||
;; AttributeError: 'module' object has no attribute 'test_urllib2_localnet'
|
||||
;; (python-2.7.5).
|
||||
;; The source code is from March 2011 and probably not up-to-date
|
||||
;; with respect to python unit tests.
|
||||
(home-page "http://wwwsearch.sourceforge.net/mechanize/")
|
||||
(synopsis
|
||||
"Stateful programmatic web browsing in Python")
|
||||
(description
|
||||
"Mechanize implements stateful programmatic web browsing in Python,
|
||||
after Andy Lester’s Perl module WWW::Mechanize.")
|
||||
(license (bsd-style "file://COPYING"
|
||||
"See COPYING in the distribution."))))
|
||||
|
||||
|
||||
(define-public python-simplejson
|
||||
(package
|
||||
(name "python-simplejson")
|
||||
(version "3.3.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://pypi.python.org/packages/source/s/simplejson/simplejson-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"07wsry5j44l5zzm74l4j2bvasiq8n5m32f31n2p7c68i5vc6p2ks"))))
|
||||
(build-system python-build-system)
|
||||
(home-page "http://simplejson.readthedocs.org/en/latest/")
|
||||
(synopsis
|
||||
"Json library for Python")
|
||||
(description
|
||||
"JSON (JavaScript Object Notation) is a subset of JavaScript syntax
|
||||
(ECMA-262 3rd edition) used as a lightweight data interchange format.
|
||||
|
||||
Simplejson exposes an API familiar to users of the standard library marshal
|
||||
and pickle modules. It is the externally maintained version of the json
|
||||
library contained in Python 2.6, but maintains compatibility with Python 2.5
|
||||
and (currently) has significant performance advantages, even without using
|
||||
the optional C extension for speedups. Simplejson is also supported on
|
||||
Python 3.3+.")
|
||||
(license x11)))
|
||||
|
||||
(define-public python2-simplejson
|
||||
(package-with-python2 python-simplejson))
|
||||
|
||||
|
||||
(define-public python2-pyicu
|
||||
(package
|
||||
(name "python2-pyicu")
|
||||
(version "1.5")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://pypi.python.org/packages/source/P/PyICU/PyICU-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"011vwflpir8wvh48mvi6d9a7vw0f43bkwv0w6bzxbzmvz20ax5vm"))))
|
||||
(build-system python-build-system)
|
||||
(inputs
|
||||
`(("icu4c" ,icu4c)))
|
||||
(arguments
|
||||
`(#:python ,python-2 ; Python 3 works also, but needs special care for
|
||||
; linking with libpython3.3m
|
||||
#:tests? #f)) ; no check target
|
||||
(home-page "http://pyicu.osafoundation.org/")
|
||||
(synopsis
|
||||
"Python extension wrapping the ICU C++ API.")
|
||||
(description
|
||||
"PyICU is a python extension wrapping the ICU C++ API.")
|
||||
(license x11)))
|
||||
|
||||
+52
-61
@@ -24,6 +24,7 @@
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages texinfo)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages python)
|
||||
@@ -37,17 +38,18 @@
|
||||
#:use-module (gnu packages xorg)
|
||||
#:use-module (gnu packages perl))
|
||||
|
||||
(define-public qemu-kvm
|
||||
(define-public qemu
|
||||
;; Since QEMU 1.3, it incorporates KVM support formerly found in QEMU-KVM.
|
||||
(package
|
||||
(name "qemu-kvm")
|
||||
(version "1.2.0")
|
||||
(name "qemu")
|
||||
(version "1.5.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/kvm/qemu-kvm/"
|
||||
version "/qemu-kvm-" version ".tar.gz"))
|
||||
(uri (string-append "http://wiki.qemu-project.org/download/qemu-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"018vb5nmk2fsm143bs2bl2wirhasd4b10d7jchl32zik4inbk2p9"))))
|
||||
"1s7316pgizpayr472la8p8a4vhv7ymmzd5qlbkmq6y9q5zpa25ac"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:phases (alist-replace
|
||||
@@ -59,6 +61,10 @@
|
||||
(samba (assoc-ref inputs "samba")))
|
||||
(setenv "SHELL" (which "bash"))
|
||||
|
||||
;; While we're at it, patch for tests.
|
||||
(substitute* "tests/libqtest.c"
|
||||
(("/bin/sh") (which "sh")))
|
||||
|
||||
;; The binaries need to be linked against -lrt.
|
||||
(setenv "LDFLAGS" "-lrt")
|
||||
(zero?
|
||||
@@ -67,12 +73,28 @@
|
||||
(string-append "--prefix=" out)
|
||||
(string-append "--smbd=" samba
|
||||
"/sbin/smbd")))))
|
||||
%standard-phases)))
|
||||
(alist-cons-after
|
||||
'install 'install-info
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
;; Install the Info manual, unless Texinfo is missing.
|
||||
(or (not (assoc-ref inputs "texinfo"))
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(and (zero? (system* "make" "info"))
|
||||
(let ((infodir (string-append out "/share/info")))
|
||||
(mkdir-p infodir)
|
||||
(for-each (lambda (info)
|
||||
(copy-file
|
||||
info
|
||||
(string-append infodir "/" info)))
|
||||
(find-files "." "\\.info$"))
|
||||
#t)))))
|
||||
%standard-phases))))
|
||||
|
||||
(inputs ; TODO: Add optional inputs.
|
||||
`(;; ("mesa" ,mesa)
|
||||
;; ("libaio" ,libaio)
|
||||
("glib" ,glib)
|
||||
("python" ,python)
|
||||
("python" ,python-2) ; incompatible with Python 3 according to error message
|
||||
("ncurses" ,ncurses)
|
||||
("libpng" ,libpng)
|
||||
("libjpeg" ,libjpeg-8)
|
||||
@@ -86,66 +108,35 @@
|
||||
("zlib" ,zlib)
|
||||
("attr" ,attr)
|
||||
("samba" ,samba))) ; an optional dependency
|
||||
(home-page "http://www.linux-kvm.org/")
|
||||
(synopsis
|
||||
"Virtualization for Linux on x86 hardware containing virtualization extensions")
|
||||
(description
|
||||
"KVM (for Kernel-based Virtual Machine) is a full virtualization solution
|
||||
for Linux on x86 hardware containing virtualization extensions (Intel VT or
|
||||
AMD-V). It consists of a loadable kernel module, kvm.ko, that provides the
|
||||
core virtualization infrastructure and a processor specific module,
|
||||
kvm-intel.ko or kvm-amd.ko. KVM also requires a modified QEMU although work is
|
||||
underway to get the required changes upstream.")
|
||||
(native-inputs `(("texinfo" ,texinfo)
|
||||
("perl" ,perl)))
|
||||
|
||||
;; Many files are GPLv2+, but some are GPLv2-only---e.g., `memory.c'.
|
||||
(license gpl2)))
|
||||
|
||||
(define-public qemu-kvm/smb-shares
|
||||
;; A patched QEMU-KVM where `-net smb' yields two shares instead of one: one
|
||||
;; for the store, and another one for exchanges with the host.
|
||||
(package (inherit qemu-kvm)
|
||||
(name "qemu-kvm-with-multiple-smb-shares")
|
||||
(inputs `(,@(package-inputs qemu-kvm)
|
||||
("patch/smb-shares"
|
||||
,(search-patch "qemu-multiple-smb-shares.patch"))))
|
||||
(arguments
|
||||
`(#:patches (list (assoc-ref %build-inputs "patch/smb-shares"))
|
||||
,@(package-arguments qemu-kvm)))))
|
||||
|
||||
(define-public qemu
|
||||
;; The real one, with a complete target list.
|
||||
(package (inherit qemu-kvm)
|
||||
(name "qemu")
|
||||
(version "1.5.1")
|
||||
(location (source-properties->location (current-source-location)))
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://wiki.qemu-project.org/download/qemu-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1s7316pgizpayr472la8p8a4vhv7ymmzd5qlbkmq6y9q5zpa25ac"))))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments qemu-kvm)
|
||||
((#:phases phases)
|
||||
`(alist-cons-before
|
||||
'build 'pre-build
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(substitute* "tests/libqtest.c"
|
||||
(("/bin/sh") (which "sh"))))
|
||||
,phases))))
|
||||
(native-inputs `(("perl" ,perl)))
|
||||
(home-page "http://www.qemu-project.org")
|
||||
(synopsis "Machine emulator and virtualizer")
|
||||
(description
|
||||
"QEMU is a generic and open source machine emulator and virtualizer.
|
||||
"QEMU is a generic machine emulator and virtualizer.
|
||||
|
||||
When used as a machine emulator, QEMU can run OSes and programs made for one
|
||||
machine (e.g. an ARM board) on a different machine
|
||||
(e.g. your own PC). By using dynamic translation, it achieves very good
|
||||
performance.
|
||||
machine (e.g. an ARM board) on a different machine---e.g., your own PC. By
|
||||
using dynamic translation, it achieves very good performance.
|
||||
|
||||
When used as a virtualizer, QEMU achieves near native performances by
|
||||
executing the guest code directly on the host CPU. QEMU supports
|
||||
virtualization when executing under the Xen hypervisor or using
|
||||
the KVM kernel module in Linux. When using KVM, QEMU can virtualize x86,
|
||||
server and embedded PowerPC, and S390 guests.")))
|
||||
server and embedded PowerPC, and S390 guests.")
|
||||
|
||||
;; Many files are GPLv2+, but some are GPLv2-only---e.g., `memory.c'.
|
||||
(license gpl2)))
|
||||
|
||||
(define-public qemu/smb-shares
|
||||
;; A patched QEMU where `-net smb' yields two shares instead of one: one for
|
||||
;; the store, and another one for exchanges with the host.
|
||||
(package (inherit qemu)
|
||||
(name "qemu-with-multiple-smb-shares")
|
||||
(inputs `(,@(package-inputs qemu)
|
||||
("patch/smb-shares"
|
||||
,(search-patch "qemu-multiple-smb-shares.patch"))))
|
||||
(arguments
|
||||
`(#:patches (list (assoc-ref %build-inputs "patch/smb-shares"))
|
||||
,@(package-arguments qemu)))))
|
||||
|
||||
@@ -150,7 +150,7 @@ anywhere.")
|
||||
("patchelf" ,patchelf))) ; for (guix build rpath)
|
||||
(native-inputs ; for the test suite
|
||||
`(("perl" ,perl)
|
||||
("python" ,python)))
|
||||
("python" ,python-wrapper)))
|
||||
(home-page "http://www.samba.org/")
|
||||
(synopsis
|
||||
"The standard Windows interoperability suite of programs for GNU and Unix")
|
||||
|
||||
+36
-27
@@ -32,6 +32,7 @@
|
||||
#:use-module (gnu packages avahi)
|
||||
#:use-module (gnu packages libphidget)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages gtk)
|
||||
#:use-module (gnu packages libffi)
|
||||
#:use-module (gnu packages libjpeg)
|
||||
#:use-module ((gnu packages gtk) #:select (cairo pango))
|
||||
@@ -118,14 +119,14 @@ development cycle.")
|
||||
(define-public bigloo
|
||||
(package
|
||||
(name "bigloo")
|
||||
(version "4.0a")
|
||||
(version "4.0b")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "ftp://ftp-sop.inria.fr/indes/fp/Bigloo/bigloo"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1771z43nmf9awjvlvrpjfhzcfxsbw2qipir8g9r47sygf2vn59yl"))))
|
||||
"1fck2h48f0bvh8fl437cagmp0syfxy9lqacy1zwsis20fc76jvzi"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:patches (list (assoc-ref %build-inputs "patch/shebangs"))
|
||||
@@ -150,8 +151,14 @@ development cycle.")
|
||||
"/lib/bigloo/" ,version)))
|
||||
|
||||
;; Those variables are used by libgc's `configure'.
|
||||
(setenv "SHELL" (which "bash"))
|
||||
(setenv "CONFIG_SHELL" (which "bash"))
|
||||
(setenv "SHELL" (which "sh"))
|
||||
(setenv "CONFIG_SHELL" (which "sh"))
|
||||
|
||||
;; ... but they turned out to be overridden later, so work
|
||||
;; around that.
|
||||
(substitute* (find-files "gc" "^configure-gc")
|
||||
(("sh=/bin/sh")
|
||||
(string-append "sh=" (which "sh"))))
|
||||
|
||||
;; The `configure' script doesn't understand options
|
||||
;; of those of Autoconf.
|
||||
@@ -162,21 +169,14 @@ development cycle.")
|
||||
(string-append"--mv=" (which "mv"))
|
||||
(string-append "--rm=" (which "rm"))))))
|
||||
(alist-cons-after
|
||||
'patch 'patch-absolute-file-names
|
||||
(lambda _
|
||||
(substitute* (cons "configure"
|
||||
(find-files "gc" "^install-gc"))
|
||||
(("/bin/rm") (which "rm"))
|
||||
(("/bin/mv") (which "mv"))))
|
||||
(alist-cons-after
|
||||
'install 'install-emacs-modes
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(dir (string-append out "/share/emacs/site-lisp")))
|
||||
(zero? (system* "make" "-C" "bmacs" "all" "install"
|
||||
(string-append "EMACSBRAND=emacs24")
|
||||
(string-append "EMACSDIR=" dir)))))
|
||||
%standard-phases)))))
|
||||
'install 'install-emacs-modes
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(dir (string-append out "/share/emacs/site-lisp")))
|
||||
(zero? (system* "make" "-C" "bmacs" "all" "install"
|
||||
(string-append "EMACSBRAND=emacs24")
|
||||
(string-append "EMACSDIR=" dir)))))
|
||||
%standard-phases))))
|
||||
(inputs
|
||||
`(("emacs" ,emacs)
|
||||
("patch/shebangs" ,(search-patch "bigloo-gc-shebangs.patch"))
|
||||
@@ -252,6 +252,7 @@ between Scheme and C# programs.")
|
||||
"\\.so$")))))
|
||||
%standard-phases))
|
||||
#:tests? #f ; no test suite
|
||||
#:patches (list (assoc-ref %build-inputs "patch/bigloo-4.0b"))
|
||||
#:modules ((guix build gnu-build-system)
|
||||
(guix build utils)
|
||||
(ice-9 popen)
|
||||
@@ -260,7 +261,10 @@ between Scheme and C# programs.")
|
||||
(srfi srfi-1))))
|
||||
(inputs `(("bigloo" ,bigloo)
|
||||
("which" ,which)
|
||||
("patchelf" ,patchelf)))
|
||||
("patchelf" ,patchelf)
|
||||
|
||||
("patch/bigloo-4.0b"
|
||||
,(search-patch "hop-bigloo-4.0b.patch"))))
|
||||
(home-page "http://hop.inria.fr/")
|
||||
(synopsis "A multi-tier programming language for the Web 2.0")
|
||||
(description
|
||||
@@ -355,12 +359,15 @@ implementation techniques and as an expository tool.")
|
||||
'(#:phases
|
||||
(let* ((gui-libs
|
||||
(lambda (inputs)
|
||||
;; FIXME: Add GTK+ and GDK for DrRacket.
|
||||
(let ((glib (string-append (assoc-ref inputs "glib") "/lib"))
|
||||
(cairo (string-append (assoc-ref inputs "cairo") "/lib"))
|
||||
(pango (string-append (assoc-ref inputs "pango") "/lib"))
|
||||
(libjpeg (string-append (assoc-ref inputs "libjpeg") "/lib")))
|
||||
(list glib cairo pango libjpeg)))))
|
||||
(define (lib input)
|
||||
(string-append (assoc-ref inputs input) "/lib"))
|
||||
|
||||
(list (lib "glib")
|
||||
(lib "cairo")
|
||||
(lib "pango")
|
||||
(lib "libjpeg")
|
||||
(lib "gtk")
|
||||
(lib "gdk-pixbuf")))))
|
||||
(alist-cons-before
|
||||
'configure 'pre-configure
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
@@ -394,7 +401,9 @@ implementation techniques and as an expository tool.")
|
||||
("glib" ,glib) ; for DrRacket
|
||||
("cairo" ,cairo)
|
||||
("pango" ,pango)
|
||||
("libjpeg" ,libjpeg-8)))
|
||||
("libjpeg" ,libjpeg-8)
|
||||
("gdk-pixbuf" ,gdk-pixbuf)
|
||||
("gtk" ,gtk+)))
|
||||
(home-page "http://racket-lang.org")
|
||||
(synopsis "Implementation of Scheme and related languages")
|
||||
(description
|
||||
|
||||
+229
-2
@@ -1,5 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -20,9 +21,88 @@
|
||||
#:use-module (guix licenses)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system trivial)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages ncurses))
|
||||
#:use-module (gnu packages ncurses)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages guile)
|
||||
#:use-module ((gnu packages base)
|
||||
#:select (tar))
|
||||
#:use-module ((gnu packages compression)
|
||||
#:select (gzip))
|
||||
#:use-module (gnu packages pkg-config))
|
||||
|
||||
(define-public dmd
|
||||
(package
|
||||
(name "dmd")
|
||||
(version "-0.4")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "ftp://alpha.gnu.org/gnu/dmd/dmd-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"094ja3xvk9ljghhxmy39if67cfjd1hy6m4svnp399n0wpxvaryvy"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:configure-flags '("--localstatedir=/var")))
|
||||
(inputs `(("pkg-config" ,pkg-config)
|
||||
("guile" ,guile-2.0)))
|
||||
(synopsis "Daemon managing daemons")
|
||||
(description "'DMD' is a \"Daemon managing Daemons\" (or
|
||||
\"Daemons-managing Daemon\"?)---i.e. a service manager that provides a
|
||||
replacement for the service-managing capabilities of SysV-init (or any other
|
||||
init) with a both powerful and beautiful dependency-based system with a
|
||||
convenient interface. It is intended for use on GNU/Hurd, but it is supposed
|
||||
to work on every POSIX-like system where Guile is available. In particular,
|
||||
it has been tested on GNU/Linux.")
|
||||
(license gpl3+)
|
||||
(home-page "http://www.gnu.org/software/dmd/")))
|
||||
|
||||
(define-public dfc
|
||||
(package
|
||||
(name "dfc")
|
||||
(version "3.0.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://projects.gw-computing.net/attachments/download/78/dfc-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1b4hfqv23l87cb37fxwzfk2sgspkyxpr3ig2hsd23hr6mm982j7z"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments '(#:tests? #f)) ; There are no tests.
|
||||
(home-page "http://projects.gw-computing.net/projects/dfc")
|
||||
(synopsis "Display file system space usage using graphs and colors")
|
||||
(description
|
||||
"dfc (df color) is a modern version of df. It uses colors, draws pretty
|
||||
graphs and can export its output to different formats.")
|
||||
(license bsd-3)))
|
||||
|
||||
(define-public htop
|
||||
(package
|
||||
(name "htop")
|
||||
(version "1.0.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/htop/"
|
||||
version "/htop-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"18fqrhvnm7h4c3939av8lpiwrwxbyw6hcly0jvq0vkjf0ixnaq7f"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("ncurses" ,ncurses)))
|
||||
(home-page "http://htop.sourceforge.net/")
|
||||
(synopsis "Interactive process viewer")
|
||||
(description
|
||||
"This is htop, an interactive process viewer. It is a text-mode
|
||||
application (for console or X terminals) and requires ncurses.")
|
||||
(license gpl2)))
|
||||
|
||||
(define-public pies
|
||||
(package
|
||||
@@ -87,3 +167,150 @@ ftp(d), hostname, ifconfig, inetd, logger, ping, rcp, rexec(d),
|
||||
rlogin(d), rsh(d), syslogd, talk(d), telnet(d), tftp(d), traceroute,
|
||||
uucpd, and whois.")
|
||||
(license gpl3+)))
|
||||
|
||||
(define-public shadow
|
||||
(package
|
||||
(name "shadow")
|
||||
(version "4.1.5.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://pkg-shadow.alioth.debian.org/releases/shadow-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1yvqx57vzih0jdy3grir8vfbkxp0cl0myql37bnmi2yn90vk6cma"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(;; Assume System V `setpgrp (void)', which is the default on GNU
|
||||
;; variants (`AC_FUNC_SETPGRP' is not cross-compilation capable.)
|
||||
#:configure-flags '("--with-libpam" "ac_cv_func_setpgrp_void=yes")
|
||||
|
||||
#:phases (alist-cons-before
|
||||
'build 'set-nscd-file-name
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
;; Use the right file name for nscd.
|
||||
(let ((libc (assoc-ref inputs "libc")))
|
||||
(substitute* "lib/nscd.c"
|
||||
(("/usr/sbin/nscd")
|
||||
(string-append libc "/sbin/nscd")))))
|
||||
(alist-cons-after
|
||||
'install 'remove-groups
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
;; Remove `groups', which is already provided by Coreutils.
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bin (string-append out "/bin"))
|
||||
(man (string-append out "/share/man/man1")))
|
||||
(delete-file (string-append bin "/groups"))
|
||||
(for-each delete-file (find-files man "^groups\\."))
|
||||
#t))
|
||||
%standard-phases))))
|
||||
|
||||
(inputs (if (string-suffix? "-linux"
|
||||
(or (%current-target-system)
|
||||
(%current-system)))
|
||||
`(("linux-pam" ,linux-pam))
|
||||
'()))
|
||||
(home-page "http://pkg-shadow.alioth.debian.org/")
|
||||
(synopsis "Authentication-related tools such as passwd, su, and login")
|
||||
(description
|
||||
"Shadow provides a number of authentication-related tools, including:
|
||||
login, passwd, su, groupadd, and useradd.")
|
||||
|
||||
;; The `vipw' program is GPLv2+.
|
||||
;; libmisc/salt.c is public domain.
|
||||
(license bsd-3)))
|
||||
|
||||
(define-public mingetty
|
||||
(package
|
||||
(name "mingetty")
|
||||
(version "1.08")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/mingetty/mingetty-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"05yxrp44ky2kg6qknk1ih0kvwkgbn9fbz77r3vci7agslh5wjm8g"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases (alist-replace 'configure
|
||||
(lambda* (#:key inputs outputs
|
||||
#:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(man8 (string-append
|
||||
out "/share/man/man8"))
|
||||
(sbin (string-append out "/sbin"))
|
||||
(shadow (assoc-ref inputs "shadow"))
|
||||
(login (string-append shadow
|
||||
"/bin/login")))
|
||||
(substitute* "Makefile"
|
||||
(("^SBINDIR.*")
|
||||
(string-append "SBINDIR = " out
|
||||
"/sbin\n"))
|
||||
(("^MANDIR.*")
|
||||
(string-append "MANDIR = " out
|
||||
"/share/man/man8\n")))
|
||||
|
||||
;; Pick the right 'login' by default.
|
||||
(substitute* "mingetty.c"
|
||||
(("\"/bin/login\"")
|
||||
(string-append "\"" login "\"")))
|
||||
|
||||
(mkdir-p sbin)
|
||||
(mkdir-p man8)))
|
||||
%standard-phases)
|
||||
#:tests? #f)) ; no tests
|
||||
(inputs `(("shadow" ,shadow)))
|
||||
|
||||
(home-page "http://sourceforge.net/projects/mingetty")
|
||||
(synopsis "Getty for the text console")
|
||||
(description
|
||||
"Small console getty that is started on the Linux text console,
|
||||
asks for a login name and then transfers over to 'login'. It is extended to
|
||||
allow automatic login and starting any app.")
|
||||
(license gpl2+)))
|
||||
|
||||
(define-public net-base
|
||||
(package
|
||||
(name "net-base")
|
||||
(version "5.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://ftp.de.debian.org/debian/pool/main/n/netbase/netbase_"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"17l8xk2x632id5f9x9v5fs9wqc650hldd2lf3dh90r1zisj1ya8d"))))
|
||||
(build-system trivial-build-system)
|
||||
(arguments
|
||||
`(#:modules ((guix build utils))
|
||||
#:builder (begin
|
||||
(use-modules (guix build utils)
|
||||
(srfi srfi-26))
|
||||
|
||||
(let* ((source (assoc-ref %build-inputs "source"))
|
||||
(tar (assoc-ref %build-inputs "tar"))
|
||||
(gzip (assoc-ref %build-inputs "gzip"))
|
||||
(output (assoc-ref %outputs "out"))
|
||||
(etc (string-append output "/etc")))
|
||||
(setenv "PATH" (string-append gzip "/bin"))
|
||||
(system* (string-append tar "/bin/tar") "xvf"
|
||||
source)
|
||||
(chdir ,(string-append "netbase-" version))
|
||||
(mkdir-p etc)
|
||||
(for-each copy-file
|
||||
'("etc-services" "etc-protocols" "etc-rpc")
|
||||
(map (cut string-append etc "/" <>)
|
||||
'("services" "protocols" "rpc")))
|
||||
#t))))
|
||||
(native-inputs `(("tar" ,tar)
|
||||
("gzip" ,gzip)))
|
||||
(synopsis "IANA protocol, port, and RPC number assignments")
|
||||
(description
|
||||
"This package provides the /etc/services, /etc/protocols, and /etc/rpc
|
||||
files, which contain information about the IANA-assigned port, protocol, and
|
||||
ONC RPC numbers")
|
||||
(home-page "http://packages.debian.org/sid/netbase")
|
||||
(license gpl2)))
|
||||
|
||||
+28
-22
@@ -25,7 +25,9 @@
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages fontutils)
|
||||
#:use-module (gnu packages gd)
|
||||
#:use-module (gnu packages ghostscript)
|
||||
#:use-module (gnu packages gtk)
|
||||
#:use-module (gnu packages icu4c)
|
||||
#:use-module (gnu packages libpng)
|
||||
#:use-module (gnu packages pdf)
|
||||
@@ -41,42 +43,45 @@
|
||||
(define texlive-extra-src
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri "ftp://tug.org/historic/systems/texlive/2012/texlive-20120701-extra.tar.xz")
|
||||
(uri "ftp://tug.org/historic/systems/texlive/2013/texlive-20130530-extra.tar.xz")
|
||||
(sha256 (base32
|
||||
"0cb8fnv4x281gy5ka779f00ssdmdpjj4x3pkh9j9vq45hrwg3522"))))
|
||||
"15r1qyn7x1iamiiycylx8vzsg27h1r962v6dz9q70f9pdp2rjr6s"))))
|
||||
|
||||
(define texlive-texmf-src
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri "ftp://tug.org/historic/systems/texlive/2012/texlive-20120701-texmf.tar.xz")
|
||||
(uri "ftp://tug.org/historic/systems/texlive/2013/texlive-20130530-texmf.tar.xz")
|
||||
(sha256 (base32
|
||||
"1fn1dg9k7pnh8a80j23zfkbrfnqyc4c2w4ss30dpkqj490nxsywq"))))
|
||||
"09kza0ha0x9cm4k2qm9w31h3g94y9hy17jahnnsirqyy8rpdqgwg"))))
|
||||
|
||||
(define-public texlive
|
||||
(package
|
||||
(name "texlive")
|
||||
(version "2012")
|
||||
(version "2013")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri "ftp://tug.org/historic/systems/texlive/2012/texlive-20120701-source.tar.xz")
|
||||
(uri "ftp://tug.org/historic/systems/texlive/2013/texlive-20130530-source.tar.xz")
|
||||
(sha256 (base32
|
||||
"10bcrdfsqnc6y3gqcb8ndnjy07i5kz63as39irbq4gmcbmyn2rln"))))
|
||||
"1m3ripkmra53jwkaqcxxhabc3yvqrfm7pfxldnqirp849hp861d9"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("texlive-extra-src" ,texlive-extra-src)
|
||||
("texlive-texmf-src" ,texlive-texmf-src)
|
||||
("cairo" ,cairo)
|
||||
("fontconfig" ,fontconfig)
|
||||
("freetype" ,freetype)
|
||||
("gd" ,gd)
|
||||
("icu4c" ,icu4c)
|
||||
("ghostscript" ,ghostscript)
|
||||
("libpng" ,libpng)
|
||||
("libxaw" ,libxaw)
|
||||
("libxt" ,libxt)
|
||||
("perl" ,perl)
|
||||
("pixman" ,pixman)
|
||||
("poppler" ,poppler)
|
||||
("pkg-config" ,pkg-config)
|
||||
;; FIXME: Add interpreters fontforge and ruby,
|
||||
;; once they are available.
|
||||
("python" ,python)
|
||||
("python" ,python-2) ; incompatible with Python 3 (print syntax)
|
||||
("tcsh" ,tcsh)
|
||||
("teckit" ,teckit)
|
||||
("t1lib" ,t1lib)
|
||||
@@ -87,18 +92,21 @@
|
||||
`(#:out-of-source? #t
|
||||
#:configure-flags
|
||||
`("--disable-native-texlive-build"
|
||||
;; Although the texmf and texmf-dist data is taken from
|
||||
;; texlive-texmf, setting datarootdir is still useful:
|
||||
;; Although the texmf-dist data is taken from texlive-texmf,
|
||||
;; setting datarootdir is still useful:
|
||||
;; "make install" creates symbolic links to scripts in this place.
|
||||
,(string-append "--datarootdir=" (assoc-ref %outputs "data"))
|
||||
,(string-append "--infodir=" (assoc-ref %outputs "out") "/share/info")
|
||||
,(string-append "--mandir=" (assoc-ref %outputs "out") "/share/man")
|
||||
"--with-system-cairo"
|
||||
"--with-system-freetype2"
|
||||
;; "--with-system-gd"
|
||||
;; "--with-system-graphite"
|
||||
"--with-system-gd"
|
||||
;; "--with-system-graphite2" ; requires cmake build system
|
||||
;; "--with-system-harfbuzz" ; requires --with-system-graphite2
|
||||
"--with-system-icu"
|
||||
"--with-system-libgs"
|
||||
"--with-system-libpng"
|
||||
"--with-system-pixman"
|
||||
"--with-system-poppler"
|
||||
"--with-system-t1lib"
|
||||
"--with-system-teckit"
|
||||
@@ -131,9 +139,8 @@
|
||||
'("latex" "pdflatex" "xelatex" "lualatex")))
|
||||
(with-directory-excursion (string-append out "/share/man/man1/")
|
||||
(symlink "luatex.1" "lualatex.1"))
|
||||
;; Delete texmf and texmf-dist from "data", since they
|
||||
;; will be reinstalled from texlive-texmf.
|
||||
(system* "rm" "-r" (string-append data "/texmf"))
|
||||
;; Delete texmf-dist from "data", since it will be reinstalled
|
||||
;; from texlive-texmf.
|
||||
(system* "rm" "-r" (string-append data "/texmf-dist"))
|
||||
;; Unpack texlive-extra and install tlpkg.
|
||||
(mkdir "texlive-extra")
|
||||
@@ -148,18 +155,17 @@
|
||||
(apply unpack (list #:source texlive-texmf))
|
||||
(apply patch-source-shebangs (list #:source texlive-texmf))
|
||||
;; Register "data" for kpathsea in texmf.cnf.
|
||||
(substitute* "texmf/web2c/texmf.cnf"
|
||||
(substitute* "texmf-dist/web2c/texmf.cnf"
|
||||
(("TEXMFROOT = \\$SELFAUTOPARENT")
|
||||
(string-append "TEXMFROOT = " data)))
|
||||
(system* "mv" "texmf" data)
|
||||
(system* "mv" "texmf-dist" data)
|
||||
(chdir ".."))
|
||||
;; texmf.cnf must also be placed in "out", since kpsewhich does
|
||||
;; not know about "data" until it has found this file.
|
||||
(mkdir (string-append out "/share/texmf"))
|
||||
(mkdir (string-append out "/share/texmf/web2c"))
|
||||
(copy-file (string-append data "/texmf/web2c/texmf.cnf")
|
||||
(string-append out "/share/texmf/web2c/texmf.cnf"))))
|
||||
(mkdir (string-append out "/share/texmf-dist"))
|
||||
(mkdir (string-append out "/share/texmf-dist/web2c"))
|
||||
(copy-file (string-append data "/texmf-dist/web2c/texmf.cnf")
|
||||
(string-append out "/share/texmf-dist/web2c/texmf.cnf"))))
|
||||
(alist-cons-after 'patch-shebangs 'texconfig
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
@@ -196,7 +202,7 @@ world.")
|
||||
(build-system gnu-build-system)
|
||||
(arguments '(#:tests? #f)) ; no `check' target
|
||||
(inputs `(("texinfo" ,texinfo)
|
||||
("python" ,python)
|
||||
("python" ,python-2) ; incompatible with Python 3 (print syntax)
|
||||
("which" ,which)))
|
||||
(home-page "https://launchpad.net/rubber")
|
||||
(synopsis "Rubber, a wrapper for LaTeX and friends")
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages valgrind)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix licenses)
|
||||
#:use-module (gnu packages gdb)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages))
|
||||
|
||||
(define-public valgrind
|
||||
(package
|
||||
(name "valgrind")
|
||||
(version "3.8.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://valgrind.org/downloads/valgrind-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1nsqk70ry3221sd62s4f0njcrncppszs4xxjcak13lxyfq2y0fs7"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:patches (list (assoc-ref %build-inputs "patch/glibc-2.17"))
|
||||
#:phases (alist-cons-after
|
||||
'install 'patch-suppression-files
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
;; Don't assume the FHS.
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(dir (string-append out "/lib/valgrind")))
|
||||
(substitute* (find-files dir "\\.supp$")
|
||||
(("obj:/lib") "obj:*/lib")
|
||||
(("obj:/usr/X11R6/lib") "obj:*/lib")
|
||||
(("obj:/usr/lib") "obj:*/lib"))
|
||||
#t))
|
||||
%standard-phases)))
|
||||
(inputs `(;; GDB is needed to provide a sane default for `--db-command'.
|
||||
("gdb" ,gdb)
|
||||
|
||||
("patch/glibc-2.17"
|
||||
,(search-patch "valgrind-glibc.patch"))))
|
||||
(native-inputs `(("perl" ,perl)))
|
||||
(home-page "http://www.valgrind.org/")
|
||||
(synopsis "Debugging and profiling tool suite")
|
||||
(description
|
||||
"Valgrind is an instrumentation framework for building dynamic analysis
|
||||
tools. There are Valgrind tools that can automatically detect many memory
|
||||
management and threading bugs, and profile your programs in detail. You can
|
||||
also use Valgrind to build new tools.")
|
||||
(license gpl2+)))
|
||||
@@ -2,6 +2,7 @@
|
||||
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
|
||||
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -19,7 +20,7 @@
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages version-control)
|
||||
#:use-module ((guix licenses) #:select (asl2.0 gpl1+ gpl2+ gpl3+))
|
||||
#:use-module ((guix licenses) #:select (asl2.0 gpl1+ gpl2 gpl2+ gpl3+))
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu)
|
||||
@@ -27,12 +28,15 @@
|
||||
#:use-module (guix build utils)
|
||||
#:use-module ((gnu packages gettext)
|
||||
#:renamer (symbol-prefix-proc 'guix:))
|
||||
#:use-module (gnu packages libapr)
|
||||
#:use-module (gnu packages apr)
|
||||
#:use-module (gnu packages curl)
|
||||
#:use-module (gnu packages nano)
|
||||
#:use-module (gnu packages openssl)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages sqlite)
|
||||
#:use-module (gnu packages system)
|
||||
#:use-module (gnu packages xml)
|
||||
#:use-module (gnu packages emacs)
|
||||
#:use-module (gnu packages compression))
|
||||
|
||||
@@ -54,7 +58,9 @@
|
||||
;; require Zsh.
|
||||
`(("gettext" ,guix:gettext)))
|
||||
(arguments
|
||||
`(#:tests? #f)) ; no test target
|
||||
`(#:tests? #f ; no test target
|
||||
#:python ,python-2)) ; Python 3 apparently not yet supported, see
|
||||
; https://answers.launchpad.net/bzr/+question/229048
|
||||
(home-page "https://gnu.org/software/bazaar")
|
||||
(synopsis "Decentralized revision control system")
|
||||
(description
|
||||
@@ -64,6 +70,48 @@ organize their workspace in whichever way they want. It is possible to work
|
||||
from a command line or use a GUI application.")
|
||||
(license gpl2+)))
|
||||
|
||||
(define-public git
|
||||
(package
|
||||
(name "git")
|
||||
(version "1.8.4")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://git-core.googlecode.com/files/git-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"156bwqqgaw65rsvbb4wih5jfg94bxyf6p16mdwf0ky3f4ln55s2i"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("curl" ,curl)
|
||||
("expat" ,expat)
|
||||
("gettext" ,guix:gettext)
|
||||
("openssl" ,openssl)
|
||||
("perl" ,perl)
|
||||
("python" ,python-2) ; CAVEAT: incompatible with python-3 according to INSTALL
|
||||
("zlib" ,zlib)))
|
||||
(arguments
|
||||
`(#:make-flags `("V=1") ; more verbose compilation
|
||||
#:test-target "test"
|
||||
#:tests? #f ; FIXME: Many tests are failing
|
||||
#:phases
|
||||
(alist-replace
|
||||
'configure
|
||||
(lambda* (#:key #:allow-other-keys #:rest args)
|
||||
(let ((configure (assoc-ref %standard-phases 'configure)))
|
||||
(and (apply configure args)
|
||||
(substitute* "Makefile"
|
||||
(("/bin/sh") (which "sh"))
|
||||
(("/usr/bin/perl") (which "perl"))
|
||||
(("/usr/bin/python") (which "python"))))))
|
||||
%standard-phases)))
|
||||
(synopsis "Distributed version control system")
|
||||
(description
|
||||
"Git is a free distributed version control system designed to handle
|
||||
everything from small to very large projects with speed and efficiency.")
|
||||
(license gpl2)
|
||||
(home-page "http://git-scm.com/")))
|
||||
|
||||
(define-public subversion
|
||||
(package
|
||||
(name "subversion")
|
||||
@@ -77,10 +125,10 @@ from a command line or use a GUI application.")
|
||||
"11inl9n1riahfnbk1fax0dysm2swakzhzhpmm2zvga6fikcx90zw"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("libapr" ,libapr)
|
||||
("libaprutil" ,libaprutil)
|
||||
`(("apr" ,apr)
|
||||
("apr-util" ,apr-util)
|
||||
("perl" ,perl)
|
||||
("python" ,python)
|
||||
("python" ,python-2) ; incompatible with Python 3 (print syntax)
|
||||
("sqlite" ,sqlite)
|
||||
("zlib" ,zlib)))
|
||||
(home-page "http://subversion.apache.org/")
|
||||
|
||||
+28
-3
@@ -28,7 +28,8 @@
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system perl))
|
||||
#:use-module (guix build-system perl)
|
||||
#:use-module (gnu packages linux))
|
||||
|
||||
(define-public expat
|
||||
(package
|
||||
@@ -65,7 +66,7 @@ things the parser might find in the XML document (like start tags).")
|
||||
(home-page "http://www.xmlsoft.org/")
|
||||
(synopsis "libxml2, a C parser for XML")
|
||||
(inputs `(("perl" ,perl)
|
||||
("python" ,python)
|
||||
("python" ,python-2) ; incompatible with Python 3 (print syntax)
|
||||
("zlib" ,zlib)))
|
||||
(arguments
|
||||
`(#:phases
|
||||
@@ -101,7 +102,7 @@ things the parser might find in the XML document (like start tags).")
|
||||
(synopsis "libxslt, a C library for applying XSLT stylesheets to XML documents")
|
||||
(inputs `(("libgcrypt" ,libgcrypt)
|
||||
("libxml2" ,libxml2)
|
||||
("python" ,python)
|
||||
("python" ,python-wrapper)
|
||||
("zlib" ,zlib)))
|
||||
(description
|
||||
"Libxslt is an XSLT C library developed for the GNOME project. It is
|
||||
@@ -138,3 +139,27 @@ then passed on to the Expat object on each parse call. They can also be given
|
||||
as extra arguments to the parse methods, in which case they override options
|
||||
given at XML::Parser creation time.")
|
||||
(home-page "http://search.cpan.org/~toddr/XML-Parser-2.41/Parser.pm")))
|
||||
|
||||
(define-public xmlto
|
||||
(package
|
||||
(name "xmlto")
|
||||
(version "0.0.25")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://fedorahosted.org/releases/x/m/xmlto/xmlto-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0dp5nxq491gymq806za0dk4hngfmq65ysrqbn0ypajqbbl6vf71n"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("util-linux" ,util-linux)))
|
||||
(home-page "http://cyberelk.net/tim/software/xmlto/")
|
||||
(synopsis "Front-end to an XSL toolchain")
|
||||
(description
|
||||
"Xmlto is a front-end to an XSL toolchain. It chooses an appropriate
|
||||
stylesheet for the conversion you want and applies it using an external
|
||||
XSL-T processor. It also performs any necessary post-processing.")
|
||||
(license license:gpl2+)))
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages xnee)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix licenses)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (gnu packages xorg)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages gtk))
|
||||
|
||||
(define-public xnee
|
||||
(package
|
||||
(name "xnee")
|
||||
(version "3.16")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/xnee/xnee-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1zkn66zpnbxryrb76cc3r2via6216868l1xsnl3vdymbsy23sf87"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("recordproto" ,recordproto)
|
||||
("pkg-config" ,pkg-config)
|
||||
("inputproto" ,inputproto)
|
||||
("libxi" ,libxi)
|
||||
("gtk+" ,gtk+)
|
||||
("libxtst" ,libxtst)
|
||||
("xextproto" ,xextproto)
|
||||
("libxext" ,libxext)
|
||||
("xproto" ,xproto)
|
||||
("libx11" ,libx11)))
|
||||
(home-page "http://www.gnu.org/software/xnee/")
|
||||
(synopsis "Record, replay and distribute user actions under X11")
|
||||
(description
|
||||
"GNU Xnee is a suite of programs that can record, replay and distribute
|
||||
user actions under the X11 environment. Think of it as a robot that can
|
||||
imitate the job you just did. Xnee can be used to automate tests, demonstrate
|
||||
programs, distribute actions, record & replay \"macros\", retype a file.")
|
||||
(license gpl3+)))
|
||||
+96
-483
@@ -29,11 +29,11 @@
|
||||
#:use-module ((gnu packages gettext)
|
||||
#:renamer (symbol-prefix-proc 'gnu:))
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages gnupg)
|
||||
#:use-module (gnu packages gperf)
|
||||
#:use-module (gnu packages libpng)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages m4)
|
||||
#:use-module (gnu packages openssl)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages python)
|
||||
@@ -100,7 +100,7 @@ rasterisation.")
|
||||
(define-public libdrm
|
||||
(package
|
||||
(name "libdrm")
|
||||
(version "2.4.42")
|
||||
(version "2.4.46")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -110,7 +110,7 @@ rasterisation.")
|
||||
".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1qbnpi64hyqzd650hj6jki1d50pzypdhj3rw9m3whwbqly110rz0"))))
|
||||
"1wah4qmrrcv0gnx65lhrlxb6gprxch92wy8lhxv6102fml6k5krk"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("libpciaccess" ,libpciaccess)
|
||||
@@ -184,25 +184,6 @@ tracking.")
|
||||
|
||||
;; compiles only on macos
|
||||
;; (define-public applewmproto
|
||||
;; (package
|
||||
;; (name "applewmproto")
|
||||
;; (version "1.4.2")
|
||||
;; (source
|
||||
;; (origin
|
||||
;; (method url-fetch)
|
||||
;; (uri (string-append
|
||||
;; "mirror://xorg/X11R7.7/src/everything/applewmproto-"
|
||||
;; version
|
||||
;; ".tar.bz2"))
|
||||
;; (sha256
|
||||
;; (base32
|
||||
;; "1zi4p07mp6jmk030p4gmglwxcwp0lzs5mi31y1b4rp8lsqxdxizw"))))
|
||||
;; (build-system gnu-build-system)
|
||||
;; (inputs `(("pkg-config" ,pkg-config)))
|
||||
;; (home-page "http://www.x.org/wiki/")
|
||||
;; (synopsis "xorg implementation of the X Window System")
|
||||
;; (description "X.org provides an implementation of the X Window System")
|
||||
;; (license license:x11)))
|
||||
|
||||
|
||||
(define-public bdftopcf
|
||||
@@ -384,6 +365,11 @@ tracking.")
|
||||
("font-util", font-util)
|
||||
("mkfontdir" ,mkfontdir)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(arguments
|
||||
`(#:configure-flags (list
|
||||
;; install fonts into subdirectory of package output instead of
|
||||
;; font-util-?.?.?/share/fonts/X11
|
||||
(string-append "--with-fontrootdir=" %output "/share/fonts/X11"))))
|
||||
(home-page "http://www.x.org/wiki/")
|
||||
(synopsis "xorg implementation of the X Window System")
|
||||
(description "X.org provides an implementation of the X Window System")
|
||||
@@ -410,73 +396,19 @@ tracking.")
|
||||
("font-util", font-util)
|
||||
("mkfontdir" ,mkfontdir)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(arguments
|
||||
`(#:configure-flags (list
|
||||
(string-append "--with-fontrootdir=" %output "/share/fonts/X11"))))
|
||||
(home-page "http://www.x.org/wiki/")
|
||||
(synopsis "xorg implementation of the X Window System")
|
||||
(description "X.org provides an implementation of the X Window System")
|
||||
(license license:x11)))
|
||||
|
||||
|
||||
;; non-free license
|
||||
;; (define-public font-adobe-utopia100dpi
|
||||
;; (package
|
||||
;; (name "font-adobe-utopia100dpi")
|
||||
;; (version "1.0.4")
|
||||
;; (source
|
||||
;; (origin
|
||||
;; (method url-fetch)
|
||||
;; (uri (string-append
|
||||
;; "mirror://xorg/X11R7.7/src/everything/font-adobe-utopia-100dpi-"
|
||||
;; version
|
||||
;; ".tar.bz2"))
|
||||
;; (sha256
|
||||
;; (base32
|
||||
;; "19dd9znam1ah72jmdh7i6ny2ss2r6m21z9v0l43xvikw48zmwvyi"))))
|
||||
;; (build-system gnu-build-system)
|
||||
;; (home-page "http://www.x.org/wiki/")
|
||||
;; (synopsis "xorg implementation of the X Window System")
|
||||
;; (description "X.org provides an implementation of the X Window System")
|
||||
;; (license non-free)))
|
||||
;;
|
||||
;;
|
||||
;; (define-public font-adobe-utopia75dpi
|
||||
;; (package
|
||||
;; (name "font-adobe-utopia75dpi")
|
||||
;; (version "1.0.4")
|
||||
;; (source
|
||||
;; (origin
|
||||
;; (method url-fetch)
|
||||
;; (uri (string-append
|
||||
;; "mirror://xorg/X11R7.7/src/everything/font-adobe-utopia-75dpi-"
|
||||
;; version
|
||||
;; ".tar.bz2"))
|
||||
;; (sha256
|
||||
;; (base32
|
||||
;; "152wigpph5wvl4k9m3l4mchxxisgsnzlx033mn5iqrpkc6f72cl7"))))
|
||||
;; (build-system gnu-build-system)
|
||||
;; (home-page "http://www.x.org/wiki/")
|
||||
;; (synopsis "xorg implementation of the X Window System")
|
||||
;; (description "X.org provides an implementation of the X Window System")
|
||||
;; (license non-free)))
|
||||
;;
|
||||
;;
|
||||
;; (define-public font-adobe-utopia-type1
|
||||
;; (package
|
||||
;; (name "font-adobe-utopia-type1")
|
||||
;; (version "1.0.4")
|
||||
;; (source
|
||||
;; (origin
|
||||
;; (method url-fetch)
|
||||
;; (uri (string-append
|
||||
;; "mirror://xorg/X11R7.7/src/everything/font-adobe-utopia-type1-"
|
||||
;; version
|
||||
;; ".tar.bz2"))
|
||||
;; (sha256
|
||||
;; (base32
|
||||
;; "0xw0pdnzj5jljsbbhakc6q9ha2qnca1jr81zk7w70yl9bw83b54p"))))
|
||||
;; (build-system gnu-build-system)
|
||||
;; (home-page "http://www.x.org/wiki/")
|
||||
;; (synopsis "xorg implementation of the X Window System")
|
||||
;; (description "X.org provides an implementation of the X Window System")
|
||||
;; (license non-free)))
|
||||
|
||||
|
||||
(define-public font-alias
|
||||
@@ -526,187 +458,15 @@ tracking.")
|
||||
(license license:x11)))
|
||||
|
||||
|
||||
;; non-free license
|
||||
;; (define-public font-bh100dpi
|
||||
;; (package
|
||||
;; (name "font-bh100dpi")
|
||||
;; (version "1.0.3")
|
||||
;; (source
|
||||
;; (origin
|
||||
;; (method url-fetch)
|
||||
;; (uri (string-append
|
||||
;; "mirror://xorg/X11R7.7/src/everything/font-bh-100dpi-"
|
||||
;; version
|
||||
;; ".tar.bz2"))
|
||||
;; (sha256
|
||||
;; (base32
|
||||
;; "10cl4gm38dw68jzln99ijix730y7cbx8np096gmpjjwff1i73h13"))))
|
||||
;; (build-system gnu-build-system)
|
||||
;; (home-page "http://www.x.org/wiki/")
|
||||
;; (synopsis "xorg implementation of the X Window System")
|
||||
;; (description "X.org provides an implementation of the X Window System")
|
||||
;; (license non-free)))
|
||||
;;
|
||||
;;
|
||||
;; (define-public font-bh75dpi
|
||||
;; (package
|
||||
;; (name "font-bh75dpi")
|
||||
;; (version "1.0.3")
|
||||
;; (source
|
||||
;; (origin
|
||||
;; (method url-fetch)
|
||||
;; (uri (string-append
|
||||
;; "mirror://xorg/X11R7.7/src/everything/font-bh-75dpi-"
|
||||
;; version
|
||||
;; ".tar.bz2"))
|
||||
;; (sha256
|
||||
;; (base32
|
||||
;; "073jmhf0sr2j1l8da97pzsqj805f7mf9r2gy92j4diljmi8sm1il"))))
|
||||
;; (build-system gnu-build-system)
|
||||
;; (home-page "http://www.x.org/wiki/")
|
||||
;; (synopsis "xorg implementation of the X Window System")
|
||||
;; (description "X.org provides an implementation of the X Window System")
|
||||
;; (license non-free)))
|
||||
;;
|
||||
;;
|
||||
;; (define-public font-bh-lucidatypewriter100dpi
|
||||
;; (package
|
||||
;; (name "font-bh-lucidatypewriter100dpi")
|
||||
;; (version "1.0.3")
|
||||
;; (source
|
||||
;; (origin
|
||||
;; (method url-fetch)
|
||||
;; (uri (string-append
|
||||
;; "mirror://xorg/X11R7.7/src/everything/font-bh-lucidatypewriter-100dpi-"
|
||||
;; version
|
||||
;; ".tar.bz2"))
|
||||
;; (sha256
|
||||
;; (base32
|
||||
;; "1fqzckxdzjv4802iad2fdrkpaxl4w0hhs9lxlkyraq2kq9ik7a32"))))
|
||||
;; (build-system gnu-build-system)
|
||||
;; (home-page "http://www.x.org/wiki/")
|
||||
;; (synopsis "xorg implementation of the X Window System")
|
||||
;; (description "X.org provides an implementation of the X Window System")
|
||||
;; (license non-free)))
|
||||
;;
|
||||
;;
|
||||
;; (define-public font-bh-lucidatypewriter75dpi
|
||||
;; (package
|
||||
;; (name "font-bh-lucidatypewriter75dpi")
|
||||
;; (version "1.0.3")
|
||||
;; (source
|
||||
;; (origin
|
||||
;; (method url-fetch)
|
||||
;; (uri (string-append
|
||||
;; "mirror://xorg/X11R7.7/src/everything/font-bh-lucidatypewriter-75dpi-"
|
||||
;; version
|
||||
;; ".tar.bz2"))
|
||||
;; (sha256
|
||||
;; (base32
|
||||
;; "0cfbxdp5m12cm7jsh3my0lym9328cgm7fa9faz2hqj05wbxnmhaa"))))
|
||||
;; (build-system gnu-build-system)
|
||||
;; (home-page "http://www.x.org/wiki/")
|
||||
;; (synopsis "xorg implementation of the X Window System")
|
||||
;; (description "X.org provides an implementation of the X Window System")
|
||||
;; (license non-free)))
|
||||
;;
|
||||
;;
|
||||
;; (define-public font-bh-ttf
|
||||
;; (define-public font-bh-type1
|
||||
;; (package
|
||||
;; (name "font-bh-type1")
|
||||
;; (version "1.0.3")
|
||||
;; (source
|
||||
;; (origin
|
||||
;; (method url-fetch)
|
||||
;; (uri (string-append
|
||||
;; "mirror://xorg/X11R7.7/src/everything/font-bh-ttf-"
|
||||
;; version
|
||||
;; ".tar.bz2"))
|
||||
;; (sha256
|
||||
;; (base32
|
||||
;; "0pyjmc0ha288d4i4j0si4dh3ncf3jiwwjljvddrb0k8v4xiyljqv"))))
|
||||
;; (build-system gnu-build-system)
|
||||
;; (inputs
|
||||
;; `(("mkfontscale" ,mkfontscale)
|
||||
;; ("mkfontdir" ,mkfontdir)
|
||||
;; ("pkg-config" ,pkg-config)))
|
||||
;; (home-page "http://www.x.org/wiki/")
|
||||
;; (synopsis "xorg implementation of the X Window System")
|
||||
;; (description "X.org provides an implementation of the X Window System")
|
||||
;; (license non-free)))
|
||||
;;
|
||||
;;
|
||||
;; (define-public font-bitstream100dpi
|
||||
;; (package
|
||||
;; (name "font-bitstream100dpi")
|
||||
;; (version "1.0.3")
|
||||
;; (source
|
||||
;; (origin
|
||||
;; (method url-fetch)
|
||||
;; (uri (string-append
|
||||
;; "mirror://xorg/X11R7.7/src/everything/font-bh-ttf-"
|
||||
;; version
|
||||
;; ".tar.bz2"))
|
||||
;; (sha256
|
||||
;; (base32
|
||||
;; "0pyjmc0ha288d4i4j0si4dh3ncf3jiwwjljvddrb0k8v4xiyljqv"))))
|
||||
;; (build-system gnu-build-system)
|
||||
;; (inputs
|
||||
;; `(("mkfontscale" ,mkfontscale)
|
||||
;; ("mkfontdir" ,mkfontdir)
|
||||
;; ("pkg-config" ,pkg-config)))
|
||||
;; (home-page "http://www.x.org/wiki/")
|
||||
;; (synopsis "xorg implementation of the X Window System")
|
||||
;; (description "X.org provides an implementation of the X Window System")
|
||||
;; (license non-free)))
|
||||
;;
|
||||
;;
|
||||
;; (define-public font-bitstream75dpi
|
||||
;; (package
|
||||
;; (name "font-bitstream75dpi")
|
||||
;; (version "1.0.3")
|
||||
;; (source
|
||||
;; (origin
|
||||
;; (method url-fetch)
|
||||
;; (uri (string-append
|
||||
;; "mirror://xorg/X11R7.7/src/everything/font-bh-ttf-"
|
||||
;; version
|
||||
;; ".tar.bz2"))
|
||||
;; (sha256
|
||||
;; (base32
|
||||
;; "0pyjmc0ha288d4i4j0si4dh3ncf3jiwwjljvddrb0k8v4xiyljqv"))))
|
||||
;; (build-system gnu-build-system)
|
||||
;; (inputs
|
||||
;; `(("mkfontscale" ,mkfontscale)
|
||||
;; ("mkfontdir" ,mkfontdir)
|
||||
;; ("pkg-config" ,pkg-config)))
|
||||
;; (home-page "http://www.x.org/wiki/")
|
||||
;; (synopsis "xorg implementation of the X Window System")
|
||||
;; (description "X.org provides an implementation of the X Window System")
|
||||
;; (license non-free)))
|
||||
|
||||
|
||||
(define-public font-bitstream-type1
|
||||
(package
|
||||
(name "font-bitstream-type1")
|
||||
(version "1.0.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"mirror://xorg/X11R7.7/src/everything/font-bh-ttf-"
|
||||
version
|
||||
".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0pyjmc0ha288d4i4j0si4dh3ncf3jiwwjljvddrb0k8v4xiyljqv"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("mkfontdir" ,mkfontdir)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(home-page "http://www.x.org/wiki/")
|
||||
(synopsis "xorg implementation of the X Window System")
|
||||
(description "X.org provides an implementation of the X Window System")
|
||||
(license license:x11)))
|
||||
|
||||
|
||||
(define-public font-cronyx-cyrillic
|
||||
@@ -734,55 +494,11 @@ tracking.")
|
||||
(license license:x11)))
|
||||
|
||||
|
||||
;; no license
|
||||
;; (define-public font-cursor-misc
|
||||
;; (package
|
||||
;; (name "font-cursor-misc")
|
||||
;; (version "1.0.3")
|
||||
;; (source
|
||||
;; (origin
|
||||
;; (method url-fetch)
|
||||
;; (uri (string-append
|
||||
;; "mirror://xorg/X11R7.7/src/everything/font-cursor-misc-"
|
||||
;; version
|
||||
;; ".tar.bz2"))
|
||||
;; (sha256
|
||||
;; (base32
|
||||
;; "0dd6vfiagjc4zmvlskrbjz85jfqhf060cpys8j0y1qpcbsrkwdhp"))))
|
||||
;; (build-system gnu-build-system)
|
||||
;; (inputs
|
||||
;; `(("mkfontscale" ,mkfontscale)
|
||||
;; ("mkfontdir" ,mkfontdir)
|
||||
;; ("bdftopcf" ,bdftopcf)
|
||||
;; ("pkg-config" ,pkg-config)))
|
||||
;; (home-page "http://www.x.org/wiki/")
|
||||
;; (synopsis "xorg implementation of the X Window System")
|
||||
;; (description "X.org provides an implementation of the X Window System")
|
||||
;; (license none)))
|
||||
;;
|
||||
;;
|
||||
|
||||
;; non-free license
|
||||
;; (define-public font-daewoo-misc
|
||||
;; (package
|
||||
;; (name "font-daewoo-misc")
|
||||
;; (version "1.0.3")
|
||||
;; (source
|
||||
;; (origin
|
||||
;; (method url-fetch)
|
||||
;; (uri (string-append
|
||||
;; "mirror://xorg/X11R7.7/src/everything/font-daewoo-misc-"
|
||||
;; version
|
||||
;; ".tar.bz2"))
|
||||
;; (sha256
|
||||
;; (base32
|
||||
;; "1s2bbhizzgbbbn5wqs3vw53n619cclxksljvm759h9p1prqdwrdw"))))
|
||||
;; (build-system gnu-build-system)
|
||||
;; (inputs
|
||||
;; `(("mkfontdir" ,mkfontdir)
|
||||
;; ("bdftopcf" ,bdftopcf)
|
||||
;; ("pkg-config" ,pkg-config)))
|
||||
;; (home-page "http://www.x.org/wiki/")
|
||||
;; (synopsis "xorg implementation of the X Window System")
|
||||
;; (description "X.org provides an implementation of the X Window System")
|
||||
;; (license non-free)))
|
||||
|
||||
|
||||
(define-public font-dec-misc
|
||||
@@ -810,30 +526,8 @@ tracking.")
|
||||
(license license:x11)))
|
||||
|
||||
|
||||
;; non-free license
|
||||
;; (define-public font-ibm-type1
|
||||
;; (package
|
||||
;; (name "font-ibm-type1")
|
||||
;; (version "1.0.3")
|
||||
;; (source
|
||||
;; (origin
|
||||
;; (method url-fetch)
|
||||
;; (uri (string-append
|
||||
;; "mirror://xorg/X11R7.7/src/everything/font-cronyx-cyrillic-"
|
||||
;; version
|
||||
;; ".tar.bz2"))
|
||||
;; (sha256
|
||||
;; (base32
|
||||
;; "1pyjll4adch3z5cg663s6vhi02k8m6488f0mrasg81ssvg9jinzx"))))
|
||||
;; (build-system gnu-build-system)
|
||||
;; (inputs
|
||||
;; `(("mkfontdir" ,mkfontdir)
|
||||
;; ("bdftopcf" ,bdftopcf)
|
||||
;; ("pkg-config" ,pkg-config)))
|
||||
;; (home-page "http://www.x.org/wiki/")
|
||||
;; (synopsis "xorg implementation of the X Window System")
|
||||
;; (description "X.org provides an implementation of the X Window System")
|
||||
;; (license non-free)))
|
||||
|
||||
|
||||
(define-public font-isas-misc
|
||||
(package
|
||||
@@ -860,29 +554,8 @@ tracking.")
|
||||
(license license:x11)))
|
||||
|
||||
|
||||
;; non-free license
|
||||
;; (define-public font-jis-misc
|
||||
;; (package
|
||||
;; (name "font-jis-misc")
|
||||
;; (version "1.0.3")
|
||||
;; (source
|
||||
;; (origin
|
||||
;; (method url-fetch)
|
||||
;; (uri (string-append
|
||||
;; "mirror://xorg/X11R7.7/src/everything/font-jis-misc-"
|
||||
;; version
|
||||
;; ".tar.bz2"))
|
||||
;; (sha256
|
||||
;; (base32
|
||||
;; "0rdc3xdz12pnv951538q6wilx8mrdndpkphpbblszsv7nc8cw61b"))))
|
||||
;; (build-system gnu-build-system)
|
||||
;; (inputs
|
||||
;; `(("mkfontdir" ,mkfontdir)
|
||||
;; ("bdftopcf" ,bdftopcf)
|
||||
;; ("pkg-config" ,pkg-config)))
|
||||
;; (home-page "http://www.x.org/wiki/")
|
||||
;; (synopsis "xorg implementation of the X Window System")
|
||||
;; (description "X.org provides an implementation of the X Window System")
|
||||
;; (license non-free)))
|
||||
|
||||
|
||||
(define-public font-micro-misc
|
||||
@@ -959,29 +632,8 @@ tracking.")
|
||||
(license license:x11)))
|
||||
|
||||
|
||||
;; non-free license
|
||||
;; (define-public font-misc-meltho
|
||||
;; (package
|
||||
;; (name "font-misc-meltho")
|
||||
;; (version "1.0.3")
|
||||
;; (source
|
||||
;; (origin
|
||||
;; (method url-fetch)
|
||||
;; (uri (string-append
|
||||
;; "mirror://xorg/X11R7.7/src/everything/font-misc-meltho-"
|
||||
;; version
|
||||
;; ".tar.bz2"))
|
||||
;; (sha256
|
||||
;; (base32
|
||||
;; "148793fqwzrc3bmh2vlw5fdiwjc2n7vs25cic35gfp452czk489p"))))
|
||||
;; (build-system gnu-build-system)
|
||||
;; (inputs
|
||||
;; `(("mkfontscale" ,mkfontscale)
|
||||
;; ("mkfontdir" ,mkfontdir)
|
||||
;; ("pkg-config" ,pkg-config)))
|
||||
;; (home-page "http://www.x.org/wiki/")
|
||||
;; (synopsis "xorg implementation of the X Window System")
|
||||
;; (description "X.org provides an implementation of the X Window System")
|
||||
;; (license non-free)))
|
||||
|
||||
|
||||
(define-public font-misc-misc
|
||||
@@ -1004,6 +656,9 @@ tracking.")
|
||||
("font-util" ,font-util)
|
||||
("bdftopcf" ,bdftopcf)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(arguments
|
||||
`(#:configure-flags (list
|
||||
(string-append "--with-fontrootdir=" %output "/share/fonts/X11"))))
|
||||
(home-page "http://www.x.org/wiki/")
|
||||
(synopsis "xorg implementation of the X Window System")
|
||||
(description "X.org provides an implementation of the X Window System")
|
||||
@@ -1055,6 +710,9 @@ tracking.")
|
||||
("font-util" ,font-util)
|
||||
("bdftopcf" ,bdftopcf)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(arguments
|
||||
`(#:configure-flags (list
|
||||
(string-append "--with-fontrootdir=" %output "/share/fonts/X11"))))
|
||||
(home-page "http://www.x.org/wiki/")
|
||||
(synopsis "xorg implementation of the X Window System")
|
||||
(description "X.org provides an implementation of the X Window System")
|
||||
@@ -1321,30 +979,6 @@ tracking.")
|
||||
|
||||
;; requires applewmproto, which compiles only on macos
|
||||
;; (define-public libapplewm
|
||||
;; (package
|
||||
;; (name "libapplewm")
|
||||
;; (version "1.4.1")
|
||||
;; (source
|
||||
;; (origin
|
||||
;; (method url-fetch)
|
||||
;; (uri (string-append
|
||||
;; "mirror://xorg/X11R7.7/src/everything/libAppleWM-"
|
||||
;; version
|
||||
;; ".tar.bz2"))
|
||||
;; (sha256
|
||||
;; (base32
|
||||
;; "0r8x28n45q89x91mz8mv0zkkcxi8wazkac886fyvflhiv2y8ap2y"))))
|
||||
;; (build-system gnu-build-system)
|
||||
;; (inputs
|
||||
;; `(("xextproto" ,xextproto)
|
||||
;; ("libxext" ,libxext)
|
||||
;; ("libx11" ,libx11)
|
||||
;; ("applewmproto" ,applewmproto)
|
||||
;; ("pkg-config" ,pkg-config)))
|
||||
;; (home-page "http://www.x.org/wiki/")
|
||||
;; (synopsis "xorg implementation of the X Window System")
|
||||
;; (description "X.org provides an implementation of the X Window System")
|
||||
;; (license license:x11)))
|
||||
|
||||
|
||||
(define-public libdmx
|
||||
@@ -2223,7 +1857,7 @@ tracking.")
|
||||
"0ds4qg6slidrzyz6q9ckq0a19hn6blzpnvciy4brh741gn49jpdd"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("pkg-config" ,pkg-config) ("python" ,python)))
|
||||
`(("pkg-config" ,pkg-config) ("python" ,python-wrapper)))
|
||||
(home-page "http://www.x.org/wiki/")
|
||||
(synopsis "xorg implementation of the X Window System")
|
||||
(description "X.org provides an implementation of the X Window System")
|
||||
@@ -2295,6 +1929,11 @@ tracking.")
|
||||
`(("libxcursor" ,libxcursor)
|
||||
("pkg-config" ,pkg-config)
|
||||
("xcursorgen" ,xcursorgen)))
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
(list (string-append "--with-cursordir="
|
||||
(assoc-ref %outputs "out")
|
||||
"/share/icons"))))
|
||||
(home-page "http://www.x.org/wiki/")
|
||||
(synopsis "xorg implementation of the X Window System")
|
||||
(description "X.org provides an implementation of the X Window System")
|
||||
@@ -2457,7 +2096,6 @@ tracking.")
|
||||
(license license:x11)))
|
||||
|
||||
|
||||
;; FIXME: Tries to install file joystick-properties.h into ...--xorg-server-1.12.2/include/xorg
|
||||
(define-public xf86-input-joystick
|
||||
(package
|
||||
(name "xf86-input-joystick")
|
||||
@@ -2475,6 +2113,11 @@ tracking.")
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("pkg-config" ,pkg-config)
|
||||
("xorg-server" ,xorg-server)))
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
(list (string-append "--with-sdkdir="
|
||||
(assoc-ref %outputs "out")
|
||||
"/include/xorg"))))
|
||||
(home-page "http://www.x.org/wiki/")
|
||||
(synopsis "xorg implementation of the X Window System")
|
||||
(description "X.org provides an implementation of the X Window System")
|
||||
@@ -2547,13 +2190,20 @@ tracking.")
|
||||
("mtdev" ,mtdev)
|
||||
("pkg-config" ,pkg-config)
|
||||
("xorg-server" ,xorg-server)))
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
(list (string-append "--with-sdkdir="
|
||||
(assoc-ref %outputs "out")
|
||||
"/include/xorg")
|
||||
(string-append "--with-xorg-conf-dir="
|
||||
(assoc-ref %outputs "out")
|
||||
"/share/X11/xorg.conf.d"))))
|
||||
(home-page "http://www.x.org/wiki/")
|
||||
(synopsis "xorg implementation of the X Window System")
|
||||
(description "X.org provides an implementation of the X Window System")
|
||||
(license license:x11)))
|
||||
|
||||
|
||||
;; FIXME: Installation tries to create ...-xorg-server-1.12.2/share/X11/xorg.conf.d
|
||||
(define-public xf86-input-vmmouse
|
||||
(package
|
||||
(name "xf86-input-vmmouse")
|
||||
@@ -2571,6 +2221,11 @@ tracking.")
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("pkg-config" ,pkg-config)
|
||||
("xorg-server" ,xorg-server)))
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
(list(string-append "--with-xorg-conf-dir="
|
||||
(assoc-ref %outputs "out")
|
||||
"/share/X11/xorg.conf.d"))))
|
||||
(home-page "http://www.x.org/wiki/")
|
||||
(synopsis "xorg implementation of the X Window System")
|
||||
(description "X.org provides an implementation of the X Window System")
|
||||
@@ -2694,26 +2349,8 @@ tracking.")
|
||||
(license license:x11)))
|
||||
|
||||
|
||||
;; non-free license
|
||||
;; (define-public xf86-video-dummy
|
||||
;; (package
|
||||
;; (name "xf86-video-dummy")
|
||||
;; (version "0.3.5")
|
||||
;; (source
|
||||
;; (origin
|
||||
;; (method url-fetch)
|
||||
;; (uri (string-append
|
||||
;; "mirror://xorg/X11R7.7/src/everything/xf86-video-dummy-"
|
||||
;; version
|
||||
;; ".tar.bz2"))
|
||||
;; (sha256
|
||||
;; (base32
|
||||
;; "0pyr50kqh7g84r4p0x09ay5kxax20dip9sh8h3cbd4xv8cswdbfm"))))
|
||||
;; (build-system gnu-build-system)
|
||||
;; (inputs `(("pkg-config" ,pkg-config)))
|
||||
;; (home-page "http://www.x.org/wiki/")
|
||||
;; (synopsis "xorg implementation of the X Window System")
|
||||
;; (description "X.org provides an implementation of the X Window System")
|
||||
;; (license non-free)))
|
||||
|
||||
|
||||
(define-public xf86-video-fbdev
|
||||
@@ -3227,26 +2864,8 @@ tracking.")
|
||||
(license license:x11)))
|
||||
|
||||
|
||||
;; no license
|
||||
;; (define-public xf86-video-v4l
|
||||
;; (package
|
||||
;; (name "xf86-video-v4l")
|
||||
;; (version "0.2.0")
|
||||
;; (source
|
||||
;; (origin
|
||||
;; (method url-fetch)
|
||||
;; (uri (string-append
|
||||
;; "mirror://xorg/X11R7.7/src/everything/xf86-video-v4l-"
|
||||
;; version
|
||||
;; ".tar.bz2"))
|
||||
;; (sha256
|
||||
;; (base32
|
||||
;; "0pcjc75hgbih3qvhpsx8d4fljysfk025slxcqyyhr45dzch93zyb"))))
|
||||
;; (build-system gnu-build-system)
|
||||
;; (inputs `(("pkg-config" ,pkg-config)))
|
||||
;; (home-page "http://www.x.org/wiki/")
|
||||
;; (synopsis "xorg implementation of the X Window System")
|
||||
;; (description "X.org provides an implementation of the X Window System")
|
||||
;; (license none)))
|
||||
|
||||
|
||||
(define-public xf86-video-vesa
|
||||
@@ -3323,26 +2942,6 @@ tracking.")
|
||||
|
||||
;; Only relevant for the frame buffer on BSD systems.
|
||||
;; (define-public xf86-video-wsfb
|
||||
;; (package
|
||||
;; (name "xf86-video-wsfb")
|
||||
;; (version "0.4.0")
|
||||
;; (source
|
||||
;; (origin
|
||||
;; (method url-fetch)
|
||||
;; (uri (string-append
|
||||
;; "mirror://xorg/X11R7.7/src/everything/xf86-video-wsfb-"
|
||||
;; version
|
||||
;; ".tar.bz2"))
|
||||
;; (sha256
|
||||
;; (base32
|
||||
;; "0hr8397wpd0by1hc47fqqrnaw3qdqd8aqgwgzv38w5k3l3jy6p4p"))))
|
||||
;; (build-system gnu-build-system)
|
||||
;; (inputs `(("pkg-config" ,pkg-config)
|
||||
;; ("xorg-server" ,xorg-server)))
|
||||
;; (home-page "http://www.x.org/wiki/")
|
||||
;; (synopsis "xorg implementation of the X Window System")
|
||||
;; (description "X.org provides an implementation of the X Window System")
|
||||
;; (license license:bsd-2)))
|
||||
|
||||
|
||||
(define-public xf86bigfontproto
|
||||
@@ -3531,9 +3130,9 @@ tracking.")
|
||||
(license license:x11)))
|
||||
|
||||
|
||||
(define-public xkbcomp
|
||||
(define xkbcomp-intermediate ; used as input for xkeyboard-config
|
||||
(package
|
||||
(name "xkbcomp")
|
||||
(name "xkbcomp-intermediate")
|
||||
(version "1.2.4")
|
||||
(source
|
||||
(origin
|
||||
@@ -3556,6 +3155,18 @@ tracking.")
|
||||
(description "X.org provides an implementation of the X Window System")
|
||||
(license license:x11)))
|
||||
|
||||
(define-public xkbcomp ; using xkeyboard-config as input
|
||||
(package (inherit xkbcomp-intermediate)
|
||||
(name "xkbcomp")
|
||||
(inputs
|
||||
`(,@(package-inputs xkbcomp-intermediate)
|
||||
("xkeyboard-config" ,xkeyboard-config)))
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
(list (string-append "--with-xkb-config-root="
|
||||
(assoc-ref %build-inputs "xkeyboard-config")
|
||||
"/share/X11/xkb"))))))
|
||||
|
||||
|
||||
(define-public xkbevd
|
||||
(package
|
||||
@@ -3629,7 +3240,7 @@ tracking.")
|
||||
("intltool" ,intltool)
|
||||
("libx11" ,libx11)
|
||||
("pkg-config" ,pkg-config)
|
||||
("xkbcomp" ,xkbcomp)))
|
||||
("xkbcomp-intermediate" ,xkbcomp-intermediate)))
|
||||
(home-page "http://www.x.org/wiki/")
|
||||
(synopsis "xorg implementation of the X Window System")
|
||||
(description "X.org provides an implementation of the X Window System")
|
||||
@@ -3734,26 +3345,8 @@ tracking.")
|
||||
(license license:x11)))
|
||||
|
||||
|
||||
;; no license
|
||||
;; (define-public xorg-docs
|
||||
;; (package
|
||||
;; (name "xorg-docs")
|
||||
;; (version "1.7")
|
||||
;; (source
|
||||
;; (origin
|
||||
;; (method url-fetch)
|
||||
;; (uri (string-append
|
||||
;; "mirror://xorg/X11R7.7/src/everything/xorg-docs-"
|
||||
;; version
|
||||
;; ".tar.bz2"))
|
||||
;; (sha256
|
||||
;; (base32
|
||||
;; "0prphdba6kgr1bxk7r07wxxx6x6pqjw6prr5qclypsb5sf5r3cdr"))))
|
||||
;; (build-system gnu-build-system)
|
||||
;; (inputs `(("pkg-config" ,pkg-config)))
|
||||
;; (home-page "http://www.x.org/wiki/")
|
||||
;; (synopsis "xorg implementation of the X Window System")
|
||||
;; (description "X.org provides an implementation of the X Window System")
|
||||
;; (license none)))
|
||||
|
||||
|
||||
(define-public xorg-sgml-doctools
|
||||
@@ -4579,9 +4172,9 @@ tracking.")
|
||||
(define-public mesa
|
||||
(package
|
||||
(name "mesa")
|
||||
;; In newer versions (9.0.5 and 9.1 tested), "make" results in an
|
||||
;; In newer versions (9.0.5, 9.1 and 9.2 tested), "make" results in an
|
||||
;; infinite configure loop, see
|
||||
;; https://bugs.freedesktop.org/show_bug.cgi?id=61527
|
||||
;; https://bugs.freedesktop.org/show_bug.cgi?id=58812
|
||||
(version "8.0.5")
|
||||
(source
|
||||
(origin
|
||||
@@ -4609,7 +4202,7 @@ tracking.")
|
||||
("libxml2" ,libxml2)
|
||||
("makedepend" ,makedepend)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python" ,python)))
|
||||
("python" ,python-2))) ; incompatible with Python 3 (print syntax)
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
`("--with-gallium-drivers=r600,svga,swrast") ; drop r300 from the default list as it requires llvm
|
||||
@@ -4655,7 +4248,7 @@ emulation to complete hardware acceleration for modern GPUs.")
|
||||
`(("xcb-proto" ,xcb-proto)
|
||||
("libxslt" ,libxslt)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python" ,python)))
|
||||
("python" ,python-wrapper)))
|
||||
(home-page "http://www.x.org/wiki/")
|
||||
(synopsis "xorg implementation of the X Window System")
|
||||
(description "X.org provides an implementation of the X Window System")
|
||||
@@ -4697,6 +4290,7 @@ emulation to complete hardware acceleration for modern GPUs.")
|
||||
("dbus" ,dbus)
|
||||
("dmxproto" ,dmxproto)
|
||||
("libdmx" ,libdmx)
|
||||
("libgcrypt" ,libgcrypt)
|
||||
("libxau" ,libxau)
|
||||
("libxaw" ,libxaw)
|
||||
("libxdmcp" ,libxdmcp)
|
||||
@@ -4708,9 +4302,8 @@ emulation to complete hardware acceleration for modern GPUs.")
|
||||
("libxt" ,libxt)
|
||||
("libxv" ,libxv)
|
||||
("mesa" ,mesa)
|
||||
("openssl" ,openssl)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python" ,python)
|
||||
("python" ,python-wrapper)
|
||||
("recordproto" ,recordproto)
|
||||
("resourceproto" ,resourceproto)
|
||||
("scrnsaverproto" ,scrnsaverproto)
|
||||
@@ -4719,10 +4312,30 @@ emulation to complete hardware acceleration for modern GPUs.")
|
||||
("xf86dgaproto" ,xf86dgaproto)
|
||||
("xf86driproto" ,xf86driproto)
|
||||
("xf86vidmodeproto" ,xf86vidmodeproto)
|
||||
;; ("xkbutils" ,xkbutils)
|
||||
;; ("xkeyboard-config" ,xkeyboard-config)
|
||||
("xkbcomp" ,xkbcomp)
|
||||
("xkeyboard-config" ,xkeyboard-config)
|
||||
("xtrans" ,xtrans)
|
||||
("zlib" ,zlib)))
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
(list (string-append "--with-xkb-path="
|
||||
(assoc-ref %build-inputs "xkeyboard-config")
|
||||
"/share/X11/xkb")
|
||||
(string-append "--with-xkb-output="
|
||||
"/tmp") ; FIXME: This is a bit doubtful; where should
|
||||
; the compiled keyboard maps go?
|
||||
(string-append "--with-xkb-bin-directory="
|
||||
(assoc-ref %build-inputs "xkbcomp")
|
||||
"/bin"))
|
||||
#:phases
|
||||
(alist-replace
|
||||
'configure
|
||||
(lambda* (#:key outputs #:allow-other-keys #:rest args)
|
||||
(let ((configure (assoc-ref %standard-phases 'configure)))
|
||||
(substitute* (find-files "." "\\.c$")
|
||||
(("/bin/sh") (which "sh")))
|
||||
(apply configure args)))
|
||||
%standard-phases)))
|
||||
(home-page "http://www.x.org/wiki/")
|
||||
(synopsis "xorg implementation of the X Window System")
|
||||
(description "X.org provides an implementation of the X Window System")
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages yasm)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module ((guix licenses)
|
||||
#:renamer (symbol-prefix-proc 'license:))
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages xml))
|
||||
|
||||
(define-public yasm
|
||||
(package
|
||||
(name "yasm")
|
||||
(version "1.2.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://www.tortall.net/projects/yasm/releases/yasm-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0cfg7ji3ia2in628w42wrfvw2ixmmm4rghwmv2k202mraysgm3vn"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("python" ,python-wrapper)
|
||||
("xmlto" ,xmlto)))
|
||||
(home-page "http://yasm.tortall.net/")
|
||||
(synopsis "Rewrite of the NASM assembler")
|
||||
(description
|
||||
"Yasm is a complete rewrite of the NASM assembler.
|
||||
|
||||
Yasm currently supports the x86 and AMD64 instruction sets, accepts NASM
|
||||
and GAS assembler syntaxes, outputs binary, ELF32, ELF64, 32 and 64-bit
|
||||
Mach-O, RDOFF2, COFF, Win32, and Win64 object formats, and generates source
|
||||
debugging information in STABS, DWARF 2, and CodeView 8 formats.")
|
||||
(license (license:bsd-style "file://COPYING"
|
||||
"See COPYING in the distribution."))))
|
||||
+23
-11
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -24,25 +24,37 @@
|
||||
#:use-module (gnu packages bdw-gc)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages help2man)
|
||||
#:use-module (gnu packages ncurses))
|
||||
#:use-module (gnu packages ncurses)
|
||||
#:use-module (gnu packages bash))
|
||||
|
||||
(define-public zile
|
||||
(package
|
||||
(name "zile")
|
||||
(version "2.4.9")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/zile/zile-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0j801c28ypm924rw3lqyb6khxyslg6ycrv16wmmwcam0mk3mj6f7"))))
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/zile/zile-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0j801c28ypm924rw3lqyb6khxyslg6ycrv16wmmwcam0mk3mj6f7"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:phases (alist-cons-before
|
||||
'configure 'patch-/bin/sh
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((bash (assoc-ref inputs "bash")))
|
||||
;; Refer to the actual shell.
|
||||
(substitute* '("lib/spawni.c" "src/funcs.c")
|
||||
(("/bin/sh")
|
||||
(string-append bash "/bin/sh")))))
|
||||
%standard-phases)))
|
||||
(inputs
|
||||
`(("boehm-gc" ,libgc)
|
||||
("ncurses" ,ncurses)
|
||||
("perl" ,perl)
|
||||
("bash" ,bash)))
|
||||
(native-inputs
|
||||
`(("perl" ,perl)
|
||||
("help2man" ,help2man)))
|
||||
(home-page "http://www.gnu.org/software/zile/")
|
||||
(synopsis "Zile is lossy Emacs, a lightweight Emacs clone")
|
||||
|
||||
@@ -120,7 +120,8 @@ UnZip recreates the stored directory structure by default.")
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("perl" ,perl) ; for the documentation
|
||||
("pkg-config" ,pkg-config)
|
||||
("python" ,python) ; for the documentation
|
||||
("python" ,python-2) ; for the documentation; Python 3 not supported,
|
||||
; http://forums.gentoo.org/viewtopic-t-863161-start-0.html
|
||||
("zip" ,zip) ; to create test files
|
||||
("zlib" ,zlib)))
|
||||
(arguments
|
||||
|
||||
@@ -0,0 +1,215 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu system dmd)
|
||||
#:use-module (guix store)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix derivations)
|
||||
#:use-module (guix records)
|
||||
#:use-module ((gnu packages base)
|
||||
#:select (glibc-final))
|
||||
#:use-module ((gnu packages system)
|
||||
#:select (mingetty inetutils))
|
||||
#:use-module ((gnu packages package-management)
|
||||
#:select (guix))
|
||||
#:use-module ((gnu packages linux)
|
||||
#:select (net-tools))
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:export (service?
|
||||
service
|
||||
service-provision
|
||||
service-requirement
|
||||
service-respawn?
|
||||
service-start
|
||||
service-stop
|
||||
service-inputs
|
||||
|
||||
host-name-service
|
||||
syslog-service
|
||||
mingetty-service
|
||||
nscd-service
|
||||
guix-service
|
||||
static-networking-service
|
||||
|
||||
dmd-configuration-file))
|
||||
|
||||
;;; Commentary:
|
||||
;;;
|
||||
;;; System services as cajoled by dmd.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(define-record-type* <service>
|
||||
service make-service
|
||||
service?
|
||||
(provision service-provision) ; list of symbols
|
||||
(requirement service-requirement ; list of symbols
|
||||
(default '()))
|
||||
(respawn? service-respawn? ; Boolean
|
||||
(default #t))
|
||||
(start service-start) ; expression
|
||||
(stop service-stop ; expression
|
||||
(default #f))
|
||||
(inputs service-inputs ; list of inputs
|
||||
(default '())))
|
||||
|
||||
(define (host-name-service store name)
|
||||
"Return a service that sets the host name to NAME."
|
||||
(service
|
||||
(provision '(host-name))
|
||||
(start `(lambda _
|
||||
(sethostname ,name)))
|
||||
(respawn? #f)))
|
||||
|
||||
(define (mingetty-service store tty)
|
||||
"Return a service to run mingetty on TTY."
|
||||
(let* ((mingetty-drv (package-derivation store mingetty))
|
||||
(mingetty-bin (string-append (derivation->output-path mingetty-drv)
|
||||
"/sbin/mingetty")))
|
||||
(service
|
||||
(provision (list (symbol-append 'term- (string->symbol tty))))
|
||||
|
||||
;; Since the login prompt shows the host name, wait for the 'host-name'
|
||||
;; service to be done.
|
||||
(requirement '(host-name))
|
||||
|
||||
(start `(make-forkexec-constructor ,mingetty-bin "--noclear" ,tty))
|
||||
(inputs `(("mingetty" ,mingetty))))))
|
||||
|
||||
(define* (nscd-service store
|
||||
#:key (glibc glibc-final))
|
||||
"Return a service that runs libc's name service cache daemon (nscd)."
|
||||
(let ((nscd (string-append (package-output store glibc) "/sbin/nscd")))
|
||||
(service
|
||||
(provision '(nscd))
|
||||
(start `(make-forkexec-constructor ,nscd "-f" "/dev/null"))
|
||||
|
||||
;; XXX: Local copy of 'make-kill-destructor' because the one upstream
|
||||
;; uses the broken 'opt-lambda' macro.
|
||||
(stop `(lambda* (#:optional (signal SIGTERM))
|
||||
(lambda (pid . args)
|
||||
(kill pid signal)
|
||||
#f)))
|
||||
|
||||
(respawn? #f)
|
||||
(inputs `(("glibc" ,glibc))))))
|
||||
|
||||
(define (syslog-service store)
|
||||
"Return a service that runs 'syslogd' with reasonable default settings."
|
||||
|
||||
(define syslog.conf
|
||||
;; Snippet adapted from the GNU inetutils manual.
|
||||
(add-text-to-store store "syslog.conf" "
|
||||
# Log all kernel messages, authentication messages of
|
||||
# level notice or higher and anything of level err or
|
||||
# higher to the console.
|
||||
# Don't log private authentication messages!
|
||||
*.err;kern.*;auth.notice;authpriv.none /dev/console
|
||||
|
||||
# Log anything (except mail) of level info or higher.
|
||||
# Don't log private authentication messages!
|
||||
*.info;mail.none;authpriv.none /var/log/messages
|
||||
|
||||
# Same, in a different place.
|
||||
*.info;mail.none;authpriv.none /dev/tty12
|
||||
|
||||
# The authpriv file has restricted access.
|
||||
authpriv.* /var/log/secure
|
||||
|
||||
# Log all the mail messages in one place.
|
||||
mail.* /var/log/maillog
|
||||
"))
|
||||
|
||||
(let* ((inetutils-drv (package-derivation store inetutils))
|
||||
(syslogd (string-append (derivation->output-path inetutils-drv)
|
||||
"/libexec/syslogd")))
|
||||
(service
|
||||
(provision '(syslogd))
|
||||
(start `(make-forkexec-constructor ,syslogd
|
||||
"--rcfile" ,syslog.conf))
|
||||
(inputs `(("inetutils" ,inetutils)
|
||||
("syslog.conf" ,syslog.conf))))))
|
||||
|
||||
(define* (guix-service store #:key (guix guix) (builder-group "guixbuild"))
|
||||
"Return a service that runs the build daemon from GUIX."
|
||||
(let* ((drv (package-derivation store guix))
|
||||
(daemon (string-append (derivation->output-path drv)
|
||||
"/bin/guix-daemon")))
|
||||
(service
|
||||
(provision '(guix-daemon))
|
||||
(start `(make-forkexec-constructor ,daemon
|
||||
"--build-users-group"
|
||||
,builder-group))
|
||||
(inputs `(("guix" ,guix))))))
|
||||
|
||||
(define* (static-networking-service store interface ip
|
||||
#:key
|
||||
gateway
|
||||
(inetutils inetutils)
|
||||
(net-tools net-tools))
|
||||
"Return a service that starts INTERFACE with address IP. If GATEWAY is
|
||||
true, it must be a string specifying the default network gateway."
|
||||
|
||||
;; TODO: Eventually we should do this using Guile's networking procedures,
|
||||
;; like 'configure-qemu-networking' does, but the patch that does this is
|
||||
;; not yet in stock Guile.
|
||||
(let ((ifconfig (string-append (package-output store inetutils)
|
||||
"/bin/ifconfig"))
|
||||
(route (string-append (package-output store net-tools)
|
||||
"/sbin/route")))
|
||||
(service
|
||||
(provision '(networking))
|
||||
(start `(lambda _
|
||||
(and (zero? (system* ,ifconfig ,interface ,ip "up"))
|
||||
,(if gateway
|
||||
`(begin
|
||||
(sleep 3) ; XXX
|
||||
(zero? (system* ,route "add" "-net" "default"
|
||||
"gw" ,gateway)))
|
||||
#t))))
|
||||
(stop `(lambda _
|
||||
(system* ,ifconfig ,interface "down")
|
||||
(system* ,route "del" "-net" "default")))
|
||||
(respawn? #f)
|
||||
(inputs `(("inetutils" ,inetutils)
|
||||
,@(if gateway
|
||||
`(("net-tools" ,net-tools))
|
||||
'()))))))
|
||||
|
||||
|
||||
(define (dmd-configuration-file store services)
|
||||
"Return the dmd configuration file for SERVICES."
|
||||
(define config
|
||||
`(begin
|
||||
(register-services
|
||||
,@(map (match-lambda
|
||||
(($ <service> provision requirement respawn? start stop)
|
||||
`(make <service>
|
||||
#:provides ',provision
|
||||
#:requires ',requirement
|
||||
#:respawn? ,respawn?
|
||||
#:start ,start
|
||||
#:stop ,stop)))
|
||||
services))
|
||||
(for-each start ',(append-map service-provision services))))
|
||||
|
||||
(add-text-to-store store "dmd.conf"
|
||||
(object->string config)))
|
||||
|
||||
;;; dmd.scm ends here
|
||||
@@ -0,0 +1,84 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu system grub)
|
||||
#:use-module (guix store)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix derivations)
|
||||
#:use-module (guix records)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:export (menu-entry
|
||||
menu-entry?
|
||||
grub-configuration-file))
|
||||
|
||||
;;; Commentary:
|
||||
;;;
|
||||
;;; Configuration of GNU GRUB.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(define-record-type* <menu-entry>
|
||||
menu-entry make-menu-entry
|
||||
menu-entry?
|
||||
(label menu-entry-label)
|
||||
(linux menu-entry-linux)
|
||||
(linux-arguments menu-entry-linux-arguments
|
||||
(default '()))
|
||||
(initrd menu-entry-initrd))
|
||||
|
||||
(define* (grub-configuration-file store entries
|
||||
#:key (default-entry 1) (timeout 5)
|
||||
(system (%current-system)))
|
||||
"Return the GRUB configuration file in STORE for ENTRIES, a list of
|
||||
<menu-entry> objects, defaulting to DEFAULT-ENTRY and with the given TIMEOUT."
|
||||
(define prologue
|
||||
(format #f "
|
||||
set default=~a
|
||||
set timeout=~a
|
||||
search.file ~a~%"
|
||||
default-entry timeout
|
||||
(any (match-lambda
|
||||
(($ <menu-entry> _ linux)
|
||||
(let* ((drv (package-derivation store linux system))
|
||||
(out (derivation->output-path drv)))
|
||||
(string-append out "/bzImage"))))
|
||||
entries)))
|
||||
|
||||
(define entry->text
|
||||
(match-lambda
|
||||
(($ <menu-entry> label linux arguments initrd)
|
||||
(let ((linux-drv (package-derivation store linux system))
|
||||
(initrd-drv (package-derivation store initrd system)))
|
||||
;; XXX: Assume that INITRD is a directory containing an 'initrd' file.
|
||||
(format #f "menuentry ~s {
|
||||
linux ~a/bzImage ~a
|
||||
initrd ~a/initrd
|
||||
}~%"
|
||||
label
|
||||
(derivation->output-path linux-drv)
|
||||
(string-join arguments)
|
||||
(derivation->output-path initrd-drv))))))
|
||||
|
||||
(add-text-to-store store "grub.cfg"
|
||||
(string-append prologue
|
||||
(string-concatenate
|
||||
(map entry->text entries)))
|
||||
'()))
|
||||
|
||||
;;; grub.scm ends here
|
||||
@@ -0,0 +1,152 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu system linux)
|
||||
#:use-module (guix store)
|
||||
#:use-module (guix records)
|
||||
#:use-module (guix derivations)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module ((guix utils) #:select (%current-system))
|
||||
#:export (pam-service
|
||||
pam-entry
|
||||
pam-services->directory
|
||||
%pam-other-services
|
||||
unix-pam-service))
|
||||
|
||||
;;; Commentary:
|
||||
;;;
|
||||
;;; Configuration of Linux-related things, including pluggable authentication
|
||||
;;; modules (PAM).
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
;; PAM services (see
|
||||
;; <http://www.linux-pam.org/Linux-PAM-html/sag-configuration-file.html>.)
|
||||
(define-record-type* <pam-service> pam-service
|
||||
make-pam-service
|
||||
pam-service?
|
||||
(name pam-service-name) ; string
|
||||
|
||||
;; The four "management groups".
|
||||
(account pam-service-account ; list of <pam-entry>
|
||||
(default '()))
|
||||
(auth pam-service-auth
|
||||
(default '()))
|
||||
(password pam-service-password
|
||||
(default '()))
|
||||
(session pam-service-session
|
||||
(default '())))
|
||||
|
||||
(define-record-type* <pam-entry> pam-entry
|
||||
make-pam-entry
|
||||
pam-entry?
|
||||
(control pam-entry-control) ; string
|
||||
(module pam-entry-module) ; file name
|
||||
(arguments pam-entry-arguments ; list of strings
|
||||
(default '())))
|
||||
|
||||
(define (pam-service->configuration service)
|
||||
"Return the configuration string for SERVICE, to be dumped in
|
||||
/etc/pam.d/NAME, where NAME is the name of SERVICE."
|
||||
(define (entry->string type entry)
|
||||
(match entry
|
||||
(($ <pam-entry> control module (arguments ...))
|
||||
(string-append type " "
|
||||
control " " module " "
|
||||
(string-join arguments)
|
||||
"\n"))))
|
||||
|
||||
(match service
|
||||
(($ <pam-service> name account auth password session)
|
||||
(string-concatenate
|
||||
(append (map (cut entry->string "account" <>) account)
|
||||
(map (cut entry->string "auth" <>) auth)
|
||||
(map (cut entry->string "password" <>) password)
|
||||
(map (cut entry->string "session" <>) session))))))
|
||||
|
||||
(define (pam-services->directory store services)
|
||||
"Return the derivation to build the configuration directory to be used as
|
||||
/etc/pam.d for SERVICES."
|
||||
(let ((names (map pam-service-name services))
|
||||
(files (map (match-lambda
|
||||
((and service ($ <pam-service> name))
|
||||
(let ((config (pam-service->configuration service)))
|
||||
(add-text-to-store store
|
||||
(string-append name ".pam")
|
||||
config '()))))
|
||||
services)))
|
||||
(define builder
|
||||
'(begin
|
||||
(use-modules (ice-9 match))
|
||||
|
||||
(let ((out (assoc-ref %outputs "out")))
|
||||
(mkdir out)
|
||||
(for-each (match-lambda
|
||||
((name . file)
|
||||
(symlink file (string-append out "/" name))))
|
||||
%build-inputs)
|
||||
#t)))
|
||||
|
||||
(build-expression->derivation store "pam.d" (%current-system)
|
||||
builder
|
||||
(zip names files))))
|
||||
|
||||
(define %pam-other-services
|
||||
;; The "other" PAM configuration, which denies everything (see
|
||||
;; <http://www.linux-pam.org/Linux-PAM-html/sag-configuration-example.html>.)
|
||||
(let ((deny (pam-entry
|
||||
(control "required")
|
||||
(module "pam_deny.so"))))
|
||||
(pam-service
|
||||
(name "other")
|
||||
(account (list deny))
|
||||
(auth (list deny))
|
||||
(password (list deny))
|
||||
(session (list deny)))))
|
||||
|
||||
(define unix-pam-service
|
||||
(let ((unix (pam-entry
|
||||
(control "required")
|
||||
(module "pam_unix.so"))))
|
||||
(lambda* (name #:key allow-empty-passwords? motd)
|
||||
"Return a standard Unix-style PAM service for NAME. When
|
||||
ALLOW-EMPTY-PASSWORDS? is true, allow empty passwords. When MOTD is true, it
|
||||
should be the name of a file used as the message-of-the-day."
|
||||
;; See <http://www.linux-pam.org/Linux-PAM-html/sag-configuration-example.html>.
|
||||
(let ((name* name))
|
||||
(pam-service
|
||||
(name name*)
|
||||
(account (list unix))
|
||||
(auth (list (if allow-empty-passwords?
|
||||
(pam-entry
|
||||
(control "required")
|
||||
(module "pam_unix.so")
|
||||
(arguments '("nullok")))
|
||||
unix)))
|
||||
(password (list unix))
|
||||
(session (if motd
|
||||
(list unix
|
||||
(pam-entry
|
||||
(control "optional")
|
||||
(module "pam_motd.so")
|
||||
(arguments (list (string-append "motd=" motd)))))
|
||||
(list unix))))))))
|
||||
|
||||
;;; linux.scm ends here
|
||||
@@ -0,0 +1,141 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu system shadow)
|
||||
#:use-module (guix store)
|
||||
#:use-module (guix records)
|
||||
#:use-module (guix packages)
|
||||
#:use-module ((gnu packages system)
|
||||
#:select (shadow))
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 format)
|
||||
#:export (user-account
|
||||
user-account?
|
||||
user-account-name
|
||||
user-account-pass
|
||||
user-account-uid
|
||||
user-account-gid
|
||||
user-account-comment
|
||||
user-account-home-directory
|
||||
user-account-shell
|
||||
|
||||
user-group
|
||||
user-group?
|
||||
user-group-name
|
||||
user-group-password
|
||||
user-group-id
|
||||
user-group-members
|
||||
|
||||
passwd-file
|
||||
group-file
|
||||
guix-build-accounts))
|
||||
|
||||
;;; Commentary:
|
||||
;;;
|
||||
;;; Utilities for configuring the Shadow tool suite ('login', 'passwd', etc.)
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(define-record-type* <user-account>
|
||||
user-account make-user-account
|
||||
user-account?
|
||||
(name user-account-name)
|
||||
(password user-account-pass (default ""))
|
||||
(uid user-account-uid)
|
||||
(gid user-account-gid)
|
||||
(comment user-account-comment (default ""))
|
||||
(home-directory user-account-home-directory)
|
||||
(shell user-account-shell (default "/bin/sh")))
|
||||
|
||||
(define-record-type* <user-group>
|
||||
user-group make-user-group
|
||||
user-group?
|
||||
(name user-group-name)
|
||||
(password user-group-password (default #f))
|
||||
(id user-group-id)
|
||||
(members user-group-members (default '())))
|
||||
|
||||
(define (group-file store groups)
|
||||
"Return a /etc/group file for GROUPS, a list of <user-group> objects."
|
||||
(define contents
|
||||
(let loop ((groups groups)
|
||||
(result '()))
|
||||
(match groups
|
||||
((($ <user-group> name _ gid (users ...)) rest ...)
|
||||
;; XXX: Ignore the group password.
|
||||
(loop rest
|
||||
(cons (string-append name "::" (number->string gid)
|
||||
":" (string-join users ","))
|
||||
result)))
|
||||
(()
|
||||
(string-join (reverse result) "\n" 'suffix)))))
|
||||
|
||||
(add-text-to-store store "group" contents))
|
||||
|
||||
(define* (passwd-file store accounts #:key shadow?)
|
||||
"Return a password file for ACCOUNTS, a list of <user-account> objects. If
|
||||
SHADOW? is true, then it is a /etc/shadow file, otherwise it is a /etc/passwd
|
||||
file."
|
||||
;; XXX: The resulting file is world-readable, so beware when SHADOW? is #t!
|
||||
(define contents
|
||||
(let loop ((accounts accounts)
|
||||
(result '()))
|
||||
(match accounts
|
||||
((($ <user-account> name pass uid gid comment home-dir shell)
|
||||
rest ...)
|
||||
(loop rest
|
||||
(cons (if shadow?
|
||||
(string-append name
|
||||
":" ; XXX: use (crypt PASS …)?
|
||||
":::::::")
|
||||
(string-append name
|
||||
":" "x"
|
||||
":" (number->string uid)
|
||||
":" (number->string gid)
|
||||
":" comment ":" home-dir ":" shell))
|
||||
result)))
|
||||
(()
|
||||
(string-join (reverse result) "\n" 'suffix)))))
|
||||
|
||||
(add-text-to-store store (if shadow? "shadow" "passwd")
|
||||
contents '()))
|
||||
|
||||
(define* (guix-build-accounts store count #:key
|
||||
(first-uid 30001)
|
||||
(gid 30000)
|
||||
(shadow shadow))
|
||||
"Return a list of COUNT user accounts for Guix build users, with UIDs
|
||||
starting at FIRST-UID, and under GID."
|
||||
(let* ((gid* gid)
|
||||
(no-login (string-append (package-output store shadow) "/sbin/nologin")))
|
||||
(unfold (cut > <> count)
|
||||
(lambda (n)
|
||||
(user-account
|
||||
(name (format #f "guixbuilder~2,'0d" n))
|
||||
(password "!")
|
||||
(uid (+ first-uid n -1))
|
||||
(gid gid*)
|
||||
(comment (format #f "Guix Build User ~2d" n))
|
||||
(home-directory "/var/empty")
|
||||
(shell no-login)))
|
||||
1+
|
||||
1)))
|
||||
|
||||
;;; shadow.scm ends here
|
||||
+488
-117
@@ -17,21 +17,39 @@
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu system vm)
|
||||
#:use-module (guix config)
|
||||
#:use-module (guix store)
|
||||
#:use-module (guix derivations)
|
||||
#:use-module (guix packages)
|
||||
#:use-module ((gnu packages base) #:select (%final-inputs guile-final))
|
||||
#:use-module ((gnu packages base)
|
||||
#:select (%final-inputs
|
||||
guile-final gcc-final glibc-final
|
||||
coreutils findutils grep sed))
|
||||
#:use-module (gnu packages guile)
|
||||
#:use-module (gnu packages bash)
|
||||
#:use-module (gnu packages qemu)
|
||||
#:use-module (gnu packages parted)
|
||||
#:use-module (gnu packages zile)
|
||||
#:use-module (gnu packages grub)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages linux-initrd)
|
||||
#:use-module (gnu packages package-management)
|
||||
#:use-module ((gnu packages make-bootstrap)
|
||||
#:select (%guile-static-stripped))
|
||||
#:use-module (gnu packages system)
|
||||
|
||||
#:use-module (gnu system shadow)
|
||||
#:use-module (gnu system linux)
|
||||
#:use-module (gnu system grub)
|
||||
#:use-module (gnu system dmd)
|
||||
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module (ice-9 match)
|
||||
|
||||
#:export (expression->derivation-in-linux-vm
|
||||
qemu-image))
|
||||
qemu-image
|
||||
system-qemu-image))
|
||||
|
||||
|
||||
;;; Commentary:
|
||||
@@ -40,17 +58,20 @@
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(define* (expression->derivation-in-linux-vm store name system exp inputs
|
||||
(define* (expression->derivation-in-linux-vm store name exp
|
||||
#:key
|
||||
(system (%current-system))
|
||||
(inputs '())
|
||||
(linux linux-libre)
|
||||
(initrd qemu-initrd)
|
||||
(qemu qemu-kvm/smb-shares)
|
||||
(qemu qemu/smb-shares)
|
||||
(env-vars '())
|
||||
(modules '())
|
||||
(guile-for-build
|
||||
(%guile-for-build))
|
||||
|
||||
(make-disk-image? #f)
|
||||
(references-graphs #f)
|
||||
(disk-image-size
|
||||
(* 100 (expt 2 20))))
|
||||
"Evaluate EXP in a QEMU virtual machine running LINUX with INITRD. In the
|
||||
@@ -59,13 +80,26 @@ its output files in the `/xchg' directory, which is copied to the derivation's
|
||||
output when the VM terminates.
|
||||
|
||||
When MAKE-DISK-IMAGE? is true, then create a QEMU disk image of
|
||||
DISK-IMAGE-SIZE bytes and return it."
|
||||
DISK-IMAGE-SIZE bytes and return it.
|
||||
|
||||
When REFERENCES-GRAPHS is true, it must be a list of file name/store path
|
||||
pairs, as for `derivation'. The files containing the reference graphs are
|
||||
made available under the /xchg CIFS share."
|
||||
;; FIXME: Allow use of macros from other modules, as done in
|
||||
;; `build-expression->derivation'.
|
||||
|
||||
(define input-alist
|
||||
(map (match-lambda
|
||||
((input package)
|
||||
((input (? package? package))
|
||||
`(,input . ,(package-output store package "out" system)))
|
||||
((input package sub-drv)
|
||||
`(,input . ,(package-output store package sub-drv system))))
|
||||
((input (? package? package) sub-drv)
|
||||
`(,input . ,(package-output store package sub-drv system)))
|
||||
((input (? derivation? drv))
|
||||
`(,input . ,(derivation->output-path drv)))
|
||||
((input (? derivation? drv) sub-drv)
|
||||
`(,input . ,(derivation->output-path drv sub-drv)))
|
||||
((input (and (? string?) (? store-path?) file))
|
||||
`(,input . ,file)))
|
||||
inputs))
|
||||
|
||||
(define exp*
|
||||
@@ -75,8 +109,10 @@ DISK-IMAGE-SIZE bytes and return it."
|
||||
|
||||
(define builder
|
||||
;; Code that launches the VM that evaluates EXP.
|
||||
`(begin
|
||||
(use-modules (guix build utils))
|
||||
`(let ()
|
||||
(use-modules (guix build utils)
|
||||
(srfi srfi-1)
|
||||
(ice-9 rdelim))
|
||||
|
||||
(let ((out (assoc-ref %outputs "out"))
|
||||
(cu (string-append (assoc-ref %build-inputs "coreutils")
|
||||
@@ -102,6 +138,17 @@ DISK-IMAGE-SIZE bytes and return it."
|
||||
'(begin))
|
||||
|
||||
(mkdir "xchg")
|
||||
|
||||
;; Copy the reference-graph files under xchg/ so EXP can access it.
|
||||
(begin
|
||||
,@(match references-graphs
|
||||
(((graph-files . _) ...)
|
||||
(map (lambda (file)
|
||||
`(copy-file ,file
|
||||
,(string-append "xchg/" file)))
|
||||
graph-files))
|
||||
(#f '())))
|
||||
|
||||
(and (zero?
|
||||
(system* qemu "-nographic" "-no-reboot"
|
||||
"-net" "nic,model=e1000"
|
||||
@@ -132,132 +179,456 @@ DISK-IMAGE-SIZE bytes and return it."
|
||||
("coreutils" ,(->drv coreutils))
|
||||
("builder" ,user-builder)
|
||||
,@(map (match-lambda
|
||||
((name package sub-drv ...)
|
||||
((name (? package? package)
|
||||
sub-drv ...)
|
||||
`(,name ,(->drv package)
|
||||
,@sub-drv)))
|
||||
,@sub-drv))
|
||||
((name (? string? file))
|
||||
`(,name ,file))
|
||||
(tuple tuple))
|
||||
inputs))
|
||||
#:env-vars env-vars
|
||||
#:modules `((guix build utils)
|
||||
,@modules)
|
||||
#:guile-for-build guile-for-build)))
|
||||
#:modules (delete-duplicates
|
||||
`((guix build utils)
|
||||
,@modules))
|
||||
#:guile-for-build guile-for-build
|
||||
#:references-graphs references-graphs)))
|
||||
|
||||
(define* (qemu-image store #:key
|
||||
(name "qemu-image")
|
||||
(system (%current-system))
|
||||
(disk-image-size (* 100 (expt 2 20)))
|
||||
(linux linux-libre)
|
||||
(initrd qemu-initrd)
|
||||
(inputs '()))
|
||||
"Return a bootable, stand-alone QEMU image."
|
||||
grub-configuration
|
||||
(initialize-store? #f)
|
||||
(populate #f)
|
||||
(inputs '())
|
||||
(inputs-to-copy '()))
|
||||
"Return a bootable, stand-alone QEMU image. The returned image is a full
|
||||
disk image, with a GRUB installation that uses GRUB-CONFIGURATION as its
|
||||
configuration file.
|
||||
|
||||
INPUTS-TO-COPY is a list of inputs (as for packages) whose closure is copied
|
||||
into the image being built. When INITIALIZE-STORE? is true, initialize the
|
||||
store database in the image so that Guix can be used in the image.
|
||||
|
||||
POPULATE is a list of directives stating directories or symlinks to be created
|
||||
in the disk image partition. It is evaluated once the image has been
|
||||
populated with INPUTS-TO-COPY. It can be used to provide additional files,
|
||||
such as /etc files."
|
||||
(define input->name+derivation
|
||||
(match-lambda
|
||||
((name (? package? package))
|
||||
`(,name . ,(derivation->output-path
|
||||
(package-derivation store package system))))
|
||||
((name (? package? package) sub-drv)
|
||||
`(,name . ,(derivation->output-path
|
||||
(package-derivation store package system)
|
||||
sub-drv)))
|
||||
((name (? derivation? drv))
|
||||
`(,name . ,(derivation->output-path drv)))
|
||||
((name (? derivation? drv) sub-drv)
|
||||
`(,name . ,(derivation->output-path drv sub-drv)))
|
||||
((input (and (? string?) (? store-path?) file))
|
||||
`(,input . ,file))))
|
||||
|
||||
(expression->derivation-in-linux-vm
|
||||
store "qemu-image" system
|
||||
`(let ((parted (string-append (assoc-ref %build-inputs "parted")
|
||||
"/sbin/parted"))
|
||||
(mkfs (string-append (assoc-ref %build-inputs "e2fsprogs")
|
||||
"/sbin/mkfs.ext3"))
|
||||
(grub (string-append (assoc-ref %build-inputs "grub")
|
||||
"/sbin/grub-install"))
|
||||
(umount (string-append (assoc-ref %build-inputs "util-linux")
|
||||
"/bin/umount")) ; XXX: add to Guile
|
||||
(initrd (string-append (assoc-ref %build-inputs "initrd")
|
||||
"/initrd"))
|
||||
(linux (string-append (assoc-ref %build-inputs "linux")
|
||||
"/bzImage"))
|
||||
(makedev (lambda (major minor)
|
||||
(+ (* major 256) minor))))
|
||||
store "qemu-image"
|
||||
`(let ()
|
||||
(use-modules (ice-9 rdelim)
|
||||
(srfi srfi-1)
|
||||
(guix build utils)
|
||||
(guix build linux-initrd))
|
||||
|
||||
;; GRUB is full of shell scripts.
|
||||
(setenv "PATH"
|
||||
(string-append (dirname grub) ":"
|
||||
(assoc-ref %build-inputs "coreutils") "/bin:"
|
||||
(assoc-ref %build-inputs "findutils") "/bin:"
|
||||
(assoc-ref %build-inputs "sed") "/bin:"
|
||||
(assoc-ref %build-inputs "grep") "/bin:"
|
||||
(assoc-ref %build-inputs "gawk") "/bin"))
|
||||
(let ((parted (string-append (assoc-ref %build-inputs "parted")
|
||||
"/sbin/parted"))
|
||||
(mkfs (string-append (assoc-ref %build-inputs "e2fsprogs")
|
||||
"/sbin/mkfs.ext3"))
|
||||
(grub (string-append (assoc-ref %build-inputs "grub")
|
||||
"/sbin/grub-install"))
|
||||
(umount (string-append (assoc-ref %build-inputs "util-linux")
|
||||
"/bin/umount")) ; XXX: add to Guile
|
||||
(grub.cfg (assoc-ref %build-inputs "grub.cfg")))
|
||||
|
||||
(display "creating partition table...\n")
|
||||
(mknod "/dev/vda" 'block-special #o644 (makedev 8 0))
|
||||
(and (zero? (system* parted "/dev/vda" "mklabel" "msdos"
|
||||
"mkpart" "primary" "ext2" "1MiB"
|
||||
,(format #f "~aB"
|
||||
(- disk-image-size
|
||||
(* 5 (expt 2 20))))))
|
||||
(begin
|
||||
(display "creating ext3 partition...\n")
|
||||
(mknod "/dev/vda1" 'block-special #o644 (makedev 8 1))
|
||||
(and (zero? (system* mkfs "-F" "/dev/vda1"))
|
||||
(begin
|
||||
(display "mounting partition...\n")
|
||||
(mkdir "/fs")
|
||||
(mount "/dev/vda1" "/fs" "ext3")
|
||||
(mkdir "/fs/boot")
|
||||
(mkdir "/fs/boot/grub")
|
||||
(copy-file linux "/fs/boot/bzImage")
|
||||
(copy-file initrd "/fs/boot/initrd")
|
||||
(call-with-output-file "/fs/boot/grub/grub.cfg"
|
||||
(lambda (p)
|
||||
(display "
|
||||
set timeout=10
|
||||
search.file /boot/bzImage
|
||||
(define (read-reference-graph port)
|
||||
;; Return a list of store paths from the reference graph at PORT.
|
||||
;; The data at PORT is the format produced by #:references-graphs.
|
||||
(let loop ((line (read-line port))
|
||||
(result '()))
|
||||
(cond ((eof-object? line)
|
||||
(delete-duplicates result))
|
||||
((string-prefix? "/" line)
|
||||
(loop (read-line port)
|
||||
(cons line result)))
|
||||
(else
|
||||
(loop (read-line port)
|
||||
result)))))
|
||||
|
||||
menuentry \"Boot-to-Guile! Happy Birthday Guile 2.0! (Guile, Guix & co.)\" {
|
||||
linux /boot/bzImage --repl
|
||||
initrd /boot/initrd
|
||||
}" p)))
|
||||
(and (zero?
|
||||
(system* grub "--no-floppy"
|
||||
"--boot-directory" "/fs/boot"
|
||||
"/dev/vda"))
|
||||
(zero?
|
||||
(system* umount "/fs"))))))))
|
||||
`(("parted" ,parted)
|
||||
("grub" ,grub)
|
||||
("e2fsprogs" ,e2fsprogs)
|
||||
("linux" ,linux-libre)
|
||||
("initrd" ,qemu-initrd)
|
||||
(define (things-to-copy)
|
||||
;; Return the list of store files to copy to the image.
|
||||
(define (graph-from-file file)
|
||||
(call-with-input-file file
|
||||
read-reference-graph))
|
||||
|
||||
;; For shell scripts.
|
||||
("sed" ,(car (assoc-ref %final-inputs "sed")))
|
||||
("grep" ,(car (assoc-ref %final-inputs "grep")))
|
||||
("coreutils" ,(car (assoc-ref %final-inputs "coreutils")))
|
||||
("findutils" ,(car (assoc-ref %final-inputs "findutils")))
|
||||
("gawk" ,(car (assoc-ref %final-inputs "gawk")))
|
||||
("util-linux" ,util-linux))
|
||||
,(match inputs-to-copy
|
||||
(((graph-files . _) ...)
|
||||
`(let* ((graph-files ',(map (cut string-append "/xchg/" <>)
|
||||
graph-files))
|
||||
(paths (append-map graph-from-file graph-files)))
|
||||
(delete-duplicates paths)))
|
||||
(#f ''())))
|
||||
|
||||
;; GRUB is full of shell scripts.
|
||||
(setenv "PATH"
|
||||
(string-append (dirname grub) ":"
|
||||
(assoc-ref %build-inputs "coreutils") "/bin:"
|
||||
(assoc-ref %build-inputs "findutils") "/bin:"
|
||||
(assoc-ref %build-inputs "sed") "/bin:"
|
||||
(assoc-ref %build-inputs "grep") "/bin:"
|
||||
(assoc-ref %build-inputs "gawk") "/bin"))
|
||||
|
||||
(display "creating partition table...\n")
|
||||
(and (zero? (system* parted "/dev/vda" "mklabel" "msdos"
|
||||
"mkpart" "primary" "ext2" "1MiB"
|
||||
,(format #f "~aB"
|
||||
(- disk-image-size
|
||||
(* 5 (expt 2 20))))))
|
||||
(begin
|
||||
(display "creating ext3 partition...\n")
|
||||
(and (zero? (system* mkfs "-F" "/dev/vda1"))
|
||||
(let ((store (string-append "/fs" ,%store-directory)))
|
||||
(display "mounting partition...\n")
|
||||
(mkdir "/fs")
|
||||
(mount "/dev/vda1" "/fs" "ext3")
|
||||
(mkdir-p "/fs/boot/grub")
|
||||
(symlink grub.cfg "/fs/boot/grub/grub.cfg")
|
||||
|
||||
;; Populate the image's store.
|
||||
(mkdir-p store)
|
||||
(chmod store #o1775)
|
||||
(for-each (lambda (thing)
|
||||
(copy-recursively thing
|
||||
(string-append "/fs"
|
||||
thing)))
|
||||
(cons grub.cfg (things-to-copy)))
|
||||
|
||||
;; Populate /dev.
|
||||
(make-essential-device-nodes #:root "/fs")
|
||||
|
||||
;; Optionally, register the inputs in the image's store.
|
||||
(let* ((guix (assoc-ref %build-inputs "guix"))
|
||||
(register (string-append guix
|
||||
"/sbin/guix-register")))
|
||||
,@(if initialize-store?
|
||||
(match inputs-to-copy
|
||||
(((graph-files . _) ...)
|
||||
(map (lambda (closure)
|
||||
`(system* register "--prefix" "/fs"
|
||||
,(string-append "/xchg/"
|
||||
closure)))
|
||||
graph-files)))
|
||||
'(#f)))
|
||||
|
||||
;; Evaluate the POPULATE directives.
|
||||
,@(let loop ((directives populate)
|
||||
(statements '()))
|
||||
(match directives
|
||||
(()
|
||||
(reverse statements))
|
||||
((('directory name) rest ...)
|
||||
(loop rest
|
||||
(cons `(mkdir-p ,(string-append "/fs" name))
|
||||
statements)))
|
||||
((('directory name uid gid) rest ...)
|
||||
(let ((dir (string-append "/fs" name)))
|
||||
(loop rest
|
||||
(cons* `(chown ,dir ,uid ,gid)
|
||||
`(mkdir-p ,dir)
|
||||
statements))))
|
||||
(((new '-> old) rest ...)
|
||||
(loop rest
|
||||
(cons `(symlink ,old
|
||||
,(string-append "/fs" new))
|
||||
statements)))))
|
||||
|
||||
(and=> (assoc-ref %build-inputs "populate")
|
||||
(lambda (populate)
|
||||
(chdir "/fs")
|
||||
(primitive-load populate)
|
||||
(chdir "/")))
|
||||
|
||||
(display "clearing file timestamps...\n")
|
||||
(for-each (lambda (file)
|
||||
(let ((s (lstat file)))
|
||||
;; XXX: Guile uses libc's 'utime' function
|
||||
;; (not 'futime'), so the timestamp of
|
||||
;; symlinks cannot be changed, and there
|
||||
;; are symlinks here pointing to
|
||||
;; /nix/store, which is the host,
|
||||
;; read-only store.
|
||||
(unless (eq? (stat:type s) 'symlink)
|
||||
(utime file 0 0 0 0))))
|
||||
(find-files "/fs" ".*"))
|
||||
|
||||
(and (zero?
|
||||
(system* grub "--no-floppy"
|
||||
"--boot-directory" "/fs/boot"
|
||||
"/dev/vda"))
|
||||
(zero? (system* umount "/fs"))
|
||||
(reboot))))))))
|
||||
#:system system
|
||||
#:inputs `(("parted" ,parted)
|
||||
("grub" ,grub)
|
||||
("e2fsprogs" ,e2fsprogs)
|
||||
("grub.cfg" ,grub-configuration)
|
||||
|
||||
;; For shell scripts.
|
||||
("sed" ,(car (assoc-ref %final-inputs "sed")))
|
||||
("grep" ,(car (assoc-ref %final-inputs "grep")))
|
||||
("coreutils" ,(car (assoc-ref %final-inputs "coreutils")))
|
||||
("findutils" ,(car (assoc-ref %final-inputs "findutils")))
|
||||
("gawk" ,(car (assoc-ref %final-inputs "gawk")))
|
||||
("util-linux" ,util-linux)
|
||||
|
||||
,@(if initialize-store?
|
||||
`(("guix" ,guix-0.4))
|
||||
'())
|
||||
|
||||
,@inputs-to-copy)
|
||||
#:make-disk-image? #t
|
||||
#:disk-image-size disk-image-size))
|
||||
#:disk-image-size disk-image-size
|
||||
#:references-graphs (map input->name+derivation inputs-to-copy)
|
||||
#:modules '((guix build utils)
|
||||
(guix build linux-initrd))))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Guile 2.0 potluck examples.
|
||||
;;; Stand-alone VM image.
|
||||
;;;
|
||||
|
||||
(define (example1)
|
||||
(let ((store #f))
|
||||
(dynamic-wind
|
||||
(lambda ()
|
||||
(set! store (open-connection)))
|
||||
(lambda ()
|
||||
(parameterize ((%guile-for-build (package-derivation store guile-final)))
|
||||
(expression->derivation-in-linux-vm
|
||||
store "vm-test" (%current-system)
|
||||
'(begin
|
||||
(display "hello from boot!\n")
|
||||
(call-with-output-file "/xchg/hello"
|
||||
(lambda (p)
|
||||
(display "world" p))))
|
||||
'())))
|
||||
(lambda ()
|
||||
(close-connection store)))))
|
||||
(define* (union store inputs
|
||||
#:key (guile (%guile-for-build)) (system (%current-system))
|
||||
(name "union"))
|
||||
"Return a derivation that builds the union of INPUTS. INPUTS is a list of
|
||||
input tuples."
|
||||
(define builder
|
||||
`(begin
|
||||
(use-modules (guix build union))
|
||||
|
||||
(define (example2)
|
||||
(let ((store #f))
|
||||
(dynamic-wind
|
||||
(lambda ()
|
||||
(set! store (open-connection)))
|
||||
(lambda ()
|
||||
(parameterize ((%guile-for-build (package-derivation store guile-final)))
|
||||
(qemu-image store #:disk-image-size (* 30 (expt 2 20)))))
|
||||
(lambda ()
|
||||
(close-connection store)))))
|
||||
(setvbuf (current-output-port) _IOLBF)
|
||||
(setvbuf (current-error-port) _IOLBF)
|
||||
|
||||
(let ((output (assoc-ref %outputs "out"))
|
||||
(inputs (map cdr %build-inputs)))
|
||||
(format #t "building union `~a' with ~a packages...~%"
|
||||
output (length inputs))
|
||||
(union-build output inputs))))
|
||||
|
||||
(build-expression->derivation store name system builder
|
||||
(map (match-lambda
|
||||
((name (? package? p))
|
||||
`(,name ,(package-derivation store p
|
||||
system)))
|
||||
((name (? package? p) output)
|
||||
`(,name ,(package-derivation store p
|
||||
system)
|
||||
,output))
|
||||
(x x))
|
||||
inputs)
|
||||
#:modules '((guix build union))
|
||||
#:guile-for-build guile))
|
||||
|
||||
(define (system-qemu-image store)
|
||||
"Return the derivation of a QEMU image of the GNU system."
|
||||
(define motd
|
||||
(add-text-to-store store "motd" "
|
||||
Happy birthday, GNU! http://www.gnu.org/gnu30
|
||||
|
||||
"))
|
||||
|
||||
(define %pam-services
|
||||
;; Services known to PAM.
|
||||
(list %pam-other-services
|
||||
(unix-pam-service "login"
|
||||
#:allow-empty-passwords? #t
|
||||
#:motd motd)))
|
||||
|
||||
(define %dmd-services
|
||||
;; Services run by dmd.
|
||||
(list (host-name-service store "gnu")
|
||||
(mingetty-service store "tty1")
|
||||
(mingetty-service store "tty2")
|
||||
(mingetty-service store "tty3")
|
||||
(mingetty-service store "tty4")
|
||||
(mingetty-service store "tty5")
|
||||
(mingetty-service store "tty6")
|
||||
(syslog-service store)
|
||||
(guix-service store #:guix guix-0.4)
|
||||
(nscd-service store)
|
||||
|
||||
;; QEMU networking settings.
|
||||
(static-networking-service store "eth0" "10.0.2.10"
|
||||
#:gateway "10.0.2.2")))
|
||||
|
||||
(define build-user-gid 30000)
|
||||
|
||||
(define build-accounts
|
||||
(guix-build-accounts store 10 #:gid build-user-gid))
|
||||
|
||||
(define resolv.conf
|
||||
;; Name resolution for default QEMU settings.
|
||||
(add-text-to-store store "resolv.conf"
|
||||
"nameserver 10.0.2.3\n"))
|
||||
|
||||
(define etc-services
|
||||
(string-append (package-output store net-base) "/etc/services"))
|
||||
(define etc-protocols
|
||||
(string-append (package-output store net-base) "/etc/protocols"))
|
||||
(define etc-rpc
|
||||
(string-append (package-output store net-base) "/etc/rpc"))
|
||||
|
||||
(parameterize ((%guile-for-build (package-derivation store guile-final)))
|
||||
(let* ((bash-drv (package-derivation store bash))
|
||||
(bash-file (string-append (derivation->output-path bash-drv)
|
||||
"/bin/bash"))
|
||||
(dmd-drv (package-derivation store dmd))
|
||||
(dmd-file (string-append (derivation->output-path dmd-drv)
|
||||
"/bin/dmd"))
|
||||
(dmd-conf (dmd-configuration-file store %dmd-services))
|
||||
(accounts (cons* (user-account
|
||||
(name "root")
|
||||
(password "")
|
||||
(uid 0) (gid 0)
|
||||
(comment "System administrator")
|
||||
(home-directory "/")
|
||||
(shell bash-file))
|
||||
(user-account
|
||||
(name "guest")
|
||||
(password "")
|
||||
(uid 1000) (gid 100)
|
||||
(comment "Guest of GNU")
|
||||
(home-directory "/home/guest")
|
||||
(shell bash-file))
|
||||
build-accounts))
|
||||
(passwd (passwd-file store accounts))
|
||||
(shadow (passwd-file store accounts #:shadow? #t))
|
||||
(group (group-file store
|
||||
(list (user-group
|
||||
(name "root")
|
||||
(id 0))
|
||||
(user-group
|
||||
(name "users")
|
||||
(id 100)
|
||||
(members '("guest")))
|
||||
(user-group
|
||||
(name "guixbuild")
|
||||
(id build-user-gid)
|
||||
(members (map user-account-name
|
||||
build-accounts))))))
|
||||
(pam.d-drv (pam-services->directory store %pam-services))
|
||||
(pam.d (derivation->output-path pam.d-drv))
|
||||
|
||||
(packages `(("coreutils" ,coreutils)
|
||||
("bash" ,bash)
|
||||
("guile" ,guile-2.0)
|
||||
("dmd" ,dmd)
|
||||
("gcc" ,gcc-final)
|
||||
("libc" ,glibc-final)
|
||||
("inetutils" ,inetutils)
|
||||
("findutils" ,findutils)
|
||||
("grep" ,grep)
|
||||
("sed" ,sed)
|
||||
("procps" ,procps)
|
||||
("psmisc" ,psmisc)
|
||||
("zile" ,zile)
|
||||
("guix" ,guix-0.4)))
|
||||
|
||||
;; TODO: Replace with a real profile with a manifest.
|
||||
;; TODO: Generate bashrc from packages' search-paths.
|
||||
(profile-drv (union store packages
|
||||
#:name "default-profile"))
|
||||
(profile (derivation->output-path profile-drv))
|
||||
(bashrc (add-text-to-store store "bashrc"
|
||||
(string-append "
|
||||
export PS1='\\u@\\h\\$ '
|
||||
export PATH=$HOME/.guix-profile/bin:" profile "/bin:" profile "/sbin
|
||||
export CPATH=$HOME/.guix-profile/include:" profile "/include
|
||||
export LIBRARY_PATH=$HOME/.guix-profile/lib:" profile "/lib
|
||||
alias ls='ls -p --color'
|
||||
alias ll='ls -l'
|
||||
")))
|
||||
|
||||
(issue (add-text-to-store store "issue" "
|
||||
This is an alpha preview of the GNU system. Welcome.
|
||||
|
||||
This image features the GNU Guix package manager, which was used to
|
||||
build it (http://www.gnu.org/software/guix/). The init system is
|
||||
GNU dmd (http://www.gnu.org/software/dmd/).
|
||||
|
||||
You can log in as 'guest' or 'root' with no password.
|
||||
"))
|
||||
|
||||
(populate `((directory "/nix/store" 0 ,build-user-gid)
|
||||
(directory "/etc")
|
||||
(directory "/var/log") ; for dmd
|
||||
(directory "/var/run/nscd")
|
||||
("/etc/shadow" -> ,shadow)
|
||||
("/etc/passwd" -> ,passwd)
|
||||
("/etc/group" -> ,group)
|
||||
("/etc/login.defs" -> "/dev/null")
|
||||
("/etc/pam.d" -> ,pam.d)
|
||||
("/etc/resolv.conf" -> ,resolv.conf)
|
||||
("/etc/profile" -> ,bashrc)
|
||||
("/etc/issue" -> ,issue)
|
||||
("/etc/services" -> ,etc-services)
|
||||
("/etc/protocols" -> ,etc-protocols)
|
||||
("/etc/rpc" -> ,etc-rpc)
|
||||
(directory "/var/nix/gcroots")
|
||||
("/var/nix/gcroots/default-profile" -> ,profile)
|
||||
(directory "/tmp")
|
||||
(directory "/var/nix/profiles/per-user/root" 0 0)
|
||||
(directory "/var/nix/profiles/per-user/guest"
|
||||
1000 100)
|
||||
(directory "/home/guest" 1000 100)))
|
||||
(out (derivation->output-path
|
||||
(package-derivation store mingetty)))
|
||||
(boot (add-text-to-store store "boot"
|
||||
(object->string
|
||||
`(execl ,dmd-file "dmd"
|
||||
"--config" ,dmd-conf))
|
||||
(list out)))
|
||||
(entries (list (menu-entry
|
||||
(label (string-append
|
||||
"GNU System with Linux-Libre "
|
||||
(package-version linux-libre)
|
||||
" (technology preview)"))
|
||||
(linux linux-libre)
|
||||
(linux-arguments `("--root=/dev/vda1"
|
||||
,(string-append "--load=" boot)))
|
||||
(initrd gnu-system-initrd))))
|
||||
(grub.cfg (grub-configuration-file store entries)))
|
||||
(qemu-image store
|
||||
#:grub-configuration grub.cfg
|
||||
#:populate populate
|
||||
#:disk-image-size (* 550 (expt 2 20))
|
||||
#:initialize-store? #t
|
||||
#:inputs-to-copy `(("boot" ,boot)
|
||||
("linux" ,linux-libre)
|
||||
("initrd" ,gnu-system-initrd)
|
||||
("pam.d" ,pam.d-drv)
|
||||
("profile" ,profile-drv)
|
||||
|
||||
;; Configuration.
|
||||
("dmd.conf" ,dmd-conf)
|
||||
("etc-pam.d" ,pam.d-drv)
|
||||
("etc-passwd" ,passwd)
|
||||
("etc-shadow" ,shadow)
|
||||
("etc-group" ,group)
|
||||
("etc-resolv.conf" ,resolv.conf)
|
||||
("etc-bashrc" ,bashrc)
|
||||
("etc-issue" ,issue)
|
||||
("etc-motd" ,motd)
|
||||
("net-base" ,net-base)
|
||||
,@(append-map service-inputs
|
||||
%dmd-services))))))
|
||||
|
||||
;;; vm.scm ends here
|
||||
|
||||
@@ -35,13 +35,20 @@
|
||||
;;
|
||||
;; Code:
|
||||
|
||||
(define (default-cmake)
|
||||
"Return the default CMake package."
|
||||
|
||||
;; Do not use `@' to avoid introducing circular dependencies.
|
||||
(let ((module (resolve-interface '(gnu packages cmake))))
|
||||
(module-ref module 'cmake)))
|
||||
|
||||
(define* (cmake-build store name source inputs
|
||||
#:key (guile #f)
|
||||
(outputs '("out")) (configure-flags ''())
|
||||
(search-paths '())
|
||||
(make-flags ''())
|
||||
(patches ''()) (patch-flags ''("--batch" "-p1"))
|
||||
(cmake (@ (gnu packages cmake) cmake))
|
||||
(cmake (default-cmake))
|
||||
(out-of-source? #f)
|
||||
(tests? #t)
|
||||
(test-target "test")
|
||||
@@ -65,9 +72,9 @@ provides a 'CMakeLists.txt' file as its build system."
|
||||
(define builder
|
||||
`(begin
|
||||
(use-modules ,@modules)
|
||||
(cmake-build #:source ,(if (and source (derivation-path? source))
|
||||
(derivation-path->output-path source)
|
||||
source)
|
||||
(cmake-build #:source ,(if (derivation? source)
|
||||
(derivation->output-path source)
|
||||
source)
|
||||
#:system ,system
|
||||
#:outputs %outputs
|
||||
#:inputs %build-inputs
|
||||
|
||||
+53
-13
@@ -32,7 +32,8 @@
|
||||
package-with-explicit-inputs
|
||||
package-with-extra-configure-variable
|
||||
static-libgcc-package
|
||||
static-package))
|
||||
static-package
|
||||
dist-package))
|
||||
|
||||
;; Commentary:
|
||||
;;
|
||||
@@ -41,6 +42,11 @@
|
||||
;;
|
||||
;; Code:
|
||||
|
||||
(define %default-modules
|
||||
;; Build-side modules imported and used by default.
|
||||
'((guix build gnu-build-system)
|
||||
(guix build utils)))
|
||||
|
||||
(define* (package-with-explicit-inputs p inputs
|
||||
#:optional
|
||||
(loc (current-source-location))
|
||||
@@ -152,6 +158,38 @@ use `--strip-all' as the arguments to `strip'."
|
||||
''("--strip-all")
|
||||
flags)))))))
|
||||
|
||||
(define* (dist-package p source)
|
||||
"Return a package that runs takes source files from the SOURCE directory,
|
||||
runs `make distcheck' and whose result is one or more source tarballs."
|
||||
(let ((s source))
|
||||
(package (inherit p)
|
||||
(name (string-append (package-name p) "-dist"))
|
||||
(source s)
|
||||
(arguments
|
||||
;; Use the right phases and modules.
|
||||
(let* ((args (default-keyword-arguments (package-arguments p)
|
||||
`(#:phases #f
|
||||
#:modules ,%default-modules
|
||||
#:imported-modules ,%default-modules))))
|
||||
(substitute-keyword-arguments args
|
||||
((#:modules modules)
|
||||
`((guix build gnu-dist)
|
||||
,@modules))
|
||||
((#:imported-modules modules)
|
||||
`((guix build gnu-dist)
|
||||
,@modules))
|
||||
((#:phases _)
|
||||
'%dist-phases))))
|
||||
(native-inputs
|
||||
;; Add autotools & co. as inputs.
|
||||
(let ((ref (lambda (module var)
|
||||
(module-ref (resolve-interface module) var))))
|
||||
`(("autoconf" ,(ref '(gnu packages autotools) 'autoconf))
|
||||
("automake" ,(ref '(gnu packages autotools) 'automake))
|
||||
("libtool" ,(ref '(gnu packages autotools) 'libtool) "bin")
|
||||
("gettext" ,(ref '(gnu packages gettext) 'gettext))
|
||||
("texinfo" ,(ref '(gnu packages texinfo) 'texinfo))))))))
|
||||
|
||||
|
||||
(define %store
|
||||
;; Store passed to STANDARD-INPUTS.
|
||||
@@ -227,10 +265,8 @@ System: GCC, GNU Make, Bash, Coreutils, etc."
|
||||
(phases '%standard-phases)
|
||||
(system (%current-system))
|
||||
(implicit-inputs? #t) ; useful when bootstrapping
|
||||
(imported-modules '((guix build gnu-build-system)
|
||||
(guix build utils)))
|
||||
(modules '((guix build gnu-build-system)
|
||||
(guix build utils))))
|
||||
(imported-modules %default-modules)
|
||||
(modules %default-modules))
|
||||
"Return a derivation called NAME that builds from tarball SOURCE, with
|
||||
input derivation INPUTS, using the usual procedure of the GNU Build
|
||||
System. The builder is run with GUILE, or with the distro's final Guile
|
||||
@@ -255,8 +291,8 @@ which could lead to gratuitous input divergence."
|
||||
(define builder
|
||||
`(begin
|
||||
(use-modules ,@modules)
|
||||
(gnu-build #:source ,(if (and source (derivation-path? source))
|
||||
(derivation-path->output-path source)
|
||||
(gnu-build #:source ,(if (derivation? source)
|
||||
(derivation->output-path source)
|
||||
source)
|
||||
#:system ,system
|
||||
#:outputs %outputs
|
||||
@@ -283,8 +319,8 @@ which could lead to gratuitous input divergence."
|
||||
(match guile
|
||||
((? package?)
|
||||
(package-derivation store guile system))
|
||||
((and (? string?) (? derivation-path?))
|
||||
guile)
|
||||
;; ((and (? string?) (? derivation-path?))
|
||||
;; guile)
|
||||
(#f ; the default
|
||||
(let* ((distro (resolve-interface '(gnu packages base)))
|
||||
(guile (module-ref distro 'guile-final)))
|
||||
@@ -402,6 +438,8 @@ platform."
|
||||
(let ()
|
||||
(define %build-host-inputs
|
||||
',(map (match-lambda
|
||||
((name (? derivation? drv) sub ...)
|
||||
`(,name . ,(apply derivation->output-path drv sub)))
|
||||
((name (? derivation-path? drv-path) sub ...)
|
||||
`(,name . ,(apply derivation-path->output-path
|
||||
drv-path sub)))
|
||||
@@ -411,6 +449,8 @@ platform."
|
||||
|
||||
(define %build-target-inputs
|
||||
',(map (match-lambda
|
||||
((name (? derivation? drv) sub ...)
|
||||
`(,name . ,(apply derivation->output-path drv sub)))
|
||||
((name (? derivation-path? drv-path) sub ...)
|
||||
`(,name . ,(apply derivation-path->output-path
|
||||
drv-path sub)))
|
||||
@@ -418,8 +458,8 @@ platform."
|
||||
`(,name . ,path)))
|
||||
(append (or implicit-target-inputs '()) inputs)))
|
||||
|
||||
(gnu-build #:source ,(if (and source (derivation-path? source))
|
||||
(derivation-path->output-path source)
|
||||
(gnu-build #:source ,(if (derivation? source)
|
||||
(derivation->output-path source)
|
||||
source)
|
||||
#:system ,system
|
||||
#:target ,target
|
||||
@@ -452,8 +492,8 @@ platform."
|
||||
(match guile
|
||||
((? package?)
|
||||
(package-derivation store guile system))
|
||||
((and (? string?) (? derivation-path?))
|
||||
guile)
|
||||
;; ((and (? string?) (? derivation-path?))
|
||||
;; guile)
|
||||
(#f ; the default
|
||||
(let* ((distro (resolve-interface '(gnu packages base)))
|
||||
(guile (module-ref distro 'guile-final)))
|
||||
|
||||
@@ -62,8 +62,8 @@ provides a `Makefile.PL' file as its build system."
|
||||
`(begin
|
||||
(use-modules ,@modules)
|
||||
(perl-build #:name ,name
|
||||
#:source ,(if (and source (derivation-path? source))
|
||||
(derivation-path->output-path source)
|
||||
#:source ,(if (derivation? source)
|
||||
(derivation->output-path source)
|
||||
source)
|
||||
#:search-paths ',(map search-path-specification->sexp
|
||||
(append perl-search-paths
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
|
||||
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
@@ -25,7 +26,9 @@
|
||||
#:use-module (guix build-system)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (ice-9 match)
|
||||
#:export (python-build
|
||||
#:use-module (srfi srfi-26)
|
||||
#:export (package-with-python2
|
||||
python-build
|
||||
python-build-system))
|
||||
|
||||
;; Commentary:
|
||||
@@ -39,13 +42,60 @@
|
||||
"Return the default Python package."
|
||||
;; Lazily resolve the binding to avoid a circular dependency.
|
||||
(let ((python (resolve-interface '(gnu packages python))))
|
||||
(module-ref python 'python)))
|
||||
(module-ref python 'python-wrapper)))
|
||||
|
||||
(define (default-python2)
|
||||
"Return the default Python 2 package."
|
||||
(let ((python (resolve-interface '(gnu packages python))))
|
||||
(module-ref python 'python-2)))
|
||||
|
||||
(define (package-with-explicit-python p python old-prefix new-prefix)
|
||||
"Create a package with the same fields as P, which is assumed to use
|
||||
PYTHON-BUILD-SYSTEM, such that it is compiled with PYTHON instead. The
|
||||
inputs are changed recursively accordingly. If the name of P starts with
|
||||
OLD-PREFIX, this is replaced by NEW-PREFIX; otherwise, NEW-PREFIX is
|
||||
prepended to the name."
|
||||
(let* ((build-system (package-build-system p))
|
||||
(rewrite-if-package
|
||||
(lambda (content)
|
||||
;; CONTENT may be a string (e.g., for patches), in which case it
|
||||
;; is returned, or a package, which is rewritten with the new
|
||||
;; PYTHON and NEW-PREFIX.
|
||||
(if (package? content)
|
||||
(package-with-explicit-python content python
|
||||
old-prefix new-prefix)
|
||||
content)))
|
||||
(rewrite
|
||||
(match-lambda
|
||||
((name content . rest)
|
||||
(append (list name (rewrite-if-package content)) rest)))))
|
||||
(package (inherit p)
|
||||
(name
|
||||
(let ((name (package-name p)))
|
||||
(if (eq? build-system python-build-system)
|
||||
(string-append new-prefix
|
||||
(if (string-prefix? old-prefix name)
|
||||
(substring name (string-length old-prefix))
|
||||
name))
|
||||
name)))
|
||||
(arguments
|
||||
(let ((arguments (package-arguments p)))
|
||||
(if (eq? build-system python-build-system)
|
||||
(if (member #:python arguments)
|
||||
(substitute-keyword-arguments arguments ((#:python p) python))
|
||||
(append arguments `(#:python ,python)))
|
||||
arguments)))
|
||||
(inputs
|
||||
(map rewrite (package-inputs p)))
|
||||
(native-inputs
|
||||
(map rewrite (package-native-inputs p))))))
|
||||
|
||||
(define package-with-python2
|
||||
(cut package-with-explicit-python <> (default-python2) "python-" "python2-"))
|
||||
|
||||
(define* (python-build store name source inputs
|
||||
#:key
|
||||
(python (default-python))
|
||||
(python-version
|
||||
(string-take (package-version (default-python)) 3))
|
||||
(tests? #t)
|
||||
(configure-flags ''())
|
||||
(phases '(@ (guix build python-build-system)
|
||||
@@ -58,10 +108,10 @@
|
||||
(guix build gnu-build-system)
|
||||
(guix build utils)))
|
||||
(modules '((guix build python-build-system)
|
||||
(guix build gnu-build-system)
|
||||
(guix build utils))))
|
||||
"Build SOURCE using PYTHON, and with INPUTS. This assumes that SOURCE
|
||||
provides a 'setup.py' file as its build system."
|
||||
|
||||
(define python-search-paths
|
||||
(append (package-native-search-paths python)
|
||||
(standard-search-paths)))
|
||||
@@ -70,15 +120,15 @@ provides a 'setup.py' file as its build system."
|
||||
`(begin
|
||||
(use-modules ,@modules)
|
||||
(python-build #:name ,name
|
||||
#:source ,(if (and source (derivation-path? source))
|
||||
(derivation-path->output-path source)
|
||||
#:source ,(if (derivation? source)
|
||||
(derivation->output-path source)
|
||||
source)
|
||||
#:configure-flags ,configure-flags
|
||||
#:system ,system
|
||||
#:test-target "test"
|
||||
#:tests? ,tests?
|
||||
#:phases ,phases
|
||||
#:outputs %outputs
|
||||
#:python-version ,python-version
|
||||
#:search-paths ',(map search-path-specification->sexp
|
||||
(append python-search-paths
|
||||
search-paths))
|
||||
|
||||
@@ -42,7 +42,10 @@
|
||||
search-paths)
|
||||
"Run build expression BUILDER, an expression, for SYSTEM. SOURCE is
|
||||
ignored."
|
||||
(build-expression->derivation store name system builder inputs
|
||||
(build-expression->derivation store name system builder
|
||||
(if source
|
||||
`(("source" ,source) ,@inputs)
|
||||
inputs)
|
||||
#:outputs outputs
|
||||
#:modules modules
|
||||
#:guile-for-build
|
||||
@@ -54,7 +57,10 @@ ignored."
|
||||
search-paths native-search-paths)
|
||||
"Like `trivial-build', but in a cross-compilation context."
|
||||
(build-expression->derivation store name system builder
|
||||
(append native-inputs inputs)
|
||||
(let ((inputs (append native-inputs inputs)))
|
||||
(if source
|
||||
`(("source" ,source) ,@inputs)
|
||||
inputs))
|
||||
#:outputs outputs
|
||||
#:modules modules
|
||||
#:guile-for-build
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (guix build gnu-dist)
|
||||
#:use-module (guix build utils)
|
||||
#:use-module (guix build gnu-build-system)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:export (%dist-phases))
|
||||
|
||||
;;; Commentary:
|
||||
;;;
|
||||
;;; Build phases to build a source tarball with the GNU build system, as with
|
||||
;;; "make distcheck".
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(define* (copy-source #:key source #:allow-other-keys)
|
||||
(copy-recursively source "."))
|
||||
|
||||
(define* (autoreconf #:rest args)
|
||||
(letrec-syntax ((try-files (syntax-rules (else)
|
||||
((_ (else fallback ...))
|
||||
(begin fallback ...))
|
||||
((_ file files ... (else fallback ...))
|
||||
(if (file-exists? file)
|
||||
(begin
|
||||
(format #t "bootstrapping with `~a'...~%"
|
||||
file)
|
||||
(zero?
|
||||
(system* (string-append "./" file))))
|
||||
(try-files files ...
|
||||
(else fallback ...)))))))
|
||||
(try-files "bootstrap" "bootstrap.sh" "autogen" "autogen.sh"
|
||||
(else
|
||||
(format #t "bootstrapping with `autoreconf'...~%")
|
||||
(zero? (system* "autoreconf" "-vfi"))))))
|
||||
|
||||
(define* (build #:key build-before-dist? make-flags (dist-target "distcheck")
|
||||
#:allow-other-keys
|
||||
#:rest args)
|
||||
(and (or (not build-before-dist?)
|
||||
(let ((build (assq-ref %standard-phases 'build)))
|
||||
(apply build args)))
|
||||
(begin
|
||||
(format #t "building target `~a'~%" dist-target)
|
||||
(zero? (apply system* "make" dist-target make-flags)))))
|
||||
|
||||
(define* (install-dist #:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(meta (string-append out "/nix-support")) ; Hydra meta-data
|
||||
(tarballs (find-files "." "\\.tar\\.")))
|
||||
(mkdir out)
|
||||
(for-each (lambda (tarball)
|
||||
(copy-file tarball (string-append out "/" tarball)))
|
||||
out)
|
||||
|
||||
(mkdir meta)
|
||||
(call-with-output-file (string-append out "/hydra-build-products")
|
||||
(lambda (port)
|
||||
(for-each (lambda (tarball)
|
||||
;; This tells Hydra's what kind of build products we have,
|
||||
;; so it can represent them nicely. See `product-list.tt'
|
||||
;; in Hydra for details.
|
||||
(format port "file source-dist ~a/~a~%" out tarball))
|
||||
tarballs)))
|
||||
#t))
|
||||
|
||||
(define %dist-phases
|
||||
;; Phases for building a source tarball.
|
||||
(alist-replace
|
||||
'unpack copy-source
|
||||
(alist-cons-before
|
||||
'configure 'autoreconf autoreconf
|
||||
(alist-replace
|
||||
'build build
|
||||
(alist-replace
|
||||
'install install-dist
|
||||
(alist-delete 'strip %standard-phases))))))
|
||||
|
||||
;;; gnu-dist.scm ends here
|
||||
@@ -0,0 +1,152 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (guix build linux-initrd)
|
||||
#:use-module (rnrs io ports)
|
||||
#:use-module (system foreign)
|
||||
#:export (mount-essential-file-systems
|
||||
linux-command-line
|
||||
make-essential-device-nodes
|
||||
configure-qemu-networking
|
||||
mount-qemu-smb-share
|
||||
bind-mount
|
||||
load-linux-module*
|
||||
device-number))
|
||||
|
||||
;;; Commentary:
|
||||
;;;
|
||||
;;; Utility procedures useful in a Linux initial RAM disk (initrd). Note that
|
||||
;;; many of these use procedures not yet available in vanilla Guile (`mount',
|
||||
;;; `load-linux-module', etc.); these are provided by a Guile patch used in
|
||||
;;; the GNU distribution.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(define* (mount-essential-file-systems #:key (root "/"))
|
||||
"Mount /proc and /sys under ROOT."
|
||||
(define (scope dir)
|
||||
(string-append root
|
||||
(if (string-suffix? "/" root)
|
||||
""
|
||||
"/")
|
||||
dir))
|
||||
|
||||
(unless (file-exists? (scope "proc"))
|
||||
(mkdir (scope "proc")))
|
||||
(mount "none" (scope "proc") "proc")
|
||||
|
||||
(unless (file-exists? (scope "sys"))
|
||||
(mkdir (scope "sys")))
|
||||
(mount "none" (scope "sys") "sysfs"))
|
||||
|
||||
(define (linux-command-line)
|
||||
"Return the Linux kernel command line as a list of strings."
|
||||
(string-tokenize
|
||||
(call-with-input-file "/proc/cmdline"
|
||||
get-string-all)))
|
||||
|
||||
(define* (make-essential-device-nodes #:key (root "/"))
|
||||
"Make essential device nodes under ROOT/dev."
|
||||
;; The hand-made udev!
|
||||
|
||||
(define (scope dir)
|
||||
(string-append root
|
||||
(if (string-suffix? "/" root)
|
||||
""
|
||||
"/")
|
||||
dir))
|
||||
|
||||
(unless (file-exists? (scope "dev"))
|
||||
(mkdir (scope "dev")))
|
||||
|
||||
;; Make the device nodes for QEMU's hard disk and partitions.
|
||||
(mknod (scope "dev/vda") 'block-special #o644 (device-number 8 0))
|
||||
(mknod (scope "dev/vda1") 'block-special #o644 (device-number 8 1))
|
||||
(mknod (scope "dev/vda2") 'block-special #o644 (device-number 8 2))
|
||||
|
||||
;; TTYs.
|
||||
(mknod (scope "dev/tty") 'char-special #o600
|
||||
(device-number 5 0))
|
||||
(let loop ((n 0))
|
||||
(and (< n 50)
|
||||
(let ((name (format #f "dev/tty~a" n)))
|
||||
(mknod (scope name) 'char-special #o600
|
||||
(device-number 4 n))
|
||||
(loop (+ 1 n)))))
|
||||
|
||||
;; Rendez-vous point for syslogd.
|
||||
(mknod (scope "dev/log") 'socket #o666 0)
|
||||
(mknod (scope "dev/kmsg") 'char-special #o600 (device-number 1 11))
|
||||
|
||||
;; Other useful nodes.
|
||||
(mknod (scope "dev/null") 'char-special #o666 (device-number 1 3))
|
||||
(mknod (scope "dev/zero") 'char-special #o666 (device-number 1 5)))
|
||||
|
||||
(define %host-qemu-ipv4-address
|
||||
(inet-pton AF_INET "10.0.2.10"))
|
||||
|
||||
(define* (configure-qemu-networking #:optional (interface "eth0"))
|
||||
"Setup the INTERFACE network interface and /etc/resolv.conf according to
|
||||
QEMU's default networking settings (see net/slirp.c in QEMU for default
|
||||
networking values.) Return #t if INTERFACE is up, #f otherwise."
|
||||
(display "configuring QEMU networking...\n")
|
||||
(let* ((sock (socket AF_INET SOCK_STREAM 0))
|
||||
(address (make-socket-address AF_INET %host-qemu-ipv4-address 0))
|
||||
(flags (network-interface-flags sock interface)))
|
||||
(set-network-interface-address sock interface address)
|
||||
(set-network-interface-flags sock interface (logior flags IFF_UP))
|
||||
|
||||
(unless (file-exists? "/etc")
|
||||
(mkdir "/etc"))
|
||||
(call-with-output-file "/etc/resolv.conf"
|
||||
(lambda (p)
|
||||
(display "nameserver 10.0.2.3\n" p)))
|
||||
|
||||
(logand (network-interface-flags sock interface) IFF_UP)))
|
||||
|
||||
(define (mount-qemu-smb-share share mount-point)
|
||||
"Mount QEMU's CIFS/SMB SHARE at MOUNT-POINT.
|
||||
|
||||
Vanilla QEMU's `-smb' option just exports a /qemu share, whereas our
|
||||
`qemu-with-multiple-smb-shares' package exports the /xchg and /store shares
|
||||
(the latter allows the store to be shared between the host and guest.)"
|
||||
|
||||
(format #t "mounting QEMU's SMB share `~a'...\n" share)
|
||||
(let ((server "10.0.2.4"))
|
||||
(mount (string-append "//" server share) mount-point "cifs" 0
|
||||
(string->pointer "guest,sec=none"))))
|
||||
|
||||
(define (bind-mount source target)
|
||||
"Bind-mount SOURCE at TARGET."
|
||||
(define MS_BIND 4096) ; from libc's <sys/mount.h>
|
||||
|
||||
(mount source target "" MS_BIND))
|
||||
|
||||
(define (load-linux-module* file)
|
||||
"Load Linux module from FILE, the name of a `.ko' file."
|
||||
(define (slurp module)
|
||||
(call-with-input-file file get-bytevector-all))
|
||||
|
||||
(load-linux-module (slurp file)))
|
||||
|
||||
(define (device-number major minor)
|
||||
"Return the device number for the device with MAJOR and MINOR, for use as
|
||||
the last argument of `mknod'."
|
||||
(+ (* major 256) minor))
|
||||
|
||||
;;; linux-initrd.scm ends here
|
||||
@@ -1,5 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
|
||||
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
@@ -34,26 +35,49 @@
|
||||
;;
|
||||
;; Code:
|
||||
|
||||
(define* (install #:key outputs (configure-flags '())
|
||||
#:allow-other-keys)
|
||||
"Install a given Python package."
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(if (file-exists? "setup.py")
|
||||
(let ((args `("setup.py" "install" ,(string-append "--prefix=" out)
|
||||
,@configure-flags)))
|
||||
(format #t "running 'python' with arguments ~s~%" args)
|
||||
(zero? (apply system* "python" args)))
|
||||
(error "no setup.py found"))))
|
||||
|
||||
(define* (check #:key outputs #:allow-other-keys)
|
||||
"Run the test suite of a given Python package."
|
||||
(define (call-setuppy command params)
|
||||
(if (file-exists? "setup.py")
|
||||
(let ((args `("setup.py" "check")))
|
||||
(format #t "running 'python' with arguments ~s~%" args)
|
||||
(zero? (apply system* "python" args)))
|
||||
(begin
|
||||
(format #t "running \"python setup.py\" with command ~s and parameters ~s~%"
|
||||
command params)
|
||||
(zero? (apply system* "python" "setup.py" command params)))
|
||||
(error "no setup.py found")))
|
||||
|
||||
(define* (wrap #:key outputs python-version #:allow-other-keys)
|
||||
(define* (build #:rest empty)
|
||||
"Build a given Python package."
|
||||
(call-setuppy "build" '()))
|
||||
|
||||
(define* (check #:key tests? test-target #:allow-other-keys)
|
||||
"Run the test suite of a given Python package."
|
||||
(if tests?
|
||||
(call-setuppy test-target '())
|
||||
#t))
|
||||
|
||||
(define (get-python-version python)
|
||||
(string-take (string-take-right python 5) 3))
|
||||
|
||||
(define* (install #:key outputs inputs (configure-flags '())
|
||||
#:allow-other-keys)
|
||||
"Install a given Python package."
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(params (append (list (string-append "--prefix=" out))
|
||||
configure-flags))
|
||||
(python-version (get-python-version (assoc-ref inputs "python")))
|
||||
(old-path (getenv "PYTHONPATH"))
|
||||
(add-path (string-append out "/lib/python" python-version
|
||||
"/site-packages/")))
|
||||
;; create the module installation directory and add it to PYTHONPATH
|
||||
;; to make setuptools happy
|
||||
(mkdir-p add-path)
|
||||
(setenv "PYTHONPATH"
|
||||
(string-append (if old-path
|
||||
(string-append old-path ":")
|
||||
"")
|
||||
add-path))
|
||||
(call-setuppy "install" params)))
|
||||
|
||||
(define* (wrap #:key inputs outputs #:allow-other-keys)
|
||||
(define (list-of-files dir)
|
||||
(map (cut string-append dir "/" <>)
|
||||
(or (scandir dir (lambda (f)
|
||||
@@ -69,9 +93,11 @@
|
||||
outputs))
|
||||
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(python (assoc-ref inputs "python"))
|
||||
(var `("PYTHONPATH" prefix
|
||||
,(cons (string-append out "/lib/python"
|
||||
python-version "/site-packages")
|
||||
(get-python-version python)
|
||||
"/site-packages")
|
||||
(search-path-as-string->list
|
||||
(or (getenv "PYTHONPATH") ""))))))
|
||||
(for-each (lambda (dir)
|
||||
@@ -87,11 +113,12 @@
|
||||
'install 'wrap
|
||||
wrap
|
||||
(alist-replace
|
||||
'check check
|
||||
(alist-replace 'install install
|
||||
(alist-delete 'configure
|
||||
(alist-delete 'build
|
||||
gnu:%standard-phases))))))
|
||||
'build build
|
||||
(alist-replace
|
||||
'check check
|
||||
(alist-replace 'install install
|
||||
(alist-delete 'configure
|
||||
gnu:%standard-phases))))))
|
||||
|
||||
(define* (python-build #:key inputs (phases %standard-phases)
|
||||
#:allow-other-keys #:rest args)
|
||||
|
||||
+25
-4
@@ -105,7 +105,22 @@ single leaf."
|
||||
the DIRECTORIES."
|
||||
(define (file-tree dir)
|
||||
;; Return the contents of DIR as a tree.
|
||||
(match (file-system-fold (const #t)
|
||||
|
||||
(define (others-have-it? subdir)
|
||||
;; Return #t if other elements of DIRECTORIES have SUBDIR.
|
||||
(let ((subdir (substring subdir (string-length dir))))
|
||||
(any (lambda (other)
|
||||
(and (not (string=? other dir))
|
||||
(file-exists? (string-append other "/" subdir))))
|
||||
directories)))
|
||||
|
||||
(match (file-system-fold (lambda (subdir stat result) ; enter?
|
||||
;; No need to traverse DIR since there's
|
||||
;; nothing to union it with. Thus, we avoid
|
||||
;; creating a gazillon symlinks (think
|
||||
;; share/emacs/24.3, share/texmf, etc.)
|
||||
(or (string=? subdir dir)
|
||||
(others-have-it? subdir)))
|
||||
(lambda (file stat result) ; leaf
|
||||
(match result
|
||||
(((siblings ...) rest ...)
|
||||
@@ -117,7 +132,12 @@ the DIRECTORIES."
|
||||
(((leaves ...) (siblings ...) rest ...)
|
||||
`(((,(basename dir) ,@leaves) ,@siblings)
|
||||
,@rest))))
|
||||
(const #f) ; skip
|
||||
(lambda (dir stat result) ; skip
|
||||
;; DIR is not available elsewhere, so treat it
|
||||
;; as a leaf.
|
||||
(match result
|
||||
(((siblings ...) rest ...)
|
||||
`((,dir ,@siblings) ,@rest))))
|
||||
(lambda (file stat errno result)
|
||||
(format (current-error-port) "union-build: ~a: ~a~%"
|
||||
file (strerror errno)))
|
||||
@@ -158,8 +178,9 @@ the DIRECTORIES."
|
||||
(mkdir output)
|
||||
(let loop ((tree (delete-duplicate-leaves
|
||||
(cons "."
|
||||
(tree-union (append-map (compose tree-leaves file-tree)
|
||||
directories)))
|
||||
(tree-union
|
||||
(append-map (compose tree-leaves file-tree)
|
||||
(delete-duplicates directories))))
|
||||
leaf=?
|
||||
resolve-collision))
|
||||
(dir '()))
|
||||
|
||||
+21
-18
@@ -185,29 +185,32 @@ but ignore errors."
|
||||
lstat))
|
||||
|
||||
(define (find-files dir regexp)
|
||||
"Return the list of files under DIR whose basename matches REGEXP."
|
||||
"Return the lexicographically sorted list of files under DIR whose basename
|
||||
matches REGEXP."
|
||||
(define file-rx
|
||||
(if (regexp? regexp)
|
||||
regexp
|
||||
(make-regexp regexp)))
|
||||
|
||||
(file-system-fold (const #t)
|
||||
(lambda (file stat result) ; leaf
|
||||
(if (regexp-exec file-rx (basename file))
|
||||
(cons file result)
|
||||
result))
|
||||
(lambda (dir stat result) ; down
|
||||
result)
|
||||
(lambda (dir stat result) ; up
|
||||
result)
|
||||
(lambda (file stat result) ; skip
|
||||
result)
|
||||
(lambda (file stat errno result)
|
||||
(format (current-error-port) "find-files: ~a: ~a~%"
|
||||
file (strerror errno))
|
||||
#f)
|
||||
'()
|
||||
dir))
|
||||
;; Sort the result to get deterministic results.
|
||||
(sort (file-system-fold (const #t)
|
||||
(lambda (file stat result) ; leaf
|
||||
(if (regexp-exec file-rx (basename file))
|
||||
(cons file result)
|
||||
result))
|
||||
(lambda (dir stat result) ; down
|
||||
result)
|
||||
(lambda (dir stat result) ; up
|
||||
result)
|
||||
(lambda (file stat result) ; skip
|
||||
result)
|
||||
(lambda (file stat errno result)
|
||||
(format (current-error-port) "find-files: ~a: ~a~%"
|
||||
file (strerror errno))
|
||||
#f)
|
||||
'()
|
||||
dir)
|
||||
string<?))
|
||||
|
||||
|
||||
;;;
|
||||
|
||||
+144
-55
@@ -19,6 +19,7 @@
|
||||
(define-module (guix derivations)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-9)
|
||||
#:use-module (srfi srfi-9 gnu)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module (rnrs io ports)
|
||||
#:use-module (rnrs bytevectors)
|
||||
@@ -36,6 +37,7 @@
|
||||
derivation-system
|
||||
derivation-builder-arguments
|
||||
derivation-builder-environment-vars
|
||||
derivation-file-name
|
||||
derivation-prerequisites
|
||||
derivation-prerequisites-to-build
|
||||
|
||||
@@ -56,20 +58,26 @@
|
||||
|
||||
read-derivation
|
||||
write-derivation
|
||||
derivation->output-path
|
||||
derivation->output-paths
|
||||
derivation-path->output-path
|
||||
derivation-path->output-paths
|
||||
derivation
|
||||
|
||||
%guile-for-build
|
||||
imported-modules
|
||||
compiled-modules
|
||||
build-expression->derivation
|
||||
imported-files))
|
||||
imported-files)
|
||||
#:replace (build-derivations))
|
||||
|
||||
;;;
|
||||
;;; Nix derivations, as implemented in Nix's `derivations.cc'.
|
||||
;;;
|
||||
|
||||
(define-record-type <derivation>
|
||||
(make-derivation outputs inputs sources system builder args env-vars)
|
||||
(make-derivation outputs inputs sources system builder args env-vars
|
||||
file-name)
|
||||
derivation?
|
||||
(outputs derivation-outputs) ; list of name/<derivation-output> pairs
|
||||
(inputs derivation-inputs) ; list of <derivation-input>
|
||||
@@ -77,7 +85,8 @@
|
||||
(system derivation-system) ; string
|
||||
(builder derivation-builder) ; store path
|
||||
(args derivation-builder-arguments) ; list of strings
|
||||
(env-vars derivation-builder-environment-vars)) ; list of name/value pairs
|
||||
(env-vars derivation-builder-environment-vars) ; list of name/value pairs
|
||||
(file-name derivation-file-name)) ; the .drv file name
|
||||
|
||||
(define-record-type <derivation-output>
|
||||
(make-derivation-output path hash-algo hash)
|
||||
@@ -92,6 +101,17 @@
|
||||
(path derivation-input-path) ; store path
|
||||
(sub-derivations derivation-input-sub-derivations)) ; list of strings
|
||||
|
||||
(set-record-type-printer! <derivation>
|
||||
(lambda (drv port)
|
||||
(format port "#<derivation ~a => ~a ~a>"
|
||||
(derivation-file-name drv)
|
||||
(string-join
|
||||
(map (match-lambda
|
||||
((_ . output)
|
||||
(derivation-output-path output)))
|
||||
(derivation-outputs drv)))
|
||||
(number->string (object-address drv) 16))))
|
||||
|
||||
(define (fixed-output-derivation? drv)
|
||||
"Return #t if DRV is a fixed-output derivation, such as the result of a
|
||||
download with a fixed hash (aka. `fetchurl')."
|
||||
@@ -260,7 +280,8 @@ that second value is the empty list."
|
||||
(make-input-drvs input-drvs)
|
||||
input-srcs
|
||||
system builder args
|
||||
(fold-right alist-cons '() var value)))
|
||||
(fold-right alist-cons '() var value)
|
||||
(port-filename drv-port)))
|
||||
(_
|
||||
(error "failed to parse derivation" drv-port result)))))
|
||||
((? (cut eq? <> comma))
|
||||
@@ -402,25 +423,30 @@ that form."
|
||||
port)
|
||||
(display ")" port))))
|
||||
|
||||
(define* (derivation->output-path drv #:optional (output "out"))
|
||||
"Return the store path of its output OUTPUT."
|
||||
(let ((outputs (derivation-outputs drv)))
|
||||
(and=> (assoc-ref outputs output) derivation-output-path)))
|
||||
|
||||
(define (derivation->output-paths drv)
|
||||
"Return the list of name/path pairs of the outputs of DRV."
|
||||
(map (match-lambda
|
||||
((name . output)
|
||||
(cons name (derivation-output-path output))))
|
||||
(derivation-outputs drv)))
|
||||
|
||||
(define derivation-path->output-path
|
||||
;; This procedure is called frequently, so memoize it.
|
||||
(memoize
|
||||
(lambda* (path #:optional (output "out"))
|
||||
"Read the derivation from PATH (`/nix/store/xxx.drv'), and return the store
|
||||
path of its output OUTPUT."
|
||||
(let* ((drv (call-with-input-file path read-derivation))
|
||||
(outputs (derivation-outputs drv)))
|
||||
(and=> (assoc-ref outputs output) derivation-output-path)))))
|
||||
(derivation->output-path (call-with-input-file path read-derivation)))))
|
||||
|
||||
(define (derivation-path->output-paths path)
|
||||
"Read the derivation from PATH (`/nix/store/xxx.drv'), and return the
|
||||
list of name/path pairs of its outputs."
|
||||
(let* ((drv (call-with-input-file path read-derivation))
|
||||
(outputs (derivation-outputs drv)))
|
||||
(map (match-lambda
|
||||
((name . output)
|
||||
(cons name (derivation-output-path output))))
|
||||
outputs)))
|
||||
(derivation->output-paths (call-with-input-file path read-derivation)))
|
||||
|
||||
|
||||
;;;
|
||||
@@ -468,7 +494,8 @@ in SIZE bytes."
|
||||
(make-derivation-input hash sub-drvs))))
|
||||
inputs))
|
||||
(drv (make-derivation outputs inputs sources
|
||||
system builder args env-vars)))
|
||||
system builder args env-vars
|
||||
#f)))
|
||||
|
||||
;; XXX: At this point this remains faster than `port-sha256', because
|
||||
;; the SHA256 port's `write' method gets called for every single
|
||||
@@ -497,12 +524,20 @@ the derivation called NAME with hash HASH."
|
||||
name
|
||||
(string-append name "-" output))))
|
||||
|
||||
(define* (derivation store name system builder args env-vars inputs
|
||||
#:key (outputs '("out")) hash hash-algo hash-mode)
|
||||
"Build a derivation with the given arguments. Return the resulting
|
||||
store path and <derivation> object. When HASH, HASH-ALGO, and HASH-MODE
|
||||
are given, a fixed-output derivation is created---i.e., one whose result is
|
||||
known in advance, such as a file download."
|
||||
(define* (derivation store name builder args
|
||||
#:key
|
||||
(system (%current-system)) (env-vars '())
|
||||
(inputs '()) (outputs '("out"))
|
||||
hash hash-algo hash-mode
|
||||
references-graphs)
|
||||
"Build a derivation with the given arguments, and return the resulting
|
||||
<derivation> object. When HASH, HASH-ALGO, and HASH-MODE are given, a
|
||||
fixed-output derivation is created---i.e., one whose result is known in
|
||||
advance, such as a file download.
|
||||
|
||||
When REFERENCES-GRAPHS is true, it must be a list of file name/store path
|
||||
pairs. In that case, the reference graph of each store path is exported in
|
||||
the build environment in the corresponding file, in a simple text format."
|
||||
(define direct-store-path?
|
||||
(let ((len (+ 1 (string-length (%store-prefix)))))
|
||||
(lambda (p)
|
||||
@@ -535,9 +570,25 @@ known in advance, such as a file download."
|
||||
(or (and=> (assoc-ref outputs name)
|
||||
derivation-output-path)
|
||||
value))))
|
||||
env-vars))))))
|
||||
env-vars)
|
||||
#f)))))
|
||||
|
||||
(define (env-vars-with-empty-outputs)
|
||||
(define (user+system-env-vars)
|
||||
;; Some options are passed to the build daemon via the env. vars of
|
||||
;; derivations (urgh!). We hide that from our API, but here is the place
|
||||
;; where we kludgify those options.
|
||||
(match references-graphs
|
||||
(((file . path) ...)
|
||||
(let ((value (map (cut string-append <> " " <>)
|
||||
file path)))
|
||||
;; XXX: This all breaks down if an element of FILE or PATH contains
|
||||
;; white space.
|
||||
`(("exportReferencesGraph" . ,(string-join value " "))
|
||||
,@env-vars)))
|
||||
(#f
|
||||
env-vars)))
|
||||
|
||||
(define (env-vars-with-empty-outputs env-vars)
|
||||
;; Return a variant of ENV-VARS where each OUTPUTS is associated with an
|
||||
;; empty string, even outputs that do not appear in ENV-VARS.
|
||||
(let ((e (map (match-lambda
|
||||
@@ -553,12 +604,26 @@ known in advance, such as a file download."
|
||||
e
|
||||
outputs)))
|
||||
|
||||
(define (set-file-name drv file)
|
||||
;; Set FILE as the 'file-name' field of DRV.
|
||||
(match drv
|
||||
(($ <derivation> outputs inputs sources system builder
|
||||
args env-vars)
|
||||
(make-derivation outputs inputs sources system builder
|
||||
args env-vars file))))
|
||||
|
||||
(let* ((outputs (map (lambda (name)
|
||||
;; Return outputs with an empty path.
|
||||
(cons name
|
||||
(make-derivation-output "" hash-algo hash)))
|
||||
outputs))
|
||||
(inputs (map (match-lambda
|
||||
(((? derivation? drv))
|
||||
(make-derivation-input (derivation-file-name drv)
|
||||
'("out")))
|
||||
(((? derivation? drv) sub-drvs ...)
|
||||
(make-derivation-input (derivation-file-name drv)
|
||||
sub-drvs))
|
||||
(((? direct-store-path? input))
|
||||
(make-derivation-input input '("out")))
|
||||
(((? direct-store-path? input) sub-drvs ...)
|
||||
@@ -569,7 +634,7 @@ known in advance, such as a file download."
|
||||
#t "sha256" input)))
|
||||
(make-derivation-input path '()))))
|
||||
(delete-duplicates inputs)))
|
||||
(env-vars (env-vars-with-empty-outputs))
|
||||
(env-vars (env-vars-with-empty-outputs (user+system-env-vars)))
|
||||
(drv-masked (make-derivation outputs
|
||||
(filter (compose derivation-path?
|
||||
derivation-input-path)
|
||||
@@ -579,17 +644,29 @@ known in advance, such as a file download."
|
||||
(and (not (derivation-path? p))
|
||||
p)))
|
||||
inputs)
|
||||
system builder args env-vars))
|
||||
system builder args env-vars #f))
|
||||
(drv (add-output-paths drv-masked)))
|
||||
|
||||
;; (write-derivation drv-masked (current-error-port))
|
||||
;; (newline (current-error-port))
|
||||
(values (add-text-to-store store (string-append name ".drv")
|
||||
(call-with-output-string
|
||||
(cut write-derivation drv <>))
|
||||
(map derivation-input-path
|
||||
inputs))
|
||||
drv)))
|
||||
(let ((file (add-text-to-store store (string-append name ".drv")
|
||||
(call-with-output-string
|
||||
(cut write-derivation drv <>))
|
||||
(map derivation-input-path
|
||||
inputs))))
|
||||
(set-file-name drv file))))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Store compatibility layer.
|
||||
;;;
|
||||
|
||||
(define (build-derivations store derivations)
|
||||
"Build DERIVATIONS, a list of <derivation> objects or .drv file names."
|
||||
(let ((build (@ (guix store) build-derivations)))
|
||||
(build store (map (match-lambda
|
||||
((? string? file) file)
|
||||
((and drv ($ <derivation>))
|
||||
(derivation-file-name drv)))
|
||||
derivations))))
|
||||
|
||||
|
||||
;;;
|
||||
@@ -681,7 +758,7 @@ they can refer to each other."
|
||||
#:system system
|
||||
#:guile guile
|
||||
#:module-path module-path))
|
||||
(module-dir (derivation-path->output-path module-drv))
|
||||
(module-dir (derivation->output-path module-drv))
|
||||
(files (map (lambda (m)
|
||||
(let ((f (string-join (map symbol->string m)
|
||||
"/")))
|
||||
@@ -720,7 +797,8 @@ they can refer to each other."
|
||||
hash hash-algo
|
||||
(env-vars '())
|
||||
(modules '())
|
||||
guile-for-build)
|
||||
guile-for-build
|
||||
references-graphs)
|
||||
"Return a derivation that executes Scheme expression EXP as a builder
|
||||
for derivation NAME. INPUTS must be a list of (NAME DRV-PATH SUB-DRV)
|
||||
tuples; when SUB-DRV is omitted, \"out\" is assumed. MODULES is a list
|
||||
@@ -737,23 +815,27 @@ builder terminates by passing the result of EXP to `exit'; thus, when
|
||||
EXP returns #f, the build is considered to have failed.
|
||||
|
||||
EXP is built using GUILE-FOR-BUILD (a derivation). When GUILE-FOR-BUILD is
|
||||
omitted or is #f, the value of the `%guile-for-build' fluid is used instead."
|
||||
omitted or is #f, the value of the `%guile-for-build' fluid is used instead.
|
||||
|
||||
See the `derivation' procedure for the meaning of REFERENCES-GRAPHS."
|
||||
(define guile-drv
|
||||
(or guile-for-build (%guile-for-build)))
|
||||
|
||||
(define guile
|
||||
(string-append (derivation-path->output-path guile-drv)
|
||||
(string-append (derivation->output-path guile-drv)
|
||||
"/bin/guile"))
|
||||
|
||||
(define module-form?
|
||||
(match-lambda
|
||||
(((or 'define-module 'use-modules) _ ...) #t)
|
||||
(_ #f)))
|
||||
(((or 'define-module 'use-modules) _ ...) #t)
|
||||
(_ #f)))
|
||||
|
||||
(define source-path
|
||||
;; When passed an input that is a source, return its path; otherwise
|
||||
;; return #f.
|
||||
(match-lambda
|
||||
((_ (? derivation?) _ ...)
|
||||
#f)
|
||||
((_ path _ ...)
|
||||
(and (not (derivation-path? path))
|
||||
path))))
|
||||
@@ -778,10 +860,13 @@ omitted or is #f, the value of the `%guile-for-build' fluid is used instead."
|
||||
(() "out")
|
||||
((x) x))))
|
||||
(cons name
|
||||
(if (derivation-path? drv)
|
||||
(derivation-path->output-path drv
|
||||
sub)
|
||||
drv)))))
|
||||
(cond
|
||||
((derivation? drv)
|
||||
(derivation->output-path drv sub))
|
||||
((derivation-path? drv)
|
||||
(derivation-path->output-path drv
|
||||
sub))
|
||||
(else drv))))))
|
||||
inputs))
|
||||
|
||||
,@(if (null? modules)
|
||||
@@ -826,29 +911,33 @@ omitted or is #f, the value of the `%guile-for-build' fluid is used instead."
|
||||
#:guile guile-drv
|
||||
#:system system)))
|
||||
(mod-dir (and mod-drv
|
||||
(derivation-path->output-path mod-drv)))
|
||||
(derivation->output-path mod-drv)))
|
||||
(go-drv (and (pair? modules)
|
||||
(compiled-modules store modules
|
||||
#:guile guile-drv
|
||||
#:system system)))
|
||||
(go-dir (and go-drv
|
||||
(derivation-path->output-path go-drv))))
|
||||
(derivation store name system guile
|
||||
(derivation->output-path go-drv))))
|
||||
(derivation store name guile
|
||||
`("--no-auto-compile"
|
||||
,@(if mod-dir `("-L" ,mod-dir) '())
|
||||
,builder)
|
||||
|
||||
#:system system
|
||||
|
||||
#:inputs `((,(or guile-for-build (%guile-for-build)))
|
||||
(,builder)
|
||||
,@(map cdr inputs)
|
||||
,@(if mod-drv `((,mod-drv) (,go-drv)) '()))
|
||||
|
||||
;; When MODULES is non-empty, shamelessly clobber
|
||||
;; $GUILE_LOAD_COMPILED_PATH.
|
||||
(if go-dir
|
||||
`(("GUILE_LOAD_COMPILED_PATH" . ,go-dir)
|
||||
,@(alist-delete "GUILE_LOAD_COMPILED_PATH"
|
||||
env-vars))
|
||||
env-vars)
|
||||
#:env-vars (if go-dir
|
||||
`(("GUILE_LOAD_COMPILED_PATH" . ,go-dir)
|
||||
,@(alist-delete "GUILE_LOAD_COMPILED_PATH"
|
||||
env-vars))
|
||||
env-vars)
|
||||
|
||||
`((,(or guile-for-build (%guile-for-build)))
|
||||
(,builder)
|
||||
,@(map cdr inputs)
|
||||
,@(if mod-drv `((,mod-drv) (,go-drv)) '()))
|
||||
#:hash hash #:hash-algo hash-algo
|
||||
#:outputs outputs)))
|
||||
#:outputs outputs
|
||||
#:references-graphs references-graphs)))
|
||||
|
||||
+16
-20
@@ -25,7 +25,6 @@
|
||||
#:use-module ((guix build download) #:renamer (symbol-prefix-proc 'build:))
|
||||
#:use-module (guix utils)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-11)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:export (%mirrors
|
||||
url-fetch
|
||||
@@ -99,7 +98,9 @@
|
||||
"http://ramses.wh2.tu-dresden.de/pub/mirrors/kernel.org/"
|
||||
"http://linux-kernel.uio.no/pub/"
|
||||
"http://kernel.osuosl.org/pub/"
|
||||
"ftp://ftp.funet.fi/pub/mirrors/ftp.kernel.org/pub/")
|
||||
"ftp://ftp.funet.fi/pub/mirrors/ftp.kernel.org/pub/"
|
||||
"http://ftp.be.debian.org/pub/"
|
||||
"http://mirror.linux.org.au/")
|
||||
(apache ; from http://www.apache.org/mirrors/dist.html
|
||||
"http://www.eu.apache.org/dist/"
|
||||
"http://www.us.apache.org/dist/"
|
||||
@@ -210,27 +211,22 @@ must be a list of symbol/URL-list pairs."
|
||||
((url ...)
|
||||
(any https? url)))))
|
||||
|
||||
(let*-values (((gnutls-drv-path gnutls-drv)
|
||||
(if need-gnutls?
|
||||
(gnutls-derivation store system)
|
||||
(values #f #f)))
|
||||
((gnutls)
|
||||
(and gnutls-drv
|
||||
(derivation-output-path
|
||||
(assoc-ref (derivation-outputs gnutls-drv)
|
||||
"out"))))
|
||||
((env-vars)
|
||||
(if gnutls
|
||||
(let ((dir (string-append gnutls "/share/guile/site")))
|
||||
;; XXX: `GUILE_LOAD_COMPILED_PATH' is overridden
|
||||
;; by `build-expression->derivation', so we can't
|
||||
;; set it here.
|
||||
`(("GUILE_LOAD_PATH" . ,dir)))
|
||||
'())))
|
||||
(let* ((gnutls-drv (if need-gnutls?
|
||||
(gnutls-derivation store system)
|
||||
(values #f #f)))
|
||||
(gnutls (and gnutls-drv
|
||||
(derivation->output-path gnutls-drv "out")))
|
||||
(env-vars (if gnutls
|
||||
(let ((dir (string-append gnutls "/share/guile/site")))
|
||||
;; XXX: `GUILE_LOAD_COMPILED_PATH' is overridden
|
||||
;; by `build-expression->derivation', so we can't
|
||||
;; set it here.
|
||||
`(("GUILE_LOAD_PATH" . ,dir)))
|
||||
'())))
|
||||
(build-expression->derivation store (or name file-name) system
|
||||
builder
|
||||
(if gnutls-drv
|
||||
`(("gnutls" ,gnutls-drv-path))
|
||||
`(("gnutls" ,gnutls-drv))
|
||||
'())
|
||||
#:hash-algo hash-algo
|
||||
#:hash hash
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user