mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2026-07-07 10:54:07 +02:00
Compare commits
554 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 | |||
| 3253830d46 | |||
| 6023cc7429 | |||
| 1855577207 | |||
| b81e194706 | |||
| c71493c8b9 | |||
| 1959fb04dc | |||
| 4a328f7342 | |||
| 88ebd5e699 | |||
| 5939006b9b | |||
| 63f6004b95 | |||
| e23dc82c29 | |||
| 73d9f3c5b6 | |||
| c5a1902ae4 | |||
| 4ec09bb410 | |||
| 77bed84246 | |||
| 195e81aa52 | |||
| 4b7f3407e9 | |||
| d409c8ab88 | |||
| 079d127391 | |||
| 56fbf2629f | |||
| 50af57901a | |||
| a0daf4a04e | |||
| 4169a4bcb5 | |||
| cf2135ff48 | |||
| ffd2093440 | |||
| 614bdaffbf | |||
| 3b8258c569 | |||
| 84dbbc7651 | |||
| 2096b516e0 | |||
| e14c39291b | |||
| e3ccdf9e96 | |||
| 1f495e04c1 | |||
| 8e5e7299d1 | |||
| f50ad3e777 | |||
| d4781e8c23 | |||
| e0bb2e6be1 | |||
| ce689ccf18 | |||
| 6a012c5f51 | |||
| d934fd65af | |||
| 8b79e2e641 | |||
| 35935b8a1d | |||
| 560d4787f4 | |||
| d04434c067 | |||
| 6a3380dfbf | |||
| c4ca9411f9 | |||
| 836d10f154 | |||
| b0efe83a8f | |||
| c8772a7a21 | |||
| b7b8828801 | |||
| fdc1bf659d | |||
| c0edcc3c19 | |||
| edd258fd6b | |||
| 03aedf8d7a | |||
| b592f7113e | |||
| c769406010 | |||
| 91ef73d464 | |||
| 6e721c4d02 | |||
| ee48b283fa | |||
| caddc24fa4 | |||
| 4ca0cefd1b | |||
| 2c9143a1f3 | |||
| acf428dd0b | |||
| b208a00501 | |||
| 8b315a6dd5 | |||
| 401c53c469 | |||
| c8ebc82187 | |||
| b97556d75c | |||
| 3a4ebc1124 | |||
| eb25a30a42 | |||
| 8c95b27ce6 | |||
| 5363abb776 | |||
| a1c39ede7d | |||
| 82f9b17687 | |||
| a4627d498a | |||
| 9bf62d9b1d | |||
| be58d01a7e | |||
| d475b25953 | |||
| 6d73e17bb4 | |||
| 2b2fdd45bb | |||
| 423002544d | |||
| b0fad8a2d4 | |||
| 69927e78de | |||
| 72626a71a9 | |||
| 82323a8085 | |||
| 1a8b783470 | |||
| a4572a1720 | |||
| d3066a0d13 | |||
| bb7dcaea57 | |||
| 013ce67b19 | |||
| 88a0b7b051 | |||
| 3bba7b0a8f | |||
| 96a8259a9d | |||
| ca16cb9606 | |||
| 58ab9f9b8e | |||
| beda99e882 | |||
| 5708485357 | |||
| 11acdf1747 | |||
| de1d41f980 | |||
| e7133c7680 | |||
| c8fa51f2d6 | |||
| 9306d350b2 | |||
| a410a0105d | |||
| a3cff41dd1 | |||
| 0de71c233c | |||
| 7e873a6708 | |||
| 6e1c4093d2 | |||
| ac5c1cec86 | |||
| 1e4310f1f2 | |||
| f7c3429073 | |||
| 527e796125 | |||
| ea2ddd3334 | |||
| 2c034e1bd0 | |||
| a62b83d52f | |||
| b15669f37d | |||
| ee26820636 | |||
| 8572bf5e0c | |||
| d16368cf41 | |||
| 2a511f7a1a | |||
| 2f41f51c40 | |||
| 91a7fde456 | |||
| 4ca968eb95 | |||
| 56c092ce94 | |||
| d501fad11c | |||
| 4db00e4210 | |||
| fba96c4885 | |||
| f3211ef386 | |||
| fe1818e26a | |||
| a85060efec | |||
| e3f6f8b448 | |||
| d516736c58 | |||
| 9af05aa29d | |||
| c7c834a998 | |||
| 7fa37abca0 | |||
| 2207f73156 | |||
| 8cf13c1f70 | |||
| 90a0048f5e | |||
| 10afdf5061 | |||
| 30ac136d6d | |||
| cf3fe3b071 | |||
| 5686807ee9 | |||
| b1b07d72c7 | |||
| 7997c4bf76 | |||
| d517142b8e | |||
| 30645251d1 | |||
| 9c71a2aec4 | |||
| 934488ccd3 | |||
| 82c865c41a | |||
| 4b9adff901 | |||
| a2609b41b9 | |||
| 6131c43d45 | |||
| 7cf2a2a1e2 | |||
| 3e5980de47 | |||
| 16357e8c71 | |||
| 0bd31a2188 | |||
| 62751a5ddd | |||
| af5cb60fec | |||
| 8e59fdd53b | |||
| 3f1e69395c | |||
| cfbf7877a6 | |||
| d4c7486079 | |||
| cbe62e89d0 | |||
| 79b8914eaa | |||
| 16df248e4b | |||
| 392b5d8cab | |||
| e20ec9cc51 | |||
| 0a56fadb60 | |||
| ba04571a83 | |||
| f88aeb6aa8 | |||
| e0b2737583 | |||
| 7bc5cc2b96 | |||
| 0d62efbe5a | |||
| fa6141ecaa | |||
| b2e3dd9480 | |||
| 9d97a1b3d6 | |||
| 0e999137e9 | |||
| a3e69bb892 | |||
| a1db097535 | |||
| b17fd5e0c8 | |||
| 76ced7741b | |||
| 7f4e4b77ee | |||
| 765904ceb6 | |||
| 9bf3c1a77d | |||
| ae3b6bb0f4 | |||
| bdbb6fbb19 | |||
| 94e4ddd508 | |||
| ef7cf2917a | |||
| 5ace6e2fa8 | |||
| 1890a149cc | |||
| 63c0c19a64 | |||
| 8caa6152d0 | |||
| 231eae53c2 | |||
| 44fbbf4c5f | |||
| 89d02b98f9 | |||
| 5282181d51 | |||
| cf5d2ca329 | |||
| 56b1f4b780 | |||
| c3eb878f0b | |||
| acc26ff148 | |||
| 4f7e152b34 | |||
| 842ded334f | |||
| 9b222abe03 | |||
| ea84ec7711 | |||
| 58b4e8e877 | |||
| d581acee5b | |||
| 47e74d6e9d | |||
| 4bfc4ea349 | |||
| 9c782445fb | |||
| 9a97b8144d | |||
| aa289a3e82 | |||
| a67f97fea1 | |||
| 923fbae1f0 | |||
| 598608c7ee | |||
| f755aa3f7a | |||
| 089b06348e | |||
| 1984b43895 | |||
| 3871c9f500 | |||
| 9aa949a4b6 | |||
| cf9fd501ea | |||
| c8c6bba5a7 | |||
| de59af4d6d | |||
| 2a552f1177 | |||
| a7dc055bb5 | |||
| cd52703ace | |||
| ee4d736881 | |||
| 2ee5f56b4d | |||
| 5dce82180b | |||
| cba363bea8 | |||
| 929c0f69de | |||
| e55ec43d8b | |||
| 264218a47e | |||
| 9c1edabd8b | |||
| 17bb886ff4 | |||
| 248d08ebf0 | |||
| a63062b55a | |||
| 7046c48d72 | |||
| 3ec7ad8e0f | |||
| a10f6f7bf7 | |||
| bb3fe7fcfe | |||
| d149583162 | |||
| 1972fed4df | |||
| 969e678ed9 | |||
| d8482ad0d6 | |||
| 35ec07c758 | |||
| 4bc3fcc771 | |||
| 499b8d1f84 | |||
| f11617d8a6 | |||
| 70c4329172 | |||
| 101d9f3fd4 | |||
| 3d6b71e87e | |||
| 0332386251 | |||
| 90a1e4b303 | |||
| 91fe0e20c7 | |||
| b30b13dc3d | |||
| 2b8cf44fd9 |
+2
-1
@@ -15,7 +15,8 @@
|
||||
(eval . (put 'with-directory-excursion 'scheme-indent-function 1))
|
||||
(eval . (put 'package 'scheme-indent-function 1))
|
||||
(eval . (put 'substitute-keyword-arguments 'scheme-indent-function 1))
|
||||
(eval . (put 'with-error-handling 'scheme-indent-function 0))))
|
||||
(eval . (put 'with-error-handling 'scheme-indent-function 0))
|
||||
(eval . (put 'with-mutex 'scheme-indent-function 1))))
|
||||
(emacs-lisp-mode . ((indent-tabs-mode . nil)))
|
||||
(texinfo-mode . ((indent-tabs-mode . nil)
|
||||
(fill-column . 72))))
|
||||
|
||||
@@ -24,6 +24,7 @@ config.cache
|
||||
/m4/progtest.m4
|
||||
/po/ChangeLog
|
||||
/po/Makefile.in.in
|
||||
/po/Makevars.template
|
||||
/po/POTFILES
|
||||
/po/Rules-quot
|
||||
/po/boldquot.sed
|
||||
@@ -73,3 +74,6 @@ stamp-h[0-9]
|
||||
/doc/guix.vr
|
||||
/doc/guix.vrs
|
||||
/nix/scripts/substitute-binary
|
||||
/doc/images/bootstrap-graph.png
|
||||
/doc/images/bootstrap-graph.eps
|
||||
/guix-register
|
||||
|
||||
@@ -3,18 +3,56 @@
|
||||
#+TITLE: Hacking GNU Guix and Its Incredible Distro
|
||||
|
||||
Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved.
|
||||
|
||||
|
||||
* Building from Git
|
||||
|
||||
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:
|
||||
|
||||
./configure: line 6755: `PKG_CHECK_MODULES(GUILE, guile-2.0 >= 2.0.5)'
|
||||
|
||||
it probably means that Autoconf couldn’t find ‘pkg.m4’, which is provided by
|
||||
pkg-config. Make sure that ‘pkg.m4’ is available. For instance, if you
|
||||
installed Automake in ‘/usr/local’, it wouldn’t look for ‘.m4’ files in
|
||||
‘/usr/share’. So you have to invoke the following command in that case
|
||||
|
||||
$ export ACLOCAL_PATH=/usr/share/aclocal
|
||||
|
||||
See “info '(automake) Macro Search Path'” for more information.
|
||||
|
||||
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
|
||||
<guix-devel@gnu.org>.
|
||||
|
||||
* Running Guix before it is installed
|
||||
|
||||
Command-line tools can be used even if you have not run "make install".
|
||||
To do that, prefix each command with ‘./pre-inst-env’, as in:
|
||||
|
||||
./pre-inst-env guix-build --help
|
||||
./pre-inst-env guix build --help
|
||||
|
||||
Similarly, for a Guile session using the Guix modules:
|
||||
|
||||
@@ -40,162 +78,85 @@ 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.
|
||||
|
||||
* Porting the Guix distro on a new platform
|
||||
|
||||
** Introduction
|
||||
|
||||
Unlike Make or similar build tools, Guix requires absolutely /all/ the
|
||||
dependencies of a build process to be specified.
|
||||
|
||||
For a user-land software distribution, that means that the process that
|
||||
builds GCC (then used to build all other programs) must itself be
|
||||
specified; and the process to build the C library to build that GCC; and
|
||||
the process to build the GCC to build that library; and... See the
|
||||
problem? Chicken-and-egg.
|
||||
|
||||
To break that cycle, the distro starts from a set of pre-built
|
||||
binaries–usually referred to as “bootstrap binaries.” These include
|
||||
statically-linked versions of Guile, GCC, Coreutils, Make, Grep, sed,
|
||||
etc., and the GNU C Library.
|
||||
|
||||
This section describes how to build those bootstrap binaries when
|
||||
porting to a new platform.
|
||||
|
||||
** When the platform is supported by Nixpkgs
|
||||
|
||||
In that case, the easiest thing is to bootstrap the distro using
|
||||
binaries from Nixpkgs.
|
||||
|
||||
To do that, you need to comment out the definitions of
|
||||
‘%bootstrap-guile’ and ‘%bootstrap-inputs’ in distro/packages/bootstrap.scm
|
||||
to force the use of Nixpkgs derivations. For instance, when porting to
|
||||
‘i686-linux’, you should redefine these variables along these lines:
|
||||
|
||||
#+BEGIN_SRC scheme
|
||||
(define %bootstrap-guile
|
||||
(nixpkgs-derivation "guile" "i686-linux"))
|
||||
|
||||
(define %bootstrap-inputs
|
||||
(compile-time-value
|
||||
`(("libc" ,(nixpkgs-derivation "glibc" "i686-linux"))
|
||||
,@(map (lambda (name)
|
||||
(list name (nixpkgs-derivation name "i686-linux")))
|
||||
'("gnutar" "gzip" "bzip2" "xz" "patch"
|
||||
"coreutils" "gnused" "gnugrep" "bash"
|
||||
"gawk" ; used by `config.status'
|
||||
"gcc" "binutils")))))
|
||||
#+END_SRC
|
||||
|
||||
That should allow the distro to be bootstrapped.
|
||||
|
||||
Then, the tarballs containing the initial binaries of Guile, Coreutils,
|
||||
GCC, libc, etc. need to be built. To that end, run the following
|
||||
commands:
|
||||
|
||||
#+BEGIN_SRC sh
|
||||
./pre-inst-env guix-build -K \
|
||||
-e '(@ (gnu packages make-bootstrap) %bootstrap-tarballs)' \
|
||||
--system=i686-linux
|
||||
|
||||
#+END_SRC
|
||||
|
||||
These should build tarballs containing statically-linked tools usable on
|
||||
that system.
|
||||
|
||||
In the source tree, you need to install binaries for ‘mkdir’, ‘bash’,
|
||||
‘tar’, and ‘xz’ under ‘distro/packages/bootstrap/i686-linux’. These
|
||||
binaries can be extracted from the static-binaries tarball built above.
|
||||
|
||||
A rule for ‘distro/packages/bootstrap/i686-linux/guile-2.0.7.tar.xz’
|
||||
needs to be added in ‘Makefile.am’, with the appropriate hexadecimal
|
||||
vrepresentation of its SHA256 hash.
|
||||
|
||||
You may then revert your changes to ‘bootstrap.scm’. For the variables
|
||||
‘%bootstrap-coreutils&co’, ‘%bootstrap-binutils’, ‘%bootstrap-glibc’,
|
||||
and ‘%bootstrap-gcc’, the expected SHA256 of the corresponding tarballs
|
||||
for ‘i686-linux’ (built above) must be added.
|
||||
|
||||
This should be enough to bootstrap the distro without resorting to
|
||||
Nixpkgs.
|
||||
|
||||
** When the platform is *not* supported by Nixpkgs
|
||||
|
||||
In that case, the bootstrap binaries should be built using whatever
|
||||
tools are available on the target platform. That is, the tarballs and
|
||||
binaries show above must first be built manually, using the available
|
||||
tools.
|
||||
|
||||
They should have the same properties as those built by the Guix recipes
|
||||
shown above. For example, all the binaries (except for glibc) must be
|
||||
statically-linked; the bootstrap Guile must be relocatable (see patch in
|
||||
the Guix distro); the static-binaries tarball must contain the same
|
||||
programs (Coreutils, Grep, sed, Awk, etc.); and so on.
|
||||
|
||||
* Commit Access
|
||||
* Submitting Patches
|
||||
|
||||
Development is done using the Git distributed version control system. Thus,
|
||||
access to the repository is not strictly necessary. We welcome contributions
|
||||
in the form of patches as produced by ‘git format-patch’ sent to
|
||||
bug-guix@gnu.org.
|
||||
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]].
|
||||
|
||||
However, for frequent contributors, having write access to the repository is
|
||||
convenient. When you get commit access, please make sure to follow the policy
|
||||
below (discussions of the policy can take place on bug-guix@gnu.org.)
|
||||
As you become a regular contributor, you may find it convenient to have write
|
||||
access to the repository (see below.)
|
||||
|
||||
Non-trivial patches should always be posted to bug-guix@gnu.org (trivial
|
||||
* 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 guix-devel@gnu.org.)
|
||||
|
||||
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,
|
||||
if you’re confident (which means you successfully built it in a chroot setup.)
|
||||
Likewise for package upgrades. We have a mailing list for commit
|
||||
notifications (guix-commits@gnu.org), so people can notice. Before pushing
|
||||
your changes, make sure to run ‘git pull --rebase’.
|
||||
if you’re confident (which means you successfully built it in a chroot setup,
|
||||
and have done a reasonable copyright and license auditing.) Likewise for
|
||||
package upgrades. We have a mailing list for commit notifications
|
||||
(guix-commits@gnu.org), so people can notice. Before pushing your changes,
|
||||
make sure to run ‘git pull --rebase’.
|
||||
|
||||
For anything else, please post to bug-guix@gnu.org and leave time for a
|
||||
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.
|
||||
|
||||
|
||||
+43
-239
@@ -24,6 +24,8 @@ nodist_noinst_SCRIPTS = \
|
||||
pre-inst-env \
|
||||
test-env
|
||||
|
||||
include gnu-system.am
|
||||
|
||||
MODULES = \
|
||||
guix/scripts/build.scm \
|
||||
guix/scripts/download.scm \
|
||||
@@ -36,6 +38,7 @@ MODULES = \
|
||||
guix/scripts/refresh.scm \
|
||||
guix/base32.scm \
|
||||
guix/records.scm \
|
||||
guix/hash.scm \
|
||||
guix/utils.scm \
|
||||
guix/serialization.scm \
|
||||
guix/nar.scm \
|
||||
@@ -50,13 +53,15 @@ MODULES = \
|
||||
guix/build-system/python.scm \
|
||||
guix/build-system/trivial.scm \
|
||||
guix/ftp-client.scm \
|
||||
guix/web.scm \
|
||||
guix/http-client.scm \
|
||||
guix/gnupg.scm \
|
||||
guix/store.scm \
|
||||
guix/ui.scm \
|
||||
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 \
|
||||
@@ -65,252 +70,34 @@ MODULES = \
|
||||
guix/packages.scm \
|
||||
guix/snix.scm \
|
||||
guix.scm \
|
||||
gnu/packages.scm \
|
||||
gnu/packages/acl.scm \
|
||||
gnu/packages/algebra.scm \
|
||||
gnu/packages/aspell.scm \
|
||||
gnu/packages/attr.scm \
|
||||
gnu/packages/autotools.scm \
|
||||
gnu/packages/avahi.scm \
|
||||
gnu/packages/base.scm \
|
||||
gnu/packages/bash.scm \
|
||||
gnu/packages/bdb.scm \
|
||||
gnu/packages/bdw-gc.scm \
|
||||
gnu/packages/bison.scm \
|
||||
gnu/packages/bootstrap.scm \
|
||||
gnu/packages/cdrom.scm \
|
||||
gnu/packages/cflow.scm \
|
||||
gnu/packages/check.scm \
|
||||
gnu/packages/cmake.scm \
|
||||
gnu/packages/compression.scm \
|
||||
gnu/packages/cpio.scm \
|
||||
gnu/packages/cppi.scm \
|
||||
gnu/packages/cross-base.scm \
|
||||
gnu/packages/cryptsetup.scm \
|
||||
gnu/packages/curl.scm \
|
||||
gnu/packages/cyrus-sasl.scm \
|
||||
gnu/packages/dejagnu.scm \
|
||||
gnu/packages/ddrescue.scm \
|
||||
gnu/packages/dwm.scm \
|
||||
gnu/packages/ed.scm \
|
||||
gnu/packages/emacs.scm \
|
||||
gnu/packages/fdisk.scm \
|
||||
gnu/packages/file.scm \
|
||||
gnu/packages/flex.scm \
|
||||
gnu/packages/fontutils.scm \
|
||||
gnu/packages/freeipmi.scm \
|
||||
gnu/packages/gawk.scm \
|
||||
gnu/packages/gcc.scm \
|
||||
gnu/packages/gdb.scm \
|
||||
gnu/packages/gdbm.scm \
|
||||
gnu/packages/gettext.scm \
|
||||
gnu/packages/ghostscript.scm \
|
||||
gnu/packages/glib.scm \
|
||||
gnu/packages/global.scm \
|
||||
gnu/packages/gnupg.scm \
|
||||
gnu/packages/gnutls.scm \
|
||||
gnu/packages/gperf.scm \
|
||||
gnu/packages/gprolog.scm \
|
||||
gnu/packages/groff.scm \
|
||||
gnu/packages/grub.scm \
|
||||
gnu/packages/gsasl.scm \
|
||||
gnu/packages/gtk.scm \
|
||||
gnu/packages/guile.scm \
|
||||
gnu/packages/gv.scm \
|
||||
gnu/packages/help2man.scm \
|
||||
gnu/packages/hugs.scm \
|
||||
gnu/packages/icu4c.scm \
|
||||
gnu/packages/idutils.scm \
|
||||
gnu/packages/indent.scm \
|
||||
gnu/packages/irssi.scm \
|
||||
gnu/packages/ld-wrapper.scm \
|
||||
gnu/packages/less.scm \
|
||||
gnu/packages/lesstif.scm \
|
||||
gnu/packages/libapr.scm \
|
||||
gnu/packages/libdaemon.scm \
|
||||
gnu/packages/libevent.scm \
|
||||
gnu/packages/libffi.scm \
|
||||
gnu/packages/libidn.scm \
|
||||
gnu/packages/libjpeg.scm \
|
||||
gnu/packages/libphidget.scm \
|
||||
gnu/packages/libpng.scm \
|
||||
gnu/packages/libsigsegv.scm \
|
||||
gnu/packages/libtiff.scm \
|
||||
gnu/packages/libunistring.scm \
|
||||
gnu/packages/libusb.scm \
|
||||
gnu/packages/libunwind.scm \
|
||||
gnu/packages/linux.scm \
|
||||
gnu/packages/linux-initrd.scm \
|
||||
gnu/packages/lout.scm \
|
||||
gnu/packages/lsh.scm \
|
||||
gnu/packages/lsof.scm \
|
||||
gnu/packages/lua.scm \
|
||||
gnu/packages/lvm.scm \
|
||||
gnu/packages/m4.scm \
|
||||
gnu/packages/mailutils.scm \
|
||||
gnu/packages/make-bootstrap.scm \
|
||||
gnu/packages/mit-krb5.scm \
|
||||
gnu/packages/mp3.scm \
|
||||
gnu/packages/multiprecision.scm \
|
||||
gnu/packages/mysql.scm \
|
||||
gnu/packages/nano.scm \
|
||||
gnu/packages/ncurses.scm \
|
||||
gnu/packages/netpbm.scm \
|
||||
gnu/packages/nettle.scm \
|
||||
gnu/packages/ocaml.scm \
|
||||
gnu/packages/oggvorbis.scm \
|
||||
gnu/packages/openldap.scm \
|
||||
gnu/packages/openssl.scm \
|
||||
gnu/packages/parted.scm \
|
||||
gnu/packages/patchelf.scm \
|
||||
gnu/packages/pcre.scm \
|
||||
gnu/packages/pdf.scm \
|
||||
gnu/packages/perl.scm \
|
||||
gnu/packages/pkg-config.scm \
|
||||
gnu/packages/popt.scm \
|
||||
gnu/packages/pth.scm \
|
||||
gnu/packages/python.scm \
|
||||
gnu/packages/qemu.scm \
|
||||
gnu/packages/ratpoison.scm \
|
||||
gnu/packages/readline.scm \
|
||||
gnu/packages/recutils.scm \
|
||||
gnu/packages/rsync.scm \
|
||||
gnu/packages/samba.scm \
|
||||
gnu/packages/scheme.scm \
|
||||
gnu/packages/screen.scm \
|
||||
gnu/packages/shishi.scm \
|
||||
gnu/packages/smalltalk.scm \
|
||||
gnu/packages/sqlite.scm \
|
||||
gnu/packages/ssh.scm \
|
||||
gnu/packages/subversion.scm \
|
||||
gnu/packages/system.scm \
|
||||
gnu/packages/tcl.scm \
|
||||
gnu/packages/tcsh.scm \
|
||||
gnu/packages/texinfo.scm \
|
||||
gnu/packages/texlive.scm \
|
||||
gnu/packages/time.scm \
|
||||
gnu/packages/tmux.scm \
|
||||
gnu/packages/tor.scm \
|
||||
gnu/packages/version-control.scm \
|
||||
gnu/packages/vim.scm \
|
||||
gnu/packages/vpn.scm \
|
||||
gnu/packages/w3m.scm \
|
||||
gnu/packages/wdiff.scm \
|
||||
gnu/packages/wget.scm \
|
||||
gnu/packages/which.scm \
|
||||
gnu/packages/xml.scm \
|
||||
gnu/packages/xorg.scm \
|
||||
gnu/packages/zile.scm \
|
||||
gnu/packages/zip.scm \
|
||||
gnu/system/vm.scm
|
||||
$(GNU_SYSTEM_MODULES)
|
||||
|
||||
# Because of the autoload hack in (guix build download), we must build it
|
||||
# first to avoid errors on systems where (gnutls) is unavailable.
|
||||
guix/scripts/download.go: guix/build/download.go
|
||||
|
||||
|
||||
GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go
|
||||
|
||||
nobase_dist_guilemodule_DATA = $(MODULES)
|
||||
|
||||
patchdir = $(guilemoduledir)/gnu/packages/patches
|
||||
dist_patch_DATA = \
|
||||
gnu/packages/patches/automake-skip-amhello-tests.patch \
|
||||
gnu/packages/patches/bigloo-gc-shebangs.patch \
|
||||
gnu/packages/patches/binutils-ld-new-dtags.patch \
|
||||
gnu/packages/patches/cmake-fix-tests.patch \
|
||||
gnu/packages/patches/cpio-gets-undeclared.patch \
|
||||
gnu/packages/patches/diffutils-gets-undeclared.patch \
|
||||
gnu/packages/patches/emacs-configure-sh.patch \
|
||||
gnu/packages/patches/findutils-absolute-paths.patch \
|
||||
gnu/packages/patches/flac-fix-memcmp-not-declared.patch \
|
||||
gnu/packages/patches/flex-bison-tests.patch \
|
||||
gnu/packages/patches/gawk-shell.patch \
|
||||
gnu/packages/patches/gcc-cross-environment-variables.patch \
|
||||
gnu/packages/patches/gettext-gets-undeclared.patch \
|
||||
gnu/packages/patches/glib-tests-desktop.patch \
|
||||
gnu/packages/patches/glib-tests-homedir.patch \
|
||||
gnu/packages/patches/glib-tests-prlimit.patch \
|
||||
gnu/packages/patches/glib-tests-timezone.patch \
|
||||
gnu/packages/patches/glibc-bootstrap-system.patch \
|
||||
gnu/packages/patches/glibc-no-ld-so-cache.patch \
|
||||
gnu/packages/patches/grub-gets-undeclared.patch \
|
||||
gnu/packages/patches/guile-1.8-cpp-4.5.patch \
|
||||
gnu/packages/patches/guile-default-utf8.patch \
|
||||
gnu/packages/patches/guile-linux-syscalls.patch \
|
||||
gnu/packages/patches/guile-relocatable.patch \
|
||||
gnu/packages/patches/libapr-skip-getservbyname-test.patch \
|
||||
gnu/packages/patches/libevent-dns-tests.patch \
|
||||
gnu/packages/patches/libtool-skip-tests.patch \
|
||||
gnu/packages/patches/lsh-guile-compat.patch \
|
||||
gnu/packages/patches/lsh-no-root-login.patch \
|
||||
gnu/packages/patches/lsh-pam-service-name.patch \
|
||||
gnu/packages/patches/m4-gets-undeclared.patch \
|
||||
gnu/packages/patches/m4-readlink-EINVAL.patch \
|
||||
gnu/packages/patches/m4-s_isdir.patch \
|
||||
gnu/packages/patches/make-impure-dirs.patch \
|
||||
gnu/packages/patches/mcron-install.patch \
|
||||
gnu/packages/patches/perl-no-sys-dirs.patch \
|
||||
gnu/packages/patches/python-fix-dbm.patch \
|
||||
gnu/packages/patches/procps-make-3.82.patch \
|
||||
gnu/packages/patches/qemu-multiple-smb-shares.patch \
|
||||
gnu/packages/patches/readline-link-ncurses.patch \
|
||||
gnu/packages/patches/scheme48-tests.patch \
|
||||
gnu/packages/patches/tar-gets-undeclared.patch \
|
||||
gnu/packages/patches/tcsh-fix-autotest.patch \
|
||||
gnu/packages/patches/teckit-cstdio.patch \
|
||||
gnu/packages/patches/vpnc-script.patch \
|
||||
gnu/packages/patches/w3m-fix-compile.patch \
|
||||
gnu/packages/patches/xpdf-constchar.patch
|
||||
|
||||
bootstrapdir = $(guilemoduledir)/gnu/packages/bootstrap
|
||||
bootstrap_x86_64_linuxdir = $(bootstrapdir)/x86_64-linux
|
||||
bootstrap_i686_linuxdir = $(bootstrapdir)/i686-linux
|
||||
|
||||
dist_bootstrap_x86_64_linux_DATA = \
|
||||
gnu/packages/bootstrap/x86_64-linux/bash \
|
||||
gnu/packages/bootstrap/x86_64-linux/mkdir \
|
||||
gnu/packages/bootstrap/x86_64-linux/tar \
|
||||
gnu/packages/bootstrap/x86_64-linux/xz
|
||||
|
||||
dist_bootstrap_i686_linux_DATA = \
|
||||
gnu/packages/bootstrap/i686-linux/bash \
|
||||
gnu/packages/bootstrap/i686-linux/mkdir \
|
||||
gnu/packages/bootstrap/i686-linux/tar \
|
||||
gnu/packages/bootstrap/i686-linux/xz
|
||||
|
||||
# Big bootstrap binaries are not included in the tarball. Instead, they
|
||||
# are downloaded.
|
||||
nodist_bootstrap_x86_64_linux_DATA = \
|
||||
gnu/packages/bootstrap/x86_64-linux/guile-2.0.7.tar.xz
|
||||
nodist_bootstrap_i686_linux_DATA = \
|
||||
gnu/packages/bootstrap/i686-linux/guile-2.0.7.tar.xz
|
||||
|
||||
# Those files must remain executable, so they remain executable once
|
||||
# imported into the store.
|
||||
install-data-hook:
|
||||
chmod +x $(DESTDIR)$(bootstrapdir)/*/{bash,mkdir,tar,xz}
|
||||
|
||||
DISTCLEANFILES = \
|
||||
$(nodist_bootstrap_x86_64_linux_DATA) \
|
||||
$(nodist_bootstrap_i686_linux_DATA)
|
||||
|
||||
# Method to download a file from an external source.
|
||||
DOWNLOAD_FILE = \
|
||||
GUILE_LOAD_COMPILED_PATH="$(top_builddir):$$GUILE_LOAD_COMPILED_PATH" \
|
||||
$(GUILE) --no-auto-compile -L "$(top_builddir)" -L "$(top_srcdir)" \
|
||||
"$(top_srcdir)/build-aux/download.scm"
|
||||
|
||||
gnu/packages/bootstrap/x86_64-linux/guile-2.0.7.tar.xz:
|
||||
$(MKDIR_P) `dirname "$@"`
|
||||
$(DOWNLOAD_FILE) "$@" "bc43210dcd146d242bef4d354b0aeac12c4ef3118c07502d17ffa8d49e15aa2c"
|
||||
gnu/packages/bootstrap/i686-linux/guile-2.0.7.tar.xz:
|
||||
$(MKDIR_P) `dirname "$@"`
|
||||
$(DOWNLOAD_FILE) "$@" "f9a7c6f4c556eaafa2a69bcf07d4ffbb6682ea831d4c9da9ba095aca3ccd217c"
|
||||
|
||||
nobase_nodist_guilemodule_DATA = $(GOBJECTS) guix/config.scm
|
||||
|
||||
# Do we need to provide our own non-broken (srfi srfi-37) module?
|
||||
if INSTALL_SRFI_37
|
||||
|
||||
nobase_nodist_guilemodule_DATA += srfi/srfi-37.scm
|
||||
GOBJECTS += srfi/srfi-37.go
|
||||
|
||||
srfi/srfi-37.scm: srfi/srfi-37.scm.in
|
||||
$(MKDIR_P) srfi
|
||||
cp "$<" "$@"
|
||||
|
||||
endif INSTALL_SRFI_37
|
||||
|
||||
|
||||
SCM_TESTS = \
|
||||
tests/base32.scm \
|
||||
tests/hash.scm \
|
||||
tests/builders.scm \
|
||||
tests/derivations.scm \
|
||||
tests/ui.scm \
|
||||
@@ -330,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
|
||||
@@ -355,9 +149,13 @@ EXTRA_DIST = \
|
||||
ROADMAP \
|
||||
TODO \
|
||||
.dir-locals.el \
|
||||
hydra.scm \
|
||||
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 \
|
||||
build-aux/sync-synopses.scm \
|
||||
srfi/srfi-37.scm.in \
|
||||
srfi/srfi-64.scm \
|
||||
srfi/srfi-64.upstream.scm \
|
||||
tests/test.drv \
|
||||
@@ -397,8 +195,7 @@ $(guix_install_go_files): install-nobase_dist_guilemoduleDATA
|
||||
|
||||
SUBDIRS = po
|
||||
|
||||
info_TEXINFOS = doc/guix.texi
|
||||
EXTRA_DIST += doc/fdl-1.3.texi
|
||||
include doc.am
|
||||
|
||||
if BUILD_DAEMON
|
||||
|
||||
@@ -413,6 +210,7 @@ AM_DISTCHECK_CONFIGURE_FLAGS = \
|
||||
--enable-daemon
|
||||
|
||||
dist-hook: sync-synopses gen-ChangeLog assert-no-store-file-names
|
||||
distcheck-hook: assert-binaries-available
|
||||
|
||||
sync-synopses:
|
||||
-$(top_builddir)/pre-inst-env $(GUILE) \
|
||||
@@ -435,4 +233,10 @@ assert-no-store-file-names:
|
||||
exit 1 ; \
|
||||
fi
|
||||
|
||||
.PHONY: sync-synopses gen-ChangeLog assert-no-store-file-names
|
||||
# Make sure hydra.gnu.org has the important binaries.
|
||||
assert-binaries-available:
|
||||
$(top_builddir)/pre-inst-env "$(GUILE)" \
|
||||
"$(top_srcdir)/build-aux/check-available-binaries.scm"
|
||||
|
||||
.PHONY: sync-synopses gen-ChangeLog
|
||||
.PHONY: assert-no-store-file-names assert-binaries-available
|
||||
|
||||
@@ -10,6 +10,230 @@ 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)
|
||||
|
||||
** Package management
|
||||
|
||||
*** Cross-compilation support
|
||||
|
||||
Guix can now cross-build packages. On the command-line, this is achieved with
|
||||
the new ‘--target’ command-line option of ‘guix build’. At the Scheme level,
|
||||
the guts of this is the ‘package-cross-derivation’ procedure. Core packages
|
||||
of the distribution can already be cross-compiled. See the manual for
|
||||
details.
|
||||
|
||||
*** New ‘--max-silent-time’ option for “guix build” and “guix package”
|
||||
|
||||
See the manual for details.
|
||||
|
||||
*** New ‘--fallback’ option for “guix build” and “guix package”
|
||||
|
||||
This option instructs to fall back to local builds when the substituter fails
|
||||
to download a substitute.
|
||||
|
||||
*** New ‘--requisites’ option for “guix gc”
|
||||
|
||||
See the manual for details.
|
||||
|
||||
*** New ‘--key-download’ option for “guix refresh”
|
||||
|
||||
See the manual for details.
|
||||
|
||||
** Programming interfaces
|
||||
|
||||
*** New ‘package-cross-derivation’ procedure in (guix derivations)
|
||||
|
||||
See the manual for details.
|
||||
|
||||
*** New ‘%current-target-system’ SRFI-39 parameter
|
||||
|
||||
This parameter is like ‘%current-system’, but for cross-compilation. It
|
||||
allows code in package definitions (such as in the ‘arguments’ field) to know
|
||||
whether it is being cross-compiled, and what the target system is.
|
||||
|
||||
*** New (guix hash) module; new ‘open-sha256-port’ and ‘sha256-port’ procedures
|
||||
|
||||
This improves performance of SHA256 computations.
|
||||
|
||||
|
||||
** GNU distribution
|
||||
|
||||
*** 33 new packages
|
||||
|
||||
alsa-lib, babel, cairo, cvs, gcal, gcc-cross-mips64el-linux-gnuabi64, gd,
|
||||
gdk-pixbuf, graphviz, grue-hunter, gtk+, gts, harfbuzz, imagemagick, iproute2,
|
||||
iptables, libspectre, mpg321, noweb, pango, plotutils, privoxy, pytz, racket,
|
||||
rubber, rush, strace, tk, torsocks, unrtf, vc-dwim, wordnet, xlockmore
|
||||
|
||||
*** 25 package updates
|
||||
|
||||
automake 1.14, ed 1.9, freeipmi 1.2.8, gawk 4.1.0, gcc 4.8.1, gettext 0.18.3,
|
||||
glib 2.37.1, gmp 5.1.2, gnutls 3.2.1, gzip 1.6, help2man 1.43.3, libapr 1.4.8,
|
||||
libaprutil 1.5.2, libassuan 2.1.1, libffi 3.0.13, libgc 7.2d, libgpg-error
|
||||
1.12, libidn 1.28, libpng 1.5.17, lout 3.40, lsh 2.1, nettle 2.7.1, qemu
|
||||
1.5.1, tzdata 2013d, xorriso 1.3.0
|
||||
|
||||
*** Binary packages now available for i686-linux
|
||||
|
||||
The build farm at http://hydra.gnu.org now provides 32-bit GNU/Linux binaries
|
||||
(i686-linux), in addition to the x86_64-linux binaries. Both can be
|
||||
transparently used as substitutes for local builds on these platforms.
|
||||
|
||||
*** Debug info packages
|
||||
|
||||
Some packages now have a “debug” output containing debugging information. The
|
||||
“debug” output can be used by GDB, and can be installed separately from the
|
||||
other outputs of the package. See “Installing Debugging Files” in the manual.
|
||||
|
||||
*** Bootstrap binaries can be cross-compiled
|
||||
|
||||
The distribution can now be ported to new architectures (currently
|
||||
GNU/Linux-only) by cross-compiling the “bootstrap binaries”. See “Porting”
|
||||
in the manual.
|
||||
|
||||
*** Bootstrapping documented
|
||||
|
||||
See “Bootstrapping” in the manual, for information on how the GNU
|
||||
distribution builds “from scratch”.
|
||||
|
||||
** Internationalization
|
||||
|
||||
New translations: eo, pt_BR.
|
||||
|
||||
** Bugs fixed
|
||||
*** “guix --help” now works when using Guile 2.0.5
|
||||
*** Binary substituter multi-threading and pipe issues fixed
|
||||
|
||||
These could lead to random substituter crashes while substituting a binary.
|
||||
See commits 0332386 and 101d9f3 for details.
|
||||
|
||||
*** Binary substituter gracefully handles lack of network connectivity
|
||||
|
||||
*** Daemon properly handles rebuilds of multiple-output derivations
|
||||
|
||||
Previously it would fail when rebuilding a multiple-output derivation when
|
||||
some (but not all) of its outputs were already present. See
|
||||
http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00038.html and
|
||||
https://github.com/NixOS/nix/issues/122 .
|
||||
|
||||
*** ‘guix package -i foo:out’ no longer removes other outputs of ‘foo’
|
||||
|
||||
Previously only the ‘out’ output of package ‘foo’ would be kept in the
|
||||
profile.
|
||||
|
||||
*** Replacement (srfi srfi-37) provided if the user’s one is broken
|
||||
|
||||
When the user’s (srfi srfi-37) is affected by http://bugs.gnu.org/13176 (Guile
|
||||
< 2.0.9), a replacement with the bug fix is provided. This bug would affect
|
||||
command-line argument processing in some cases.
|
||||
|
||||
* Changes in 0.2 (since 0.1)
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ Guix is based on the [[http://nixos.org/nix/][Nix]] package manager.
|
||||
|
||||
GNU Guix currently depends on the following packages:
|
||||
|
||||
- [[http://gnu.org/software/guile/][GNU Guile 2.0.x]]
|
||||
- [[http://gnu.org/software/guile/][GNU Guile 2.0.x]], version 2.0.5 or later
|
||||
- [[http://gnupg.org/][GNU libgcrypt]]
|
||||
|
||||
Unless `--disable-daemon' was passed, the following packages are needed:
|
||||
@@ -33,32 +33,47 @@ 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]].
|
||||
|
||||
The "autoreconf -vi" command can be used to generate the build system
|
||||
infrastructure; it reports an error if an inappropriate version of the
|
||||
above packages is being used.
|
||||
For information on installation from a Git checkout, please see the ‘HACKING’
|
||||
file.
|
||||
|
||||
* Installing Guix from Guix
|
||||
|
||||
You can re-build and re-install Guix using a system that already runs Guix.
|
||||
To do so:
|
||||
|
||||
- install the dependencies (see 'Requirements' above) using Guix
|
||||
- Install the dependencies (see 'Requirements' above) and build tools using
|
||||
Guix. You should have the following packages installed in your user
|
||||
profile:
|
||||
|
||||
- autoconf
|
||||
- automake
|
||||
- bzip2
|
||||
- gcc
|
||||
- gettext
|
||||
- glibc
|
||||
- guile
|
||||
- ld-wrapper
|
||||
- libgcrypt
|
||||
- pkg-config
|
||||
- sqlite
|
||||
|
||||
- set the environment variables that Guix recommends you to set during the
|
||||
package installation process:
|
||||
ACLOCAL, CPATH, LIBRARY_PATH, PATH, PKG_CONFIG_PATH
|
||||
In addition, set
|
||||
GUIX_LD_WRAPPER_ALLOW_IMPURITIES=yes
|
||||
|
||||
- re-run the configure script passing it the option
|
||||
`--with-libgcrypt-prefix=$HOME/.guix-profile/'
|
||||
|
||||
- run "make" and "make install"
|
||||
|
||||
* How It Works
|
||||
|
||||
@@ -3,11 +3,21 @@ Transposing functional programming discipline to package management
|
||||
proved to be inspiring and fruitful.
|
||||
|
||||
Thanks to the following people who contributed to GNU Guix through
|
||||
suggestions, bug reports, patches, or general infrastructure help:
|
||||
suggestions, bug reports, patches, internationalization, or general
|
||||
infrastructure help:
|
||||
|
||||
Lluís Batlle i Rossell <viric@viric.name>
|
||||
Felipe Castro <fefcas@gmail.com>
|
||||
Daniel Clark <dclark@pobox.com>
|
||||
Alexandru Cojocaru <xojoc@gmx.com>
|
||||
Aleix Conchillo Flaqué <aconchillo@gmail.com>
|
||||
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>
|
||||
|
||||
@@ -41,8 +41,10 @@ Like scripts/build-remote.pl in Nix.
|
||||
* user interface
|
||||
** Add a package.el (Emacs) back-end
|
||||
|
||||
Unfortunately package.el is monolithic, so most likely we’d have to
|
||||
write a new one based on it, as opposed to actually using it.
|
||||
package.el is quite monolithic, but we may be able to reuse/extend
|
||||
‘package-menu-mode’ or at least ‘tabulated-list-mode’.
|
||||
|
||||
** add guile-ncurses interface
|
||||
|
||||
* extend <origin>
|
||||
** add OpenPGP signatures:
|
||||
@@ -57,6 +59,12 @@ write a new one based on it, as opposed to actually using it.
|
||||
|
||||
* extend <package>
|
||||
|
||||
** add ‘recommends’ field
|
||||
|
||||
For instance, glibc, binutils, gcc, and ld-wrapper would recommend each other.
|
||||
‘guix package -i’ could ask interactively (?), or allow users to follow all or
|
||||
none of the recommendations.
|
||||
|
||||
** add a ‘user-environment-hook’
|
||||
|
||||
This should specify builder code to be run when building a user
|
||||
@@ -76,6 +84,7 @@ create a new ‘dir’.
|
||||
("i3" ,p3)))
|
||||
#+END_SRC
|
||||
|
||||
|
||||
* synchronize package descriptions with GSRC and/or the [[http://directory.fsf.org][FSD]]
|
||||
|
||||
Meta-data for GNU packages, including descriptions and synopses, can be
|
||||
@@ -83,11 +92,8 @@ dumped from the FSD:
|
||||
http://directory.fsf.org/wiki?title=GNU/Export&action=purge .
|
||||
We could periodically synchronize with that.
|
||||
|
||||
* support cross-compilation
|
||||
|
||||
Implement ‘package-cross-derivation’, and add the corresponding code in
|
||||
‘gnu-build-system’. Then, actually bootstrap a cross-compilation
|
||||
environment–e.g., a cross-GNU environment.
|
||||
See http://lists.gnu.org/archive/html/bug-guix/2013-04/msg00120.html for info
|
||||
on how to synchronize with GSRC's descriptions.
|
||||
|
||||
* add a guildhall build system
|
||||
|
||||
@@ -95,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
|
||||
@@ -123,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’
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;;
|
||||
;;; Check whether important binaries are available at hydra.gnu.org.
|
||||
;;;
|
||||
|
||||
(use-modules (guix store)
|
||||
(guix packages)
|
||||
(guix derivations)
|
||||
(gnu packages emacs)
|
||||
(gnu packages make-bootstrap)
|
||||
(srfi srfi-1)
|
||||
(srfi srfi-26))
|
||||
|
||||
(define %supported-systems
|
||||
'("x86_64-linux" "i686-linux"))
|
||||
|
||||
(let* ((store (open-connection))
|
||||
(native (append-map (lambda (system)
|
||||
(map (cut package-derivation store <> system)
|
||||
(list %bootstrap-tarballs emacs)))
|
||||
%supported-systems))
|
||||
(cross (map (cut package-cross-derivation store
|
||||
%bootstrap-tarballs <>)
|
||||
'("mips64el-linux-gnuabi64")))
|
||||
(total (append native cross)))
|
||||
(define (warn proc)
|
||||
(lambda (drv)
|
||||
(or (proc drv)
|
||||
(begin
|
||||
(format (current-error-port) "~a is not substitutable~%"
|
||||
drv)
|
||||
#f))))
|
||||
|
||||
(let ((result (every (compose (warn (cut has-substitutes? store <>))
|
||||
derivation->output-path)
|
||||
total)))
|
||||
(when result
|
||||
(format (current-error-port) "~a packages found substitutable~%"
|
||||
(length total)))
|
||||
(exit result)))
|
||||
@@ -25,7 +25,8 @@
|
||||
(web client)
|
||||
(rnrs io ports)
|
||||
(srfi srfi-11)
|
||||
(guix utils))
|
||||
(guix utils)
|
||||
(guix hash))
|
||||
|
||||
(define %url-base
|
||||
"http://alpha.gnu.org/gnu/guix/bootstrap"
|
||||
|
||||
@@ -0,0 +1,159 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;;
|
||||
;;; This file defines build jobs 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 derivations)
|
||||
((guix utils) #:select (%current-system))
|
||||
(gnu packages)
|
||||
(gnu packages base)
|
||||
(gnu packages gawk)
|
||||
(gnu packages guile)
|
||||
(gnu packages gettext)
|
||||
(gnu packages multiprecision)
|
||||
(gnu packages make-bootstrap)
|
||||
(srfi srfi-1)
|
||||
(srfi srfi-26)
|
||||
(ice-9 match))
|
||||
|
||||
;; 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 (package-job store job-name package system)
|
||||
"Return a job called JOB-NAME that builds PACKAGE on SYSTEM."
|
||||
(let ((job-name (symbol-append job-name (string->symbol ".")
|
||||
(string->symbol system))))
|
||||
`(,job-name . ,(cut package->alist store package system))))
|
||||
|
||||
(define (package-cross-job store job-name package target system)
|
||||
"Return a job called TARGET.JOB-NAME that cross-builds PACKAGE for TARGET on
|
||||
SYSTEM."
|
||||
`(,(symbol-append (string->symbol target) (string->symbol ".") job-name
|
||||
(string->symbol ".") (string->symbol system)) .
|
||||
,(cute package->alist store package system
|
||||
(cut package-cross-derivation <> <> target <>))))
|
||||
|
||||
(define %core-packages
|
||||
(list gmp mpfr mpc coreutils findutils diffutils patch sed grep
|
||||
gawk gettext hello guile-2.0
|
||||
%bootstrap-binaries-tarball
|
||||
%binutils-bootstrap-tarball
|
||||
%glibc-bootstrap-tarball
|
||||
%gcc-bootstrap-tarball
|
||||
%guile-bootstrap-tarball
|
||||
%bootstrap-tarballs))
|
||||
|
||||
(define %packages-to-cross-build
|
||||
%core-packages)
|
||||
|
||||
(define %cross-targets
|
||||
'("mips64el-linux-gnu"
|
||||
"mips64el-linux-gnuabi64"))
|
||||
|
||||
(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 subset
|
||||
(match (assoc-ref arguments 'subset)
|
||||
("core" 'core) ; only build core packages
|
||||
(_ 'all))) ; build everything
|
||||
|
||||
(define job-name
|
||||
(compose string->symbol package-full-name))
|
||||
|
||||
(define (cross-jobs system)
|
||||
(append-map (lambda (target)
|
||||
(map (lambda (package)
|
||||
(package-cross-job store (job-name package)
|
||||
package target system))
|
||||
%packages-to-cross-build))
|
||||
%cross-targets))
|
||||
|
||||
;; Return one job for each package, except bootstrap packages.
|
||||
(let ((base-packages (delete-duplicates
|
||||
(append-map (match-lambda
|
||||
((_ package _ ...)
|
||||
(match (package-transitive-inputs
|
||||
package)
|
||||
(((_ inputs _ ...) ...)
|
||||
inputs))))
|
||||
%final-inputs))))
|
||||
(append-map (lambda (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))))))
|
||||
Executable
+370
@@ -0,0 +1,370 @@
|
||||
#!/bin/sh
|
||||
exec guile -l "$0" \
|
||||
-c '(apply (@ (list-packages) list-packages)
|
||||
(cdr (command-line)))'
|
||||
!#
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2013 Alex Sassmannshausen <alex.sassmannshausen@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (list-packages)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix licenses)
|
||||
#:use-module (guix gnu-maintenance)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (sxml simple)
|
||||
#:use-module (sxml fold)
|
||||
#:use-module (web uri)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:export (list-packages))
|
||||
|
||||
;;; Commentary:
|
||||
;;;
|
||||
;;; Emit an HTML representation of the packages available in GNU Guix.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(define lookup-gnu-package
|
||||
(let ((gnu (official-gnu-packages)))
|
||||
(lambda (name)
|
||||
"Return the package description for GNU package NAME, or #f."
|
||||
(find (lambda (package)
|
||||
(equal? (gnu-package-name package) name))
|
||||
gnu))))
|
||||
|
||||
(define (package->sxml package 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
|
||||
(string-append "http://git.savannah.gnu.org/cgit/guix.git/tree/"
|
||||
(location-file loc) "#n"
|
||||
(number->string (location-line loc))))))
|
||||
|
||||
(define (license package)
|
||||
(define ->sxml
|
||||
(match-lambda
|
||||
((lst ...)
|
||||
`(div ,(map ->sxml lst)))
|
||||
((? license? license)
|
||||
(let ((uri (license-uri license)))
|
||||
(case (and=> (and uri (string->uri uri)) uri-scheme)
|
||||
((http https)
|
||||
`(div (a (@ (href ,uri)
|
||||
(title "Link to the full license"))
|
||||
,(license-name license))))
|
||||
(else
|
||||
`(div ,(license-name license) " ("
|
||||
,(license-comment license) ")")))))
|
||||
(#f "")))
|
||||
|
||||
(->sxml (package-license package)))
|
||||
|
||||
(define (status package)
|
||||
(define (url system)
|
||||
`(a (@ (href ,(string-append "http://hydra.gnu.org/job/gnu/master/"
|
||||
(package-full-name package) "."
|
||||
system))
|
||||
(title "View the status of this architecture's build at Hydra"))
|
||||
,system))
|
||||
|
||||
`(div "status: "
|
||||
,(url "x86_64-linux") " "
|
||||
,(url "i686-linux")))
|
||||
|
||||
(define (package-logo name)
|
||||
(and=> (lookup-gnu-package name)
|
||||
gnu-package-logo))
|
||||
|
||||
(define (insert-tr description-id js?)
|
||||
(define (insert-js-call description-ids)
|
||||
"Return an sxml call to prep_pkg_descs, with up to 15 elements of
|
||||
description-ids as formal parameters."
|
||||
`(script (@ (type "text/javascript"))
|
||||
,(format #f "prep_pkg_descs(~a)"
|
||||
(string-append "'"
|
||||
(string-join description-ids "', '")
|
||||
"'"))))
|
||||
|
||||
(let ((description-ids (cons description-id description-ids)))
|
||||
`(tr (td ,(if (gnu-package? package)
|
||||
`(img (@ (src "/graphics/gnu-head-mini.png")
|
||||
(alt "Part of GNU")
|
||||
(title "Part of GNU")))
|
||||
""))
|
||||
(td (a (@ (href ,(source-url package))
|
||||
(title "Link to the Guix package source code"))
|
||||
,(package-name package) " "
|
||||
,(package-version package)))
|
||||
(td (span ,(package-synopsis package))
|
||||
(div (@ (id ,description-id))
|
||||
,(match (package-logo (package-name package))
|
||||
((? string? url)
|
||||
`(img (@ (src ,url)
|
||||
(height "35")
|
||||
(class "package-logo")
|
||||
(alt ("Logo of " ,(package-name package))))))
|
||||
(_ #f))
|
||||
(p ,(package-description package))
|
||||
,(license package)
|
||||
(a (@ (href ,(package-home-page package))
|
||||
(title "Link to the package's website"))
|
||||
,(package-home-page package))
|
||||
,(status package)
|
||||
,(if js?
|
||||
(insert-js-call description-ids)
|
||||
""))))))
|
||||
|
||||
(let ((description-id (symbol->string
|
||||
(gensym (package-name 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 (@ (id "intro"))
|
||||
(div
|
||||
(img (@ (src "graphics/guix-logo.small.png")
|
||||
(alt "GNU Guix and the GNU System")
|
||||
(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)
|
||||
"Return an HTML page listing all the packages found in the GNU distribution,
|
||||
with gnu.org server-side include and all that."
|
||||
;; Don't attempt to translate descriptions.
|
||||
(setlocale LC_ALL "C")
|
||||
|
||||
;; Output the page as UTF-8 since that's what the gnu.org server-side
|
||||
;; headers claim.
|
||||
(set-port-encoding! (current-output-port) "UTF-8")
|
||||
|
||||
(let ((packages (sort (fold-packages cons '())
|
||||
(lambda (p1 p2)
|
||||
(string<? (package-name p1) (package-name p2))))))
|
||||
(format #t "<!--#include virtual=\"/server/html5-header.html\" -->
|
||||
<!-- Parent-Version: 1.70 $ -->
|
||||
<title>GNU Guix - GNU Distribution - GNU Project</title>
|
||||
")
|
||||
(insert-css)
|
||||
(insert-js)
|
||||
(format #t "<!--#include virtual=\"/server/banner.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
|
||||
<a href=\"mailto:gnu@gnu.org\"><gnu@gnu.org></a>.
|
||||
There are also <a href=\"/contact/\">other ways to contact</a>
|
||||
the FSF. Broken links and other corrections or suggestions can be sent
|
||||
to <a href=\"mailto:bug-guix@gnu.org\"><bug-guix@gnu.org></a>.</p>
|
||||
|
||||
<p>Copyright © 2013 Free Software Foundation, Inc.</p>
|
||||
|
||||
<p>This page is licensed under a <a rel=\"license\"
|
||||
href=\"http://creativecommons.org/licenses/by-nd/3.0/us/\">Creative
|
||||
Commons Attribution-NoDerivs 3.0 United States License</a>.</p>
|
||||
|
||||
<p>Updated:
|
||||
<!-- timestamp start -->
|
||||
$Date$
|
||||
<!-- timestamp end -->
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
"))
|
||||
)
|
||||
|
||||
;;; list-packages.scm ends here
|
||||
+12
-3
@@ -2,12 +2,12 @@
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ(2.68)
|
||||
AC_INIT([GNU Guix], [0.2], [bug-guix@gnu.org], [guix],
|
||||
[http://gnu.org/software/guix/])
|
||||
AC_INIT([GNU Guix], [0.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])
|
||||
@@ -22,6 +22,7 @@ guilemoduledir="${datarootdir}/guile/site/2.0"
|
||||
AC_SUBST([guilemoduledir])
|
||||
|
||||
GUIX_SYSTEM_TYPE
|
||||
GUIX_ASSERT_SUPPORTED_SYSTEM
|
||||
|
||||
AC_ARG_WITH(store-dir,
|
||||
AC_HELP_STRING([--with-store-dir=PATH],
|
||||
@@ -50,6 +51,10 @@ fi
|
||||
dnl Make sure we have a full-fledged Guile.
|
||||
GUIX_ASSERT_GUILE_FEATURES([regex posix socket net-db threads])
|
||||
|
||||
dnl Check whether (srfi srfi-37) works, and provide our own if it doesn't.
|
||||
GUIX_CHECK_SRFI_37
|
||||
AM_CONDITIONAL([INSTALL_SRFI_37], [test "x$ac_cv_guix_srfi_37_broken" = xyes])
|
||||
|
||||
AC_ARG_WITH([nix-prefix],
|
||||
[AS_HELP_STRING([--with-nix-prefix=DIR], [search for Nix in DIR])],
|
||||
[case "$withval" in
|
||||
@@ -116,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
|
||||
+655
-74
@@ -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
|
||||
@@ -82,6 +87,7 @@ Documentation License.''
|
||||
* Programming Interface:: Using Guix in Scheme.
|
||||
* Utilities:: Package management commands.
|
||||
* GNU Distribution:: Software for your friendly GNU system.
|
||||
* Contributing:: Your help needed!
|
||||
|
||||
* Acknowledgments:: Thanks!
|
||||
* GNU Free Documentation License:: The license of this manual.
|
||||
@@ -96,8 +102,8 @@ Documentation License.''
|
||||
GNU Guix@footnote{``Guix'' is pronounced like ``geeks'', or ``ɡiːks''
|
||||
using the international phonetic alphabet (IPA).} is a functional
|
||||
package management tool for the GNU system. Package management consists
|
||||
in all the activities that relate to building packages from source,
|
||||
honoring the build-time and run-time dependencies on packages,
|
||||
of all activities that relate to building packages from sources,
|
||||
honoring their build-time and run-time dependencies,
|
||||
installing packages in user environments, upgrading installed packages
|
||||
to new versions or rolling back to a previous set, removing unused
|
||||
software packages, etc.
|
||||
@@ -105,17 +111,17 @@ software packages, etc.
|
||||
@cindex functional package management
|
||||
The term @dfn{functional} refers to a specific package management
|
||||
discipline. In Guix, the package build and installation process is seen
|
||||
as a function, in the mathematical sense: that function takes inputs,
|
||||
such as build scripts, a compiler, and libraries depended on, and
|
||||
returns the installed package. As a pure function, its result depends
|
||||
as a function, in the mathematical sense. That function takes inputs,
|
||||
such as build scripts, a compiler, and libraries, and
|
||||
returns an installed package. As a pure function, its result depends
|
||||
solely on its inputs---for instance, it cannot refer to software or
|
||||
scripts that were not explicitly passed as inputs. A build function
|
||||
always produces the same result when passed a given set of inputs. Last
|
||||
but not least, a build function cannot alter the system's environment in
|
||||
always produces the same result when passed a given set of inputs. It
|
||||
cannot alter the system's environment in
|
||||
any way; for instance, it cannot create, modify, or delete files outside
|
||||
of its build and installation directories. This is achieved by running
|
||||
build processes in dedicated ``chroots'', where only their explicit
|
||||
inputs are visible.
|
||||
build processes in isolated environments (or @dfn{chroots}), where only their
|
||||
explicit inputs are visible.
|
||||
|
||||
@cindex store
|
||||
The result of package build functions is @dfn{cached} in the file
|
||||
@@ -126,12 +132,11 @@ a hash of all the inputs used to build that package; thus, changing an
|
||||
input yields a different directory name.
|
||||
|
||||
This approach is the foundation of Guix's salient features: support for
|
||||
transactional package upgrades and rollback, per-user installation, and
|
||||
transactional package upgrade and rollback, per-user installation, and
|
||||
garbage collection of packages (@pxref{Features}).
|
||||
|
||||
Guix has a command-line interface allowing users to build, install,
|
||||
Guix has a command-line interface, which allows users to build, install,
|
||||
upgrade, and remove packages, as well as a Scheme programming interface.
|
||||
The remainder of this manual describes them.
|
||||
|
||||
Last but not least, Guix is used to build a distribution of the GNU
|
||||
system, with many GNU and non-GNU free software packages. @xref{GNU
|
||||
@@ -162,7 +167,7 @@ is not covered here. Please see the files @file{README} and
|
||||
GNU Guix depends on the following packages:
|
||||
|
||||
@itemize
|
||||
@item @url{http://gnu.org/software/guile/, GNU Guile 2.0.x};
|
||||
@item @url{http://gnu.org/software/guile/, GNU Guile}, version 2.0.5 or later;
|
||||
@item @url{http://gnupg.org/, GNU libgcrypt}
|
||||
@end itemize
|
||||
|
||||
@@ -175,19 +180,20 @@ following packages are also needed:
|
||||
@item @url{http://gcc.gnu.org, GCC's g++}
|
||||
@end itemize
|
||||
|
||||
When a working installation of the Nix package manager is available, you
|
||||
When a working installation of @url{http://nixos.org/nix/, the Nix package
|
||||
manager} is available, you
|
||||
can instead configure Guix with @code{--disable-daemon}. In that case,
|
||||
@url{http://nixos.org/nix/, Nix} replaces the three dependencies above.
|
||||
Nix replaces the three dependencies above.
|
||||
|
||||
Guix is compatible with Nix, so it is possible to share the same store
|
||||
between both. To do so, you must pass @command{configure} not only the
|
||||
same @code{--with-store-dir} value, but also the same
|
||||
@code{--localstatedir} value (the latter is essential because it
|
||||
specifies where the database that store meta-data about the store is
|
||||
located, among other things.) The default values are
|
||||
@code{--localstatedir} value. The latter is essential because it
|
||||
specifies where the database that stores metadata about the store is
|
||||
located, among other things. The default values are
|
||||
@code{--with-store-dir=/nix/store} and @code{--localstatedir=/nix/var}.
|
||||
Note that @code{--disable-daemon} is orthogonal and is not required if
|
||||
your goal is to share the same store as Nix.
|
||||
Note that @code{--disable-daemon} is not required if
|
||||
your goal is to share the store with Nix.
|
||||
|
||||
@node Setting Up the Daemon
|
||||
@section Setting Up the Daemon
|
||||
@@ -243,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
|
||||
@@ -398,6 +415,7 @@ management tools it provides.
|
||||
@menu
|
||||
* Features:: How Guix will make your life brighter.
|
||||
* Invoking guix package:: Package installation, removal, etc.
|
||||
* Packages with Multiple Outputs:: Single source package, multiple outputs.
|
||||
* Invoking guix gc:: Running the garbage collector.
|
||||
* Invoking guix pull:: Fetching the latest Guix and distribution.
|
||||
@end menu
|
||||
@@ -490,7 +508,8 @@ directory is normally
|
||||
@var{localstatedir} is the value passed to @code{configure} as
|
||||
@code{--localstatedir}, and @var{user} is the user name. It must be
|
||||
created by @code{root}, with @var{user} as the owner. When it does not
|
||||
exist, @command{guix package} emits an error about it.
|
||||
exist, or is not owned by @var{user}, @command{guix package} emits an
|
||||
error about it.
|
||||
|
||||
The @var{options} can be among the following:
|
||||
|
||||
@@ -505,7 +524,8 @@ Install @var{package}.
|
||||
such as @code{guile-1.8.8}. If no version number is specified, the
|
||||
newest available version will be selected. In addition, @var{package}
|
||||
may contain a colon, followed by the name of one of the outputs of the
|
||||
package, as in @code{gcc:doc} or @code{binutils-2.22:lib}.
|
||||
package, as in @code{gcc:doc} or @code{binutils-2.22:lib}
|
||||
(@pxref{Packages with Multiple Outputs}).
|
||||
|
||||
@cindex propagated inputs
|
||||
Sometimes packages have @dfn{propagated inputs}: these are dependencies
|
||||
@@ -517,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
|
||||
@@ -563,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
|
||||
@@ -594,8 +613,13 @@ Use @var{profile} instead of the user's default profile.
|
||||
@itemx -n
|
||||
Show what would be done without actually doing it.
|
||||
|
||||
@item --fallback
|
||||
When substituting a pre-built binary fails, fall back to building
|
||||
packages locally.
|
||||
|
||||
@item --no-substitutes
|
||||
Build instead of resorting to pre-built substitutes.
|
||||
@itemx --max-silent-time=@var{seconds}
|
||||
Same as for @command{guix build} (@pxref{Invoking guix build}).
|
||||
|
||||
@item --verbose
|
||||
Produce verbose output. In particular, emit the environment's build log
|
||||
@@ -634,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
|
||||
@@ -651,12 +675,115 @@ List packages currently available in the software distribution
|
||||
installed packages whose name matches @var{regexp}.
|
||||
|
||||
For each package, print the following items separated by tabs: its name,
|
||||
its version string, the parts of the package (@code{out} for the main
|
||||
files, @code{lib} for libraries and possibly headers, etc.), and the
|
||||
source location of its definition.
|
||||
its version string, the parts of the package (@pxref{Packages with
|
||||
Multiple Outputs}), and the source location of its definition.
|
||||
|
||||
@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
|
||||
@section Packages with Multiple Outputs
|
||||
|
||||
@cindex multiple-output packages
|
||||
@cindex package outputs
|
||||
|
||||
Often, packages defined in Guix have a single @dfn{output}---i.e., the
|
||||
source package leads exactly one directory in the store. When running
|
||||
@command{guix package -i glibc}, one installs the default output of the
|
||||
GNU libc package; the default output is called @code{out}, but its name
|
||||
can be omitted as shown in this command. In this particular case, the
|
||||
default output of @code{glibc} contains all the C header files, shared
|
||||
libraries, static libraries, Info documentation, and other supporting
|
||||
files.
|
||||
|
||||
Sometimes it is more appropriate to separate the various types of files
|
||||
produced from a single source package into separate outputs. For
|
||||
instance, the GLib C library (used by GTK+ and related packages)
|
||||
installs more than 20 MiB of reference documentation as HTML pages.
|
||||
To save space for users who do not need it, the documentation goes to a
|
||||
separate output, called @code{doc}. To install the main GLib output,
|
||||
which contains everything but the documentation, one would run:
|
||||
|
||||
@example
|
||||
guix package -i glib
|
||||
@end example
|
||||
|
||||
The command to install its documentation is:
|
||||
|
||||
@example
|
||||
guix package -i glib:doc
|
||||
@end example
|
||||
|
||||
Some packages install programs with different ``dependency footprints''.
|
||||
For instance, the WordNet package install both command-line tools and
|
||||
graphical user interfaces (GUIs). The former depend solely on the C
|
||||
library, whereas the latter depend on Tcl/Tk and the underlying X
|
||||
libraries. In this case, we leave the command-line tools in the default
|
||||
output, whereas the GUIs are in a separate output. This allows users
|
||||
who do not need the GUIs to save space.
|
||||
|
||||
There are several such multiple-output packages in the GNU distribution.
|
||||
Other conventional output names include @code{lib} for libraries and
|
||||
possibly header files, @code{bin} for stand-alone programs, and
|
||||
@code{debug} for debugging information (@pxref{Installing Debugging
|
||||
Files}). The outputs of a packages are listed in the third column of
|
||||
the output of @command{guix package --list-available} (@pxref{Invoking
|
||||
guix package}).
|
||||
|
||||
|
||||
@node Invoking guix gc
|
||||
@section Invoking @command{guix gc}
|
||||
@@ -673,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
|
||||
@@ -715,6 +848,13 @@ In addition, the references among existing store files can be queried:
|
||||
List the references (respectively, the referrers) of store files given
|
||||
as arguments.
|
||||
|
||||
@item --requisites
|
||||
@itemx -R
|
||||
List the requisites of the store files passed as arguments. Requisites
|
||||
include the store files themselves, their references, and the references
|
||||
of these, recursively. In other words, the returned list is the
|
||||
@dfn{transitive closure} of the store files.
|
||||
|
||||
@end table
|
||||
|
||||
|
||||
@@ -907,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.,
|
||||
@@ -917,6 +1057,23 @@ must be a connection to the daemon, which operates on the store
|
||||
(@pxref{The Store}).
|
||||
@end deffn
|
||||
|
||||
@noindent
|
||||
@cindex cross-compilation
|
||||
Similarly, it is possible to compute a derivation that cross-builds a
|
||||
package for some other system:
|
||||
|
||||
@deffn {Scheme Procedure} package-cross-derivation @var{store} @
|
||||
@var{package} @var{target} [@var{system}]
|
||||
Return the @code{<derivation>} object of @var{package} cross-built from
|
||||
@var{system} to @var{target}.
|
||||
|
||||
@var{target} must be a valid GNU triplet denoting the target hardware
|
||||
and operating system, such as @code{"mips64el-linux-gnu"}
|
||||
(@pxref{Configuration Names, GNU configuration triplets,, configure, GNU
|
||||
Configure and Build System}).
|
||||
@end deffn
|
||||
|
||||
|
||||
@node The Store
|
||||
@section The Store
|
||||
|
||||
@@ -964,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
|
||||
@@ -1021,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
|
||||
@@ -1040,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,
|
||||
@@ -1077,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
|
||||
@@ -1092,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
|
||||
@@ -1179,6 +1340,12 @@ different personalities. For instance, passing
|
||||
@code{--system=i686-linux} on an @code{x86_64-linux} system allows users
|
||||
to build packages in a complete 32-bit environment.
|
||||
|
||||
@item --target=@var{triplet}
|
||||
@cindex cross-compilation
|
||||
Cross-build for @var{triplet}, which must be a valid GNU triplet, such
|
||||
as @code{"mips64el-linux-gnu"} (@pxref{Configuration Names, GNU
|
||||
configuration triplets,, configure, GNU Configure and Build System}).
|
||||
|
||||
@item --derivations
|
||||
@itemx -d
|
||||
Return the derivation paths, not the output paths, of the given
|
||||
@@ -1194,9 +1361,17 @@ the end of the build log. This is useful when debugging build issues.
|
||||
@itemx -n
|
||||
Do not build the derivations.
|
||||
|
||||
@item --fallback
|
||||
When substituting a pre-built binary fails, fall back to building
|
||||
packages locally.
|
||||
|
||||
@item --no-substitutes
|
||||
Build instead of resorting to pre-built substitutes.
|
||||
|
||||
@item --max-silent-time=@var{seconds}
|
||||
When the build or substitution process remains silent for more than
|
||||
@var{seconds}, terminate it and report a build failure.
|
||||
|
||||
@item --cores=@var{n}
|
||||
@itemx -c @var{n}
|
||||
Allow the use of up to @var{n} CPU cores for the build. The special
|
||||
@@ -1381,30 +1556,436 @@ guix package}):
|
||||
guix package --list-available
|
||||
@end example
|
||||
|
||||
The package definitions of the distribution may are provided by Guile
|
||||
modules in the @code{(gnu packages ...)} name space---for instance, the
|
||||
@code{(gnu packages emacs)} module exports a variable named
|
||||
@code{emacs}, which is bound to a @code{<package>} object
|
||||
(@pxref{Defining Packages}). The @code{(gnu packages)} module provides
|
||||
facilities for searching for packages.
|
||||
|
||||
The distribution is fully @dfn{bootstrapped} and @dfn{self-contained}:
|
||||
each package is built based solely on other packages in the
|
||||
distribution. The root of this dependency graph is a small set of
|
||||
@dfn{bootstrap binaries}, provided by the @code{(gnu packages
|
||||
bootstrap)} module. These are statically-linked binaries of the core
|
||||
tools without which building anything at all would be impossible.
|
||||
|
||||
|
||||
Our goal is to build a practical 100% free software distribution of
|
||||
Linux-based and other variants of GNU, with a focus on the promotion and
|
||||
tight integration of GNU components, and an emphasis on programs and
|
||||
tools that help users exert that freedom.
|
||||
|
||||
@menu
|
||||
* Installing Debugging Files:: Feeding the debugger.
|
||||
* Package Modules:: Packages from the programmer's viewpoint.
|
||||
* Packaging Guidelines:: Growing the distribution.
|
||||
* Bootstrapping:: GNU/Linux built from scratch.
|
||||
* Porting:: Targeting another platform or kernel.
|
||||
@end menu
|
||||
|
||||
Building this distribution is a cooperative effort, and you are invited
|
||||
to join! Please get in touch with us on @email{bug-guix@@gnu.org}. We
|
||||
to join! @ref{Contributing}, for information about how you can help.
|
||||
|
||||
|
||||
@node Installing Debugging Files
|
||||
@section Installing Debugging Files
|
||||
|
||||
Program binaries, as produced by the GCC compilers for instance, are
|
||||
typically written in the ELF format, with a section containing
|
||||
@dfn{debugging information}. Debugging information is what allows the
|
||||
debugger, GDB, to map binary code to source code; it is required to
|
||||
debug a compiled program in good conditions.
|
||||
|
||||
The problem with debugging information is that is takes up a fair amount
|
||||
of disk space. For example, debugging information for the GNU C Library
|
||||
weighs in at more than 60 MiB. Thus, as a user, keeping all the
|
||||
debugging info of all the installed programs is usually not an option.
|
||||
Yet, space savings should not come at the cost of an impediment to
|
||||
debugging---especially in the GNU system, which should make it easier
|
||||
for users to exert their computing freedom (@pxref{GNU Distribution}).
|
||||
|
||||
Thankfully, the GNU Binary Utilities (Binutils) and GDB provide a
|
||||
mechanism that allows users to get the best of both worlds: debugging
|
||||
information can be stripped from the binaries and stored in separate
|
||||
files. GDB is then able to load debugging information from those files,
|
||||
when they are available (@pxref{Separate Debug Files,,, gdb, Debugging
|
||||
with GDB}).
|
||||
|
||||
The GNU distribution takes advantage of this by storing debugging
|
||||
information in the @code{lib/debug} sub-directory of a separate package
|
||||
output unimaginatively called @code{debug} (@pxref{Packages with
|
||||
Multiple Outputs}). Users can choose to install the @code{debug} output
|
||||
of a package when they need it. For instance, the following command
|
||||
installs the debugging information for the GNU C Library and for GNU
|
||||
Guile:
|
||||
|
||||
@example
|
||||
guix package -i glibc:debug -i guile:debug
|
||||
@end example
|
||||
|
||||
GDB must then be told to look for debug files in the user's profile, by
|
||||
setting the @code{debug-file-directory} variable (consider setting it
|
||||
from the @file{~/.gdbinit} file, @pxref{Startup,,, gdb, Debugging with
|
||||
GDB}):
|
||||
|
||||
@example
|
||||
(gdb) set debug-file-directory ~/.guix-profile/lib/debug
|
||||
@end example
|
||||
|
||||
From there on, GDB will pick up debugging information from the
|
||||
@code{.debug} files under @file{~/.guix-profile/lib/debug}.
|
||||
|
||||
@c XXX: keep me up-to-date
|
||||
The @code{debug} output mechanism in Guix is implemented by the
|
||||
@code{gnu-build-system} (@pxref{Defining Packages}). Currently, it is
|
||||
opt-in---debugging information is available only for those packages
|
||||
whose definition explicitly declares a @code{debug} output. This may be
|
||||
changed to opt-out in the future, if our build farm servers can handle
|
||||
the load. To check whether a package has a @code{debug} output, use
|
||||
@command{guix package --list-available} (@pxref{Invoking guix package}).
|
||||
|
||||
|
||||
@node Package Modules
|
||||
@section Package Modules
|
||||
|
||||
From a programming viewpoint, the package definitions of the
|
||||
distribution are provided by Guile modules in the @code{(gnu packages
|
||||
...)} name space (@pxref{Modules, Guile modules,, guile, GNU Guile
|
||||
Reference Manual}). For instance, the @code{(gnu packages emacs)}
|
||||
module exports a variable named @code{emacs}, which is bound to a
|
||||
@code{<package>} object (@pxref{Defining Packages}). The @code{(gnu
|
||||
packages)} module provides facilities for searching for packages.
|
||||
|
||||
The distribution is fully @dfn{bootstrapped} and @dfn{self-contained}:
|
||||
each package is built based solely on other packages in the
|
||||
distribution. The root of this dependency graph is a small set of
|
||||
@dfn{bootstrap binaries}, provided by the @code{(gnu packages
|
||||
bootstrap)} module. For more information on bootstrapping,
|
||||
@ref{Bootstrapping}.
|
||||
|
||||
@node 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. @xref{Contributing}, for additional information on how you can
|
||||
help.
|
||||
|
||||
Free software packages are usually distributed in the form of
|
||||
@dfn{source code tarballs}---typically @file{tar.gz} files that contain
|
||||
all the source files. Adding a package to the distribution means
|
||||
essentially two things: adding a @dfn{recipe} that describes how to
|
||||
build the package, including a list of other packages required to build
|
||||
it, and adding @dfn{package meta-data} along with that recipe, such as a
|
||||
description and licensing information.
|
||||
|
||||
In Guix all this information is embodied in @dfn{package definitions}.
|
||||
Package definitions provide a high-level view of the package. They are
|
||||
written using the syntax of the Scheme programming language; in fact,
|
||||
for each package we define a variable bound to the package definition,
|
||||
and export that variable from a module (@pxref{Package Modules}).
|
||||
However, in-depth Scheme knowledge is @emph{not} a prerequisite for
|
||||
creating packages. For more information on package definitions,
|
||||
@ref{Defining Packages}.
|
||||
|
||||
Once a package definition is in place, stored in a file in the Guix
|
||||
source tree, it can be tested using the @command{guix build} command
|
||||
(@pxref{Invoking guix build}). For example, assuming the new package is
|
||||
called @code{gnew}, you may run this command from the Guix build tree:
|
||||
|
||||
@example
|
||||
./pre-inst-env guix build gnew --keep-failed
|
||||
@end example
|
||||
|
||||
Using @code{--keep-failed} makes it easier to debug build failures since
|
||||
it provides access to the failed build tree.
|
||||
|
||||
Once your package builds correctly, please send us a patch
|
||||
(@pxref{Contributing}). Well, if you need help, we will be happy to
|
||||
help you too. Once the patch is committed in the Guix repository, the
|
||||
new package automatically gets built on the supported platforms by
|
||||
@url{http://hydra.gnu.org/gnu/master, our continuous integration
|
||||
system}.
|
||||
|
||||
@cindex substituter
|
||||
Users can obtain the new package definition simply by running
|
||||
@command{guix pull} (@pxref{Invoking guix pull}). When
|
||||
@code{hydra.gnu.org} is done building the package, installing the
|
||||
package automatically downloads binaries from there (except when using
|
||||
@code{--no-substitutes}). The only place where human intervention is
|
||||
needed is to review and apply the patch.
|
||||
|
||||
|
||||
@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
|
||||
|
||||
@c Adapted from the ELS 2013 paper.
|
||||
|
||||
@cindex bootstrapping
|
||||
|
||||
Bootstrapping in our context refers to how the distribution gets built
|
||||
``from nothing''. Remember that the build environment of a derivation
|
||||
contains nothing but its declared inputs (@pxref{Introduction}). So
|
||||
there's an obvious chicken-and-egg problem: how does the first package
|
||||
get built? How does the first compiler get compiled? Note that this is
|
||||
a question of interest only to the curious hacker, not to the regular
|
||||
user, so you can shamelessly skip this section if you consider yourself
|
||||
a ``regular user''.
|
||||
|
||||
@cindex bootstrap binaries
|
||||
The GNU system is primarily made of C code, with libc at its core. The
|
||||
GNU build system itself assumes the availability of a Bourne shell and
|
||||
command-line tools provided by GNU Coreutils, Awk, Findutils, `sed', and
|
||||
`grep'. Furthermore, build programs---programs that run
|
||||
@code{./configure}, @code{make}, etc.---are written in Guile Scheme
|
||||
(@pxref{Derivations}). Consequently, to be able to build anything at
|
||||
all, from scratch, Guix relies on pre-built binaries of Guile, GCC,
|
||||
Binutils, libc, and the other packages mentioned above---the
|
||||
@dfn{bootstrap binaries}.
|
||||
|
||||
These bootstrap binaries are ``taken for granted'', though we can also
|
||||
re-create them if needed (more on that later).
|
||||
|
||||
@unnumberedsubsec Preparing to Use the Bootstrap Binaries
|
||||
|
||||
@c As of Emacs 24.3, Info-mode displays the image, but since it's a
|
||||
@c large image, it's hard to scroll. Oh well.
|
||||
@image{images/bootstrap-graph,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
|
||||
packages bootstrap)} module. At this level of detail, things are
|
||||
slightly complex. First, Guile itself consists of an ELF executable,
|
||||
along with many source and compiled Scheme files that are dynamically
|
||||
loaded when it runs. This gets stored in the @file{guile-2.0.7.tar.xz}
|
||||
tarball shown in this graph. This tarball is part of Guix's ``source''
|
||||
distribution, and gets inserted into the store with @code{add-to-store}
|
||||
(@pxref{The Store}).
|
||||
|
||||
But how do we write a derivation that unpacks this tarball and adds it
|
||||
to the store? To solve this problem, the @code{guile-bootstrap-2.0.drv}
|
||||
derivation---the first one that gets built---uses @code{bash} as its
|
||||
builder, which runs @code{build-bootstrap-guile.sh}, which in turn calls
|
||||
@code{tar} to unpack the tarball. Thus, @file{bash}, @file{tar},
|
||||
@file{xz}, and @file{mkdir} are statically-linked binaries, also part of
|
||||
the Guix source distribution, whose sole purpose is to allow the Guile
|
||||
tarball to be unpacked.
|
||||
|
||||
Once @code{guile-bootstrap-2.0.drv} is built, we have a functioning
|
||||
Guile that can be used to run subsequent build programs. Its first task
|
||||
is to download tarballs containing the other pre-built binaries---this
|
||||
is what the @code{.tar.xz.drv} derivations do. Guix modules such as
|
||||
@code{ftp-client.scm} are used for this purpose. The
|
||||
@code{module-import.drv} derivations import those modules in a directory
|
||||
in the store, using the original layout. The
|
||||
@code{module-import-compiled.drv} derivations compile those modules, and
|
||||
write them in an output directory with the right layout. This
|
||||
corresponds to the @code{#:modules} argument of
|
||||
@code{build-expression->derivation} (@pxref{Derivations}).
|
||||
|
||||
Finally, the various tarballs are unpacked by the
|
||||
derivations @code{gcc-bootstrap-0.drv}, @code{glibc-bootstrap-0.drv},
|
||||
etc., at which point we have a working C tool chain.
|
||||
|
||||
|
||||
@unnumberedsubsec Building the Build Tools
|
||||
|
||||
@c TODO: Add a package-level dependency graph generated from (gnu
|
||||
@c packages base).
|
||||
|
||||
Bootstrapping is complete when we have a full tool chain that does not
|
||||
depend on the pre-built bootstrap tools discussed above. This
|
||||
no-dependency requirement is verified by checking whether the files of
|
||||
the final tool chain contain references to the @file{/nix/store}
|
||||
directories of the bootstrap inputs. The process that leads to this
|
||||
``final'' tool chain is described by the package definitions found in
|
||||
the @code{(gnu packages base)} module.
|
||||
|
||||
@c See <http://lists.gnu.org/archive/html/gnu-system-discuss/2012-10/msg00000.html>.
|
||||
The first tool that gets built with the bootstrap binaries is
|
||||
GNU Make, which is a prerequisite for all the following packages.
|
||||
From there Findutils and Diffutils get built.
|
||||
|
||||
Then come the first-stage Binutils and GCC, built as pseudo cross
|
||||
tools---i.e., with @code{--target} equal to @code{--host}. They are
|
||||
used to build libc. Thanks to this cross-build trick, this libc is
|
||||
guaranteed not to hold any reference to the initial tool chain.
|
||||
|
||||
From there the final Binutils and GCC are built. GCC uses @code{ld}
|
||||
from the final Binutils, and links programs against the just-built libc.
|
||||
This tool chain is used to build the other packages used by Guix and by
|
||||
the GNU Build System: Guile, Bash, Coreutils, etc.
|
||||
|
||||
And voilà! At this point we have the complete set of build tools that
|
||||
the GNU Build System expects. These are in the @code{%final-inputs}
|
||||
variables of the @code{(gnu packages base)} module, and are implicitly
|
||||
used by any package that uses @code{gnu-build-system} (@pxref{Defining
|
||||
Packages}).
|
||||
|
||||
|
||||
@unnumberedsubsec Building the Bootstrap Binaries
|
||||
|
||||
Because the final tool chain does not depend on the bootstrap binaries,
|
||||
those rarely need to be updated. Nevertheless, it is useful to have an
|
||||
automated way to produce them, should an update occur, and this is what
|
||||
the @code{(gnu packages make-bootstrap)} module provides.
|
||||
|
||||
The following command builds the tarballs containing the bootstrap
|
||||
binaries (Guile, Binutils, GCC, libc, and a tarball containing a mixture
|
||||
of Coreutils and other basic command-line tools):
|
||||
|
||||
@example
|
||||
guix build bootstrap-tarballs
|
||||
@end example
|
||||
|
||||
The generated tarballs are those that should be referred to in the
|
||||
@code{(gnu packages bootstrap)} module mentioned at the beginning of
|
||||
this section.
|
||||
|
||||
Still here? Then perhaps by now you've started to wonder: when do we
|
||||
reach a fixed point? That is an interesting question! The answer is
|
||||
unknown, but if you would like to investigate further (and have
|
||||
significant computational and storage resources to do so), then let us
|
||||
know.
|
||||
|
||||
@node Porting
|
||||
@section Porting to a New Platform
|
||||
|
||||
As discussed above, the GNU distribution is self-contained, and
|
||||
self-containment is achieved by relying on pre-built ``bootstrap
|
||||
binaries'' (@pxref{Bootstrapping}). These binaries are specific to an
|
||||
operating system kernel, CPU architecture, and application binary
|
||||
interface (ABI). Thus, to port the distribution to a platform that is
|
||||
not yet supported, one must build those bootstrap binaries, and update
|
||||
the @code{(gnu packages bootstrap)} module to use them on that platform.
|
||||
|
||||
Fortunately, Guix can @emph{cross compile} those bootstrap binaries.
|
||||
When everything goes well, and assuming the GNU tool chain supports the
|
||||
target platform, this can be as simple as running a command like this
|
||||
one:
|
||||
|
||||
@example
|
||||
guix build --target=armv5tel-linux-gnueabi bootstrap-tarballs
|
||||
@end example
|
||||
|
||||
In practice, there may be some complications. First, it may be that the
|
||||
extended GNU triplet that specifies an ABI (like the @code{eabi} suffix
|
||||
above) is not recognized by all the GNU tools. Typically, glibc
|
||||
recognizes some of these, whereas GCC uses an extra @code{--with-abi}
|
||||
configure flag (see @code{gcc.scm} for examples of how to handle this).
|
||||
Second, some of the required packages could fail to build for that
|
||||
platform. Lastly, the generated binaries could be broken for some
|
||||
reason.
|
||||
|
||||
|
||||
@c *********************************************************************
|
||||
@node Contributing
|
||||
@chapter Contributing
|
||||
|
||||
This project is a cooperative effort, and we need your help to make it
|
||||
grow! Please get in touch with us on @email{guix-devel@@gnu.org}. We
|
||||
welcome ideas, bug reports, patches, and anything that may be helpful to
|
||||
the project.
|
||||
the project. We particularly welcome help on packaging
|
||||
(@pxref{Packaging Guidelines}).
|
||||
|
||||
Please see the
|
||||
@url{http://git.savannah.gnu.org/cgit/guix.git/tree/HACKING,
|
||||
@file{HACKING} file} that comes with the Guix source code for practical
|
||||
details about contributions.
|
||||
|
||||
|
||||
@c *********************************************************************
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
# Obtained by running "nix-store --graph" on the first GCC derivation.
|
||||
|
||||
digraph G {
|
||||
"/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [label = "gcc-bootstrap-0.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/3iawic1z95112yfz5y9xdp66qbxxr8l1-tar" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "black"];
|
||||
"/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "red"];
|
||||
"/nix/store/8cc81w6m04csm52y247xj3gydrbz2niv-xz" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "green"];
|
||||
"/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "blue"];
|
||||
"/nix/store/fl9cwcczfdv73vq5sr0c4rd5hqzrgvac-gcc-4.7.2.tar.xz.drv" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "magenta"];
|
||||
"/nix/store/jaaqdl979wjirnbxz1jqsipg22nva5n4-bash" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "burlywood"];
|
||||
"/nix/store/r3dsy5j2c16sv26raala6kahff7w18hb-gcc-bootstrap-0-guile-builder" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "black"];
|
||||
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "red"];
|
||||
"/nix/store/y4n7rzysx6qz3p0n91dw9qz5w93l6iqv-module-import-compiled.drv" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "green"];
|
||||
"/nix/store/3iawic1z95112yfz5y9xdp66qbxxr8l1-tar" [label = "tar", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [label = "glibc-bootstrap-0.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/3iawic1z95112yfz5y9xdp66qbxxr8l1-tar" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "blue"];
|
||||
"/nix/store/8cc81w6m04csm52y247xj3gydrbz2niv-xz" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "magenta"];
|
||||
"/nix/store/8iivk9hpnps21yrbq3zzsxgzv9ixbhgh-glibc-bootstrap-0-guile-builder" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "burlywood"];
|
||||
"/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "black"];
|
||||
"/nix/store/wdwrkg02gn28bkpbxgdb2nv558v8s3ji-glibc-2.17.tar.xz.drv" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "red"];
|
||||
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "green"];
|
||||
"/nix/store/y4n7rzysx6qz3p0n91dw9qz5w93l6iqv-module-import-compiled.drv" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "blue"];
|
||||
"/nix/store/8cc81w6m04csm52y247xj3gydrbz2niv-xz" [label = "xz", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/8iivk9hpnps21yrbq3zzsxgzv9ixbhgh-glibc-bootstrap-0-guile-builder" [label = "glibc-bootstrap-0-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/3iawic1z95112yfz5y9xdp66qbxxr8l1-tar" -> "/nix/store/8iivk9hpnps21yrbq3zzsxgzv9ixbhgh-glibc-bootstrap-0-guile-builder" [color = "magenta"];
|
||||
"/nix/store/8cc81w6m04csm52y247xj3gydrbz2niv-xz" -> "/nix/store/8iivk9hpnps21yrbq3zzsxgzv9ixbhgh-glibc-bootstrap-0-guile-builder" [color = "burlywood"];
|
||||
"/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" [label = "module-import.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/9zrdfvnrpljryr82an2n1mj6bh2przhn-module-import-guile-builder" -> "/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" [color = "black"];
|
||||
"/nix/store/mj7amprgvl2rgash1nr0v64apik8vc7f-utils.scm" -> "/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" [color = "red"];
|
||||
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" [color = "green"];
|
||||
"/nix/store/9zrdfvnrpljryr82an2n1mj6bh2przhn-module-import-guile-builder" [label = "module-import-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/mj7amprgvl2rgash1nr0v64apik8vc7f-utils.scm" -> "/nix/store/9zrdfvnrpljryr82an2n1mj6bh2przhn-module-import-guile-builder" [color = "blue"];
|
||||
"/nix/store/fl9cwcczfdv73vq5sr0c4rd5hqzrgvac-gcc-4.7.2.tar.xz.drv" [label = "gcc-4.7.2.tar.xz.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/6kslnirvm26fij7wpjqbw617ri4gf5x5-gcc-4.7.2.tar.xz-guile-builder" -> "/nix/store/fl9cwcczfdv73vq5sr0c4rd5hqzrgvac-gcc-4.7.2.tar.xz.drv" [color = "magenta"];
|
||||
"/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" -> "/nix/store/fl9cwcczfdv73vq5sr0c4rd5hqzrgvac-gcc-4.7.2.tar.xz.drv" [color = "burlywood"];
|
||||
"/nix/store/pzv319p3q7raiad7nq7fcdw9rafzp14k-module-import-compiled.drv" -> "/nix/store/fl9cwcczfdv73vq5sr0c4rd5hqzrgvac-gcc-4.7.2.tar.xz.drv" [color = "black"];
|
||||
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/fl9cwcczfdv73vq5sr0c4rd5hqzrgvac-gcc-4.7.2.tar.xz.drv" [color = "red"];
|
||||
"/nix/store/6kslnirvm26fij7wpjqbw617ri4gf5x5-gcc-4.7.2.tar.xz-guile-builder" [label = "gcc-4.7.2.tar.xz-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/jaaqdl979wjirnbxz1jqsipg22nva5n4-bash" [label = "bash", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" [label = "module-import.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/abagrdbdndkd0y2dwk0nw1gw0g0rhl2z-ftp-client.scm" -> "/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" [color = "green"];
|
||||
"/nix/store/dwd2iwd1ban8a8rmx568dpgrbkkidfhw-download.scm" -> "/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" [color = "blue"];
|
||||
"/nix/store/mj7amprgvl2rgash1nr0v64apik8vc7f-utils.scm" -> "/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" [color = "magenta"];
|
||||
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" [color = "burlywood"];
|
||||
"/nix/store/yfixjx2gpvsi5dhkpdx5gj6gx0xdk1c8-module-import-guile-builder" -> "/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" [color = "black"];
|
||||
"/nix/store/abagrdbdndkd0y2dwk0nw1gw0g0rhl2z-ftp-client.scm" [label = "ftp-client.scm", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/dwd2iwd1ban8a8rmx568dpgrbkkidfhw-download.scm" [label = "download.scm", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/mj7amprgvl2rgash1nr0v64apik8vc7f-utils.scm" [label = "utils.scm", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/pzv319p3q7raiad7nq7fcdw9rafzp14k-module-import-compiled.drv" [label = "module-import-compiled.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/98gzqlgpm4gxrpl5bzykpqbwrx8ckx8l-module-import-compiled-guile-builder" -> "/nix/store/pzv319p3q7raiad7nq7fcdw9rafzp14k-module-import-compiled.drv" [color = "red"];
|
||||
"/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" -> "/nix/store/pzv319p3q7raiad7nq7fcdw9rafzp14k-module-import-compiled.drv" [color = "green"];
|
||||
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/pzv319p3q7raiad7nq7fcdw9rafzp14k-module-import-compiled.drv" [color = "blue"];
|
||||
"/nix/store/98gzqlgpm4gxrpl5bzykpqbwrx8ckx8l-module-import-compiled-guile-builder" [label = "module-import-compiled-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/r3dsy5j2c16sv26raala6kahff7w18hb-gcc-bootstrap-0-guile-builder" [label = "gcc-bootstrap-0-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/3iawic1z95112yfz5y9xdp66qbxxr8l1-tar" -> "/nix/store/r3dsy5j2c16sv26raala6kahff7w18hb-gcc-bootstrap-0-guile-builder" [color = "magenta"];
|
||||
"/nix/store/8cc81w6m04csm52y247xj3gydrbz2niv-xz" -> "/nix/store/r3dsy5j2c16sv26raala6kahff7w18hb-gcc-bootstrap-0-guile-builder" [color = "burlywood"];
|
||||
"/nix/store/jaaqdl979wjirnbxz1jqsipg22nva5n4-bash" -> "/nix/store/r3dsy5j2c16sv26raala6kahff7w18hb-gcc-bootstrap-0-guile-builder" [color = "black"];
|
||||
"/nix/store/wdwrkg02gn28bkpbxgdb2nv558v8s3ji-glibc-2.17.tar.xz.drv" [label = "glibc-2.17.tar.xz.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" -> "/nix/store/wdwrkg02gn28bkpbxgdb2nv558v8s3ji-glibc-2.17.tar.xz.drv" [color = "red"];
|
||||
"/nix/store/pzv319p3q7raiad7nq7fcdw9rafzp14k-module-import-compiled.drv" -> "/nix/store/wdwrkg02gn28bkpbxgdb2nv558v8s3ji-glibc-2.17.tar.xz.drv" [color = "green"];
|
||||
"/nix/store/q7as3jddipj4g6si8lawrdbkjg0zcjvg-glibc-2.17.tar.xz-guile-builder" -> "/nix/store/wdwrkg02gn28bkpbxgdb2nv558v8s3ji-glibc-2.17.tar.xz.drv" [color = "blue"];
|
||||
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/wdwrkg02gn28bkpbxgdb2nv558v8s3ji-glibc-2.17.tar.xz.drv" [color = "magenta"];
|
||||
"/nix/store/q7as3jddipj4g6si8lawrdbkjg0zcjvg-glibc-2.17.tar.xz-guile-builder" [label = "glibc-2.17.tar.xz-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" [label = "guile-bootstrap-2.0.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/bplka3yqdg8prqq3zdxza6wxlkjdhr2g-build-bootstrap-guile.sh" -> "/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" [color = "burlywood"];
|
||||
"/nix/store/jaaqdl979wjirnbxz1jqsipg22nva5n4-bash" -> "/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" [color = "black"];
|
||||
"/nix/store/bplka3yqdg8prqq3zdxza6wxlkjdhr2g-build-bootstrap-guile.sh" [label = "build-bootstrap-guile.sh", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/3iawic1z95112yfz5y9xdp66qbxxr8l1-tar" -> "/nix/store/bplka3yqdg8prqq3zdxza6wxlkjdhr2g-build-bootstrap-guile.sh" [color = "red"];
|
||||
"/nix/store/4xv2y0m6zr2lgi8x8pcb3zxjqxsz69kj-mkdir" -> "/nix/store/bplka3yqdg8prqq3zdxza6wxlkjdhr2g-build-bootstrap-guile.sh" [color = "green"];
|
||||
"/nix/store/8cc81w6m04csm52y247xj3gydrbz2niv-xz" -> "/nix/store/bplka3yqdg8prqq3zdxza6wxlkjdhr2g-build-bootstrap-guile.sh" [color = "blue"];
|
||||
"/nix/store/c450lqvaaz3ngx9pfiiiw55rqq6ssfda-guile-2.0.7.tar.xz" -> "/nix/store/bplka3yqdg8prqq3zdxza6wxlkjdhr2g-build-bootstrap-guile.sh" [color = "magenta"];
|
||||
"/nix/store/4xv2y0m6zr2lgi8x8pcb3zxjqxsz69kj-mkdir" [label = "mkdir", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/c450lqvaaz3ngx9pfiiiw55rqq6ssfda-guile-2.0.7.tar.xz" [label = "guile-2.0.7.tar.xz", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/y4n7rzysx6qz3p0n91dw9qz5w93l6iqv-module-import-compiled.drv" [label = "module-import-compiled.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/8jiqjlb6zxjys16ca7s6jvxcc620c71k-module-import-compiled-guile-builder" -> "/nix/store/y4n7rzysx6qz3p0n91dw9qz5w93l6iqv-module-import-compiled.drv" [color = "burlywood"];
|
||||
"/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" -> "/nix/store/y4n7rzysx6qz3p0n91dw9qz5w93l6iqv-module-import-compiled.drv" [color = "black"];
|
||||
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/y4n7rzysx6qz3p0n91dw9qz5w93l6iqv-module-import-compiled.drv" [color = "red"];
|
||||
"/nix/store/8jiqjlb6zxjys16ca7s6jvxcc620c71k-module-import-compiled-guile-builder" [label = "module-import-compiled-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/yfixjx2gpvsi5dhkpdx5gj6gx0xdk1c8-module-import-guile-builder" [label = "module-import-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
|
||||
"/nix/store/abagrdbdndkd0y2dwk0nw1gw0g0rhl2z-ftp-client.scm" -> "/nix/store/yfixjx2gpvsi5dhkpdx5gj6gx0xdk1c8-module-import-guile-builder" [color = "green"];
|
||||
"/nix/store/dwd2iwd1ban8a8rmx568dpgrbkkidfhw-download.scm" -> "/nix/store/yfixjx2gpvsi5dhkpdx5gj6gx0xdk1c8-module-import-guile-builder" [color = "blue"];
|
||||
"/nix/store/mj7amprgvl2rgash1nr0v64apik8vc7f-utils.scm" -> "/nix/store/yfixjx2gpvsi5dhkpdx5gj6gx0xdk1c8-module-import-guile-builder" [color = "magenta"];
|
||||
}
|
||||
+286
@@ -0,0 +1,286 @@
|
||||
# GNU Guix --- Functional package management for GNU
|
||||
# Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
# Copyright © 2013 Andreas Enge <andreas@enge.fr>
|
||||
#
|
||||
# This file is part of GNU Guix.
|
||||
#
|
||||
# GNU Guix is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3 of the License, or (at
|
||||
# your option) any later version.
|
||||
#
|
||||
# GNU Guix is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# Definitions for the GNU System: package modules, patches, bootstrap
|
||||
# binaries.
|
||||
|
||||
GNU_SYSTEM_MODULES = \
|
||||
gnu/packages.scm \
|
||||
gnu/packages/acl.scm \
|
||||
gnu/packages/algebra.scm \
|
||||
gnu/packages/apr.scm \
|
||||
gnu/packages/aspell.scm \
|
||||
gnu/packages/attr.scm \
|
||||
gnu/packages/autotools.scm \
|
||||
gnu/packages/avahi.scm \
|
||||
gnu/packages/base.scm \
|
||||
gnu/packages/bash.scm \
|
||||
gnu/packages/bdb.scm \
|
||||
gnu/packages/bdw-gc.scm \
|
||||
gnu/packages/bison.scm \
|
||||
gnu/packages/bootstrap.scm \
|
||||
gnu/packages/cdrom.scm \
|
||||
gnu/packages/cflow.scm \
|
||||
gnu/packages/check.scm \
|
||||
gnu/packages/cmake.scm \
|
||||
gnu/packages/compression.scm \
|
||||
gnu/packages/cpio.scm \
|
||||
gnu/packages/cppi.scm \
|
||||
gnu/packages/cross-base.scm \
|
||||
gnu/packages/cryptsetup.scm \
|
||||
gnu/packages/curl.scm \
|
||||
gnu/packages/cyrus-sasl.scm \
|
||||
gnu/packages/dejagnu.scm \
|
||||
gnu/packages/ddrescue.scm \
|
||||
gnu/packages/dwm.scm \
|
||||
gnu/packages/ed.scm \
|
||||
gnu/packages/emacs.scm \
|
||||
gnu/packages/fdisk.scm \
|
||||
gnu/packages/file.scm \
|
||||
gnu/packages/flex.scm \
|
||||
gnu/packages/fonts.scm \
|
||||
gnu/packages/fontutils.scm \
|
||||
gnu/packages/freeipmi.scm \
|
||||
gnu/packages/gawk.scm \
|
||||
gnu/packages/gcal.scm \
|
||||
gnu/packages/gcc.scm \
|
||||
gnu/packages/gd.scm \
|
||||
gnu/packages/gdb.scm \
|
||||
gnu/packages/gdbm.scm \
|
||||
gnu/packages/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 \
|
||||
gnu/packages/gprolog.scm \
|
||||
gnu/packages/graphviz.scm \
|
||||
gnu/packages/groff.scm \
|
||||
gnu/packages/grub.scm \
|
||||
gnu/packages/grue-hunter.scm \
|
||||
gnu/packages/gsasl.scm \
|
||||
gnu/packages/gstreamer.scm \
|
||||
gnu/packages/gtk.scm \
|
||||
gnu/packages/guile.scm \
|
||||
gnu/packages/gv.scm \
|
||||
gnu/packages/help2man.scm \
|
||||
gnu/packages/hugs.scm \
|
||||
gnu/packages/icu4c.scm \
|
||||
gnu/packages/idutils.scm \
|
||||
gnu/packages/imagemagick.scm \
|
||||
gnu/packages/indent.scm \
|
||||
gnu/packages/irssi.scm \
|
||||
gnu/packages/ld-wrapper.scm \
|
||||
gnu/packages/less.scm \
|
||||
gnu/packages/lesstif.scm \
|
||||
gnu/packages/libdaemon.scm \
|
||||
gnu/packages/libevent.scm \
|
||||
gnu/packages/libffi.scm \
|
||||
gnu/packages/libidn.scm \
|
||||
gnu/packages/libjpeg.scm \
|
||||
gnu/packages/libphidget.scm \
|
||||
gnu/packages/libpng.scm \
|
||||
gnu/packages/libsigsegv.scm \
|
||||
gnu/packages/libtiff.scm \
|
||||
gnu/packages/libunistring.scm \
|
||||
gnu/packages/libusb.scm \
|
||||
gnu/packages/libunwind.scm \
|
||||
gnu/packages/lightning.scm \
|
||||
gnu/packages/linux.scm \
|
||||
gnu/packages/linux-initrd.scm \
|
||||
gnu/packages/lout.scm \
|
||||
gnu/packages/lsh.scm \
|
||||
gnu/packages/lsof.scm \
|
||||
gnu/packages/lua.scm \
|
||||
gnu/packages/lvm.scm \
|
||||
gnu/packages/m4.scm \
|
||||
gnu/packages/mail.scm \
|
||||
gnu/packages/make-bootstrap.scm \
|
||||
gnu/packages/maths.scm \
|
||||
gnu/packages/mit-krb5.scm \
|
||||
gnu/packages/mp3.scm \
|
||||
gnu/packages/multiprecision.scm \
|
||||
gnu/packages/mysql.scm \
|
||||
gnu/packages/nano.scm \
|
||||
gnu/packages/ncurses.scm \
|
||||
gnu/packages/netpbm.scm \
|
||||
gnu/packages/nettle.scm \
|
||||
gnu/packages/noweb.scm \
|
||||
gnu/packages/ocaml.scm \
|
||||
gnu/packages/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 \
|
||||
gnu/packages/pdf.scm \
|
||||
gnu/packages/perl.scm \
|
||||
gnu/packages/pkg-config.scm \
|
||||
gnu/packages/plotutils.scm \
|
||||
gnu/packages/popt.scm \
|
||||
gnu/packages/pth.scm \
|
||||
gnu/packages/python.scm \
|
||||
gnu/packages/qemu.scm \
|
||||
gnu/packages/ratpoison.scm \
|
||||
gnu/packages/readline.scm \
|
||||
gnu/packages/recutils.scm \
|
||||
gnu/packages/rsync.scm \
|
||||
gnu/packages/rush.scm \
|
||||
gnu/packages/samba.scm \
|
||||
gnu/packages/scheme.scm \
|
||||
gnu/packages/screen.scm \
|
||||
gnu/packages/shishi.scm \
|
||||
gnu/packages/smalltalk.scm \
|
||||
gnu/packages/sqlite.scm \
|
||||
gnu/packages/ssh.scm \
|
||||
gnu/packages/system.scm \
|
||||
gnu/packages/tcl.scm \
|
||||
gnu/packages/tcsh.scm \
|
||||
gnu/packages/texinfo.scm \
|
||||
gnu/packages/texlive.scm \
|
||||
gnu/packages/time.scm \
|
||||
gnu/packages/tmux.scm \
|
||||
gnu/packages/tor.scm \
|
||||
gnu/packages/unrtf.scm \
|
||||
gnu/packages/valgrind.scm \
|
||||
gnu/packages/version-control.scm \
|
||||
gnu/packages/vim.scm \
|
||||
gnu/packages/vpn.scm \
|
||||
gnu/packages/w3m.scm \
|
||||
gnu/packages/wdiff.scm \
|
||||
gnu/packages/wget.scm \
|
||||
gnu/packages/which.scm \
|
||||
gnu/packages/wordnet.scm \
|
||||
gnu/packages/xlockmore.scm \
|
||||
gnu/packages/xml.scm \
|
||||
gnu/packages/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 \
|
||||
gnu/packages/patches/flac-fix-memcmp-not-declared.patch \
|
||||
gnu/packages/patches/flex-bison-tests.patch \
|
||||
gnu/packages/patches/gawk-shell.patch \
|
||||
gnu/packages/patches/gcc-cross-environment-variables.patch \
|
||||
gnu/packages/patches/glib-tests-desktop.patch \
|
||||
gnu/packages/patches/glib-tests-homedir.patch \
|
||||
gnu/packages/patches/glib-tests-prlimit.patch \
|
||||
gnu/packages/patches/glibc-bootstrap-system.patch \
|
||||
gnu/packages/patches/glibc-ldd-x86_64.patch \
|
||||
gnu/packages/patches/glibc-no-ld-so-cache.patch \
|
||||
gnu/packages/patches/grub-gets-undeclared.patch \
|
||||
gnu/packages/patches/guile-1.8-cpp-4.5.patch \
|
||||
gnu/packages/patches/guile-default-utf8.patch \
|
||||
gnu/packages/patches/guile-linux-syscalls.patch \
|
||||
gnu/packages/patches/guile-relocatable.patch \
|
||||
gnu/packages/patches/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/make-impure-dirs.patch \
|
||||
gnu/packages/patches/mcron-install.patch \
|
||||
gnu/packages/patches/perl-no-sys-dirs.patch \
|
||||
gnu/packages/patches/plotutils-libpng-jmpbuf.patch \
|
||||
gnu/packages/patches/procps-make-3.82.patch \
|
||||
gnu/packages/patches/python-fix-dbm.patch \
|
||||
gnu/packages/patches/qemu-multiple-smb-shares.patch \
|
||||
gnu/packages/patches/readline-link-ncurses.patch \
|
||||
gnu/packages/patches/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
|
||||
|
||||
bootstrapdir = $(guilemoduledir)/gnu/packages/bootstrap
|
||||
bootstrap_x86_64_linuxdir = $(bootstrapdir)/x86_64-linux
|
||||
bootstrap_i686_linuxdir = $(bootstrapdir)/i686-linux
|
||||
|
||||
dist_bootstrap_x86_64_linux_DATA = \
|
||||
gnu/packages/bootstrap/x86_64-linux/bash \
|
||||
gnu/packages/bootstrap/x86_64-linux/mkdir \
|
||||
gnu/packages/bootstrap/x86_64-linux/tar \
|
||||
gnu/packages/bootstrap/x86_64-linux/xz
|
||||
|
||||
dist_bootstrap_i686_linux_DATA = \
|
||||
gnu/packages/bootstrap/i686-linux/bash \
|
||||
gnu/packages/bootstrap/i686-linux/mkdir \
|
||||
gnu/packages/bootstrap/i686-linux/tar \
|
||||
gnu/packages/bootstrap/i686-linux/xz
|
||||
|
||||
# Big bootstrap binaries are not included in the tarball. Instead, they
|
||||
# are downloaded.
|
||||
nodist_bootstrap_x86_64_linux_DATA = \
|
||||
gnu/packages/bootstrap/x86_64-linux/guile-2.0.7.tar.xz
|
||||
nodist_bootstrap_i686_linux_DATA = \
|
||||
gnu/packages/bootstrap/i686-linux/guile-2.0.7.tar.xz
|
||||
|
||||
# Those files must remain executable, so they remain executable once
|
||||
# imported into the store.
|
||||
install-data-hook:
|
||||
chmod +x $(DESTDIR)$(bootstrapdir)/*/{bash,mkdir,tar,xz}
|
||||
|
||||
DISTCLEANFILES = \
|
||||
$(nodist_bootstrap_x86_64_linux_DATA) \
|
||||
$(nodist_bootstrap_i686_linux_DATA)
|
||||
|
||||
# Method to download a file from an external source.
|
||||
DOWNLOAD_FILE = \
|
||||
GUILE_LOAD_COMPILED_PATH="$(top_builddir):$$GUILE_LOAD_COMPILED_PATH" \
|
||||
$(GUILE) --no-auto-compile -L "$(top_builddir)" -L "$(top_srcdir)" \
|
||||
"$(top_srcdir)/build-aux/download.scm"
|
||||
|
||||
gnu/packages/bootstrap/x86_64-linux/guile-2.0.7.tar.xz:
|
||||
$(MKDIR_P) `dirname "$@"`
|
||||
$(DOWNLOAD_FILE) "$@" "bc43210dcd146d242bef4d354b0aeac12c4ef3118c07502d17ffa8d49e15aa2c"
|
||||
gnu/packages/bootstrap/i686-linux/guile-2.0.7.tar.xz:
|
||||
$(MKDIR_P) `dirname "$@"`
|
||||
$(DOWNLOAD_FILE) "$@" "f9a7c6f4c556eaafa2a69bcf07d4ffbb6682ea831d4c9da9ba095aca3ccd217c"
|
||||
+17
-10
@@ -45,18 +45,25 @@
|
||||
'configure 'patch-makefile-SHELL
|
||||
(lambda _
|
||||
(patch-makefile-SHELL "include/buildmacros"))
|
||||
(alist-replace
|
||||
'check
|
||||
(lambda _
|
||||
(system* "make" "tests" "-C" "test")
|
||||
,(if (%current-target-system)
|
||||
'%standard-phases
|
||||
'(alist-replace 'check
|
||||
(lambda _
|
||||
(system* "make" "tests" "-C" "test")
|
||||
|
||||
;; XXX: Ignore the test result since this is
|
||||
;; dependent on the underlying file system.
|
||||
#t)
|
||||
%standard-phases))))
|
||||
;; XXX: Ignore the test result since this is
|
||||
;; dependent on the underlying file system.
|
||||
#t)
|
||||
%standard-phases)))))
|
||||
(inputs `(("attr" ,attr)
|
||||
("gettext" ,guix:gettext)
|
||||
("perl" ,perl)))
|
||||
|
||||
;; Perl is needed to run tests; remove it from cross builds.
|
||||
,@(if (%current-target-system)
|
||||
'()
|
||||
`(("perl" ,perl)))))
|
||||
(native-inputs
|
||||
`(("gettext" ,guix:gettext)))
|
||||
|
||||
(home-page
|
||||
"http://savannah.nongnu.org/projects/acl")
|
||||
(synopsis
|
||||
|
||||
@@ -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,17 +25,17 @@
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages autotools))
|
||||
|
||||
(define-public libapr
|
||||
(define-public apr
|
||||
(package
|
||||
(name "libapr")
|
||||
(version "1.4.6")
|
||||
(name "apr")
|
||||
(version "1.4.8")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://apache/apr/apr-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1g0w9396akmhhrmjzmcwddny5ms43zvj2mrpdkyfcqxizrh5wqwv"))))
|
||||
"0884csfk3f530yscak0jlr6w929s3ys0n7fpwdg3dii1sgwd5f31"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:patches (list (assoc-ref %build-inputs
|
||||
@@ -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,32 +57,32 @@ built, relieving them of the need to code special-case conditions to work
|
||||
around or take advantage of platform-specific deficiencies or features.")
|
||||
(license asl2.0)))
|
||||
|
||||
(define-public libaprutil
|
||||
(define-public apr-util
|
||||
(package
|
||||
(name "libaprutil")
|
||||
(version "1.5.1")
|
||||
(name "apr-util")
|
||||
(version "1.5.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://apache/apr/apr-util-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0832cb90zd7zqhhdx0v3i8viw1rmn0d945qbk1zid3cnky9r0s19"))))
|
||||
"19qjxpckb9p4j9pbk8kcirg6k5vqnjrqhnk9xx2c5m9964p3vkls"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("libapr" ,libapr)))
|
||||
`(("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")
|
||||
+25
-18
@@ -52,26 +52,33 @@
|
||||
"install"
|
||||
"install-lib"
|
||||
"install-dev")))
|
||||
(alist-replace
|
||||
'check
|
||||
(lambda _
|
||||
;; Use the right shell.
|
||||
(substitute* "test/run"
|
||||
(("/bin/sh")
|
||||
(which "bash")))
|
||||
|
||||
(system* "make" "tests" "-C" "test")
|
||||
;; When building natively, adjust the test cases.
|
||||
,(if (%current-target-system)
|
||||
'%standard-phases
|
||||
'(alist-replace 'check
|
||||
(lambda _
|
||||
;; Use the right shell.
|
||||
(substitute* "test/run"
|
||||
(("/bin/sh")
|
||||
(which "bash")))
|
||||
|
||||
;; XXX: Ignore the test result since this is dependent on the
|
||||
;; underlying file system.
|
||||
#t)
|
||||
%standard-phases)))))
|
||||
(inputs `(("perl" ,perl)
|
||||
("gettext" ,guix:gettext)))
|
||||
(home-page
|
||||
"http://savannah.nongnu.org/projects/attr/")
|
||||
(synopsis
|
||||
"Library and tools for manipulating extended attributes")
|
||||
(system* "make" "tests" "-C" "test")
|
||||
|
||||
;; XXX: Ignore the test result since this is
|
||||
;; dependent on the underlying file system.
|
||||
#t)
|
||||
%standard-phases))))))
|
||||
(inputs
|
||||
;; Perl is needed to run tests; remove it from cross builds.
|
||||
(if (%current-target-system)
|
||||
'()
|
||||
`(("perl" ,perl))))
|
||||
(native-inputs
|
||||
`(("gettext" ,guix:gettext)))
|
||||
|
||||
(home-page "http://savannah.nongnu.org/projects/attr/")
|
||||
(synopsis "Library and tools for manipulating extended attributes")
|
||||
(description
|
||||
"Portable library and tools for manipulating extended attributes.")
|
||||
(license (list gpl2+ lgpl2.1+))))
|
||||
|
||||
+32
-30
@@ -121,27 +121,27 @@ exec ~a --no-auto-compile \"$0\" \"$@\"
|
||||
(use-modules (guix build utils))
|
||||
(let ((result (apply system* ,autoconf
|
||||
(cdr (command-line)))))
|
||||
(if (and (zero? result)
|
||||
(file-exists? "configure")
|
||||
(not (file-exists? "/bin/sh")))
|
||||
(begin
|
||||
(patch-shebang "configure")
|
||||
#t)
|
||||
(exit (status:exit-val result)))))
|
||||
(when (and (file-exists? "configure")
|
||||
(not (file-exists? "/bin/sh")))
|
||||
;; Patch regardless of RESULT, because `autoconf
|
||||
;; -Werror' can both create a `configure' file and
|
||||
;; return a non-zero exit code.
|
||||
(patch-shebang "configure"))
|
||||
(exit (status:exit-val result))))
|
||||
port)))
|
||||
(chmod (string-append bin "/autoconf") #o555)))))))
|
||||
|
||||
(define-public automake
|
||||
(package
|
||||
(name "automake")
|
||||
(version "1.13.1")
|
||||
(version "1.14")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/automake/automake-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"12yi1bzkipi7qdmkdy77pazljsa9z7q66hi6c4rq73p7hbv6rkbf"))))
|
||||
"0nc0zqq8j336kamizzd86wb19vhbwywv5avcjh3cyx230xfqy671"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("autoconf" ,autoconf-wrapper)
|
||||
@@ -231,28 +231,30 @@ Standards. Automake requires the use of Autoconf.")
|
||||
|
||||
(arguments
|
||||
`(#:patches (list (assoc-ref %build-inputs "patch/skip-tests"))
|
||||
#:phases (alist-cons-before
|
||||
'check 'pre-check
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
;; Run the test suite in parallel, if possible.
|
||||
(let ((ncores
|
||||
(cond
|
||||
((getenv "NIX_BUILD_CORES")
|
||||
=>
|
||||
(lambda (n)
|
||||
(if (zero? (string->number n))
|
||||
(number->string (current-processor-count))
|
||||
n)))
|
||||
(else "1"))))
|
||||
(setenv "TESTSUITEFLAGS"
|
||||
(string-append "-j" ncores)))
|
||||
,@(if (%current-target-system)
|
||||
'() ; no `check' phase when cross-building
|
||||
'(#:phases (alist-cons-before
|
||||
'check 'pre-check
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
;; Run the test suite in parallel, if possible.
|
||||
(let ((ncores
|
||||
(cond
|
||||
((getenv "NIX_BUILD_CORES")
|
||||
=>
|
||||
(lambda (n)
|
||||
(if (zero? (string->number n))
|
||||
(number->string (current-processor-count))
|
||||
n)))
|
||||
(else "1"))))
|
||||
(setenv "TESTSUITEFLAGS"
|
||||
(string-append "-j" ncores)))
|
||||
|
||||
;; Path references to /bin/sh.
|
||||
(let ((bash (assoc-ref inputs "bash")))
|
||||
(substitute* "tests/testsuite"
|
||||
(("/bin/sh")
|
||||
(string-append bash "/bin/bash")))))
|
||||
%standard-phases)))
|
||||
;; Path references to /bin/sh.
|
||||
(let ((bash (assoc-ref inputs "bash")))
|
||||
(substitute* "tests/testsuite"
|
||||
(("/bin/sh")
|
||||
(string-append bash "/bin/bash")))))
|
||||
%standard-phases)))))
|
||||
(inputs `(("patch/skip-tests"
|
||||
,(search-patch "libtool-skip-tests.patch"))))
|
||||
(synopsis "Generic shared library support tools")
|
||||
|
||||
@@ -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
|
||||
|
||||
+41
-27
@@ -101,16 +101,18 @@ lines.")
|
||||
(build-system gnu-build-system)
|
||||
(synopsis "Stream editor")
|
||||
(arguments
|
||||
`(#:phases (alist-cons-before
|
||||
'patch-source-shebangs 'patch-test-suite
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((bash (assoc-ref inputs "bash")))
|
||||
(patch-makefile-SHELL "testsuite/Makefile.tests")
|
||||
(substitute* '("testsuite/bsd.sh"
|
||||
"testsuite/bug-regex9.c")
|
||||
(("/bin/sh")
|
||||
(string-append bash "/bin/bash")))))
|
||||
%standard-phases)))
|
||||
(if (%current-target-system)
|
||||
'()
|
||||
`(#:phases (alist-cons-before
|
||||
'patch-source-shebangs 'patch-test-suite
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((bash (assoc-ref inputs "bash")))
|
||||
(patch-makefile-SHELL "testsuite/Makefile.tests")
|
||||
(substitute* '("testsuite/bsd.sh"
|
||||
"testsuite/bug-regex9.c")
|
||||
(("/bin/sh")
|
||||
(string-append bash "/bin/bash")))))
|
||||
%standard-phases))))
|
||||
(description
|
||||
"Sed (stream editor) isn't really a true text editor or text processor.
|
||||
Instead, it is used to filter text, i.e., it takes text input and performs
|
||||
@@ -234,13 +236,13 @@ You can use the sdiff command to merge two files interactively.")
|
||||
`(("patch/absolute-paths"
|
||||
,(search-patch "findutils-absolute-paths.patch"))))
|
||||
(arguments
|
||||
`(#:patches (list (assoc-ref %build-inputs "patch/absolute-paths")))
|
||||
`(#:patches (list (assoc-ref %build-inputs "patch/absolute-paths"))
|
||||
|
||||
;; TODO: Work around cross-compilation failure.
|
||||
;; See <http://savannah.gnu.org/bugs/?27299#comment1>.
|
||||
;; `(#:configure-flags '("gl_cv_func_wcwidth_works=yes")
|
||||
;; ,@(arguments cross-system))
|
||||
)
|
||||
;; Work around cross-compilation failure.
|
||||
;; See <http://savannah.gnu.org/bugs/?27299#comment1>.
|
||||
,@(if (%current-target-system)
|
||||
'(#:configure-flags '("gl_cv_func_wcwidth_works=yes"))
|
||||
'())))
|
||||
(synopsis "Operating on files matching given criteria")
|
||||
(description
|
||||
"The GNU Find Utilities are the basic directory searching utilities of
|
||||
@@ -270,9 +272,14 @@ The tools supplied with this package are:
|
||||
(base32
|
||||
"064f512185iysqqcvhnhaf3bfmzrvcgs7n405qsyp99zmfyl9amd"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("acl" ,acl)
|
||||
(inputs `(("acl" ,acl) ; TODO: add SELinux
|
||||
("gmp" ,gmp)
|
||||
("perl" ,perl))) ; TODO: add SELinux
|
||||
|
||||
;; Perl is needed to run tests; remove it from cross builds.
|
||||
,@(if (%current-target-system)
|
||||
'()
|
||||
`(("perl" ,perl)))))
|
||||
(outputs '("out" "debug"))
|
||||
(arguments
|
||||
`(#:parallel-build? #f ; help2man may be called too early
|
||||
#:phases (alist-cons-before
|
||||
@@ -310,6 +317,7 @@ are expected to exist on every operating system.")
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("patch/impure-dirs" ,(search-patch "make-impure-dirs.patch"))))
|
||||
(outputs '("out" "debug"))
|
||||
(arguments
|
||||
'(#:patches (list (assoc-ref %build-inputs "patch/impure-dirs"))
|
||||
#:phases (alist-cons-before
|
||||
@@ -379,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
|
||||
@@ -397,11 +405,12 @@ BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc.")
|
||||
;; reference to them anyway, so there's no space savings here.
|
||||
;; TODO: Eventually we may want to add a $LOCALE_ARCHIVE search path like
|
||||
;; Nixpkgs does.
|
||||
(outputs '("out" "locales"))
|
||||
(outputs '("out" "locales" "debug"))
|
||||
|
||||
(arguments
|
||||
`(#:out-of-source? #t
|
||||
#: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"
|
||||
@@ -414,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")
|
||||
@@ -488,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
|
||||
@@ -503,7 +513,7 @@ with the Linux kernel.")
|
||||
(define-public tzdata
|
||||
(package
|
||||
(name "tzdata")
|
||||
(version "2013c")
|
||||
(version "2013d")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@@ -511,7 +521,7 @@ with the Linux kernel.")
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"11swq6fg20m2dh520qcr8vb23gqhzbvqhizx8wifnmci4gmsg5z5"))))
|
||||
"011v63ppr73vhjgxv00inkn5pc7z48i8lhbapkpdq3kfczq9c76d"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f
|
||||
@@ -558,7 +568,7 @@ with the Linux kernel.")
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1w6nkdwhi6k9llshp4baac1yj43jqf3apdf6n66i0wvjj8qyjvp4"))))))
|
||||
"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)
|
||||
@@ -748,7 +758,11 @@ identifier SYSTEM."
|
||||
;; Call it differently so that the builder can check whether
|
||||
;; the "libc" input is #f.
|
||||
("libc-native" ,@(assoc-ref %boot0-inputs "libc"))
|
||||
,@(alist-delete "libc" %boot0-inputs))))))
|
||||
,@(alist-delete "libc" %boot0-inputs)))
|
||||
|
||||
;; No need for Texinfo at this stage.
|
||||
(native-inputs (alist-delete "texinfo"
|
||||
(package-native-inputs gcc-4.7))))))
|
||||
|
||||
(define linux-libre-headers-boot0
|
||||
(package-with-bootstrap-guile
|
||||
|
||||
+36
-25
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -26,19 +26,29 @@
|
||||
#:use-module (guix build-system gnu))
|
||||
|
||||
(define-public bash
|
||||
(let ((cppflags (string-join '("-DSYS_BASHRC='\"/etc/bashrc\"'"
|
||||
"-DSYS_BASH_LOGOUT='\"/etc/bash_logout\"'"
|
||||
"-DDEFAULT_PATH_VALUE='\"/no-such-path\"'"
|
||||
"-DSTANDARD_UTILS_PATH='\"/no-such-path\"'"
|
||||
"-DNON_INTERACTIVE_LOGIN_SHELLS"
|
||||
"-DSSH_SOURCE_BASHRC")
|
||||
" "))
|
||||
(post-install-phase
|
||||
'(lambda* (#:key outputs #:allow-other-keys)
|
||||
;; Add a `bash' -> `sh' link.
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(with-directory-excursion (string-append out "/bin")
|
||||
(symlink "bash" "sh"))))))
|
||||
(let* ((cppflags (string-join '("-DSYS_BASHRC='\"/etc/bashrc\"'"
|
||||
"-DSYS_BASH_LOGOUT='\"/etc/bash_logout\"'"
|
||||
"-DDEFAULT_PATH_VALUE='\"/no-such-path\"'"
|
||||
"-DSTANDARD_UTILS_PATH='\"/no-such-path\"'"
|
||||
"-DNON_INTERACTIVE_LOGIN_SHELLS"
|
||||
"-DSSH_SOURCE_BASHRC")
|
||||
" "))
|
||||
(configure-flags
|
||||
``("--with-installed-readline"
|
||||
,,(string-append "CPPFLAGS=" cppflags)
|
||||
,(string-append
|
||||
"LDFLAGS=-Wl,-rpath -Wl,"
|
||||
(assoc-ref %build-inputs "readline")
|
||||
"/lib"
|
||||
" -Wl,-rpath -Wl,"
|
||||
(assoc-ref %build-inputs "ncurses")
|
||||
"/lib")))
|
||||
(post-install-phase
|
||||
'(lambda* (#:key outputs #:allow-other-keys)
|
||||
;; Add a `bash' -> `sh' link.
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(with-directory-excursion (string-append out "/bin")
|
||||
(symlink "bash" "sh"))))))
|
||||
(package
|
||||
(name "bash")
|
||||
(version "4.2")
|
||||
@@ -53,15 +63,12 @@
|
||||
(inputs `(("readline" ,readline)
|
||||
("ncurses" ,ncurses))) ; TODO: add texinfo
|
||||
(arguments
|
||||
`(#:configure-flags `("--with-installed-readline"
|
||||
,,(string-append "CPPFLAGS=" cppflags)
|
||||
,(string-append
|
||||
"LDFLAGS=-Wl,-rpath -Wl,"
|
||||
(assoc-ref %build-inputs "readline")
|
||||
"/lib"
|
||||
" -Wl,-rpath -Wl,"
|
||||
(assoc-ref %build-inputs "ncurses")
|
||||
"/lib"))
|
||||
`(;; When cross-compiling, `configure' incorrectly guesses that job
|
||||
;; control is missing.
|
||||
#:configure-flags ,(if (%current-target-system)
|
||||
`(cons* "bash_cv_job_control_missing=no"
|
||||
,configure-flags)
|
||||
configure-flags)
|
||||
|
||||
;; Bash is reportedly not parallel-safe. See, for instance,
|
||||
;; <http://patches.openembedded.org/patch/32745/> and
|
||||
@@ -98,7 +105,7 @@ modification.")
|
||||
(guix build utils)
|
||||
(srfi srfi-1)
|
||||
(srfi srfi-26))
|
||||
,@(package-arguments bash))))
|
||||
,@(package-arguments bash))))
|
||||
(substitute-keyword-arguments args
|
||||
((#:configure-flags flags)
|
||||
`(list "--without-bash-malloc"
|
||||
@@ -107,4 +114,8 @@ modification.")
|
||||
"--disable-help-builtin"
|
||||
"--disable-progcomp"
|
||||
"--disable-net-redirections"
|
||||
"--disable-nls")))))))
|
||||
"--disable-nls"
|
||||
|
||||
,@(if (%current-target-system)
|
||||
'("bash_cv_job_control_missing=no")
|
||||
'()))))))))
|
||||
|
||||
@@ -45,7 +45,11 @@
|
||||
(system* "./dist/configure"
|
||||
(string-append "--prefix=" out)
|
||||
(string-append "CONFIG_SHELL=" (which "bash"))
|
||||
(string-append "SHELL=" (which "bash"))))))
|
||||
(string-append "SHELL=" (which "bash"))
|
||||
|
||||
;; The compatibility mode is needed by some packages,
|
||||
;; notably iproute2.
|
||||
"--enable-compat185"))))
|
||||
%standard-phases)))
|
||||
(synopsis "db, the Berkeley database")
|
||||
(description
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
(define-public libgc
|
||||
(package
|
||||
(name "libgc")
|
||||
(version "7.2alpha6")
|
||||
(version "7.2d")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@@ -33,9 +33,13 @@
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"05jwadjbrv8pr7z9cb4miskicxqpxm0pca4h2rg5cgbpajr2bx7b"))))
|
||||
"0phwa5driahnpn79zqff14w9yc8sn3599cxz91m78hqdcpl0mznr"))))
|
||||
(build-system gnu-build-system)
|
||||
;; TODO: Build with -DUSE_LIBC_PRIVATES (see make-bootstrap.scm).
|
||||
(arguments
|
||||
;; Make it so that we don't rely on /proc. This is especially useful in
|
||||
;; an initrd run before /proc is mounted.
|
||||
'(#:configure-flags '("CPPFLAGS=-DUSE_LIBC_PRIVATES")))
|
||||
(outputs '("out" "debug"))
|
||||
(synopsis "The Boehm-Demers-Weiser conservative garbage collector
|
||||
for C and C++")
|
||||
(description
|
||||
|
||||
@@ -131,7 +131,10 @@ check whether everything is alright."
|
||||
(propagated-inputs (map rewritten-input
|
||||
(package-propagated-inputs p)))))))
|
||||
|
||||
(define* (glibc-dynamic-linker #:optional (system (%current-system)))
|
||||
(define* (glibc-dynamic-linker
|
||||
#:optional (system (or (and=> (%current-target-system)
|
||||
gnu-triplet->nix-system)
|
||||
(%current-system))))
|
||||
"Return the name of Glibc's dynamic linker for SYSTEM."
|
||||
(cond ((string=? system "x86_64-linux") "/lib/ld-linux-x86-64.so.2")
|
||||
((string=? system "i686-linux") "/lib/ld-linux.so.2")
|
||||
@@ -181,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")
|
||||
|
||||
+73
-4
@@ -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
|
||||
@@ -88,14 +92,14 @@ well as utility programs such as an audio CD player and an extractor.")
|
||||
(define-public xorriso
|
||||
(package
|
||||
(name "xorriso")
|
||||
(version "1.2.8")
|
||||
(version "1.3.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/xorriso/xorriso-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1h3w9ymhsi0wghcnl7mmlml40rm4yill1c75g90xc7r1a2g8k1mn"))))
|
||||
"1gvyf1ppq764hsk8iyffip7h1dnz2b9k2cchf7himnns03aadavn"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("acl" ,acl)
|
||||
@@ -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+)))
|
||||
|
||||
@@ -30,8 +30,10 @@
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://zlib.net/zlib-"
|
||||
version ".tar.gz"))
|
||||
(uri (list (string-append "http://zlib.net/zlib-"
|
||||
version ".tar.gz")
|
||||
(string-append "mirror://sourceforge/libpng/zlib-"
|
||||
version ".tar.gz")))
|
||||
(sha256
|
||||
(base32
|
||||
"1i96gsdvxqb6skp9a58bacf1wxamwi9m9pg4yn7cpf7g7239r77s"))))
|
||||
@@ -64,14 +66,14 @@ in compression.")
|
||||
(define-public gzip
|
||||
(package
|
||||
(name "gzip")
|
||||
(version "1.5")
|
||||
(version "1.6")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/gzip/gzip-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"18rm80kar7n016g8bsyy1a3zk50i2826xdgs874yh64rzj7nxmdm"))))
|
||||
"0zlgdm4v3dndrbiz7b67mbbj25dpwqbmbzjiycssvrfrcfvq7swp"))))
|
||||
(build-system gnu-build-system)
|
||||
(synopsis "General file (de)compression (using lzw)")
|
||||
(arguments
|
||||
@@ -187,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")
|
||||
@@ -198,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+)))
|
||||
|
||||
+49
-19
@@ -29,7 +29,10 @@
|
||||
#:use-module (guix build-system trivial)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module (ice-9 match))
|
||||
#:use-module (ice-9 match)
|
||||
#:export (cross-binutils
|
||||
cross-libc
|
||||
cross-gcc))
|
||||
|
||||
(define (cross p target)
|
||||
(package (inherit p)
|
||||
@@ -41,20 +44,32 @@
|
||||
`(cons ,(string-append "--target=" target)
|
||||
,flags))))))
|
||||
|
||||
(define cross-binutils
|
||||
(cut cross binutils <>))
|
||||
(define (cross-binutils target)
|
||||
"Return a cross-Binutils for TARGET."
|
||||
(let ((binutils (package (inherit binutils)
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments
|
||||
binutils)
|
||||
((#:configure-flags flags)
|
||||
;; Build with `--with-sysroot' so that ld honors
|
||||
;; DT_RUNPATH entries when searching for a needed
|
||||
;; library. This works because as a side effect
|
||||
;; `genscripts.sh' sets `USE_LIBPATH=yes', which tells
|
||||
;; elf32.em to use DT_RUNPATH in its search list.
|
||||
;; See <http://sourceware.org/ml/binutils/2013-05/msg00312.html>.
|
||||
;;
|
||||
;; In theory choosing / as the sysroot could lead ld
|
||||
;; to pick up native libs instead of target ones. In
|
||||
;; practice the RUNPATH of target libs only refers to
|
||||
;; target libs, not native libs, so this is safe.
|
||||
`(cons "--with-sysroot=/" ,flags)))))))
|
||||
(cross binutils target)))
|
||||
|
||||
(define* (cross-gcc target
|
||||
#:optional (xbinutils (cross-binutils target)) libc)
|
||||
"Return a cross-compiler for TARGET, where TARGET is a GNU triplet. Use
|
||||
XBINUTILS as the associated cross-Binutils. If LIBC is false, then build a
|
||||
GCC that does not target a libc; otherwise, target that libc."
|
||||
(define args
|
||||
;; Get the arguments as if we were building for TARGET. In particular, we
|
||||
;; want `glibc-dynamic-linker' to return the right thing.
|
||||
(parameterize ((%current-system (gnu-triplet->nix-system target)))
|
||||
(package-arguments gcc-4.7)))
|
||||
|
||||
(package (inherit gcc-4.7)
|
||||
(name (string-append "gcc-cross-"
|
||||
(if libc "" "sans-libc-")
|
||||
@@ -68,9 +83,10 @@ GCC that does not target a libc; otherwise, target that libc."
|
||||
(srfi srfi-26))
|
||||
#:patches (list (assoc-ref %build-inputs "patch/cross-env-vars"))
|
||||
|
||||
,@(substitute-keyword-arguments args
|
||||
,@(substitute-keyword-arguments (package-arguments gcc-4.7)
|
||||
((#:configure-flags flags)
|
||||
`(append (list ,(string-append "--target=" target)
|
||||
,@(gcc-configure-flags-for-triplet target)
|
||||
,@(if libc
|
||||
'()
|
||||
`( ;; Disable features not needed at this stage.
|
||||
@@ -159,7 +175,8 @@ GCC that does not target a libc; otherwise, target that libc."
|
||||
;; <http://lists.fedoraproject.org/pipermail/arm/2010-August/000663.html>
|
||||
;; for instance.
|
||||
#f))))
|
||||
(inputs
|
||||
|
||||
(native-inputs
|
||||
`(("patch/cross-env-vars"
|
||||
,(search-patch "gcc-cross-environment-variables.patch"))
|
||||
|
||||
@@ -175,7 +192,19 @@ GCC that does not target a libc; otherwise, target that libc."
|
||||
(if libc
|
||||
`(("libc" ,libc)
|
||||
,@inputs)
|
||||
inputs))))))
|
||||
inputs))))
|
||||
|
||||
(inputs '())
|
||||
|
||||
;; Only search target inputs, not host inputs.
|
||||
(search-paths
|
||||
(list (search-path-specification
|
||||
(variable "CROSS_CPATH")
|
||||
(directories '("include")))
|
||||
(search-path-specification
|
||||
(variable "CROSS_LIBRARY_PATH")
|
||||
(directories '("lib" "lib64")))))
|
||||
(native-search-paths '())))
|
||||
|
||||
(define* (cross-libc target
|
||||
#:optional
|
||||
@@ -199,9 +228,9 @@ XBINUTILS and the cross tool chain."
|
||||
(and (zero? (system* "make" "defconfig"))
|
||||
(zero? (system* "make" "mrproper" "headers_check"))))
|
||||
,phases))))
|
||||
(inputs `(("cross-gcc" ,xgcc)
|
||||
("cross-binutils" ,xbinutils)
|
||||
,@(package-inputs linux-libre-headers)))))
|
||||
(native-inputs `(("cross-gcc" ,xgcc)
|
||||
("cross-binutils" ,xbinutils)
|
||||
,@(package-native-inputs linux-libre-headers)))))
|
||||
|
||||
(package (inherit glibc)
|
||||
(name (string-append "glibc-cross-" target))
|
||||
@@ -221,10 +250,11 @@ XBINUTILS and the cross tool chain."
|
||||
(string-append linux "/include"))
|
||||
#t))
|
||||
,phases))))
|
||||
|
||||
(propagated-inputs `(("cross-linux-headers" ,xlinux-headers)))
|
||||
(inputs `(("cross-gcc" ,xgcc)
|
||||
("cross-binutils" ,xbinutils)
|
||||
,@(package-inputs glibc)))))
|
||||
(native-inputs `(("cross-gcc" ,xgcc)
|
||||
("cross-binutils" ,xbinutils)
|
||||
,@(package-native-inputs glibc)))))
|
||||
|
||||
|
||||
;;;
|
||||
@@ -232,7 +262,7 @@ XBINUTILS and the cross tool chain."
|
||||
;;;
|
||||
|
||||
(define-public xgcc-mips64el
|
||||
(let ((triplet "mips64el-linux-gnu"))
|
||||
(let ((triplet "mips64el-linux-gnuabi64")) ; N64 ABI
|
||||
(cross-gcc triplet
|
||||
(cross-binutils triplet)
|
||||
(cross-libc triplet))))
|
||||
|
||||
@@ -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
|
||||
|
||||
+2
-2
@@ -26,14 +26,14 @@
|
||||
(define-public ed
|
||||
(package
|
||||
(name "ed")
|
||||
(version "1.8")
|
||||
(version "1.9")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/ed/ed-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0wvj190ky5i0gm0pilx9k75l6alyc6h5s14fm3dbk90y7g9kihb4"))))
|
||||
"122syihsx2hwzj75mkf5a9ssiky2xby748kp4cc00wzhmp7p5cym"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:configure-flags '("CC=gcc")
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -27,14 +27,14 @@
|
||||
(define-public freeipmi
|
||||
(package
|
||||
(name "freeipmi")
|
||||
(version "1.2.6")
|
||||
(version "1.2.8")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/freeipmi/freeipmi-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0fjc9kr6x1k55a101qikl3rsc9y6fh4iqr84mj7kgzqgk7rwp5ij"))))
|
||||
"0aqbjlqv8nh5nnfx5icyvcvws87xnwqjqsfszjx0jqb539snrc58"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("readline" ,readline) ("libgcrypt" ,libgcrypt)))
|
||||
|
||||
+19
-7
@@ -18,6 +18,7 @@
|
||||
|
||||
(define-module (gnu packages gawk)
|
||||
#:use-module (guix licenses)
|
||||
#:use-module (gnu packages bash)
|
||||
#:use-module (gnu packages libsigsegv)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
@@ -26,20 +27,17 @@
|
||||
(define-public gawk
|
||||
(package
|
||||
(name "gawk")
|
||||
(version "4.0.2")
|
||||
(version "4.1.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/gawk/gawk-" version
|
||||
".tar.xz"))
|
||||
(sha256
|
||||
(base32 "04vd0axif762mf781pj3days6ilv2333b9zi9c50y5mma66g5q91"))))
|
||||
(base32 "0hin2hswbbd6kd6i4zzvgciwpl5fba8d2s524z8y5qagyz3x010q"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:parallel-tests? #f ; test suite fails in parallel
|
||||
|
||||
;; Work around test failure on Cygwin.
|
||||
#:tests? ,(not (string=? (%current-system) "i686-cygwin"))
|
||||
|
||||
#:phases (alist-cons-before
|
||||
'configure 'set-shell-file-name
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
@@ -47,9 +45,23 @@
|
||||
(let ((bash (assoc-ref inputs "bash")))
|
||||
(substitute* "io.c"
|
||||
(("/bin/sh")
|
||||
(string-append bash "/bin/bash")))))
|
||||
(string-append bash "/bin/bash")))
|
||||
|
||||
;; When cross-compiling, remove dependencies on the
|
||||
;; `check-for-shared-lib-support' target, which tries to
|
||||
;; run the cross-built `gawk'.
|
||||
,@(if (%current-target-system)
|
||||
'((substitute* "extension/Makefile.in"
|
||||
(("^.*: check-for-shared-lib-support" match)
|
||||
(string-append "### " match))))
|
||||
'())))
|
||||
%standard-phases)))
|
||||
(inputs `(("libsigsegv" ,libsigsegv)))
|
||||
(inputs `(("libsigsegv" ,libsigsegv)
|
||||
|
||||
,@(if (%current-target-system)
|
||||
`(("bash" ,bash))
|
||||
'())))
|
||||
|
||||
(home-page "http://www.gnu.org/software/gawk/")
|
||||
(synopsis "A text scanning and processing language")
|
||||
(description
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages gcal)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix licenses))
|
||||
|
||||
(define-public gcal
|
||||
(package
|
||||
(name "gcal")
|
||||
(version "3.6.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/gcal/gcal-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"06xkwkir9w4jd9i72m1izmf4rbry4slg8gkiml4w26h13lx92hk7"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "http://www.gnu.org/software/gcal")
|
||||
(synopsis "Calculating and printing a wide variety of calendars")
|
||||
(description
|
||||
"Gcal is a program for calculating and printing calendars. Gcal displays
|
||||
hybrid and proleptic Julian and Gregorian calendar sheets,respectively for one
|
||||
month, three months, or a whole year. It also displays eternal holiday lists
|
||||
for many countries around the globe, and features a very powerful creation of
|
||||
fixed date lists that can be used for reminding purposes. Gcal can calculate
|
||||
various astronomical data and times of the Sun and the Moon for pleasure at
|
||||
any location, precisely enough for most civil purposes. Gcal supports some
|
||||
other calendar systems, for example, the Chinese and Japanese calendars, the
|
||||
Hebrew calendar, and the civil Islamic calendar, too.")
|
||||
(license gpl3+)))
|
||||
+157
-111
@@ -23,150 +23,196 @@
|
||||
#:use-module (gnu packages bootstrap)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages multiprecision)
|
||||
#:use-module (gnu packages texinfo)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu))
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (ice-9 regex))
|
||||
|
||||
(define %gcc-infrastructure
|
||||
;; Base URL for GCC's infrastructure.
|
||||
"ftp://gcc.gnu.org/pub/gcc/infrastructure/")
|
||||
|
||||
(define-public (gcc-configure-flags-for-triplet target)
|
||||
"Return a list of additional GCC `configure' flags for TARGET, a GNU triplet.
|
||||
|
||||
The purpose of this procedure is to translate extended GNU triplets---e.g.,
|
||||
where the OS part is overloaded to denote a specific ABI---into GCC
|
||||
`configure' options. We take extended GNU triplets that glibc recognizes."
|
||||
(cond ((string-match "^mips64el.*gnuabin?64$" target)
|
||||
;; Triplets recognized by glibc as denoting the N64 ABI; see
|
||||
;; ports/sysdeps/mips/preconfigure.
|
||||
'("--with-abi=64"))
|
||||
(else
|
||||
;; TODO: Add `armel.*gnueabi', `hf', etc.
|
||||
'())))
|
||||
|
||||
(define-public gcc-4.7
|
||||
(let ((stripped? #t)) ; TODO: make this a parameter
|
||||
(let* ((stripped? #t) ; TODO: make this a parameter
|
||||
(maybe-target-tools
|
||||
(lambda ()
|
||||
;; Return the `_FOR_TARGET' variables that are needed when
|
||||
;; cross-compiling GCC.
|
||||
(let ((target (%current-target-system)))
|
||||
(if target
|
||||
(map (lambda (var tool)
|
||||
(string-append (string-append var "_FOR_TARGET")
|
||||
"=" target "-" tool))
|
||||
'("CC" "CXX" "LD" "AR" "NM" "RANLIB" "STRIP")
|
||||
'("gcc" "g++" "ld" "ar" "nm" "ranlib" "strip"))
|
||||
'()))))
|
||||
(configure-flags
|
||||
(lambda ()
|
||||
;; This is terrible. Since we have two levels of quasiquotation,
|
||||
;; we have to do this convoluted thing just so we can insert the
|
||||
;; contents of (maybe-target-tools).
|
||||
(list 'quasiquote
|
||||
(append
|
||||
'("--enable-plugin"
|
||||
"--enable-languages=c,c++"
|
||||
"--disable-multilib"
|
||||
|
||||
"--with-local-prefix=/no-gcc-local-prefix"
|
||||
|
||||
,(let ((libc (assoc-ref %build-inputs "libc")))
|
||||
(if libc
|
||||
(string-append "--with-native-system-header-dir=" libc
|
||||
"/include")
|
||||
"--without-headers")))
|
||||
|
||||
;; When cross-compiling GCC, pass the right options for the
|
||||
;; target triplet.
|
||||
(or (and=> (%current-target-system)
|
||||
gcc-configure-flags-for-triplet)
|
||||
'())
|
||||
|
||||
(maybe-target-tools))))))
|
||||
(package
|
||||
(name "gcc")
|
||||
(version "4.7.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/gcc/gcc-"
|
||||
version "/gcc-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1hx9h64ivarlzi4hxvq42as5m9vlr5cyzaaq4gzj4i619zmkfz1g"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("gmp" ,gmp)
|
||||
("mpfr" ,mpfr)
|
||||
("mpc" ,mpc)
|
||||
("isl" ,isl)
|
||||
("cloog" ,cloog)
|
||||
("libelf" ,libelf)
|
||||
("zlib" ,zlib)))
|
||||
(arguments
|
||||
`(#:out-of-source? #t
|
||||
#:strip-binaries? ,stripped?
|
||||
#:configure-flags
|
||||
`("--enable-plugin"
|
||||
"--enable-languages=c,c++"
|
||||
"--disable-multilib"
|
||||
(name "gcc")
|
||||
(version "4.7.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/gcc/gcc-"
|
||||
version "/gcc-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1hx9h64ivarlzi4hxvq42as5m9vlr5cyzaaq4gzj4i619zmkfz1g"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("gmp" ,gmp)
|
||||
("mpfr" ,mpfr)
|
||||
("mpc" ,mpc)
|
||||
("isl" ,isl)
|
||||
("cloog" ,cloog)
|
||||
("libelf" ,libelf)
|
||||
("zlib" ,zlib)))
|
||||
|
||||
"--with-local-prefix=/no-gcc-local-prefix"
|
||||
;; GCC is one of the few packages that doesn't ship .info files.
|
||||
(native-inputs `(("texinfo" ,texinfo)))
|
||||
|
||||
,(let ((libc (assoc-ref %build-inputs "libc")))
|
||||
(if libc
|
||||
(string-append "--with-native-system-header-dir=" libc
|
||||
"/include")
|
||||
"--without-headers")))
|
||||
#:make-flags
|
||||
(let ((libc (assoc-ref %build-inputs "libc")))
|
||||
`(,@(if libc
|
||||
(list (string-append "LDFLAGS_FOR_TARGET="
|
||||
"-B" libc "/lib "
|
||||
"-Wl,-dynamic-linker "
|
||||
"-Wl," libc
|
||||
,(glibc-dynamic-linker)))
|
||||
'())
|
||||
,(string-append "BOOT_CFLAGS=-O2 "
|
||||
,(if stripped? "-g0" "-g"))))
|
||||
(arguments
|
||||
`(#:out-of-source? #t
|
||||
#:strip-binaries? ,stripped?
|
||||
#:configure-flags ,(configure-flags)
|
||||
#:make-flags
|
||||
(let ((libc (assoc-ref %build-inputs "libc")))
|
||||
`(,@(if libc
|
||||
(list (string-append "LDFLAGS_FOR_TARGET="
|
||||
"-B" libc "/lib "
|
||||
"-Wl,-dynamic-linker "
|
||||
"-Wl," libc
|
||||
,(glibc-dynamic-linker)))
|
||||
'())
|
||||
,(string-append "BOOT_CFLAGS=-O2 "
|
||||
,(if stripped? "-g0" "-g"))))
|
||||
|
||||
#:tests? #f
|
||||
#:phases
|
||||
(alist-cons-before
|
||||
'configure 'pre-configure
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out"))
|
||||
(libc (assoc-ref inputs "libc")))
|
||||
(when libc
|
||||
;; The following is not performed for `--without-headers'
|
||||
;; cross-compiler builds.
|
||||
#:tests? #f
|
||||
#:phases
|
||||
(alist-cons-before
|
||||
'configure 'pre-configure
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out"))
|
||||
(libc (assoc-ref inputs "libc")))
|
||||
(when libc
|
||||
;; The following is not performed for `--without-headers'
|
||||
;; cross-compiler builds.
|
||||
|
||||
;; Fix the dynamic linker's file name.
|
||||
(substitute* (find-files "gcc/config"
|
||||
"^linux(64|-elf)?\\.h$")
|
||||
(("#define GLIBC_DYNAMIC_LINKER([^ ]*).*$" _ suffix)
|
||||
(format #f "#define GLIBC_DYNAMIC_LINKER~a \"~a\"~%"
|
||||
suffix
|
||||
(string-append libc ,(glibc-dynamic-linker)))))
|
||||
;; Fix the dynamic linker's file name.
|
||||
(substitute* (find-files "gcc/config"
|
||||
"^linux(64|-elf)?\\.h$")
|
||||
(("#define GLIBC_DYNAMIC_LINKER([^ ]*).*$" _ suffix)
|
||||
(format #f "#define GLIBC_DYNAMIC_LINKER~a \"~a\"~%"
|
||||
suffix
|
||||
(string-append libc ,(glibc-dynamic-linker)))))
|
||||
|
||||
;; Tell where to find libstdc++, libc, and `?crt*.o', except
|
||||
;; `crt{begin,end}.o', which come with GCC.
|
||||
(substitute* (find-files "gcc/config"
|
||||
"^(gnu-user(64)?|linux-elf)\\.h$")
|
||||
(("#define LIB_SPEC (.*)$" _ suffix)
|
||||
;; Note that with this "lib" spec, we may still add a
|
||||
;; RUNPATH to GCC even when `libgcc_s' is not NEEDED.
|
||||
;; There's not much that can be done to avoid it, though.
|
||||
(format #f "#define LIB_SPEC \"-L~a/lib %{!static:-rpath=~a/lib \
|
||||
;; Tell where to find libstdc++, libc, and `?crt*.o', except
|
||||
;; `crt{begin,end}.o', which come with GCC.
|
||||
(substitute* (find-files "gcc/config"
|
||||
"^(gnu-user(64)?|linux-elf)\\.h$")
|
||||
(("#define LIB_SPEC (.*)$" _ suffix)
|
||||
;; Note that with this "lib" spec, we may still add a
|
||||
;; RUNPATH to GCC even when `libgcc_s' is not NEEDED.
|
||||
;; There's not much that can be done to avoid it, though.
|
||||
(format #f "#define LIB_SPEC \"-L~a/lib %{!static:-rpath=~a/lib \
|
||||
%{!static-libgcc:-rpath=~a/lib64 -rpath=~a/lib}} \" ~a"
|
||||
libc libc out out suffix))
|
||||
(("#define STARTFILE_SPEC.*$" line)
|
||||
(format #f "#define STANDARD_STARTFILE_PREFIX_1 \"~a/lib\"
|
||||
libc libc out out suffix))
|
||||
(("#define STARTFILE_SPEC.*$" line)
|
||||
(format #f "#define STANDARD_STARTFILE_PREFIX_1 \"~a/lib\"
|
||||
#define STANDARD_STARTFILE_PREFIX_2 \"\"
|
||||
~a~%"
|
||||
libc line))))
|
||||
libc line))))
|
||||
|
||||
;; Don't retain a dependency on the build-time sed.
|
||||
(substitute* "fixincludes/fixincl.x"
|
||||
(("static char const sed_cmd_z\\[\\] =.*;")
|
||||
"static char const sed_cmd_z[] = \"sed\";"))))
|
||||
;; Don't retain a dependency on the build-time sed.
|
||||
(substitute* "fixincludes/fixincl.x"
|
||||
(("static char const sed_cmd_z\\[\\] =.*;")
|
||||
"static char const sed_cmd_z[] = \"sed\";"))))
|
||||
|
||||
(alist-cons-after
|
||||
'configure 'post-configure
|
||||
(lambda _
|
||||
;; Don't store configure flags, to avoid retaining references to
|
||||
;; build-time dependencies---e.g., `--with-ppl=/nix/store/xxx'.
|
||||
(substitute* "Makefile"
|
||||
(("^TOPLEVEL_CONFIGURE_ARGUMENTS=(.*)$" _ rest)
|
||||
"TOPLEVEL_CONFIGURE_ARGUMENTS=\n")))
|
||||
(alist-replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(zero?
|
||||
(system* "make"
|
||||
,(if stripped?
|
||||
"install-strip"
|
||||
"install"))))
|
||||
%standard-phases)))))
|
||||
(alist-cons-after
|
||||
'configure 'post-configure
|
||||
(lambda _
|
||||
;; Don't store configure flags, to avoid retaining references to
|
||||
;; build-time dependencies---e.g., `--with-ppl=/nix/store/xxx'.
|
||||
(substitute* "Makefile"
|
||||
(("^TOPLEVEL_CONFIGURE_ARGUMENTS=(.*)$" _ rest)
|
||||
"TOPLEVEL_CONFIGURE_ARGUMENTS=\n")))
|
||||
(alist-replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(zero?
|
||||
(system* "make"
|
||||
,(if stripped?
|
||||
"install-strip"
|
||||
"install"))))
|
||||
%standard-phases)))))
|
||||
|
||||
(native-search-paths
|
||||
(list (search-path-specification
|
||||
(variable "CPATH")
|
||||
(directories '("include")))
|
||||
(search-path-specification
|
||||
(variable "LIBRARY_PATH")
|
||||
(directories '("lib" "lib64")))))
|
||||
(native-search-paths
|
||||
(list (search-path-specification
|
||||
(variable "CPATH")
|
||||
(directories '("include")))
|
||||
(search-path-specification
|
||||
(variable "LIBRARY_PATH")
|
||||
(directories '("lib" "lib64")))))
|
||||
|
||||
(properties `((gcc-libc . ,(assoc-ref inputs "libc"))))
|
||||
(synopsis "GNU Compiler Collection")
|
||||
(description
|
||||
"The GNU Compiler Collection includes compiler front ends for C, C++,
|
||||
(properties `((gcc-libc . ,(assoc-ref inputs "libc"))))
|
||||
(synopsis "GNU Compiler Collection")
|
||||
(description
|
||||
"The GNU Compiler Collection includes compiler front ends for C, C++,
|
||||
Objective-C, Fortran, OpenMP for C/C++/Fortran, Java, and Ada, as well as
|
||||
libraries for these languages (libstdc++, libgcj, libgomp,...).
|
||||
|
||||
GCC development is a part of the GNU Project, aiming to improve the compiler
|
||||
used in the GNU system including the GNU/Linux variant.")
|
||||
(license gpl3+)
|
||||
(home-page "http://gcc.gnu.org/"))))
|
||||
(license gpl3+)
|
||||
(home-page "http://gcc.gnu.org/"))))
|
||||
|
||||
(define-public gcc-4.8
|
||||
;; FIXME: Move to gcc.scm when Binutils is updated.
|
||||
(package (inherit gcc-4.7)
|
||||
(version "4.8.0")
|
||||
(version "4.8.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/gcc/gcc-"
|
||||
version "/gcc-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0b6cp9d1sas3vq6dj3zrgd134p9b569fqhbixb9cl7mp698zwdxh"))))))
|
||||
"04sqn0ds17ys8l6zn7vyyvjz1a7hsk4zb0381vlw9wnr7az48nsl"))))))
|
||||
|
||||
(define-public isl
|
||||
(package
|
||||
@@ -175,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
|
||||
@@ -185,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")
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages gd)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix download)
|
||||
#:use-module (gnu packages libpng)
|
||||
#:use-module (gnu packages libjpeg)
|
||||
#:use-module (gnu packages fontutils)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module ((guix licenses) #:select (bsd-style)))
|
||||
|
||||
(define-public gd
|
||||
(package
|
||||
(name "gd")
|
||||
|
||||
;; Note: With libgd.org now pointing to bitbucket.org, genuine old
|
||||
;; tarballs are no longer available. Notably, versions 2.0.34 and .35 are
|
||||
;; missing.
|
||||
(version "2.0.33")
|
||||
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri "https://bitbucket.org/libgd/gd-libgd/get/GD_2_0_33.tar.gz")
|
||||
(sha256
|
||||
(base32
|
||||
"0yrbx8mj9pykyzm0zl1q86xlkdvkajcsf5jmg688vhw9yc5wmbbw"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:phases (alist-cons-after
|
||||
'unpack 'chdir
|
||||
(lambda _
|
||||
(chdir "src"))
|
||||
%standard-phases)))
|
||||
(inputs
|
||||
`(("freetype" ,freetype)
|
||||
("libpng" ,libpng)
|
||||
("zlib" ,zlib)))
|
||||
(propagated-inputs
|
||||
`(("fontconfig" ,fontconfig)
|
||||
("libjpeg" ,libjpeg)))
|
||||
(home-page "http://www.libgd.org/")
|
||||
(synopsis "Library for the dynamic creation of images by programmers")
|
||||
(description
|
||||
"GD is a library for the dynamic creation of images by programmers. GD
|
||||
is written in C, and \"wrappers\" are available for Perl, PHP and other
|
||||
languages. GD creates PNG, JPEG, GIF, WebP, XPM, BMP images, among other
|
||||
formats. GD is commonly used to generate charts, graphics, thumbnails, and
|
||||
most anything else, on the fly. While not restricted to use on the web, the
|
||||
most common applications of GD involve website development.")
|
||||
(license (bsd-style "file://COPYING"
|
||||
"See COPYING file in the distribution."))))
|
||||
@@ -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+)))
|
||||
+13
-19
@@ -26,36 +26,30 @@
|
||||
(define-public gettext
|
||||
(package
|
||||
(name "gettext")
|
||||
(version "0.18.1.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/gettext/gettext-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1sa3ch12qxa4h3ya6hkz119yclcccmincl9j20dhrdx5mykp3b4k"))))
|
||||
(version "0.18.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/gettext/gettext-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0j7rp56c61j4k1bz1xdc041hzv7186yyzhbp95fmc0zq7l2c3wrn"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:patches (list (assoc-ref %build-inputs "patch/gets"))
|
||||
#:phases (alist-cons-before
|
||||
`(#:phases (alist-cons-before
|
||||
'check 'patch-tests
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((bash (assoc-ref inputs "bash")))
|
||||
(let ((bash (which "sh")))
|
||||
(substitute* (find-files "gettext-tools/tests"
|
||||
"^msgexec-[0-9]")
|
||||
(("#![[:blank:]]/bin/sh")
|
||||
(format #f "#!~a/bin/sh" bash)))
|
||||
(format #f "#!~a" bash)))
|
||||
(substitute* (find-files "gettext-tools/gnulib-tests"
|
||||
"posix_spawn")
|
||||
(("/bin/sh")
|
||||
(format #f "~a/bin/bash" bash)))))
|
||||
bash))))
|
||||
%standard-phases)))
|
||||
(inputs
|
||||
`(("patch/gets"
|
||||
,(search-patch "gettext-gets-undeclared.patch"))))
|
||||
(home-page
|
||||
"http://www.gnu.org/software/gettext/")
|
||||
(home-page "http://www.gnu.org/software/gettext/")
|
||||
(synopsis "Tools and documentation for translation")
|
||||
(description
|
||||
"Usually, programs are written and documented in English, and use
|
||||
|
||||
@@ -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
|
||||
@@ -214,3 +214,23 @@ Ghostscript. It currently includes the 35 standard PostScript fonts.")
|
||||
(license license:gpl2)
|
||||
(home-page "http://sourceforge.net/projects/gs-fonts/")))
|
||||
|
||||
(define-public libspectre
|
||||
(package
|
||||
(name "libspectre")
|
||||
(version "0.2.7")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://libspectre.freedesktop.org/releases/libspectre-"
|
||||
version ".tar.gz"))
|
||||
(sha256 (base32
|
||||
"1v63lqc6bhhxwkpa43qmz8phqs8ci4dhzizyy16d3vkb20m846z8"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("ghostscript" ,ghostscript)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(synopsis "postscript rendering library")
|
||||
(description
|
||||
"libspectre is a small library for rendering Postscript documents.
|
||||
It provides a convenient easy to use API for handling and rendering
|
||||
Postscript documents.")
|
||||
(license license:gpl2+)
|
||||
(home-page "http://www.freedesktop.org/wiki/Software/libspectre")))
|
||||
|
||||
@@ -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+)))
|
||||
+118
-14
@@ -33,9 +33,20 @@
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages xml))
|
||||
#:use-module (gnu packages xml)
|
||||
#:use-module (gnu packages bash)
|
||||
#: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")
|
||||
@@ -48,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
|
||||
@@ -71,17 +99,17 @@ 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.34.3")
|
||||
(version "2.37.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnome/sources/"
|
||||
name "/2.34/"
|
||||
name "/2.37/"
|
||||
name "-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32 "19sq4rhl2vr8ikjvl8qh51vr38yqfhbkb3imi2s6ac5rgkwcnpw5"))))
|
||||
(base32 "1lp705q0g9jlfj24x8fpgjh7awmmara5iyj9kz5lhd49sr9s813k"))))
|
||||
(build-system gnu-build-system)
|
||||
(outputs '("out" ; everything
|
||||
"doc")) ; 20 MiB of GTK-Doc reference
|
||||
@@ -90,13 +118,13 @@ 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
|
||||
("bash" ,bash)
|
||||
("tzdata" ,tzdata) ; for tests/gdatetime.c
|
||||
|
||||
("patch/tests-tzdata"
|
||||
,(search-patch "glib-tests-timezone.patch"))
|
||||
("patch/tests-homedir"
|
||||
,(search-patch "glib-tests-homedir.patch"))
|
||||
("patch/tests-desktop"
|
||||
@@ -104,17 +132,31 @@ shared NFS home directories.")
|
||||
("patch/tests-prlimit"
|
||||
,(search-patch "glib-tests-prlimit.patch"))))
|
||||
(arguments
|
||||
'(#:patches (list (assoc-ref %build-inputs "patch/tests-tzdata")
|
||||
(assoc-ref %build-inputs "patch/tests-homedir")
|
||||
'(#:patches (list (assoc-ref %build-inputs "patch/tests-homedir")
|
||||
(assoc-ref %build-inputs "patch/tests-desktop")
|
||||
(assoc-ref %build-inputs "patch/tests-prlimit"))
|
||||
#:phases (alist-cons-before
|
||||
'build 'pre-build
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
;; For tests/gdatetime.c.
|
||||
(setenv "TZDIR"
|
||||
(string-append (assoc-ref inputs "tzdata")
|
||||
"/share/zoneinfo"))
|
||||
|
||||
;; Some tests want write access there.
|
||||
(setenv "XDG_CACHE_HOME" (getcwd))
|
||||
|
||||
(substitute* '("glib/gspawn.c"
|
||||
"glib/tests/utils.c"
|
||||
"tests/spawn-test.c")
|
||||
(("/bin/sh") (which "sh"))))
|
||||
(("/bin/sh")
|
||||
(string-append (assoc-ref inputs "bash") "/bin/sh")))
|
||||
|
||||
;; Honor $(TESTS_ENVIRONMENT).
|
||||
(substitute* (find-files "." "^Makefile(\\.in)?$")
|
||||
(("^GTESTER[[:blank:]]*=(.*)$" _ rest)
|
||||
(string-append "GTESTER = $(TESTS_ENVIRONMENT) "
|
||||
rest))))
|
||||
%standard-phases)
|
||||
|
||||
;; Note: `--docdir' and `--htmldir' are not honored, so work around it.
|
||||
@@ -129,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")
|
||||
@@ -147,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")
|
||||
@@ -166,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/")))
|
||||
+23
-21
@@ -34,7 +34,7 @@
|
||||
(define-public libgpg-error
|
||||
(package
|
||||
(name "libgpg-error")
|
||||
(version "1.11")
|
||||
(version "1.12")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -42,7 +42,7 @@
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1h0ql8j65ns2rmhj9wnc9035026crzkg226xg8614fq71947ccxf"))))
|
||||
"0pz58vr12qihq2f0bypjxsb6cf6ajq5258fmfm8s6lvwm3b9xz6a"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "http://gnupg.org")
|
||||
(synopsis
|
||||
@@ -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)))
|
||||
@@ -81,7 +81,7 @@ functions, random numbers and a lot of supporting functions.")
|
||||
(define-public libassuan
|
||||
(package
|
||||
(name "libassuan")
|
||||
(version "2.1.0")
|
||||
(version "2.1.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -89,7 +89,7 @@ functions, random numbers and a lot of supporting functions.")
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0ry2078pafpx2prnhngqsj9bvqxaywakp2paqayfh9i71hxbvid4"))))
|
||||
"1783nb0b6nr9yjhb5wfh8ykc5w89f4anppz1kz9913mqg5vxdqi3"))))
|
||||
(build-system gnu-build-system)
|
||||
(propagated-inputs
|
||||
`(("libgpg-error" ,libgpg-error) ("pth" ,pth)))
|
||||
@@ -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
|
||||
|
||||
@@ -23,10 +23,12 @@
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module ((gnu packages compression)
|
||||
#:renamer (symbol-prefix-proc 'guix:))
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages nettle)
|
||||
#:use-module (gnu packages guile)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages which))
|
||||
#:use-module (gnu packages which)
|
||||
#:use-module (gnu packages pkg-config))
|
||||
|
||||
(define-public libtasn1
|
||||
(package
|
||||
@@ -52,18 +54,20 @@ portable, and only require an ANSI C89 platform.")
|
||||
(define-public gnutls
|
||||
(package
|
||||
(name "gnutls")
|
||||
(version "3.1.9.1")
|
||||
(version "3.2.4")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
;; Note: Releases are no longer on ftp.gnu.org since the
|
||||
;; schism (after version 3.1.5).
|
||||
(string-append "mirror://gnupg/gnutls/v3.1/gnutls-"
|
||||
(string-append "mirror://gnupg/gnutls/v3.2/gnutls-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0gkwhz7sypfy39jfj2yzrngbxq5j9l9smqc89mqlqsh25spc8009"))))
|
||||
"0zvhzy87v9dfxfvmg1pl951kw55rp647cqdza8942fxq7spp158i"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
`(("guile" ,guile-2.0)
|
||||
("zlib" ,guix:zlib)
|
||||
|
||||
@@ -0,0 +1,124 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages graphviz)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix download)
|
||||
#:use-module (gnu packages xorg)
|
||||
#:use-module (gnu packages gtk)
|
||||
#:use-module (gnu packages xml)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages bison)
|
||||
#:use-module (gnu packages libpng)
|
||||
#:use-module (gnu packages libjpeg)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages fontutils)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages gd)
|
||||
#:use-module ((guix licenses) #:select (lgpl2.0+ epl1.0)))
|
||||
|
||||
(define-public graphviz
|
||||
(package
|
||||
(name "graphviz")
|
||||
(version "2.28.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://www.graphviz.org/pub/graphviz/ARCHIVE/graphviz-"
|
||||
version
|
||||
".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0xpwg99cd8sp0c6r8klsmc66h1pday64kmnr4v6f9jkqqmrpkank"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
;; FIXME: rtest/rtest.sh is a ksh script (!). Add ksh as an input.
|
||||
'(#:tests? #f
|
||||
|
||||
#:phases (alist-cons-before
|
||||
'build 'pre-build
|
||||
(lambda _
|
||||
;; Work around bogus makefile when using an external
|
||||
;; libltdl. Failing to do so, one hits this error:
|
||||
;; "No rule to make target `-lltdl', needed by `libgvc.la'."
|
||||
(substitute* "lib/gvc/Makefile"
|
||||
(("am__append_5 *=.*")
|
||||
"am_append_5 =\n")))
|
||||
%standard-phases)))
|
||||
(inputs
|
||||
`(("libXrender" ,libxrender)
|
||||
("libX11" ,libx11)
|
||||
("gts" ,gts)
|
||||
("gd" ,gd) ; FIXME: Our GD is too old
|
||||
("pango" ,pango)
|
||||
("fontconfig" ,fontconfig)
|
||||
("freetype" ,freetype)
|
||||
("libltdl" ,libtool)
|
||||
("bison" ,bison)
|
||||
("libXaw" ,libxaw)
|
||||
("expat" ,expat)
|
||||
("libjpeg" ,libjpeg)
|
||||
("libpng" ,libpng)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(home-page "http://www.graphviz.org/")
|
||||
(synopsis "Graph visualization software")
|
||||
(description
|
||||
"Graphviz is a graph visualization tool suite. Graph visualization is a
|
||||
way of representing structural information as diagrams of abstract graphs and
|
||||
networks. It has important applications in networking, bioinformatics,
|
||||
software engineering, database and web design, machine learning, and in visual
|
||||
interfaces for other technical domains.")
|
||||
(license epl1.0)))
|
||||
|
||||
(define-public gts
|
||||
(package
|
||||
(name "gts")
|
||||
(version "0.7.6")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/gts/gts-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"07mqx09jxh8cv9753y2d2jsv7wp8vjmrd7zcfpbrddz3wc9kx705"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:phases (alist-cons-before
|
||||
'check 'pre-check
|
||||
(lambda _
|
||||
(chmod "test/boolean/test.sh" #o777))
|
||||
%standard-phases)
|
||||
|
||||
;; Some data files used by the test suite are missing.
|
||||
;; See <http://sourceforge.net/p/gts/bugs/41/>.
|
||||
#:tests? #f))
|
||||
(inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(propagated-inputs
|
||||
;; The gts.pc file has glib-2.0 as required.
|
||||
`(("glib" ,glib)))
|
||||
(home-page "http://gts.sourceforge.net/")
|
||||
|
||||
;; Note: Despite the name, this is not official GNU software.
|
||||
(synopsis "Triangulated Surface Library")
|
||||
(description
|
||||
"Library intended to provide a set of useful functions to deal with
|
||||
3D surfaces meshed with interconnected triangles.")
|
||||
(license lgpl2.0+)))
|
||||
+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,84 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages grue-hunter)
|
||||
#:use-module (guix licenses)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system trivial)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages perl))
|
||||
|
||||
(define-public grue-hunter
|
||||
(package
|
||||
(name "grue-hunter")
|
||||
(version "1.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://jxself.org/" name ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1hjcpy5439qs3v2zykis7hsi0i17zjs62gks3zd8mnfw9ni4i2h3"))))
|
||||
(build-system trivial-build-system) ; no Makefile.PL
|
||||
(arguments `(#:modules ((guix build utils))
|
||||
#:builder
|
||||
(begin
|
||||
(use-modules (guix build utils))
|
||||
(use-modules (srfi srfi-1))
|
||||
|
||||
(let* ((tarball (assoc-ref %build-inputs "tarball"))
|
||||
(perl (string-append (assoc-ref %build-inputs
|
||||
"perl")
|
||||
"/bin"))
|
||||
(gunzip (string-append (assoc-ref %build-inputs
|
||||
"gzip")
|
||||
"/bin/gunzip"))
|
||||
(tar (string-append (assoc-ref %build-inputs
|
||||
"tar")
|
||||
"/bin/tar"))
|
||||
(out (assoc-ref %outputs "out"))
|
||||
(bin (string-append out "/bin"))
|
||||
(doc (string-append out "/share/doc")))
|
||||
(begin
|
||||
(mkdir out)
|
||||
(copy-file tarball "grue-hunter.tar.gz")
|
||||
(zero? (system* gunzip "grue-hunter.tar.gz"))
|
||||
(zero? (system* tar "xvf" "grue-hunter.tar"))
|
||||
|
||||
(mkdir-p bin)
|
||||
(copy-file "grue-hunter/gh.pl"
|
||||
(string-append bin "/grue-hunter"))
|
||||
(patch-shebang (string-append bin "/grue-hunter")
|
||||
(list perl))
|
||||
|
||||
(mkdir-p doc)
|
||||
(copy-file "grue-hunter/AGPLv3.txt"
|
||||
(string-append doc "/grue-hunter")))))))
|
||||
(inputs `(("perl" ,perl)
|
||||
("tar" ,tar)
|
||||
("gzip" ,gzip)
|
||||
("tarball" ,source)))
|
||||
(home-page "http://jxself.org/grue-hunter.shtml")
|
||||
(synopsis "Text adventure game")
|
||||
(description
|
||||
"Grue Hunter is a text adventure game written in Perl. You must make
|
||||
your way through an underground cave system in search of the Grue. Can you
|
||||
capture it and get out alive?")
|
||||
(license agpl3+)))
|
||||
@@ -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+)))
|
||||
+174
-1
@@ -22,8 +22,18 @@
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages fontutils)
|
||||
#:use-module (gnu packages ghostscript)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages pkg-config))
|
||||
#:use-module (gnu packages icu4c)
|
||||
#:use-module (gnu packages libjpeg)
|
||||
#:use-module (gnu packages libpng)
|
||||
#:use-module (gnu packages libtiff)
|
||||
#:use-module (gnu packages pdf)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages xorg))
|
||||
|
||||
(define-public atk
|
||||
(package
|
||||
@@ -46,3 +56,166 @@ by other toolkits and applications. Using the ATK interfaces, accessibility
|
||||
tools have full access to view and control running applications.")
|
||||
(license license:lgpl2.0+)
|
||||
(home-page "https://developer.gnome.org/atk/")))
|
||||
|
||||
(define-public cairo
|
||||
(package
|
||||
(name "cairo")
|
||||
(version "1.12.16")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://cairographics.org/releases/cairo-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0inqwsylqkrzcjivdirkjx5nhdgxbdc62fq284c3xppinfg9a195"))))
|
||||
(build-system gnu-build-system)
|
||||
(propagated-inputs
|
||||
`(("fontconfig" ,fontconfig)
|
||||
("freetype" ,freetype)
|
||||
("glib" ,glib)
|
||||
("libpng" ,libpng)
|
||||
("libx11" ,libx11)
|
||||
("libxext" ,libxext)
|
||||
("libxrender" ,libxrender)
|
||||
("pixman" ,pixman)))
|
||||
(inputs
|
||||
`(("ghostscript" ,ghostscript)
|
||||
("libspectre" ,libspectre)
|
||||
("pkg-config" ,pkg-config)
|
||||
("poppler" ,poppler)
|
||||
("python" ,python-wrapper)
|
||||
("xextproto" ,xextproto)
|
||||
("zlib" ,zlib)))
|
||||
(arguments
|
||||
`(#:tests? #f)) ; see http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00085.html
|
||||
(synopsis "2D graphics library")
|
||||
(description
|
||||
"Cairo is a 2D graphics library with support for multiple output devices.
|
||||
Currently supported output targets include the X Window System (via both
|
||||
Xlib and XCB), Quartz, Win32, image buffers, PostScript, PDF, and SVG file
|
||||
output. Experimental backends include OpenGL, BeOS, OS/2, and DirectFB.
|
||||
|
||||
Cairo is designed to produce consistent output on all output media while
|
||||
taking advantage of display hardware acceleration when available
|
||||
eg. through the X Render Extension).
|
||||
|
||||
The cairo API provides operations similar to the drawing operators of
|
||||
PostScript and PDF. Operations in cairo including stroking and filling cubic
|
||||
Bézier splines, transforming and compositing translucent images, and
|
||||
antialiased text rendering. All drawing operations can be transformed by any
|
||||
affine transformation (scale, rotation, shear, etc.)")
|
||||
(license license:lgpl2.1) ; or Mozilla Public License 1.1
|
||||
(home-page "http://cairographics.org/")))
|
||||
|
||||
(define-public harfbuzz
|
||||
(package
|
||||
(name "harfbuzz")
|
||||
(version "0.9.21")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1s6sffgf6ndy12fyln2bdnkn3cb1qfkch0rakdgkgwlq7n46zlx0"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("cairo" ,cairo)
|
||||
("icu4c" ,icu4c)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python" ,python-wrapper)))
|
||||
(synopsis "opentype text shaping engine")
|
||||
(description
|
||||
"HarfBuzz is an OpenType text shaping engine.")
|
||||
(license (license:x11-style "file://COPYING"
|
||||
"See 'COPYING' in the distribution."))
|
||||
(home-page "http://www.freedesktop.org/wiki/Software/HarfBuzz/")))
|
||||
|
||||
(define-public pango
|
||||
(package
|
||||
(name "pango")
|
||||
(version "1.34.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnome/sources/pango/1.34/pango-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0k7662qix7zzh7mf6ikdj594n8jpbfm25z8swz64zbm86kgk1shs"))))
|
||||
(build-system gnu-build-system)
|
||||
(propagated-inputs
|
||||
`(("cairo" ,cairo)
|
||||
("harfbuzz" ,harfbuzz)))
|
||||
(inputs
|
||||
`(("pkg-config" ,pkg-config)
|
||||
("zlib" ,zlib)))
|
||||
(synopsis "GNOME text and font handling library")
|
||||
(description
|
||||
"Pango is the core text and font handling library used in GNOME
|
||||
applications. It has extensive support for the different writing systems
|
||||
used throughout the world.")
|
||||
(license license:lgpl2.0+)
|
||||
(home-page "https://developer.gnome.org/pango/")))
|
||||
|
||||
(define-public gdk-pixbuf
|
||||
(package
|
||||
(name "gdk-pixbuf")
|
||||
(version "2.28.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnome/sources/gdk-pixbuf/2.28/gdk-pixbuf-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"05s6ksvy1yan6h6zny9n3bmvygcnzma6ljl6i0z9cci2xg116c8q"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("glib" ,glib)
|
||||
("libjpeg" ,libjpeg)
|
||||
("libpng" ,libpng)
|
||||
("libtiff" ,libtiff)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(synopsis "GNOME image loading and manipulation library")
|
||||
(description
|
||||
"GdkPixbuf is a library for image loading and manipulation developed
|
||||
in the GNOME project.")
|
||||
(license license:lgpl2.0+)
|
||||
(home-page "https://developer.gnome.org/gdk-pixbuf/")))
|
||||
|
||||
(define-public gtk+
|
||||
(package
|
||||
(name "gtk+")
|
||||
(version "2.24.20")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnome/sources/gtk+/2.24/gtk+-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"18qdvb7nxi25hfnpmcy01p3majw9jnx83ikm263dk9rrjazvqrnc"))))
|
||||
(build-system gnu-build-system)
|
||||
(propagated-inputs
|
||||
`(("atk" ,atk)
|
||||
("gdk-pixbuf" ,gdk-pixbuf)
|
||||
("pango" ,pango)))
|
||||
(inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(arguments
|
||||
`(#:phases
|
||||
(alist-replace
|
||||
'configure
|
||||
(lambda* (#:key #:allow-other-keys #:rest args)
|
||||
(let ((configure (assoc-ref %standard-phases 'configure)))
|
||||
;; FIXME: re-enable tests requiring an X server
|
||||
(substitute* "gtk/Makefile.in"
|
||||
(("SUBDIRS = theme-bits . tests") "SUBDIRS = theme-bits ."))
|
||||
(apply configure args)))
|
||||
%standard-phases)))
|
||||
(synopsis "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
|
||||
suitable for projects ranging from small one-off tools to complete
|
||||
application suites.")
|
||||
(license license:lgpl2.0+)
|
||||
(home-page "http://www.gtk.org/")))
|
||||
|
||||
+51
-4
@@ -19,6 +19,7 @@
|
||||
(define-module (gnu packages guile)
|
||||
#:use-module (guix licenses)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages bash)
|
||||
#:use-module (gnu packages bdw-gc)
|
||||
#:use-module (gnu packages gawk)
|
||||
#:use-module (gnu packages gperf)
|
||||
@@ -115,7 +116,12 @@ extensible. It supports many SRFIs.")
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs `(("pkgconfig" ,pkg-config)))
|
||||
(inputs `(("libffi" ,libffi)
|
||||
("readline" ,readline)))
|
||||
("readline" ,readline)
|
||||
|
||||
;; TODO: On next core-updates, make Bash input unconditional.
|
||||
,@(if (%current-target-system)
|
||||
`(("bash" ,bash))
|
||||
'())))
|
||||
|
||||
(propagated-inputs
|
||||
`( ;; These ones aren't normally needed here, but since `libguile-2.0.la'
|
||||
@@ -132,15 +138,22 @@ extensible. It supports many SRFIs.")
|
||||
|
||||
(self-native-input? #t)
|
||||
|
||||
(outputs '("out" "debug"))
|
||||
|
||||
(arguments
|
||||
'(#:phases (alist-cons-before
|
||||
`(#:phases (alist-cons-before
|
||||
'configure 'pre-configure
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
;; Tell (ice-9 popen) the file name of Bash.
|
||||
(let ((bash (assoc-ref inputs "bash")))
|
||||
(substitute* "module/ice-9/popen.scm"
|
||||
(("/bin/sh")
|
||||
(string-append bash "/bin/bash")))))
|
||||
%standard-phases)))
|
||||
%standard-phases)
|
||||
|
||||
,@(if (%current-target-system)
|
||||
'(#:configure-flags '("CC_FOR_BUILD=gcc"))
|
||||
'())))
|
||||
|
||||
(native-search-paths
|
||||
(list (search-path-specification
|
||||
@@ -237,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)
|
||||
@@ -285,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
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
(define-public help2man
|
||||
(package
|
||||
(name "help2man")
|
||||
(version "1.41.2")
|
||||
(version "1.43.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -34,7 +34,7 @@
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1as014d8wxy7529fr8n2ihy61c2p5jzywzirkqggvz8lwg6r933a"))))
|
||||
"00yk86rvvaavg7y6i5bvk5xhm417jl9dpr8bqvqdksw0i48qv5v7"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments `(;; There's no `check' target.
|
||||
#:tests? #f))
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages imagemagick)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix download)
|
||||
#:use-module ((guix licenses) #:select (fsf-free))
|
||||
#:use-module (gnu packages libjpeg)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages graphviz)
|
||||
#:use-module (gnu packages xorg)
|
||||
#:use-module (gnu packages xml)
|
||||
#:use-module (gnu packages gtk)
|
||||
#:use-module (gnu packages libpng)
|
||||
#:use-module (gnu packages libtiff)
|
||||
#:use-module (gnu packages libjpeg)
|
||||
#:use-module (gnu packages ghostscript)
|
||||
#:use-module (gnu packages fontutils)
|
||||
#:use-module (gnu packages pkg-config))
|
||||
|
||||
(define-public imagemagick
|
||||
(package
|
||||
(name "imagemagick")
|
||||
(version "6.8.6-9")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://imagemagick/ImageMagick-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1bpj8676mph5cvyjsdgf27i6yg2iw9iskk5c69mvpxkyawgjw1vg"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases (alist-cons-before
|
||||
'build 'pre-build
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(substitute* "Makefile"
|
||||
;; Clear the `LIBRARY_PATH' setting, which otherwise
|
||||
;; interferes with our own use.
|
||||
(("^LIBRARY_PATH[[:blank:]]*=.*$")
|
||||
"")
|
||||
|
||||
;; Since the Makefile overrides $docdir, modify it to
|
||||
;; refer to what we want.
|
||||
(("^DOCUMENTATION_PATH[[:blank:]]*=.*$")
|
||||
(let ((doc (assoc-ref outputs "doc")))
|
||||
(string-append "DOCUMENTATION_PATH = "
|
||||
doc "/share/doc/"
|
||||
,name "-" ,version "\n")))))
|
||||
%standard-phases)))
|
||||
;; TODO: Add Jasper, LCMS, etc.
|
||||
(inputs `(("graphviz" ,graphviz)
|
||||
("ghostscript" ,ghostscript)
|
||||
("libx11" ,libx11)
|
||||
("zlib" ,zlib)
|
||||
("libxml2" ,libxml2)
|
||||
("libtiff" ,libtiff)
|
||||
("libpng" ,libpng)
|
||||
("libjpeg" ,libjpeg-8)
|
||||
("pango" ,pango)
|
||||
("freetype" ,freetype)
|
||||
("bzip2" ,bzip2)
|
||||
("xz" ,xz)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(outputs '("out"
|
||||
"doc")) ; 26 MiB of HTML documentation
|
||||
(home-page "http://www.imagemagick.org/")
|
||||
(synopsis "Create, edit, compose, or convert bitmap images")
|
||||
(description
|
||||
"ImageMagick® is a software suite to create, edit, compose, or convert
|
||||
bitmap images. It can read and write images in a variety of formats (over 100)
|
||||
including DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG,
|
||||
and TIFF. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and
|
||||
transform images, adjust image colors, apply various special effects, or draw
|
||||
text, lines, polygons, ellipses and Bézier curves.")
|
||||
(license (fsf-free "http://www.imagemagick.org/script/license.php"))))
|
||||
@@ -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/")))
|
||||
|
||||
@@ -11,7 +11,7 @@ main="(@ (gnu build-support ld-wrapper) ld-wrapper)"
|
||||
exec @GUILE@ -c "(load-compiled \"$0.go\") (apply $main (cdr (command-line)))" "$@"
|
||||
!#
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -82,13 +82,26 @@ exec @GUILE@ -c "(load-compiled \"$0.go\") (apply $main (cdr (command-line)))" "
|
||||
(getenv "GUIX_LD_WRAPPER_DEBUG"))
|
||||
|
||||
(define (pure-file-name? file)
|
||||
;; Return #t when FILE is the name of a file either within the store or
|
||||
;; within the build directory.
|
||||
(or (not (string-prefix? "/" file))
|
||||
(string-prefix? %store-directory file)
|
||||
(string-prefix? %temporary-directory file)
|
||||
(and %build-directory
|
||||
(string-prefix? %build-directory file))))
|
||||
;; Return #t when FILE is the name of a file either within the store
|
||||
;; (possibly via a symlink) or within the build directory.
|
||||
(define %max-symlink-depth 50)
|
||||
|
||||
(let loop ((file file)
|
||||
(depth 0))
|
||||
(or (not (string-prefix? "/" file))
|
||||
(string-prefix? %store-directory file)
|
||||
(string-prefix? %temporary-directory file)
|
||||
(if %build-directory
|
||||
(string-prefix? %build-directory file)
|
||||
|
||||
;; When used from a user environment, FILE may refer to
|
||||
;; ~/.guix-profile/lib/libfoo.so, which is itself a symlink to the
|
||||
;; store. Check whether this is the case.
|
||||
(let ((s (false-if-exception (lstat file))))
|
||||
(and s
|
||||
(eq? 'symlink (stat:type s))
|
||||
(< depth %max-symlink-depth)
|
||||
(loop (readlink file) (+ 1 depth))))))))
|
||||
|
||||
(define (switch-arguments switch args)
|
||||
;; Return the arguments passed for the occurrences of SWITCH--e.g.,
|
||||
|
||||
@@ -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/")
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
(define out (assoc-ref outputs "out"))
|
||||
(mkdir (string-append out "/include"))
|
||||
(with-directory-excursion
|
||||
(string-append out "/lib/libffi-3.0.9/include")
|
||||
(string-append out "/lib/libffi-3.0.13/include")
|
||||
(for-each (lambda (h)
|
||||
(format #t "moving `~a' to includedir~%" h)
|
||||
(rename-file h (string-append out "/include/" h)))
|
||||
@@ -38,7 +38,7 @@
|
||||
(not (member x '("." ".."))))))))))
|
||||
(package
|
||||
(name "libffi")
|
||||
(version "3.0.9")
|
||||
(version "3.0.13")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
@@ -46,14 +46,15 @@
|
||||
name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0ln4jbpb6clcsdpb9niqk0frgx4k0xki96wiv067ig0q4cajb7aq"))))
|
||||
"077ibkf84bvcd6rw1m6jb107br63i2pp301rkmsbgg6300adxp8x"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments `(#:modules ((guix build utils) (guix build gnu-build-system)
|
||||
(ice-9 ftw) (srfi srfi-26))
|
||||
#:phases (alist-cons-after 'install 'post-install
|
||||
,post-install-phase
|
||||
%standard-phases)))
|
||||
(synopsis "libffi, a foreign function call interface library")
|
||||
(outputs '("out" "debug"))
|
||||
(synopsis "Foreign function call interface library")
|
||||
(description
|
||||
"The libffi library provides a portable, high level programming interface
|
||||
to various calling conventions. This allows a programmer to call any
|
||||
|
||||
@@ -26,13 +26,13 @@
|
||||
(define-public libidn
|
||||
(package
|
||||
(name "libidn")
|
||||
(version "1.26")
|
||||
(version "1.28")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/libidn/libidn-" version
|
||||
".tar.gz"))
|
||||
(sha256 (base32
|
||||
"0g657kv60rh486m7bwyp5k24ljmym4wnb8nmk6d3i3qgr1qlqbqa"))))
|
||||
"1yxbfdiwr3l91m79sksn6v5mgpl4lfj8i82zgryckas9hjb7ldfx"))))
|
||||
(build-system gnu-build-system)
|
||||
;; FIXME: No Java and C# libraries are currently built.
|
||||
(synopsis "Internationalized string processing library")
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
(base32 "09ibrz1df5ajqcm9vmx6zw8qama2rzf0961yhmmfsy629qfhyrk0"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("libusb" ,libusb)))
|
||||
(outputs '("out" "debug"))
|
||||
(home-page "http://www.phidgets.com/")
|
||||
(license lgpl3+)
|
||||
(synopsis "C library to manipulate Phidgets")
|
||||
|
||||
+15
-9
@@ -27,18 +27,24 @@
|
||||
(define-public libpng
|
||||
(package
|
||||
(name "libpng")
|
||||
(version "1.5.14")
|
||||
(version "1.5.17")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://downloads.sourceforge.net/project/libpng/libpng15/"
|
||||
version "/libpng-"
|
||||
version ".tar.xz"))
|
||||
(sha256 (base32
|
||||
"0m3vz3gig7s63zanq5b1dgb5ph12qm0cylw4g4fbxlsq3f74hn8l"))))
|
||||
|
||||
;; Note: upstream removes older tarballs.
|
||||
(uri (list (string-append "mirror://sourceforge/libpng/libpng15/"
|
||||
version "/libpng-" version ".tar.xz")
|
||||
(string-append
|
||||
"ftp://ftp.simplesystems.org/pub/libpng/png/src"
|
||||
"/libpng15/libpng-" version ".tar.xz")))
|
||||
(sha256
|
||||
(base32 "19wj293r4plbfgb43yhrc2qx8bsch9gbazazfqrj9haa7lsk29jp"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("zlib" ,zlib)))
|
||||
(synopsis "Libpng, a library for handling PNG files")
|
||||
|
||||
;; libpng.la says "-lz", so propagate it.
|
||||
(propagated-inputs `(("zlib" ,zlib)))
|
||||
|
||||
(synopsis "Library for handling PNG files")
|
||||
(description
|
||||
"Libpng is the official PNG (Portable Network Graphics) reference
|
||||
library. It supports almost all PNG features and is extensible.")
|
||||
|
||||
@@ -36,6 +36,21 @@
|
||||
(build-system gnu-build-system)
|
||||
(home-page "http://www.gnu.org/software/libsigsegv/")
|
||||
(synopsis "Library for handling page faults")
|
||||
(arguments
|
||||
;; On MIPS, work around this error:
|
||||
;;
|
||||
;; In file included from fault-linux-mips-old.h:18:0,
|
||||
;; [...]
|
||||
;; linux-libre-headers-cross-mips64el-linux-gnu-3.3.8/include/asm/sigcontext.h:57:8: error: redefinition of 'struct sigcontext'
|
||||
(if (string-contains (or (%current-target-system) (%current-system))
|
||||
"mips64el")
|
||||
`(#:phases (alist-cons-before
|
||||
'configure 'patch-mips-old-h
|
||||
(lambda _
|
||||
(substitute* "src/fault-linux-mips-old.h"
|
||||
(("#include <asm/sigcontext\\.h>") "")))
|
||||
%standard-phases))
|
||||
'()))
|
||||
(description
|
||||
"GNU libsigsegv is a library for handling page faults in user mode. A page
|
||||
fault occurs when a program tries to access to a region of memory that is
|
||||
|
||||
@@ -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
|
||||
|
||||
+259
-32
@@ -23,10 +23,15 @@
|
||||
#:use-module ((gnu packages compression)
|
||||
#:renamer (symbol-prefix-proc 'guix:))
|
||||
#:use-module (gnu packages flex)
|
||||
#:use-module (gnu packages bison)
|
||||
#:use-module (gnu packages libusb)
|
||||
#:use-module (gnu packages ncurses)
|
||||
#:use-module (gnu packages bdb)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (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))
|
||||
@@ -40,6 +45,22 @@
|
||||
((string-prefix? "arm" arch) "arm")
|
||||
(else arch))))
|
||||
|
||||
(define (linux-libre-urls version)
|
||||
"Return a list of URLs for Linux-Libre VERSION."
|
||||
(list (string-append
|
||||
"http://linux-libre.fsfla.org/pub/linux-libre/releases/"
|
||||
version "-gnu/linux-libre-" version "-gnu.tar.xz")
|
||||
|
||||
;; XXX: Work around <http://bugs.gnu.org/14851>.
|
||||
(string-append
|
||||
"ftp://alpha.gnu.org/gnu/guix/mirror/linux-libre-"
|
||||
version "-gnu.tar.xz")
|
||||
|
||||
;; Maybe this URL will become valid eventually.
|
||||
(string-append
|
||||
"mirror://gnu/linux-libre/" version "-gnu/linux-libre-"
|
||||
version "-gnu.tar.xz")))
|
||||
|
||||
(define-public linux-libre-headers
|
||||
(let* ((version* "3.3.8")
|
||||
(build-phase
|
||||
@@ -67,9 +88,7 @@
|
||||
(version version*)
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://linux-libre.fsfla.org/pub/linux-libre/releases/3.3.8-gnu/linux-libre-"
|
||||
version "-gnu.tar.xz"))
|
||||
(uri (linux-libre-urls version))
|
||||
(sha256
|
||||
(base32
|
||||
"0jkfh0z1s6izvdnc3njm39dhzp1cg8i06jv06izwqz9w9qsprvnl"))))
|
||||
@@ -103,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")
|
||||
@@ -130,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 #\-))))
|
||||
@@ -173,14 +184,13 @@
|
||||
(version version*)
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://linux-libre.fsfla.org/pub/linux-libre/releases/3.3.8-gnu/linux-libre-"
|
||||
version "-gnu.tar.xz"))
|
||||
(uri (linux-libre-urls version))
|
||||
(sha256
|
||||
(base32
|
||||
"0jkfh0z1s6izvdnc3njm39dhzp1cg8i06jv06izwqz9w9qsprvnl"))))
|
||||
"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)
|
||||
@@ -198,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")
|
||||
@@ -221,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
|
||||
@@ -233,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")
|
||||
@@ -284,8 +310,7 @@ providing the system administrator with some help in common tasks.")
|
||||
("ncurses" ,ncurses)
|
||||
("perl" ,perl)))
|
||||
(home-page "https://www.kernel.org/pub/linux/utils/util-linux/")
|
||||
(synopsis
|
||||
"util-linux is a random collection of utilities for the Linux kernel")
|
||||
(synopsis "Collection of utilities for the Linux kernel")
|
||||
(description
|
||||
"util-linux is a random collection of utilities for the Linux kernel.")
|
||||
|
||||
@@ -342,8 +367,7 @@ providing the system administrator with some help in common tasks.")
|
||||
;; What did you expect? Tests?
|
||||
#:tests? #f))
|
||||
(home-page "http://procps.sourceforge.net/")
|
||||
(synopsis
|
||||
"Utilities that give information about processes using the /proc filesystem")
|
||||
(synopsis "Utilities that give information about processes")
|
||||
(description
|
||||
"procps is the package that has a bunch of small useful utilities
|
||||
that give information about processes using the Linux /proc file system.
|
||||
@@ -405,9 +429,212 @@ slabtop, and skill.")
|
||||
;; filesystem is mounted due to missing mtab file".
|
||||
#:tests? #f))
|
||||
(home-page "http://e2fsprogs.sourceforge.net/")
|
||||
(synopsis "Tools for creating and checking ext2/ext3/ext4 filesystems")
|
||||
(synopsis "Creating and checking ext2/ext3/ext4 file systems")
|
||||
(description
|
||||
"This package provides tools for manipulating ext2/ext3/ext4 file systems.")
|
||||
(license (list gpl2 ; programs
|
||||
lgpl2.0 ; libext2fs
|
||||
x11)))) ; libuuid
|
||||
|
||||
(define-public strace
|
||||
(package
|
||||
(name "strace")
|
||||
(version "4.7")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/strace/strace-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"158iwk0pl2mfw93m1843xb7a2zb8p6lh0qim07rca6f1ff4dk764"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("perl" ,perl)))
|
||||
(home-page "http://strace.sourceforge.net/")
|
||||
(synopsis "System call tracer for Linux")
|
||||
(description
|
||||
"strace is a system call tracer, i.e. a debugging tool which prints out a
|
||||
trace of all the system calls made by a another process/program.")
|
||||
(license bsd-3)))
|
||||
|
||||
(define-public alsa-lib
|
||||
(package
|
||||
(name "alsa-lib")
|
||||
(version "1.0.27.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"ftp://ftp.alsa-project.org/pub/lib/alsa-lib-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0fx057746dj7rjdi0jnvx2m9b0y1lgdkh1hks87d8w32xyihf3k9"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "http://www.alsa-project.org/")
|
||||
(synopsis "The Advanced Linux Sound Architecture libraries")
|
||||
(description
|
||||
"The Advanced Linux Sound Architecture (ALSA) provides audio and
|
||||
MIDI functionality to the Linux-based operating system.")
|
||||
(license lgpl2.1+)))
|
||||
|
||||
(define-public iptables
|
||||
(package
|
||||
(name "iptables")
|
||||
(version "1.4.16.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://www.netfilter.org/projects/iptables/files/iptables-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0vkg5lzkn4l3i1sm6v3x96zzvnv9g7mi0qgj6279ld383mzcws24"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments '(#:tests? #f)) ; no test suite
|
||||
(home-page "http://www.netfilter.org/projects/iptables/index.html")
|
||||
(synopsis "Program to configure the Linux IP packet filtering rules")
|
||||
(description
|
||||
"iptables is the userspace command line program used to configure the
|
||||
Linux 2.4.x and later IPv4 packet filtering ruleset. It is targeted towards
|
||||
system administrators. Since Network Address Translation is also configured
|
||||
from the packet filter ruleset, iptables is used for this, too. The iptables
|
||||
package also includes ip6tables. ip6tables is used for configuring the IPv6
|
||||
packet filter.")
|
||||
(license gpl2+)))
|
||||
|
||||
(define-public iproute
|
||||
(package
|
||||
(name "iproute2")
|
||||
(version "3.8.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"mirror://kernel.org/linux/utils/net/iproute2/iproute2-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0kqy30wz2krbg4y7750hjq5218hgy2vj9pm5qzkn1bqskxs4b4ap"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; no test suite
|
||||
#:make-flags (let ((out (assoc-ref %outputs "out")))
|
||||
(list "DESTDIR="
|
||||
(string-append "LIBDIR=" out "/lib")
|
||||
(string-append "SBINDIR=" out "/sbin")
|
||||
(string-append "CONFDIR=" out "/etc")
|
||||
(string-append "DOCDIR=" out "/share/doc/"
|
||||
,name "-" ,version)
|
||||
(string-append "MANDIR=" out "/share/man")))
|
||||
#:phases (alist-cons-before
|
||||
'install 'pre-install
|
||||
(lambda _
|
||||
;; Don't attempt to create /var/lib/arpd.
|
||||
(substitute* "Makefile"
|
||||
(("^.*ARPDDIR.*$") "")))
|
||||
%standard-phases)))
|
||||
(inputs
|
||||
`(("iptables" ,iptables)
|
||||
("db4" ,bdb)
|
||||
("pkg-config" ,pkg-config)
|
||||
("flex" ,flex)
|
||||
("bison" ,bison)))
|
||||
(home-page
|
||||
"http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2")
|
||||
(synopsis
|
||||
"A collection of utilities for controlling TCP/IP networking and traffic control in Linux")
|
||||
(description
|
||||
"Iproute2 is a collection of utilities for controlling TCP/IP
|
||||
networking and traffic with the Linux kernel.
|
||||
|
||||
Most network configuration manuals still refer to ifconfig and route as the
|
||||
primary network configuration tools, but ifconfig is known to behave
|
||||
inadequately in modern network environments. They should be deprecated, but
|
||||
most distros still include them. Most network configuration systems make use
|
||||
of ifconfig and thus provide a limited feature set. The /etc/net project aims
|
||||
to support most modern network technologies, as it doesn't use ifconfig and
|
||||
allows a system administrator to make use of all iproute2 features, including
|
||||
traffic control.
|
||||
|
||||
iproute2 is usually shipped in a package called iproute or iproute2 and
|
||||
consists of several tools, of which the most important are ip and tc. ip
|
||||
controls IPv4 and IPv6 configuration and tc stands for traffic control. Both
|
||||
tools print detailed usage messages and are accompanied by a set of
|
||||
manpages.")
|
||||
(license gpl2+)))
|
||||
|
||||
(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+)))
|
||||
|
||||
@@ -77,14 +77,14 @@
|
||||
'("design" "expert" "slides" "user")))))
|
||||
(package
|
||||
(name "lout")
|
||||
(version "3.39")
|
||||
(version "3.40")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://savannah/lout/lout-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"12gkyqrn0kaa8xq7sc7v3wm407pz2fxg9ngc75aybhi5z825b9vq"))))
|
||||
"1gb8vb1wl7ikn269dd1c7ihqhkyrwk19jwx5kd0rdvbk6g7g25ix"))))
|
||||
(build-system gnu-build-system) ; actually, just a makefile
|
||||
(outputs '("out" "doc"))
|
||||
(inputs
|
||||
|
||||
+16
-16
@@ -24,6 +24,7 @@
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages m4)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages nettle)
|
||||
#:use-module ((gnu packages compression)
|
||||
#:renamer (symbol-prefix-proc 'guix:))
|
||||
#:use-module (gnu packages multiprecision)
|
||||
@@ -44,15 +45,21 @@
|
||||
(base32
|
||||
"0z6rlalhvfca64jpvksppc9bdhs7jwhiw4y35g5ibvh91xp3rn1l"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "http://liboop.ofb.net/")
|
||||
(synopsis "`liboop', an event loop library")
|
||||
(description "liboop is an event loop library.")
|
||||
(home-page "http://www.lysator.liu.se/liboop/")
|
||||
(synopsis "Event loop library")
|
||||
(description "Liboop is a low-level event loop management library for
|
||||
POSIX-based operating systems. It supports the development of modular,
|
||||
multiplexed applications which may respond to events from several sources. It
|
||||
replaces the \"select() loop\" and allows the registration of event handlers
|
||||
for file and network I/O, timers and signals. Since processes use these
|
||||
mechanisms for almost all external communication, liboop can be used as the
|
||||
basis for almost any application.")
|
||||
(license lgpl2.1+)))
|
||||
|
||||
(define-public lsh
|
||||
(package
|
||||
(name "lsh")
|
||||
(version "2.0.4")
|
||||
(version "2.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -60,10 +67,11 @@
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"149hf49xcj99wwvi7hcb59igq4vpyv8har1br1if3lrsw5irsjv1"))))
|
||||
"1qqjy9zfzgny0rkb27c8c7dfsylvb6n0ld8h3an2r83pmaqr9gwb"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("linux-pam" ,linux-pam)
|
||||
`(("nettle" ,nettle)
|
||||
("linux-pam" ,linux-pam)
|
||||
("m4" ,m4)
|
||||
("readline" ,readline)
|
||||
("liboop" ,liboop)
|
||||
@@ -72,17 +80,9 @@
|
||||
("guile" ,guile-final)
|
||||
("gperf" ,gperf)
|
||||
("psmisc" ,psmisc) ; for `killall'
|
||||
|
||||
("patch/no-root-login" ,(search-patch "lsh-no-root-login.patch"))
|
||||
("patch/guile-compat" ,(search-patch "lsh-guile-compat.patch"))
|
||||
("patch/pam-service-name"
|
||||
,(search-patch "lsh-pam-service-name.patch"))))
|
||||
))
|
||||
(arguments
|
||||
'(#:patches (list (assoc-ref %build-inputs "patch/no-root-login")
|
||||
(assoc-ref %build-inputs "patch/pam-service-name")
|
||||
(assoc-ref %build-inputs "patch/guile-compat"))
|
||||
|
||||
;; Skip the `configure' test that checks whether /dev/ptmx &
|
||||
'(;; Skip the `configure' test that checks whether /dev/ptmx &
|
||||
;; co. work as expected, because it relies on impurities (for
|
||||
;; instance, /dev/pts may be unavailable in chroots.)
|
||||
#:configure-flags '("lsh_cv_sys_unix98_ptys=yes")
|
||||
|
||||
+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+)))
|
||||
+133
-70
@@ -24,6 +24,7 @@
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module ((gnu packages) #:select (search-patch))
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages cross-base)
|
||||
#:use-module (gnu packages bash)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages gawk)
|
||||
@@ -43,18 +44,18 @@
|
||||
|
||||
;;; 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.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(define %glibc-for-bootstrap
|
||||
;; A libc whose `system' and `popen' functions looks for `sh' in $PATH,
|
||||
;; without nscd, and with static NSS modules.
|
||||
(package (inherit glibc-final)
|
||||
(define* (glibc-for-bootstrap #:optional (base glibc))
|
||||
"Return a libc deriving from BASE whose `system' and `popen' functions looks
|
||||
for `sh' in $PATH, and without nscd, and with static NSS modules."
|
||||
(package (inherit base)
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments glibc-final)
|
||||
(substitute-keyword-arguments (package-arguments base)
|
||||
((#:patches patches)
|
||||
`(cons (assoc-ref %build-inputs "patch/system") ,patches))
|
||||
((#:configure-flags flags)
|
||||
@@ -65,17 +66,45 @@
|
||||
,flags))))
|
||||
(inputs
|
||||
`(("patch/system" ,(search-patch "glibc-bootstrap-system.patch"))
|
||||
,@(package-inputs glibc-final)))))
|
||||
,@(package-inputs base)))))
|
||||
|
||||
(define (package-with-relocatable-glibc p)
|
||||
"Return a variant of P that uses the libc as defined by
|
||||
`glibc-for-bootstrap'."
|
||||
|
||||
(define (cross-bootstrap-libc)
|
||||
(let ((target (%current-target-system)))
|
||||
(glibc-for-bootstrap
|
||||
;; `cross-libc' already returns a cross libc, so clear
|
||||
;; %CURRENT-TARGET-SYSTEM.
|
||||
(parameterize ((%current-target-system #f))
|
||||
(cross-libc target)))))
|
||||
|
||||
(define %standard-inputs-with-relocatable-glibc
|
||||
;; Standard inputs with the above libc and corresponding GCC.
|
||||
`(("libc", %glibc-for-bootstrap)
|
||||
("gcc" ,(package-with-explicit-inputs
|
||||
gcc-4.7
|
||||
`(("libc",%glibc-for-bootstrap)
|
||||
,@(alist-delete "libc" %final-inputs))
|
||||
(current-source-location)))
|
||||
,@(fold alist-delete %final-inputs '("libc" "gcc"))))
|
||||
|
||||
(define (inputs)
|
||||
(if (%current-target-system) ; is this package cross built?
|
||||
`(("cross-libc" ,(cross-bootstrap-libc)))
|
||||
'()))
|
||||
|
||||
(define (native-inputs)
|
||||
(if (%current-target-system)
|
||||
(let ((target (%current-target-system)))
|
||||
`(("cross-gcc" ,(cross-gcc target
|
||||
(cross-binutils target)
|
||||
(cross-bootstrap-libc)))
|
||||
("cross-binutils" ,(cross-binutils target))
|
||||
,@%final-inputs))
|
||||
`(("libc" ,(glibc-for-bootstrap))
|
||||
("gcc" ,(package (inherit gcc-4.7)
|
||||
(inputs
|
||||
`(("libc",(glibc-for-bootstrap))
|
||||
,@(package-inputs gcc-4.7)))))
|
||||
,@(fold alist-delete %final-inputs '("libc" "gcc")))))
|
||||
|
||||
(package-with-explicit-inputs p inputs
|
||||
(current-source-location)
|
||||
#:native-inputs native-inputs))
|
||||
|
||||
(define %bash-static
|
||||
(static-package bash-light))
|
||||
@@ -83,18 +112,25 @@
|
||||
(define %static-inputs
|
||||
;; Packages that are to be used as %BOOTSTRAP-INPUTS.
|
||||
(let ((coreutils (package (inherit coreutils)
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
'("--disable-nls"
|
||||
"--disable-silent-rules"
|
||||
"--enable-no-install-program=stdbuf,libstdbuf.so"
|
||||
"CFLAGS=-Os -g0" ; smaller, please
|
||||
"LDFLAGS=-static -pthread")
|
||||
#:tests? #f ; signal-related Gnulib tests fail
|
||||
,@(package-arguments coreutils)))
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
'("--disable-nls"
|
||||
"--disable-silent-rules"
|
||||
"--enable-no-install-program=stdbuf,libstdbuf.so"
|
||||
"CFLAGS=-Os -g0" ; smaller, please
|
||||
"LDFLAGS=-static -pthread")
|
||||
#:tests? #f ; signal-related Gnulib tests fail
|
||||
,@(package-arguments coreutils)))
|
||||
|
||||
;; Remove optional dependencies such as GMP.
|
||||
(inputs `(,(assoc "perl" (package-inputs coreutils))))))
|
||||
;; Remove optional dependencies such as GMP. Keep Perl
|
||||
;; except if it's missing (which is the case when
|
||||
;; cross-compiling).
|
||||
(inputs (match (assoc "perl" (package-inputs coreutils))
|
||||
(#f '())
|
||||
(x (list x))))
|
||||
|
||||
;; Remove the `debug' output.
|
||||
(outputs '("out"))))
|
||||
(bzip2 (package (inherit bzip2)
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments bzip2)
|
||||
@@ -120,6 +156,13 @@
|
||||
(gawk (package (inherit gawk)
|
||||
(arguments
|
||||
`(#:patches (list (assoc-ref %build-inputs "patch/sh"))
|
||||
|
||||
;; Starting from gawk 4.1.0, some of the tests for the
|
||||
;; plug-in mechanism just fail on static builds:
|
||||
;;
|
||||
;; ./fts.awk:1: error: can't open shared library `filefuncs' for reading (No such file or directory)
|
||||
#:tests? #f
|
||||
|
||||
,@(substitute-keyword-arguments (package-arguments gawk)
|
||||
((#:phases phases)
|
||||
`(alist-cons-before
|
||||
@@ -130,12 +173,12 @@
|
||||
(substitute* "configure"
|
||||
(("-export-dynamic") "")))
|
||||
,phases)))))
|
||||
(inputs `(("patch/sh" ,(search-patch "gawk-shell.patch"))))))
|
||||
(finalize (lambda (p)
|
||||
(static-package (package-with-explicit-inputs
|
||||
p
|
||||
%standard-inputs-with-relocatable-glibc)
|
||||
(current-source-location)))))
|
||||
(inputs `(("patch/sh" ,(search-patch "gawk-shell.patch"))
|
||||
,@(if (%current-target-system)
|
||||
`(("bash" ,%bash-static))
|
||||
'())))))
|
||||
(finalize (compose static-package
|
||||
package-with-relocatable-glibc)))
|
||||
`(,@(map (match-lambda
|
||||
((name package)
|
||||
(list name (finalize package))))
|
||||
@@ -148,12 +191,7 @@
|
||||
("sed" ,sed)
|
||||
("grep" ,grep)
|
||||
("gawk" ,gawk)))
|
||||
("bash" ,%bash-static)
|
||||
;; ("ld-wrapper" ,ld-wrapper)
|
||||
;; ("binutils" ,binutils-final)
|
||||
;; ("gcc" ,gcc-final)
|
||||
;; ("libc" ,glibc-final)
|
||||
)))
|
||||
("bash" ,%bash-static))))
|
||||
|
||||
(define %static-binaries
|
||||
(package
|
||||
@@ -232,7 +270,11 @@
|
||||
(package (inherit binutils)
|
||||
(name "binutils-static")
|
||||
(arguments
|
||||
`(#:configure-flags '("--disable-gold" "--with-lib-path=/no-ld-lib-path")
|
||||
`(#:configure-flags (cons "--disable-gold"
|
||||
,(match (memq #:configure-flags
|
||||
(package-arguments binutils))
|
||||
((#:configure-flags flags _ ...)
|
||||
flags)))
|
||||
#:strip-flags '("--strip-all")
|
||||
#:phases (alist-cons-before
|
||||
'configure 'all-static
|
||||
@@ -280,7 +322,7 @@
|
||||
;; GNU libc's essential shared libraries, dynamic linker, and headers,
|
||||
;; with all references to store directories stripped. As a result,
|
||||
;; libc.so is unusable and need to be patched for proper relocation.
|
||||
(let ((glibc %glibc-for-bootstrap))
|
||||
(let ((glibc (glibc-for-bootstrap)))
|
||||
(package (inherit glibc)
|
||||
(name "glibc-stripped")
|
||||
(build-system trivial-build-system)
|
||||
@@ -323,7 +365,12 @@
|
||||
(copy-recursively (string-append linux "/include/asm-generic")
|
||||
(string-append incdir "/asm-generic"))
|
||||
#t))))
|
||||
(inputs `(("libc" ,glibc)
|
||||
(inputs `(("libc" ,(let ((target (%current-target-system)))
|
||||
(if target
|
||||
(glibc-for-bootstrap
|
||||
(parameterize ((%current-target-system #f))
|
||||
(cross-libc target)))
|
||||
glibc)))
|
||||
("linux-headers" ,linux-libre-headers)))
|
||||
|
||||
;; Only one output.
|
||||
@@ -331,8 +378,8 @@
|
||||
|
||||
(define %gcc-static
|
||||
;; A statically-linked GCC, with stripped-down functionality.
|
||||
(package-with-explicit-inputs
|
||||
(package (inherit gcc-final)
|
||||
(package-with-relocatable-glibc
|
||||
(package (inherit gcc-4.7)
|
||||
(name "gcc-static")
|
||||
(arguments
|
||||
`(#:modules ((guix build utils)
|
||||
@@ -340,7 +387,7 @@
|
||||
(srfi srfi-1)
|
||||
(srfi srfi-26)
|
||||
(ice-9 regex))
|
||||
,@(substitute-keyword-arguments (package-arguments gcc-final)
|
||||
,@(substitute-keyword-arguments (package-arguments gcc-4.7)
|
||||
((#:guile _) #f)
|
||||
((#:implicit-inputs? _) #t)
|
||||
((#:configure-flags flags)
|
||||
@@ -356,13 +403,14 @@
|
||||
(remove (cut string-match "--(.*plugin|enable-languages)" <>)
|
||||
,flags)))
|
||||
((#:make-flags flags)
|
||||
`(cons "BOOT_LDFLAGS=-static" ,flags)))))
|
||||
(if (%current-target-system)
|
||||
`(cons "LDFLAGS=-static" ,flags)
|
||||
`(cons "BOOT_LDFLAGS=-static" ,flags))))))
|
||||
(inputs `(("gmp-source" ,(package-source gmp))
|
||||
("mpfr-source" ,(package-source mpfr))
|
||||
("mpc-source" ,(package-source mpc))
|
||||
("binutils" ,binutils-final)
|
||||
,@(package-inputs gcc-4.7))))
|
||||
%standard-inputs-with-relocatable-glibc))
|
||||
("binutils" ,binutils)
|
||||
,@(package-inputs gcc-4.7))))))
|
||||
|
||||
(define %gcc-stripped
|
||||
;; The subset of GCC files needed for bootstrap.
|
||||
@@ -404,14 +452,9 @@
|
||||
;; A statically-linked Guile that is relocatable--i.e., it can search
|
||||
;; .scm and .go files relative to its installation directory, rather
|
||||
;; than in hard-coded configure-time paths.
|
||||
(let* ((libgc (package (inherit libgc)
|
||||
(arguments
|
||||
;; Make it so that we don't rely on /proc. This is
|
||||
;; especially useful in an initrd run before /proc is
|
||||
;; mounted.
|
||||
'(#:configure-flags '("CPPFLAGS=-DUSE_LIBC_PRIVATES")))))
|
||||
(guile (package (inherit guile-2.0)
|
||||
(let* ((guile (package (inherit guile-2.0)
|
||||
(name (string-append (package-name guile-2.0) "-static"))
|
||||
(synopsis "Statically-linked and relocatable Guile")
|
||||
(inputs
|
||||
`(("patch/relocatable"
|
||||
,(search-patch "guile-relocatable.patch"))
|
||||
@@ -428,7 +471,10 @@
|
||||
`(;; When `configure' checks for ltdl availability, it
|
||||
;; doesn't try to link using libtool, and thus fails
|
||||
;; because of a missing -ldl. Work around that.
|
||||
#:configure-flags '("LDFLAGS=-ldl")
|
||||
#:configure-flags '("LDFLAGS=-ldl"
|
||||
,@(if (%current-target-system)
|
||||
'("CC_FOR_BUILD=gcc")
|
||||
'()))
|
||||
|
||||
#:phases (alist-cons-before
|
||||
'configure 'static-guile
|
||||
@@ -456,9 +502,7 @@
|
||||
;; There are uses of `dynamic-link' in
|
||||
;; {foreign,coverage}.test that don't fly here.
|
||||
#:tests? #f)))))
|
||||
(package-with-explicit-inputs (static-package guile)
|
||||
%standard-inputs-with-relocatable-glibc
|
||||
(current-source-location))))
|
||||
(package-with-relocatable-glibc (static-package guile))))
|
||||
|
||||
(define %guile-static-stripped
|
||||
;; A stripped static Guile binary, for use during bootstrap.
|
||||
@@ -471,8 +515,10 @@
|
||||
(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"))
|
||||
@@ -482,11 +528,26 @@
|
||||
(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))))
|
||||
(inputs `(("guile" ,%guile-static)))))
|
||||
(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"))
|
||||
(synopsis "Minimal statically-linked and relocatable Guile")))
|
||||
|
||||
(define (tarball-package pkg)
|
||||
"Return a package containing a tarball of PKG."
|
||||
@@ -494,9 +555,9 @@
|
||||
(location (source-properties->location (current-source-location)))
|
||||
(name (string-append (package-name pkg) "-tarball"))
|
||||
(build-system trivial-build-system)
|
||||
(inputs `(("tar" ,tar)
|
||||
("xz" ,xz)
|
||||
("input" ,pkg)))
|
||||
(native-inputs `(("tar" ,tar)
|
||||
("xz" ,xz)))
|
||||
(inputs `(("input" ,pkg)))
|
||||
(arguments
|
||||
(let ((name (package-name pkg))
|
||||
(version (package-version pkg)))
|
||||
@@ -514,7 +575,9 @@
|
||||
(zero? (system* "tar" "cJvf"
|
||||
(string-append out "/"
|
||||
,name "-" ,version
|
||||
"-" ,(%current-system)
|
||||
"-"
|
||||
,(or (%current-target-system)
|
||||
(%current-system))
|
||||
".tar.xz")
|
||||
"."))))))))))
|
||||
|
||||
|
||||
@@ -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)
|
||||
@@ -181,3 +186,82 @@ This package contains the binary.")
|
||||
(license license:gpl2+)
|
||||
(home-page "http://mp3splt.sourceforge.net/mp3splt_page/home.php")))
|
||||
|
||||
(define-public mpg321
|
||||
(package
|
||||
(name "mpg321")
|
||||
(version "0.3.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/mpg321/"
|
||||
version "/mpg321-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0yamsqvj15nsxxnjs9mgyslzx7krgsfk3q1hk3g6l8w9bbbj770b"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments '(#:configure-flags '("--disable-alsa")))
|
||||
(inputs
|
||||
`(("zlib" ,zlib)
|
||||
("libmad" ,libmad)
|
||||
("libid3tag" ,libid3tag)
|
||||
("libao" ,ao)))
|
||||
(home-page "http://mpg321.sourceforge.net/")
|
||||
(synopsis "Command-line MP3 player")
|
||||
(description "mpg321 is a command-line mp3 player. mpg321 is used for
|
||||
frontends, as an mp3 player and as an mp3 to wave file decoder (primarily for
|
||||
use with CD-recording software).")
|
||||
(license license:gpl2)))
|
||||
|
||||
(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/")))
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
(define-public gmp
|
||||
(package
|
||||
(name "gmp")
|
||||
(version "5.1.1")
|
||||
(version "5.1.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
@@ -35,9 +35,10 @@
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1hili06lcf0clg5qfvz7knm6pmj6ab54yhsvskp1mdny5xw4vmjb"))))
|
||||
"1hnbxz7a6jrli8ph27i8zb6k2f456zn6l5xi78yhskzbxjk47nf7"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs `(("m4" ,m4)))
|
||||
(outputs '("out" "debug"))
|
||||
(arguments `(#:configure-flags
|
||||
'(;; Build a "fat binary", with routines for several
|
||||
;; sub-architectures.
|
||||
@@ -78,6 +79,7 @@ faster algorithms.")
|
||||
(sha256 (base32
|
||||
"0fs501qi8l523gs3cpy4jjcnvwxggyfbklcys80wq236xx3hz79r"))))
|
||||
(build-system gnu-build-system)
|
||||
(outputs '("out" "debug"))
|
||||
(propagated-inputs `(("gmp" ,gmp))) ; <mpfr.h> refers to <gmp.h>
|
||||
(synopsis "C library for arbitrary precision floating-point arithmetic")
|
||||
(description
|
||||
@@ -103,6 +105,7 @@ double-precision floating-point arithmetic (53-bit mantissa).")
|
||||
(sha256 (base32
|
||||
"1zq0fidp1jii2j5k5n9hmx55a6wwid33gjzhimvxq9d5zrf82npd"))))
|
||||
(build-system gnu-build-system)
|
||||
(outputs '("out" "debug"))
|
||||
(propagated-inputs `(("gmp" ,gmp) ; <mpc.h> refers to both
|
||||
("mpfr" ,mpfr)))
|
||||
(synopsis "C library for arbitrary precision complex arithmetic")
|
||||
|
||||
+31
-10
@@ -42,7 +42,16 @@
|
||||
(string-append "CONFIG_SHELL=" bash)
|
||||
(string-append "--prefix=" out)
|
||||
configure-flags)))))
|
||||
(cross-pre-install-phase
|
||||
'(lambda _
|
||||
;; Run the native `tic' program, not the cross-built one.
|
||||
(substitute* "misc/run_tic.sh"
|
||||
(("\\{TIC_PATH:=.*\\}")
|
||||
"{TIC_PATH:=true}")
|
||||
(("cross_compiling:=no")
|
||||
"cross_compiling:=yes"))))
|
||||
(post-install-phase
|
||||
;; FIXME: The `tic' binary lacks a RUNPATH; fix it.
|
||||
'(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
;; When building a wide-character (Unicode) build, create backward
|
||||
@@ -97,16 +106,28 @@
|
||||
'("--without-cxx-binding")
|
||||
'()))
|
||||
#:tests? #f ; no "check" target
|
||||
#:phases (alist-cons-after
|
||||
'install 'post-install ,post-install-phase
|
||||
(alist-cons-before
|
||||
'configure 'patch-makefile-SHELL
|
||||
,patch-makefile-phase
|
||||
(alist-replace
|
||||
'configure
|
||||
,configure-phase
|
||||
%standard-phases)))))
|
||||
(self-native-input? #t)
|
||||
#:phases ,(if (%current-target-system)
|
||||
|
||||
`(alist-cons-before ; cross build
|
||||
'configure 'patch-makefile-SHELL
|
||||
,patch-makefile-phase
|
||||
(alist-cons-before
|
||||
'install 'pre-install
|
||||
,cross-pre-install-phase
|
||||
(alist-cons-after
|
||||
'install 'post-install ,post-install-phase
|
||||
%standard-phases)))
|
||||
|
||||
`(alist-cons-after ; native build
|
||||
'install 'post-install ,post-install-phase
|
||||
(alist-cons-before
|
||||
'configure 'patch-makefile-SHELL
|
||||
,patch-makefile-phase
|
||||
(alist-replace
|
||||
'configure
|
||||
,configure-phase
|
||||
%standard-phases))))))
|
||||
(self-native-input? #t) ; for `tic'
|
||||
(synopsis "Terminal emulation (termcap, terminfo) library")
|
||||
(description
|
||||
"The Ncurses (new curses) library is a free software emulation of curses
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
("libxml2" ,libxml2)
|
||||
("perl" ,perl)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python" ,python)
|
||||
("python" ,python-wrapper)
|
||||
("zlib" ,zlib)))
|
||||
(arguments
|
||||
`(#:phases
|
||||
|
||||
@@ -27,14 +27,14 @@
|
||||
(define-public nettle
|
||||
(package
|
||||
(name "nettle")
|
||||
(version "2.7")
|
||||
(version "2.7.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/nettle/nettle-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1mnl5i1136p47lrklm0mhnnv3gjakza385zvxz12qf057h9ym562"))))
|
||||
"0h2vap31yvi1a438d36lg1r1nllfx3y19r4rfxv7slrm6kafnwdw"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("m4" ,m4)))
|
||||
(propagated-inputs `(("gmp" ,gmp)))
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages noweb)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix licenses))
|
||||
|
||||
(define-public noweb
|
||||
(package
|
||||
(name "noweb")
|
||||
(version "2.11b")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "ftp://www.eecs.harvard.edu/pub/nr/noweb-"
|
||||
version ".tgz"))
|
||||
(sha256
|
||||
(base32
|
||||
"10hdd6mrk26kyh4bnng4ah5h1pnanhsrhqa7qwqy6dyv3rng44y9"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:phases (alist-cons-before
|
||||
'install 'pre-install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(mkdir-p (string-append out "/share/texmf/tex/latex"))
|
||||
#t))
|
||||
(alist-cons-after
|
||||
'install 'post-install
|
||||
(lambda* (#:key outputs inputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out"))
|
||||
(cu (assoc-ref inputs "coreutils"))
|
||||
(du (assoc-ref inputs "diffutils")))
|
||||
(with-directory-excursion out
|
||||
(for-each (lambda (prog)
|
||||
(substitute* prog
|
||||
(("nawk") (which "awk"))))
|
||||
(append (map (lambda (x)
|
||||
(string-append "bin/" x))
|
||||
'("noweb" "nountangle"
|
||||
"noroots" "noroff"
|
||||
"noindex"))
|
||||
(map (lambda (x)
|
||||
(string-append "lib/" x))
|
||||
'("btdefn" "emptydefn" "noidx"
|
||||
"pipedocs" "toascii" "tohtml"
|
||||
"toroff" "totex" "unmarkup"))))
|
||||
(substitute* "bin/cpif"
|
||||
(("^PATH=.*$")
|
||||
(string-append "PATH=" cu "/bin:" du "/bin\n"))))
|
||||
#t))
|
||||
(alist-replace
|
||||
'configure
|
||||
(lambda _
|
||||
;; Jump in the source.
|
||||
(chdir "src")
|
||||
|
||||
;; The makefile reads "source: FAQ", but FAQ isn't
|
||||
;; available.
|
||||
(substitute* "Makefile"
|
||||
(("FAQ") "")))
|
||||
%standard-phases)))
|
||||
#:make-flags (let ((out (assoc-ref %outputs "out")))
|
||||
(list (string-append "BIN=" out "/bin")
|
||||
(string-append "LIB=" out "/lib")
|
||||
(string-append "MAN=" out "/share/man")
|
||||
(string-append "TEXINPUTS=" out
|
||||
"/share/texmf/tex/latex")))
|
||||
#:tests? #f)) ; no tests
|
||||
(home-page "http://www.cs.tufts.edu/~nr/noweb/")
|
||||
(synopsis "Literate programming tool")
|
||||
(description
|
||||
"noweb is designed to meet the needs of literate programmers while
|
||||
remaining as simple as possible. Its primary advantages are simplicity,
|
||||
extensibility, and language-independence—especially noticeable when compared
|
||||
with other literate-programming tools. noweb uses 5 control sequences to
|
||||
WEB's 27. The noweb manual is only 4 pages; an additional page explains how
|
||||
to customize its LaTeX output. noweb works “out of the box” with any
|
||||
programming language, and supports TeX, LaTeX, HTML, and troff back ends.")
|
||||
(license (fsf-free "http://www.cs.tufts.edu/~nr/noweb/#copyright"))))
|
||||
@@ -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+)))
|
||||
@@ -25,6 +25,7 @@
|
||||
#:use-module (gnu packages libpng)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module ((guix licenses)
|
||||
#:renamer (symbol-prefix-proc 'license:))
|
||||
#:use-module (guix packages)
|
||||
@@ -118,9 +119,9 @@ data (e.g., voice mail), and audio books.")
|
||||
"1m0v2y6bhr4iwsgdkc7b3y0qgpvpv1ifbxsy8n8ahsvjn6wmppi9"))))
|
||||
(build-system gnu-build-system)
|
||||
;; FIXME: Add further backends, see the summary printed after configure.
|
||||
(inputs `(("pkg-config" ,pkg-config)))
|
||||
(synopsis
|
||||
"libao, a cross platform audio library")
|
||||
(inputs `(("pkg-config" ,pkg-config)
|
||||
("alsa-lib" ,alsa-lib)))
|
||||
(synopsis "Cross platform audio library")
|
||||
(description
|
||||
"Libao is a cross-platform audio library that allows programs to
|
||||
output audio using a simple API on a wide variety of platforms.
|
||||
@@ -190,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.
|
||||
@@ -22,3 +22,27 @@ at <http://gcc.gnu.org/ml/gcc/2013-02/msg00124.html>.
|
||||
+#define LIBRARY_PATH_ENV "CROSS_LIBRARY_PATH"
|
||||
+
|
||||
#endif /* ! GCC_SYSTEM_H */
|
||||
|
||||
--- gcc-4.7.2/gcc/tlink.c 2012-02-11 09:50:23.000000000 +0100
|
||||
+++ gcc-4.7.2/gcc/tlink.c 2013-05-23 22:06:19.000000000 +0200
|
||||
@@ -461,7 +461,7 @@ recompile_files (void)
|
||||
file *f;
|
||||
|
||||
putenv (xstrdup ("COMPILER_PATH="));
|
||||
- putenv (xstrdup ("LIBRARY_PATH="));
|
||||
+ putenv (xstrdup (LIBRARY_PATH_ENV "="));
|
||||
|
||||
while ((f = file_pop ()) != NULL)
|
||||
{
|
||||
|
||||
--- gcc-4.7.3/gcc/gcc.c 2013-03-08 08:25:09.000000000 +0100
|
||||
+++ gcc-4.7.3/gcc/gcc.c 2013-05-24 08:58:16.000000000 +0200
|
||||
@@ -3726,7 +3726,7 @@ process_command (unsigned int decoded_op
|
||||
}
|
||||
|
||||
temp = getenv (LIBRARY_PATH_ENV);
|
||||
- if (temp && *cross_compile == '0')
|
||||
+ if (temp)
|
||||
{
|
||||
const char *startp, *endp;
|
||||
char *nstore = (char *) alloca (strlen (temp) + 3);
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
This patch is needed to allow builds with newer versions of
|
||||
the GNU libc (2.16+).
|
||||
|
||||
The upstream fix was:
|
||||
|
||||
commit 66712c23388e93e5c518ebc8515140fa0c807348
|
||||
Author: Eric Blake <eblake@redhat.com>
|
||||
Date: Thu Mar 29 13:30:41 2012 -0600
|
||||
|
||||
stdio: don't assume gets any more
|
||||
|
||||
Gnulib intentionally does not have a gets module, and now that C11
|
||||
and glibc have dropped it, we should be more proactive about warning
|
||||
any user on a platform that still has a declaration of this dangerous
|
||||
interface.
|
||||
|
||||
* m4/stdio_h.m4 (gl_STDIO_H, gl_STDIO_H_DEFAULTS): Drop gets
|
||||
support.
|
||||
* modules/stdio (Makefile.am): Likewise.
|
||||
* lib/stdio-read.c (gets): Likewise.
|
||||
* tests/test-stdio-c++.cc: Likewise.
|
||||
* m4/warn-on-use.m4 (gl_WARN_ON_USE_PREPARE): Fix comment.
|
||||
* lib/stdio.in.h (gets): Make warning occur in more places.
|
||||
* doc/posix-functions/gets.texi (gets): Update documentation.
|
||||
Reported by Christer Solskogen.
|
||||
|
||||
Signed-off-by: Eric Blake <eblake@redhat.com>
|
||||
|
||||
This patch just gets rid of the offending part.
|
||||
|
||||
--- gettext-0.18.1.1/gettext-tools/libgettextpo/stdio.in.h-orig 2012-11-24 01:13:14.000000000 +0400
|
||||
+++ gettext-0.18.1.1/gettext-tools/libgettextpo/stdio.in.h 2012-11-24 01:13:46.000000000 +0400
|
||||
@@ -137,12 +137,6 @@
|
||||
"use gnulib module fflush for portable POSIX compliance");
|
||||
#endif
|
||||
|
||||
-/* It is very rare that the developer ever has full control of stdin,
|
||||
- so any use of gets warrants an unconditional warning. Assume it is
|
||||
- always declared, since it is required by C89. */
|
||||
-#undef gets
|
||||
-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
|
||||
-
|
||||
#if @GNULIB_FOPEN@
|
||||
# if @REPLACE_FOPEN@
|
||||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||||
|
||||
--- gettext-0.18.1.1/gettext-runtime/gnulib-lib/stdio.in.h-orig 2012-11-24 00:26:49.000000000 +0400
|
||||
+++ gettext-0.18.1.1/gettext-runtime/gnulib-lib/stdio.in.h 2012-11-24 00:45:54.000000000 +0400
|
||||
@@ -137,12 +137,6 @@
|
||||
"use gnulib module fflush for portable POSIX compliance");
|
||||
#endif
|
||||
|
||||
-/* It is very rare that the developer ever has full control of stdin,
|
||||
- so any use of gets warrants an unconditional warning. Assume it is
|
||||
- always declared, since it is required by C89. */
|
||||
-#undef gets
|
||||
-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
|
||||
-
|
||||
#if @GNULIB_FOPEN@
|
||||
# if @REPLACE_FOPEN@
|
||||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||||
|
||||
--- gettext-0.18.1.1/gettext-tools/gnulib-lib/stdio.in.h-orig 2012-11-24 01:00:26.000000000 +0400
|
||||
+++ gettext-0.18.1.1/gettext-tools/gnulib-lib/stdio.in.h 2012-11-24 01:00:53.000000000 +0400
|
||||
@@ -137,12 +137,6 @@
|
||||
"use gnulib module fflush for portable POSIX compliance");
|
||||
#endif
|
||||
|
||||
-/* It is very rare that the developer ever has full control of stdin,
|
||||
- so any use of gets warrants an unconditional warning. Assume it is
|
||||
- always declared, since it is required by C89. */
|
||||
-#undef gets
|
||||
-_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
|
||||
-
|
||||
#if @GNULIB_FOPEN@
|
||||
# if @REPLACE_FOPEN@
|
||||
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
|
||||
@@ -1,9 +1,9 @@
|
||||
Some GLib tests expect desktop things, such as an xterm, a MIME
|
||||
database, the `update-desktop-database' program, which we don't provide.
|
||||
|
||||
--- glib-2.34.3/gio/tests/appinfo.c 2013-01-16 18:20:00.000000000 +0100
|
||||
+++ glib-2.34.3/gio/tests/appinfo.c 2013-01-16 18:20:06.000000000 +0100
|
||||
@@ -384,14 +384,09 @@ main (int argc, char *argv[])
|
||||
--- glib-2.37.1/gio/tests/appinfo.c 2013-06-07 23:44:44.000000000 +0200
|
||||
+++ glib-2.37.1/gio/tests/appinfo.c 2013-06-07 23:44:56.000000000 +0200
|
||||
@@ -497,16 +497,10 @@ main (int argc, char *argv[])
|
||||
|
||||
g_test_add_func ("/appinfo/basic", test_basic);
|
||||
g_test_add_func ("/appinfo/text", test_text);
|
||||
@@ -11,12 +11,15 @@ database, the `update-desktop-database' program, which we don't provide.
|
||||
g_test_add_func ("/appinfo/show-in", test_show_in);
|
||||
g_test_add_func ("/appinfo/commandline", test_commandline);
|
||||
- g_test_add_func ("/appinfo/launch-context", test_launch_context);
|
||||
- g_test_add_func ("/appinfo/launch-context-signals", test_launch_context_signals);
|
||||
g_test_add_func ("/appinfo/tryexec", test_tryexec);
|
||||
- g_test_add_func ("/appinfo/associations", test_associations);
|
||||
g_test_add_func ("/appinfo/environment", test_environment);
|
||||
- g_test_add_func ("/appinfo/startup-wm-class", test_startup_wm_class);
|
||||
- g_test_add_func ("/appinfo/supported-types", test_supported_types);
|
||||
g_test_add_func ("/appinfo/from-keyfile", test_from_keyfile);
|
||||
|
||||
return g_test_run ();
|
||||
|
||||
--- glib-2.34.3/gio/tests/contenttype.c 2013-01-16 21:22:29.000000000 +0100
|
||||
+++ glib-2.34.3/gio/tests/contenttype.c 2013-01-16 21:22:33.000000000 +0100
|
||||
@@ -35,18 +38,16 @@ database, the `update-desktop-database' program, which we don't provide.
|
||||
return g_test_run ();
|
||||
}
|
||||
|
||||
--- glib-2.34.3/gio/tests/desktop-app-info.c 2013-01-16 21:30:00.000000000 +0100
|
||||
+++ glib-2.34.3/gio/tests/desktop-app-info.c 2013-01-16 21:30:02.000000000 +0100
|
||||
@@ -363,9 +363,5 @@ main (int argc,
|
||||
--- glib-2.37.1/gio/tests/desktop-app-info.c 2013-06-07 23:46:28.000000000 +0200
|
||||
+++ glib-2.37.1/gio/tests/desktop-app-info.c 2013-06-07 23:46:32.000000000 +0200
|
||||
@@ -385,6 +385,7 @@ main (int argc,
|
||||
g_setenv ("XDG_DATA_HOME", basedir, TRUE);
|
||||
cleanup_subdirs (basedir);
|
||||
|
||||
- g_test_add_func ("/desktop-app-info/delete", test_delete);
|
||||
- g_test_add_func ("/desktop-app-info/default", test_default);
|
||||
- g_test_add_func ("/desktop-app-info/fallback", test_fallback);
|
||||
- g_test_add_func ("/desktop-app-info/lastused", test_last_used);
|
||||
|
||||
result = g_test_run ();
|
||||
+ return 0;
|
||||
g_test_add_func ("/desktop-app-info/delete", test_delete);
|
||||
g_test_add_func ("/desktop-app-info/default", test_default);
|
||||
g_test_add_func ("/desktop-app-info/fallback", test_fallback);
|
||||
|
||||
|
||||
-----------------------------
|
||||
@@ -81,7 +82,7 @@ The test below depends on the availability /etc/passwd to dbus-daemon.
|
||||
{
|
||||
gint ret;
|
||||
|
||||
+ exit (0);
|
||||
+ return 0;
|
||||
setlocale (LC_ALL, "C");
|
||||
|
||||
g_type_init ();
|
||||
|
||||
@@ -29,21 +29,21 @@ chroot build environment. Thus, disable them.
|
||||
|
||||
ret = g_test_run();
|
||||
|
||||
--- glib-2.34.3/gio/tests/gdbus-exit-on-close.c 2013-01-16 17:49:25.000000000 +0100
|
||||
+++ glib-2.34.3/gio/tests/gdbus-exit-on-close.c 2013-01-16 17:49:30.000000000 +0100
|
||||
@@ -206,13 +206,6 @@ main (int argc,
|
||||
g_type_init ();
|
||||
--- glib-2.37.1/gio/tests/gdbus-exit-on-close.c 2013-06-07 23:41:34.000000000 +0200
|
||||
+++ glib-2.37.1/gio/tests/gdbus-exit-on-close.c 2013-06-07 23:41:40.000000000 +0200
|
||||
@@ -211,6 +211,7 @@ main (int argc,
|
||||
|
||||
g_test_init (&argc, &argv, NULL);
|
||||
|
||||
- for (i = 0; cases[i].name != NULL; i++)
|
||||
- {
|
||||
- gchar *name = g_strdup_printf ("/gdbus/exit-on-close/%s", cases[i].name);
|
||||
-
|
||||
- g_test_add_data_func (name, &cases[i], test_exit_on_close);
|
||||
- g_free (name);
|
||||
- }
|
||||
+ return g_test_run();
|
||||
for (i = 0; cases[i].name != NULL; i++)
|
||||
{
|
||||
gchar *name;
|
||||
@@ -224,5 +225,4 @@ main (int argc,
|
||||
g_free (name);
|
||||
}
|
||||
|
||||
return g_test_run();
|
||||
- return g_test_run();
|
||||
}
|
||||
|
||||
--- glib-2.34.3/gio/tests/gdbus-non-socket.c 2013-01-16 18:13:25.000000000 +0100
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
Since glibc 2.17 doesn't install timezone data by default (see
|
||||
http://thread.gmane.org/gmane.comp.lib.glibc.alpha/17516), and since we
|
||||
don't have that around, shamelessly skip this test.
|
||||
|
||||
--- glib-2.34.3/glib/tests/gdatetime.c 2013-01-16 15:47:57.000000000 +0100
|
||||
+++ glib-2.34.3/glib/tests/gdatetime.c 2013-01-16 15:47:58.000000000 +0100
|
||||
@@ -186,14 +186,6 @@ test_GDateTime_equal (void)
|
||||
g_assert (g_date_time_equal (dt1, dt2));
|
||||
g_date_time_unref (dt1);
|
||||
|
||||
- /* America/Recife is in UTC-0300 */
|
||||
- tz = g_time_zone_new ("America/Recife");
|
||||
- dt1 = g_date_time_new (tz, 2010, 5, 24, 8, 0, 0);
|
||||
- g_time_zone_unref (tz);
|
||||
- g_assert_cmpint (g_date_time_get_utc_offset (dt1) / G_USEC_PER_SEC, ==, (-3 * 3600));
|
||||
- g_assert (g_date_time_equal (dt1, dt2));
|
||||
- g_date_time_unref (dt1);
|
||||
- g_date_time_unref (dt2);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -608,7 +608,6 @@ test_GDateTime_new_full (void)
|
||||
g_assert_cmpint (8, ==, g_date_time_get_hour (dt));
|
||||
g_assert_cmpint (4, ==, g_date_time_get_minute (dt));
|
||||
g_assert_cmpint (0, ==, g_date_time_get_second (dt));
|
||||
- g_assert_cmpstr ("BRT", ==, g_date_time_get_timezone_abbreviation (dt));
|
||||
g_assert (!g_date_time_is_daylight_savings (dt));
|
||||
g_date_time_unref (dt);
|
||||
}
|
||||
@@ -1354,11 +1354,8 @@ main (gint argc,
|
||||
g_test_add_func ("/GDateTime/to_timeval", test_GDateTime_to_timeval);
|
||||
g_test_add_func ("/GDateTime/to_utc", test_GDateTime_to_utc);
|
||||
g_test_add_func ("/GDateTime/now_utc", test_GDateTime_now_utc);
|
||||
- g_test_add_func ("/GDateTime/dst", test_GDateTime_dst);
|
||||
g_test_add_func ("/GDateTime/test_z", test_z);
|
||||
g_test_add_func ("/GDateTime/test-all-dates", test_all_dates);
|
||||
- g_test_add_func ("/GTimeZone/find-interval", test_find_interval);
|
||||
- g_test_add_func ("/GTimeZone/adjust-time", test_adjust_time);
|
||||
g_test_add_func ("/GTimeZone/no-header", test_no_header);
|
||||
|
||||
return g_test_run ();
|
||||
@@ -0,0 +1,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"_
|
||||
@@ -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. */
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user