mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2026-07-07 20:44:04 +02:00
Compare commits
1249 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 2c2631658c | |||
| 054ee2038e | |||
| e086dcfcf9 | |||
| f535dcbe19 | |||
| 581176c00b | |||
| ca9745e484 | |||
| 8e01e30077 | |||
| 759756a992 | |||
| aa6f39127e | |||
| c783cac070 | |||
| 224a0ddbd9 | |||
| b784e8c502 | |||
| bce030840d | |||
| fe28ba703f | |||
| 74fa80ee68 | |||
| 894562e314 | |||
| c480b85e66 | |||
| 22db3ce71a | |||
| 25d51164f7 | |||
| e422279bbc | |||
| 25eb1c2227 | |||
| e0d17b8482 | |||
| 0bc641baf8 | |||
| 1f477b59c1 | |||
| 5e217e4df7 | |||
| e40b25432e | |||
| e0492a8dd4 | |||
| 735bd9c952 | |||
| 56b3bc5694 | |||
| 600621a182 | |||
| 93248cfdd0 | |||
| d7e67cf1a1 | |||
| e1a35c39b1 | |||
| 5125f63fea | |||
| 576cdc5ab4 | |||
| 7588e55c73 | |||
| fc3aa91b55 | |||
| 3784289667 | |||
| 5722409b18 | |||
| e372520ec3 | |||
| d6a08d24bf | |||
| f550db48eb | |||
| 85b2a2f541 | |||
| 6397aef061 | |||
| 6ff19687b1 | |||
| 81da1a45e8 | |||
| 0ba563643e | |||
| 78249cc075 | |||
| 6729152dc5 | |||
| 52db0e1372 | |||
| dc2e8ab7ea | |||
| 1e473fb8dc | |||
| 865ac57307 | |||
| d2639cbc17 | |||
| aee9822326 | |||
| f221841c69 | |||
| fad564ec03 | |||
| 47038762ba | |||
| ce78a0f50c | |||
| 40b56b5291 | |||
| fa4f5024bc | |||
| 10e614523f | |||
| ca41c155c5 | |||
| 7b72df8b7a | |||
| 39505126b1 | |||
| bc74e0e171 | |||
| a43a38a129 | |||
| 4a2fbdfe62 | |||
| 275ff10bb3 | |||
| b53fa04681 | |||
| 9855500af6 | |||
| fa67563caf | |||
| f4e5c04ed1 | |||
| 32ce3df758 | |||
| 766504d199 | |||
| 7cfdbc514f | |||
| 3f2ce1dc3f | |||
| fa709a2fc9 | |||
| 281bc4fd5d | |||
| 6f5e312e97 | |||
| 34128d2ba7 | |||
| 6ffc5be71d | |||
| cc553d025d | |||
| d76bf6181b | |||
| 6c1a7751a5 | |||
| 9e5224e6f3 | |||
| 624efe7304 | |||
| f271524a14 | |||
| 4f99755142 | |||
| 03f6074b72 | |||
| 946fa8c9b0 | |||
| 878535bd81 | |||
| fe8f53e39b | |||
| dc5befb126 | |||
| 801cc88daf | |||
| 5ef40cb26a | |||
| 685502dc93 | |||
| a24ec6f271 | |||
| 7f0d5857e6 | |||
| bc0fb230f9 | |||
| cb2119e4f5 | |||
| a195cd795f | |||
| a311f5d000 | |||
| 94e1dc7a57 | |||
| 71470eddfa | |||
| 9525e25fc1 | |||
| 27e7c8b6a6 | |||
| 8516020507 | |||
| c27f3aced3 | |||
| 899916b51e | |||
| 6ecc4723c2 | |||
| 09fb622cb3 | |||
| 918f690a83 | |||
| 4946514437 | |||
| 10de4306d6 | |||
| 3410470d16 | |||
| e93333483c | |||
| 4e1254971d | |||
| 565f040df4 | |||
| 2108eac211 | |||
| d10fed28b8 | |||
| 748463bec4 | |||
| b10f7be3e3 | |||
| 476f7bab8b | |||
| 78c5b39d08 | |||
| 76ae28f16b | |||
| 9d5f0399f9 | |||
| df12a41294 | |||
| 6d71fcdf9e | |||
| 45882aafcb | |||
| daf5cd28dc | |||
| 327348c629 | |||
| acd881a49c | |||
| 5257c34150 | |||
| 31cac1ee9f | |||
| 379a5ad54f | |||
| 59c9b4f678 | |||
| 318f9d884e | |||
| a45a15df50 | |||
| e2fcaff2ef | |||
| 9380634c10 | |||
| cd27b23d49 | |||
| 35a9b5c70b | |||
| b38c1627ec | |||
| 13244b2438 | |||
| 0b61d50302 | |||
| a306190f88 | |||
| 83185924c2 | |||
| 4c116c6aed | |||
| 87a25ccd04 | |||
| 8431b0468e | |||
| 409ec7c01e | |||
| 6fe7a7e0af | |||
| 2687f7db73 | |||
| 7ae4c10227 | |||
| ca80b8ba15 | |||
| 6a0add9c69 | |||
| ac426aa53b | |||
| a59ab2477a | |||
| 0e03d76a51 | |||
| fd74cc3c72 | |||
| 21b2ec4d3a | |||
| c595cd47d8 | |||
| 2442e69e41 | |||
| c46c931ecf | |||
| dddb11b506 | |||
| 37fdba7e0b | |||
| 9bc08aa0cb | |||
| 5d47eab024 | |||
| ff9a5f7e97 | |||
| 566fc7fa13 | |||
| 1a65667240 | |||
| fe4c37c244 | |||
| 1e656049b0 | |||
| e0a7d36458 | |||
| e11b275204 | |||
| e8069d012f | |||
| a7aa4e2a64 | |||
| 845b4f5b7b | |||
| fab7428881 | |||
| c3c239e615 | |||
| 861be0cc1d | |||
| 1a1553db7e | |||
| 74dc959cb0 | |||
| ee53a14417 | |||
| 641dd73dc8 | |||
| 102eac2a0a | |||
| 053cfdb3d6 | |||
| d882c235d9 | |||
| 577e750580 | |||
| bcb571cba4 | |||
| a7aac93625 | |||
| 218622a737 | |||
| 0a7c5a09fe | |||
| cbaf0f11dd | |||
| 45e1096896 | |||
| d1ccd094f9 | |||
| bf9655f57d | |||
| 0f21557ce8 | |||
| b1599b5299 | |||
| 9e84fe2cde | |||
| a5d06c0c53 | |||
| 212efe97c5 | |||
| 075c3ebd2d | |||
| 4ab70c5ca0 | |||
| 380566157d | |||
| 51805219a5 | |||
| cbe9505778 | |||
| d23c20f1d0 | |||
| ea0c6e0507 | |||
| c6f8e9dd64 | |||
| 1d19bc1162 | |||
| 8ca73fcee9 | |||
| 9e2592a346 | |||
| 6f35d39647 | |||
| ab29be81c5 | |||
| a0dadf0cb1 | |||
| 830d170e97 | |||
| e591a4d6e5 | |||
| 3dac53be01 | |||
| 1f7ffd6ff7 | |||
| 5d86684ddf | |||
| 5e2b761e6a | |||
| 7c0b02f5ae | |||
| 2134228a7d | |||
| 9aec35d265 | |||
| 739ab68bac | |||
| 34a7bfb049 | |||
| 4375dcf36c | |||
| 78981bb9bd | |||
| 0e3cc3116d | |||
| d82633d06a | |||
| 1268e52d5d | |||
| 998b8c07b8 | |||
| 727495757f | |||
| e0c5309a83 | |||
| b1b53df382 | |||
| 4af7c83bc7 | |||
| 3d2a9c8c8e | |||
| d96034ed69 | |||
| d8c4998fd4 | |||
| 07f61cb242 | |||
| 5ac984b3d5 | |||
| 6da9adebaa | |||
| fb157f2507 | |||
| 64c318f2a4 | |||
| 4f9ff21ea0 | |||
| 5248d49e41 | |||
| 5f44ee4fa0 | |||
| 6f305ea5fd | |||
| 80a6773483 | |||
| c5d735f798 | |||
| d6c3267a32 | |||
| a64cd7b65f | |||
| 00184239c3 | |||
| 5152d13b51 | |||
| 87cd0dba2f | |||
| a6785b96ff | |||
| d9c44e9c6a | |||
| 6159943851 | |||
| 17fa842b79 | |||
| 9f7ae77fe2 | |||
| 837294b7a4 | |||
| 5ff6575b08 | |||
| ba8a082493 | |||
| dd86c0d10c | |||
| 331a1cd727 | |||
| d4bf4c8f3e | |||
| 60eb5614d1 | |||
| 397dbde8ff | |||
| aec05972ce | |||
| 2e2ed3cbf9 | |||
| b3e2a5af9f | |||
| c80f1559eb | |||
| cc9c1f3935 | |||
| 92e75d1e9a | |||
| adc90e0eac | |||
| a8bc747ae1 | |||
| 2b10eb489c | |||
| ddc7d8ed18 | |||
| cd6e5189c8 | |||
| 0d34e01b62 | |||
| b74270eedb | |||
| 6784f2e3fe | |||
| 229ad120d4 | |||
| cb6d5c5468 | |||
| db94f8c734 | |||
| 40e94665d4 | |||
| 0f6139b1b5 | |||
| ad8b83bda0 | |||
| 9d373377c9 | |||
| 7f39e181df | |||
| 2da4f2dd8e | |||
| c23c50c734 | |||
| eb52419266 | |||
| f18bd3f64c | |||
| ed01970389 | |||
| 0adfe95a3e | |||
| e79467f63a | |||
| f3f427c2e9 | |||
| 23afe939a2 | |||
| e1c153e0ab | |||
| b893f1aec3 | |||
| 66e4f01c60 | |||
| be1c2c54d9 | |||
| ce8a6dfc43 | |||
| b751cde36b | |||
| 15a01c7220 | |||
| 919370291f | |||
| a72ccbc251 | |||
| f5a21dc4cf | |||
| 7787ef76b6 | |||
| 643725a155 | |||
| 28eb956dfe | |||
| ca34fc317f | |||
| 1de2fe95e0 | |||
| bbd00d2012 | |||
| b94ef11a53 | |||
| e04741f160 | |||
| 5952111cc0 | |||
| 5a60d56975 | |||
| 7c786db4fb | |||
| 88908d55e0 | |||
| 1af9815d81 | |||
| 9765b3aeac | |||
| b81378251c | |||
| b5881775ac | |||
| f956d661ad | |||
| 48e4a9f32f | |||
| e91e28d60c | |||
| 797e1401fe | |||
| 3c4010b1e9 | |||
| 1285119bde | |||
| fd5b213302 | |||
| 0d1c0660d7 | |||
| 319fe79dd0 | |||
| a606ed89d4 | |||
| 2ab5e39d22 | |||
| 7ab73c4add | |||
| 9511de1ef8 | |||
| 6a20289d5a | |||
| afa181fff4 | |||
| 95288fcc6c | |||
| d04efa0fff | |||
| 751b7aad1e | |||
| 2e13698763 | |||
| 0d56e3e1bc | |||
| 14f8dae6b1 | |||
| 543dbd9859 | |||
| b1006576d7 | |||
| f1a045e266 | |||
| dedaf7ac74 | |||
| 3cbf1204ef | |||
| cf4e7083ed | |||
| 38e16b4907 | |||
| 72c62716be | |||
| f073e52382 | |||
| dd01fecd23 | |||
| 04d1ab3bf5 | |||
| 6b3c9db11e | |||
| 2da45ebe56 | |||
| 42e735dfc7 | |||
| 18bf40a087 | |||
| 69762e3c92 | |||
| 3f9f176b3a | |||
| e3302fec18 | |||
| 85e5721421 | |||
| f211b2af67 | |||
| 025cc9a1ed | |||
| 4a30930b84 | |||
| 1eaeeddfba | |||
| 9c32e1fef1 | |||
| bc554b43d6 | |||
| 14bcc1e1cd | |||
| 2b00a55064 | |||
| 1a400bd589 | |||
| 9fbd458b8d | |||
| 29b4c57bf0 | |||
| 9db04bf542 | |||
| 678932aa70 | |||
| 7431edea5b | |||
| 2ebe938c2f | |||
| 85b81cf8c1 | |||
| afd3d9316c | |||
| 8a55e217ad | |||
| b6ac54517c | |||
| f8822418f1 | |||
| 250ffe4de1 | |||
| 54033a4db6 | |||
| f2d7bbb537 | |||
| cfa2e4ad40 | |||
| c9f6938033 | |||
| fbb909ac7e | |||
| 293ff8b2f3 | |||
| 1668dfcd37 | |||
| 57aff6476e | |||
| 29aca449c7 | |||
| e393586161 | |||
| 2ae71b746b | |||
| 6f04e51560 | |||
| b8d953cbbd | |||
| 4d835808e4 | |||
| 5768893ad1 | |||
| 2f8fee0623 | |||
| 127cbd85c0 | |||
| 93bd4a37ee | |||
| bcc09d9ac1 | |||
| b927058237 | |||
| 9ab5ea449e | |||
| 71a4b2ab21 | |||
| 02a8a1876a | |||
| bd60e4e2ef | |||
| 71923a91b1 | |||
| cfd745d6bb | |||
| 88377435ca | |||
| 64cb2de5d0 | |||
| 9e125175fc | |||
| b2666de0fb | |||
| d1ae7233e3 | |||
| b4eba7b088 | |||
| b0b3ebf09f | |||
| d032d9652f | |||
| b4aa6d3dcc | |||
| dd24e9063f | |||
| b98ee8b7e1 | |||
| fde1783087 | |||
| 64c9834716 | |||
| a2950fa4dc | |||
| aae2b445a4 | |||
| b73547e179 | |||
| 997f86e96b | |||
| 46bd6edd5a | |||
| c24fff615b | |||
| 820dc3f5f1 | |||
| 0b1f0d36b1 | |||
| 30d9aa5422 | |||
| 16748d8015 | |||
| df0a3b7f9e | |||
| b2bddb07ef | |||
| 0e4e03f884 | |||
| 91312ebed4 | |||
| ea5616e0e6 | |||
| 21d3770e02 | |||
| a359c9c15c | |||
| 36743e71af | |||
| cd8b7cfb3f | |||
| ba7d6c763c | |||
| ae05b1856f | |||
| aab56ab7da | |||
| c4c020b781 | |||
| 308aa2e795 | |||
| f799c2820d | |||
| 19c34308d6 | |||
| b32eabe4bf | |||
| fdcb976815 | |||
| b2a222445e | |||
| 730bf80888 | |||
| c284e78fa4 | |||
| dc5f87f42a | |||
| d2a6336609 | |||
| e1556533d3 | |||
| 5d8d8f3b0a | |||
| 92f1cefb74 | |||
| 15d5ca1356 | |||
| dd8d6d6547 | |||
| 5ef9d7deea | |||
| 62d2b57157 | |||
| 1f321f8763 | |||
| 246bc76a15 | |||
| 22af90291f | |||
| 5af999b898 | |||
| 88b47cb0e0 | |||
| aa759a5139 | |||
| 36ebf97283 | |||
| 3f00e07866 | |||
| 9a49a5351c | |||
| 791076cc91 | |||
| abbe2c61cf | |||
| e2aace769c | |||
| d708b7a973 | |||
| 665ce1ebe5 | |||
| c3aeac385a | |||
| 23464bfd99 | |||
| 2748ee3bcf | |||
| 1007b6bf0b | |||
| a7a4fd9a7c | |||
| 08d7e3592f | |||
| 75726135ce | |||
| 12cd4dd3a9 | |||
| 5c3c1427fa | |||
| 7a8ac75a94 | |||
| 4179f952bf | |||
| a77adfe022 | |||
| d6445dff14 | |||
| 9462882889 | |||
| a05c06720a | |||
| 1a6c4c2f37 | |||
| 187f80c6c5 | |||
| 6f05a24df3 | |||
| 99d7460d78 | |||
| 71299c1297 | |||
| caf9055c13 | |||
| bd90127ad4 | |||
| 5f20553dee | |||
| efd377221d | |||
| 430505eba3 | |||
| f80a7a6c58 | |||
| f029f8a759 | |||
| c74cd6cc12 | |||
| 20c6b9dae3 | |||
| ee1c4cbaf9 | |||
| 61fe5a57a4 | |||
| 7ae7ca0e2a | |||
| 4a4dac2083 | |||
| 67ee7c9576 | |||
| 667d90dfee | |||
| 1def6f6b2c | |||
| 91781b7498 | |||
| c009bb5a40 | |||
| 2a3a8ae753 | |||
| ffd4b47851 | |||
| 5b9789a6ff | |||
| 834f7ff3c0 | |||
| b668a95cf3 | |||
| 0661b4db2e | |||
| 1cf1cbb0ac | |||
| 4f0e84845d | |||
| 213656b95b | |||
| ea3a80957a | |||
| 3f8ac35330 | |||
| acbb40fa20 | |||
| ad3f005bdd | |||
| c5bf3abe34 | |||
| 256ccc926c | |||
| 675c9f447b | |||
| 9cda36227b | |||
| a52b625152 | |||
| 5546114e73 | |||
| fed5a6898b | |||
| b0f9c4b86c | |||
| af8f9f231e | |||
| da494dad8e | |||
| f210647da2 | |||
| 8fcac19975 | |||
| 07779d0add | |||
| cc0e575a94 | |||
| 7ee5db15bf | |||
| 594360f508 | |||
| 127b04d741 | |||
| 7d1b5022e9 | |||
| d7af106987 | |||
| 7261d9eb16 | |||
| 350ba0a32b | |||
| f88ee3ade7 | |||
| 65d54af49f | |||
| a5002ae77c | |||
| e49b339608 | |||
| 257abebba3 | |||
| edb15985f1 | |||
| 28c5d42d35 | |||
| 7ac4610f7e | |||
| 8528365b0e | |||
| d152162fc1 | |||
| c5d14d4228 | |||
| 70b4cf3818 | |||
| ec79018e68 | |||
| 6aaa815e9f | |||
| 8874f7668a | |||
| e0566f12f8 | |||
| 24a848c8e3 | |||
| 4f740b677a | |||
| fa394eb99c | |||
| 88981dd3e2 | |||
| b2cb869cf9 | |||
| eda1cc8b5d | |||
| c093f9f63a | |||
| 212d563d26 | |||
| 47770296d2 | |||
| be3feafedf | |||
| 0a129f391b | |||
| 2d1db448bd | |||
| d001bb5ab5 | |||
| 3ffe36f534 | |||
| cd89fecbe7 | |||
| a8be7b9a7a | |||
| 41ddebdd2a | |||
| e864722731 | |||
| 2c9d96767a | |||
| de34aface7 | |||
| c7c7a93621 | |||
| 5702efe3e9 | |||
| 979f9e8aed | |||
| 2ed74cea5c | |||
| f9ae2c068d | |||
| 8ea6b30fea | |||
| 1d6c8db57c | |||
| b76b1dcb96 | |||
| f4e92db3cb | |||
| cbd02397b5 | |||
| 2cbed07eef | |||
| 6af4813430 | |||
| d02f38f3f8 | |||
| ed6094fc77 | |||
| 62e4cc5aa1 | |||
| 3500e659f1 | |||
| c136546aaa | |||
| 4ea50f2bc8 | |||
| eb6afbcde7 | |||
| 83d95c7b36 | |||
| 34850cd59d | |||
| ea369ee1b0 | |||
| 46e17df661 | |||
| fd9b3b43ab | |||
| 40f4817846 | |||
| 57a66c2729 | |||
| 8338c24163 | |||
| 50f5c46d06 | |||
| 3b4d01035f | |||
| eb95ace9f1 | |||
| d89e0990f5 | |||
| 17d8e33f31 | |||
| 9c38b54027 | |||
| 801a0a2219 | |||
| b429c4fbb0 | |||
| 1b7b7f27bd | |||
| 239db054a7 | |||
| 5dc876231b | |||
| f56e8f5730 | |||
| 62bffcaa3b | |||
| 27cc9f2544 | |||
| 2713527e06 | |||
| 5e412b6383 | |||
| b85c85becd | |||
| 8c692a5258 | |||
| ed56af06bc | |||
| 673d1a9deb | |||
| 6e5e39f406 | |||
| fb76332f80 | |||
| 75710da667 | |||
| 59ef20304b | |||
| 610075f7c9 | |||
| 92d0fcb6dc | |||
| 73374a68e9 | |||
| 785fb60e1f | |||
| ab20c2cc33 | |||
| e5fe08e4ba | |||
| 5fd92f2063 | |||
| 47959dd442 | |||
| 62a9a23bf9 | |||
| 67e463ecac | |||
| 0081410da0 | |||
| 82aa2a2879 | |||
| daa48c3179 | |||
| 5fbbd29f74 | |||
| 12edffe429 | |||
| 5708a92ace | |||
| a6eb73a4b1 | |||
| 84439c5113 | |||
| c0ec516dc8 | |||
| 866ee34f7e | |||
| ea50a7cf73 | |||
| 5cfb91c7d4 | |||
| aacb86fd79 | |||
| 42e666494d | |||
| 895067ff49 | |||
| e693db426b | |||
| 16460dc0e8 | |||
| 735331de2e | |||
| 3c07ae5d6e | |||
| f4db48580e | |||
| dab148b6e6 | |||
| b7610f23bd | |||
| b86c013c68 | |||
| 5bef7749d5 | |||
| c84940ef81 | |||
| 51c591baa5 | |||
| e4c3e2cd43 | |||
| 41996f22ab | |||
| 6fd66b6c99 | |||
| d495634bc5 | |||
| e378020042 | |||
| a35b8fc6c4 | |||
| 6847247c39 | |||
| f47fbeb23a | |||
| 78edf44ce7 | |||
| 6e38c4be4f | |||
| a1d5a6f913 | |||
| bac4818467 | |||
| 574d9db2ce | |||
| 4307c476c4 | |||
| 14454f0bc5 | |||
| 3f208ad758 | |||
| 6b02a448d2 | |||
| 1c01a30d66 | |||
| c6a3635d54 | |||
| 8b94dffde8 | |||
| a6d0b306c2 | |||
| 8b45993235 | |||
| bb1ba6b8f7 | |||
| 9cf6c9fcf0 | |||
| c1b9e7e7b5 | |||
| a1121a7f83 | |||
| ef30b974c9 | |||
| 9d9847e153 | |||
| 5625adfccc | |||
| 2fecbdbd82 | |||
| f19b9b96cd | |||
| c0a1ea2c75 | |||
| 0334ef2ab0 | |||
| eb55e28c84 | |||
| 784d6e9115 | |||
| fe8199a80c | |||
| 4fb254a339 | |||
| b6cb13583b | |||
| 6f6eb85760 | |||
| 363ccf9fe2 | |||
| c940a14559 | |||
| 3d3caf1f31 | |||
| 5b86a5842c | |||
| a228fce597 | |||
| 5a4849e11c | |||
| 6f96706d6f | |||
| 0c0a1f22ce | |||
| c5d8e688dc | |||
| 1cd4027cfd | |||
| 8531b326f1 | |||
| 05de40c5d3 | |||
| ea8e40d031 | |||
| 64b6ccc30e | |||
| ee78d02452 | |||
| 4949ada9da | |||
| 468e56576c | |||
| 4a9e058566 | |||
| b500e7182d | |||
| 140b4bc6cd | |||
| f4ae827e26 | |||
| 8957241dd4 | |||
| f03c0e01ca | |||
| 194c7f95f1 | |||
| a1703aa765 | |||
| 0e6412c1d0 | |||
| f5c0b04bfe | |||
| 81ece42981 | |||
| e6f22a828e | |||
| d582eaacec | |||
| 030fa12ef2 | |||
| a5c0d8bc55 | |||
| 37ab3abad3 | |||
| f847ad7bc0 | |||
| 5ff89a1bd2 | |||
| c99e224707 | |||
| 08a1b7013d | |||
| 1415792a7c | |||
| 96e76083b8 | |||
| 5337f8b97d | |||
| 2e3fdea441 | |||
| 30b0b725ff | |||
| 386b0052f5 | |||
| 12abc6e395 | |||
| 90f2801e21 | |||
| 52b9efe337 | |||
| 718a2bde42 | |||
| d0f74308e2 | |||
| f24931d841 | |||
| 6480fcae24 | |||
| 1ce6f43a6b | |||
| 761b3d44fb | |||
| e920bfcacf | |||
| bea1c0e246 | |||
| 616eaead7e | |||
| cfc5d39888 | |||
| 6b44a09747 | |||
| cf897cbacc | |||
| b7d0b096b0 | |||
| 1de0afd5a5 | |||
| 45468e3649 | |||
| 6376ed4a34 | |||
| ced7cc92d7 | |||
| f06441951c | |||
| 341f496577 | |||
| 34582b3037 | |||
| dbbc248aee | |||
| 3b6eddb2b2 | |||
| 1c74da2137 | |||
| 7c473310a1 | |||
| ca64968068 | |||
| 00f34aaafe | |||
| 21a8fe1bf5 | |||
| 035b6ff707 | |||
| 70db9576f4 | |||
| a7ecc92dc5 | |||
| 561840b4aa | |||
| 0cce99684a | |||
| 66feaa320e | |||
| 52f62492b0 | |||
| 62ea886525 | |||
| 02615bfa2f | |||
| af23b6e946 | |||
| 5e9738b7ca | |||
| 9d2f48df02 | |||
| 6fc92598ac | |||
| 92226a470d | |||
| 7b770ecaf3 | |||
| d11b808f4a | |||
| a11ee478a6 | |||
| 9ca731baf1 | |||
| d5cd5c1568 | |||
| 4dca98dc81 | |||
| a45ba1270c | |||
| 9a4d8968f0 | |||
| 7e10056b6b | |||
| ea69e2f853 | |||
| 4437333958 | |||
| d69c4b04fa | |||
| b7eee9fc65 | |||
| 112bb3c04f | |||
| 177f38c7fe | |||
| 3587effb7a | |||
| b12636e6bb | |||
| 38b327a9ee | |||
| d9cef6128c | |||
| 240f2785c0 | |||
| c4044399a9 | |||
| 52c20d8e15 | |||
| 4c8f997a7d | |||
| 4650a77ea8 | |||
| 0071c7894e | |||
| 3f130e42e0 | |||
| 7b6c5c5d74 | |||
| 04463bb05e | |||
| 5c91962afe | |||
| 0c14675075 | |||
| 641c9871a5 | |||
| 89b2e0b0b8 | |||
| 0b928076c7 | |||
| d1f80aa401 | |||
| 3555771267 | |||
| 0f0c586a07 | |||
| 7ee2005ede | |||
| 75beb7e178 | |||
| df2d51f025 | |||
| 09cc7729d0 | |||
| f6c2d05ceb | |||
| 28cbc587d3 | |||
| 1921b1de07 | |||
| f85ccf88ef | |||
| 26ecc2a780 | |||
| ddfddb0c45 | |||
| 96f8d991ec | |||
| 95283f3fee | |||
| 97f70018b0 | |||
| 3f88152d25 | |||
| dee38b7b41 | |||
| a96524cc7d | |||
| 385a44bebb | |||
| 2053949a9e | |||
| 1edd421ba5 | |||
| 35f1ebeb2a | |||
| 7c4810a1e5 | |||
| 7e7b27d906 | |||
| 44fd0994a0 | |||
| 87390c155e | |||
| 6e3fdbbe26 | |||
| 1defd8cd2e | |||
| 761d6fd9c1 | |||
| 32c0b6d78c | |||
| 70fabd498c | |||
| 8b9ceb8d03 | |||
| cdd383e9f3 | |||
| 1a51fe2768 | |||
| 821664f115 | |||
| 5faa5ce4ef | |||
| 3efb57eaf4 | |||
| 8410cb6251 | |||
| 2cb3ab4827 | |||
| 8b9bde077a | |||
| cc53e63052 | |||
| 71a03c29bf | |||
| ad79eb554d | |||
| cf36174ffb | |||
| ab952dc375 | |||
| 0fd53ed634 | |||
| f8f3bef6aa | |||
| e1248602f9 | |||
| 9a479bc383 | |||
| 7061938fdb | |||
| bd6163d13f | |||
| 8c578a6094 | |||
| b7c7c03eb5 | |||
| d56f8d5e74 | |||
| eb097f36b1 | |||
| 9b0afb0d28 | |||
| 1f13861b57 | |||
| c554de8929 | |||
| 7008dffff5 | |||
| 5e53b0c5a9 | |||
| caa6732e96 | |||
| 51dac38339 | |||
| d007d8a10c | |||
| 26476d5852 | |||
| 25a2839c9d | |||
| 43b40c4b15 | |||
| c1a8c5ab1c | |||
| 056b5ceffc | |||
| 521a11e0a6 | |||
| 6543601fa0 | |||
| e767752c79 | |||
| ad0f31f6a5 | |||
| 009d6388e6 | |||
| 1ce96dd927 | |||
| c10521e976 | |||
| 935d079bb7 | |||
| cc77415053 | |||
| 57f65bcc9c | |||
| 5c962e93e5 | |||
| 409ba9a2cb | |||
| 600233bdd2 | |||
| 30dc88d975 | |||
| 20c05ea94a | |||
| 532164194a | |||
| b263651860 | |||
| 3d20ebd6cb | |||
| 0bfdfd377e | |||
| 2d8781a491 | |||
| 0dc2e348dc | |||
| 6a5894a823 | |||
| 01e327b556 | |||
| 276f49df73 | |||
| 122d0d10c6 | |||
| de3d612a52 | |||
| c3b97bd902 | |||
| 96c4621056 | |||
| 4cc2ed98cf | |||
| 90d891fc6c | |||
| aad5df4058 | |||
| bfaaffb06a | |||
| 7b06688048 | |||
| f02c902cbe | |||
| 6c7f44efc2 | |||
| ced200328c | |||
| 0309e1b0ba | |||
| b6c6105cac | |||
| ca2a55d46b | |||
| cef644e627 | |||
| df1db7672d | |||
| 7bce9fa5f3 | |||
| 58724c488b | |||
| 3aae8145a7 | |||
| 140b304815 | |||
| f8da3af086 | |||
| 555e436ea2 | |||
| 6edb5b7765 | |||
| 25ae74cffa | |||
| f2638f0b37 | |||
| 89949e8f54 | |||
| be379ee77d | |||
| 55f29c39f5 | |||
| ef80ca96fa | |||
| 54e515eb75 | |||
| d1f38287f4 | |||
| 888569161c | |||
| 12e5b26643 | |||
| c2b8467645 | |||
| f7283db37d | |||
| 14e2e44d44 | |||
| fe32241ad5 | |||
| 45fed6d32c | |||
| 2d0fd07bb9 | |||
| 9a59673d26 | |||
| 80700c4d6a | |||
| 6bf99bac95 | |||
| be23021d93 | |||
| b81f56932e | |||
| 22d0e9b792 | |||
| c34507d662 | |||
| 720fb41c69 | |||
| 1c77d0caa9 | |||
| 7fc7186ede | |||
| 4271d13474 | |||
| 05b964ae85 | |||
| eb6ae860e5 | |||
| 684f29abfc | |||
| 77a23be2aa | |||
| 9deb95aa95 | |||
| 5079a0af0d | |||
| 9297065a2b | |||
| c6e59259fd | |||
| 63b1bdbc43 | |||
| 5c37126f68 | |||
| bda2ded6b6 | |||
| 94a3d8fd6b | |||
| c808ca02dd | |||
| d8f1c07499 | |||
| f187b2a29f | |||
| 3573b634ba | |||
| 0a38a49702 | |||
| 92dcc23d2b | |||
| 006faa3589 | |||
| d4bf3dacd2 | |||
| b9d8756b13 | |||
| be78e52cb0 | |||
| 2e718b9f21 | |||
| bcb354ad94 | |||
| a63a73dcb7 | |||
| caf87fd8c6 | |||
| 83a2e49204 | |||
| 86aff7912c | |||
| 020cdbd0e4 | |||
| a3856b2ce3 | |||
| 4b58d88bcd | |||
| de1d7cbbdc | |||
| c1b7ea1e24 | |||
| 2bcfdd8f9c | |||
| 491ae037ec | |||
| 314529c271 | |||
| 0058239ed3 | |||
| 686b1bab5b | |||
| 0d5ddad41b | |||
| 9cdce047d0 | |||
| 80601ec179 | |||
| 477ac94ba2 | |||
| 3d89031804 | |||
| 8f43d1ba99 | |||
| 4a9999871c | |||
| fa96048f0a | |||
| feca8e2bc7 | |||
| 08cc159a70 | |||
| cee32ee4d3 | |||
| 4006fd87b5 | |||
| dede51a18b | |||
| e93b88f782 | |||
| a6dcdcac76 | |||
| 5084eb4595 | |||
| 2824146bd8 | |||
| 6ef9edbff3 | |||
| de63b20ed1 | |||
| 0d2794005c | |||
| 83bde59fb3 | |||
| 40a7d4e58b | |||
| 7cb6f648b2 | |||
| 2376963411 | |||
| e4fb9d2d97 | |||
| 89a39d4e76 | |||
| 139d7e9541 | |||
| 3b65abacff | |||
| 46c92ea058 | |||
| 6744aba846 | |||
| 7f1b865819 | |||
| 0f402e4cf8 | |||
| 9243fdf779 | |||
| fe1f2c80a1 | |||
| fb1e06fc5f | |||
| 86e3f95a09 | |||
| e640340b9e | |||
| e3484421cb | |||
| ba139bd75b | |||
| e41e013b1b | |||
| 8a0263f17b | |||
| 9523f6378a | |||
| e83c6d009f | |||
| 4ab9f96a5c | |||
| 39e336b5c8 | |||
| 12a9f4af01 | |||
| 62de2545e1 | |||
| 9b459fc7e1 | |||
| 20c263b00f | |||
| 4e0143738f | |||
| eb537f5748 | |||
| 07cd148c7a | |||
| 497674280f | |||
| a10052acd5 | |||
| a6d605e648 | |||
| 80a747c4fe | |||
| ad11974e8f | |||
| c449a07693 | |||
| 907f939b9b | |||
| 6c591c8ed7 | |||
| 91430de6df | |||
| c2099a4c82 | |||
| c1670a8196 | |||
| 365481116c | |||
| 27f5e13e0a | |||
| 8ff275687d | |||
| 1cdecaf5e6 | |||
| 50aec63560 | |||
| 61be05c3c3 | |||
| af6100f51b | |||
| f6a9bf848f | |||
| 625c91767f | |||
| 159093a70f | |||
| c755c85467 | |||
| c037a0f7ce | |||
| f74c577ce0 | |||
| c769a1638b | |||
| 619a660f6e | |||
| 2f9c3d1939 | |||
| 8cba71c7a0 | |||
| aae70767bf | |||
| ae4784af54 | |||
| 1e738fc8a5 | |||
| 0ce4c9d5ca | |||
| 176be3d436 | |||
| e8bdd73ac6 | |||
| bc459b617f | |||
| 7549f98415 | |||
| 9975549142 | |||
| 0c84e33ec1 | |||
| d032bb7464 | |||
| 1d3eaef90c | |||
| 98bdee6725 | |||
| 463f676682 | |||
| 0abe1d86f5 | |||
| 7c88b6bd5c | |||
| 3bc4544929 | |||
| 3b71b36c08 | |||
| e0477b7391 | |||
| 7a75b02ae5 | |||
| 831bc1468e | |||
| 8c812f2aee | |||
| 014cbde612 | |||
| a5e55dfbb7 | |||
| ff6f33cf80 | |||
| 9f6509c655 | |||
| 494e9b9167 | |||
| 0a143f673c | |||
| b1a2bc895a | |||
| 008b525734 | |||
| 57661278a7 | |||
| 57082417f3 | |||
| ef872381ce | |||
| 2d0942392d | |||
| d2892f3a2d | |||
| 4988dd4008 | |||
| 8d801045ff | |||
| 29408532b4 | |||
| 0256c7469a | |||
| 48dbeef733 | |||
| 3a0b1b9afc | |||
| 4aadb1dff7 | |||
| 6d992d078e | |||
| 61b9ac53c3 | |||
| cf9ce01fb3 | |||
| 40aee1a133 | |||
| 85777fe57a | |||
| d4dbf10eb1 | |||
| 6544aba5fc | |||
| 23bae7bb86 | |||
| 930945015c | |||
| 8fd857f5da | |||
| 4ecfbda72e | |||
| 9589c6890a | |||
| f9da1d8afa | |||
| feb0d9c340 | |||
| 429fdea1ab | |||
| de73dbf62d | |||
| 670398751e | |||
| 52323f32fa | |||
| 345f0611af | |||
| 99e29da156 | |||
| 8c454dcd12 | |||
| 7ef4119f0a | |||
| bae877624e | |||
| 44a477e1ac | |||
| 6cef1b9b99 | |||
| cac8bc38a0 | |||
| 5df2316d73 | |||
| a2b2aebea9 | |||
| 3dc8828f18 | |||
| cff77d4897 | |||
| 35a12b4719 | |||
| 6d7a0eeded | |||
| f7fb0ccb69 | |||
| b8050e7183 | |||
| 59ad30e3a8 | |||
| e727ed6aef | |||
| bcbc02fd09 | |||
| ca01b3ad96 | |||
| 8e80244a5f | |||
| a997470163 | |||
| a060ca3201 | |||
| 2520c84a6f | |||
| eb26970a21 | |||
| 171ae35c13 | |||
| cfbbff31cc | |||
| 65cb2d61e6 | |||
| ea2262914a | |||
| 41af5e7b72 | |||
| ac5d70cdab | |||
| 72b891e50e | |||
| 5b9da1f955 | |||
| b81cb1f2f3 | |||
| c6c86cd7a5 | |||
| 9c55bae607 | |||
| e7f5691d45 | |||
| 573b4c1ff3 | |||
| 3ca337699a | |||
| 4a30e84e61 | |||
| b89e74054e | |||
| 53de532f28 | |||
| bd4af2f940 | |||
| 7409c8d42b | |||
| 6bb5a8a1c1 | |||
| 4a8276704f | |||
| f272987aa2 | |||
| d0dfc06683 | |||
| 10b1f68877 | |||
| 9f51293cee | |||
| 878c8f3f47 | |||
| 47e0ba8fe5 | |||
| 8fe5b1d1d1 | |||
| ec2406efc7 | |||
| e9ba6357e3 | |||
| 7e96eb1a08 | |||
| 7c0a91049b | |||
| 324bdcd87e | |||
| 424ce93d95 | |||
| ec5f3ec416 | |||
| b4b4c81bbe | |||
| cce11514c7 | |||
| 3f1470100a | |||
| 015878fdbb | |||
| 69b4ffcfbd | |||
| 4d40227cce | |||
| 6bb5c4ef71 | |||
| 0e9f9f7bc2 | |||
| 254b1c2e95 | |||
| fa1fdb8dfe | |||
| 31ea3ebb05 | |||
| aafa0dffb1 | |||
| d490d06e0f | |||
| 1eabf4ec63 | |||
| b59df2434a | |||
| 1bd4e6db15 | |||
| 2c59cbc26a | |||
| 1acd8d22af | |||
| f3d8cd79d1 | |||
| 1436c5c7e8 | |||
| 8fd3c1ff6e | |||
| eea410f172 | |||
| 77d8bb1552 | |||
| 476b2877ad | |||
| 09c414d80c | |||
| 729b44e3ae | |||
| 6f92ad5a51 | |||
| 753dc7d311 | |||
| b3527d5d58 | |||
| 19dd998313 | |||
| 6e6b5344b0 | |||
| 83365461a7 |
+9
-2
@@ -120,9 +120,16 @@ GTAGS
|
||||
/emacs/Makefile
|
||||
/emacs/guix-autoloads.el
|
||||
/emacs/guix-helper.scm
|
||||
/emacs/guix-init.el
|
||||
/emacs/guix-profiles.el
|
||||
/emacs/guix-config.el
|
||||
/doc/os-config-bare-bones.texi
|
||||
/doc/os-config-desktop.texi
|
||||
/doc/*.1
|
||||
/etc/guix-daemon.service
|
||||
/doc/images/bootstrap-graph.pdf
|
||||
/doc/images/coreutils-bag-graph.png
|
||||
/doc/images/coreutils-graph.png
|
||||
/doc/images/coreutils-size-map.eps
|
||||
/doc/images/service-graph.png
|
||||
/doc/images/service-graph.eps
|
||||
/doc/images/service-graph.pdf
|
||||
/doc/images/dmd-graph.png
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
Alexander I. Grafov <grafov@gmail.com>
|
||||
Amirouche Boubekki <amirouche@hypermove.net>
|
||||
Andy Wingo <wingo@igalia.com> <wingo@pobox.com>
|
||||
Ben Woodcroft <b.woodcroft@uq.edu.au> <donttrustben@gmail.com>
|
||||
Claes Wallin (韋嘉誠) <claes.wallin@greatsinodevelopment.com>
|
||||
Cyprien Nicolas <cyprien@nicolas.tf> <c.nicolas+gitorious@gmail.com>
|
||||
@@ -10,6 +11,7 @@ David Thompson <davet@gnu.org> <dthompson2@worcester.edu>
|
||||
David Thompson <davet@gnu.org> <dthompson@member.fsf.org>
|
||||
Deck Pickard <deck.r.pickard@gmail.com> <nebu@kipple>
|
||||
Eric Bavier <bavier@member.fsf.org> <ericbavier@gmail.com>
|
||||
Eric Dvorsak <eric@dvorsak.fr> <yenda1@gmail.com>
|
||||
John Darrington <jmd@gnu.org> <john@darrington.wattle.id.au>
|
||||
Joshua Grant <tadni@riseup.net> <gzg@riseup.net>
|
||||
Joshua Grant <tadni@riseup.net> <jgrant@parenthetical.io>
|
||||
|
||||
+35
-3
@@ -48,6 +48,7 @@ MODULES = \
|
||||
guix/nar.scm \
|
||||
guix/derivations.scm \
|
||||
guix/gnu-maintenance.scm \
|
||||
guix/upstream.scm \
|
||||
guix/licenses.scm \
|
||||
guix/build-system.scm \
|
||||
guix/build-system/cmake.scm \
|
||||
@@ -58,6 +59,7 @@ MODULES = \
|
||||
guix/build-system/perl.scm \
|
||||
guix/build-system/python.scm \
|
||||
guix/build-system/waf.scm \
|
||||
guix/build-system/r.scm \
|
||||
guix/build-system/ruby.scm \
|
||||
guix/build-system/trivial.scm \
|
||||
guix/ftp-client.scm \
|
||||
@@ -77,6 +79,7 @@ MODULES = \
|
||||
guix/build/gnu-dist.scm \
|
||||
guix/build/perl-build-system.scm \
|
||||
guix/build/python-build-system.scm \
|
||||
guix/build/r-build-system.scm \
|
||||
guix/build/ruby-build-system.scm \
|
||||
guix/build/waf-build-system.scm \
|
||||
guix/build/haskell-build-system.scm \
|
||||
@@ -88,7 +91,6 @@ MODULES = \
|
||||
guix/build/rpath.scm \
|
||||
guix/build/cvs.scm \
|
||||
guix/build/svn.scm \
|
||||
guix/build/syscalls.scm \
|
||||
guix/build/gremlin.scm \
|
||||
guix/build/emacs-utils.scm \
|
||||
guix/build/graft.scm \
|
||||
@@ -98,8 +100,10 @@ MODULES = \
|
||||
guix/import/gnu.scm \
|
||||
guix/import/snix.scm \
|
||||
guix/import/cabal.scm \
|
||||
guix/import/cran.scm \
|
||||
guix/import/hackage.scm \
|
||||
guix/import/elpa.scm \
|
||||
guix/scripts.scm \
|
||||
guix/scripts/download.scm \
|
||||
guix/scripts/build.scm \
|
||||
guix/scripts/archive.scm \
|
||||
@@ -113,6 +117,8 @@ MODULES = \
|
||||
guix/scripts/refresh.scm \
|
||||
guix/scripts/system.scm \
|
||||
guix/scripts/lint.scm \
|
||||
guix/scripts/challenge.scm \
|
||||
guix/scripts/import/cran.scm \
|
||||
guix/scripts/import/gnu.scm \
|
||||
guix/scripts/import/nix.scm \
|
||||
guix/scripts/import/hackage.scm \
|
||||
@@ -121,9 +127,19 @@ MODULES = \
|
||||
guix/scripts/publish.scm \
|
||||
guix/scripts/edit.scm \
|
||||
guix/scripts/size.scm \
|
||||
guix/scripts/graph.scm \
|
||||
guix/scripts/container.scm \
|
||||
guix/scripts/container/exec.scm \
|
||||
guix.scm \
|
||||
$(GNU_SYSTEM_MODULES)
|
||||
|
||||
if BUILD_SYSCALLS_MODULE
|
||||
|
||||
MODULES += \
|
||||
guix/build/syscalls.scm
|
||||
|
||||
endif
|
||||
|
||||
if BUILD_DAEMON_OFFLOAD
|
||||
|
||||
MODULES += \
|
||||
@@ -191,6 +207,7 @@ SCM_TESTS = \
|
||||
tests/packages.scm \
|
||||
tests/snix.scm \
|
||||
tests/hackage.scm \
|
||||
tests/cran.scm \
|
||||
tests/elpa.scm \
|
||||
tests/store.scm \
|
||||
tests/monads.scm \
|
||||
@@ -202,8 +219,12 @@ SCM_TESTS = \
|
||||
tests/gremlin.scm \
|
||||
tests/lint.scm \
|
||||
tests/publish.scm \
|
||||
tests/scripts.scm \
|
||||
tests/size.scm \
|
||||
tests/graph.scm \
|
||||
tests/challenge.scm \
|
||||
tests/file-systems.scm \
|
||||
tests/services.scm \
|
||||
tests/containers.scm
|
||||
|
||||
if HAVE_GUILE_JSON
|
||||
@@ -213,11 +234,13 @@ MODULES += \
|
||||
guix/import/pypi.scm \
|
||||
guix/scripts/import/pypi.scm \
|
||||
guix/import/cpan.scm \
|
||||
guix/scripts/import/cpan.scm
|
||||
guix/scripts/import/gem.scm \
|
||||
guix/import/gem.scm
|
||||
|
||||
SCM_TESTS += \
|
||||
tests/pypi.scm \
|
||||
tests/cpan.scm
|
||||
tests/cpan.scm \
|
||||
tests/gem.scm
|
||||
|
||||
endif
|
||||
|
||||
@@ -232,6 +255,8 @@ SH_TESTS = \
|
||||
tests/guix-archive.sh \
|
||||
tests/guix-authenticate.sh \
|
||||
tests/guix-environment.sh \
|
||||
tests/guix-environment-container.sh \
|
||||
tests/guix-graph.sh \
|
||||
tests/guix-lint.sh
|
||||
|
||||
if BUILD_DAEMON
|
||||
@@ -298,6 +323,13 @@ EXTRA_DIST += \
|
||||
|
||||
endif !BUILD_DAEMON_OFFLOAD
|
||||
|
||||
if !BUILD_SYSCALLS_MODULE
|
||||
|
||||
EXTRA_DIST += \
|
||||
guix/build/syscalls.scm
|
||||
|
||||
endif !BUILD_SYSCALLS_MODULE
|
||||
|
||||
|
||||
CLEANFILES = \
|
||||
$(GOBJECTS) \
|
||||
|
||||
@@ -59,7 +59,6 @@ To do so:
|
||||
guix environment guix
|
||||
|
||||
- Re-run the 'configure' script passing it the option
|
||||
'--with-libgcrypt-prefix=$HOME/.guix-profile/', as well as
|
||||
'--localstatedir=/somewhere', where '/somewhere' is the 'localstatedir'
|
||||
value of the currently installed Guix (failing to do that would lead the
|
||||
new Guix to consider the store to be empty!).
|
||||
|
||||
@@ -13,18 +13,23 @@ infrastructure help:
|
||||
Daniel Clark <dclark@pobox.com>
|
||||
Alexandru Cojocaru <xojoc@gmx.com>
|
||||
Aleix Conchillo Flaqué <aconchillo@gmail.com>
|
||||
Malcolm Cook <MEC@stowers.org>
|
||||
Rafael Ferreira <rafael.f.f1@gmail.com>
|
||||
Christian Grothoff <christian@grothoff.org>
|
||||
Eric Hanchrow <eric.hanchrow@gmail.com>
|
||||
Konrad Hinsen <konrad.hinsen@fastmail.net>
|
||||
Brandon Invergo <brandon@gnu.org>
|
||||
Anders Jonsson <anders.jonsson@norsjovallen.se>
|
||||
Jeffrin Jose <ahiliation@yahoo.co.in>
|
||||
Kete <kete@ninthfloor.org>
|
||||
Daniel Kochmański <dkochmanski@hellsgate.pl>
|
||||
Matthew Lien <bluet@bluet.org>
|
||||
Niels Möller <nisse@lysator.liu.se>
|
||||
Dave Love <fx@gnu.org>
|
||||
Niels Möller <nisse@lysator.liu.se>
|
||||
Cyprien Nicolas <cyprien@nicolas.tf>
|
||||
Yutaka Niibe <gniibe@fsij.org>
|
||||
Andrei Osipov <andrspv@gmail.com>
|
||||
Petter <petter@mykolab.ch>
|
||||
Adam Pribyl <pribyl@lowlevel.cz>
|
||||
Pjotr Prins <pjotr.public12@thebird.nl>
|
||||
Yakkala Yagnesh Raghava <hi@yagnesh.org>
|
||||
@@ -35,6 +40,7 @@ infrastructure help:
|
||||
Alexander Shendi <Alexander.Shendi@web.de>
|
||||
Alen Skondro <askondro@gmail.com>
|
||||
Matthias Wachs <wachs@net.in.tum.de>
|
||||
Christopher Allan Webber <cwebber@dustycloud.org>
|
||||
Philip Woods <elzairthesorcerer@gmail.com>
|
||||
|
||||
GNU Guix also includes non-software works. Thanks to the following
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -23,13 +23,13 @@
|
||||
;;;
|
||||
|
||||
(use-modules (gnu))
|
||||
(use-service-modules desktop xorg networking avahi)
|
||||
(use-service-modules desktop xorg networking avahi dbus)
|
||||
(use-package-modules linux xorg tor avahi)
|
||||
|
||||
(operating-system
|
||||
(host-name "gnu")
|
||||
(timezone "Europe/Paris")
|
||||
(locale "en_US.UTF-8")
|
||||
(locale "en_US.utf8")
|
||||
|
||||
(bootloader (grub-configuration
|
||||
(device "/dev/sda")))
|
||||
@@ -71,7 +71,7 @@ You can log in as 'guest' or 'root' with no password.
|
||||
#:gateway "10.0.2.2")
|
||||
|
||||
(avahi-service)
|
||||
(dbus-service (list avahi))
|
||||
(dbus-service)
|
||||
(tor-service)
|
||||
|
||||
%base-services))
|
||||
|
||||
@@ -221,10 +221,11 @@ valid."
|
||||
|
||||
(define (cross-jobs system)
|
||||
(define (from-32-to-64? target)
|
||||
;; Return true if SYSTEM is 32-bit and TARGET is 64-bit.
|
||||
;; This hacks prevents known-to-fail cross-builds from i686-linux to
|
||||
;; Return true if SYSTEM is 32-bit and TARGET is 64-bit. This hack
|
||||
;; prevents known-to-fail cross-builds from i686-linux or armhf-linux to
|
||||
;; mips64el-linux-gnuabi64.
|
||||
(and (string-prefix? "i686-" system)
|
||||
(and (or (string-prefix? "i686-" system)
|
||||
(string-prefix? "armhf-" system))
|
||||
(string-suffix? "64" target)))
|
||||
|
||||
(define (same? target)
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
(gnu packages version-control)
|
||||
(gnu packages package-management)
|
||||
(gnu packages graphviz)
|
||||
(gnu packages man)
|
||||
(srfi srfi-1)
|
||||
(srfi srfi-26)
|
||||
(ice-9 match))
|
||||
@@ -71,7 +72,12 @@
|
||||
(define (tarball-package checkout)
|
||||
"Return a package that does `make distcheck' from CHECKOUT, a directory
|
||||
containing a Git checkout of Guix."
|
||||
(dist-package guix checkout))
|
||||
(dist-package (package
|
||||
(inherit guix)
|
||||
(native-inputs `(("graphviz" ,graphviz)
|
||||
("help2man" ,help2man)
|
||||
,@(package-native-inputs guix))))
|
||||
checkout))
|
||||
|
||||
(define (hydra-jobs store arguments)
|
||||
"Return Hydra jobs."
|
||||
|
||||
+1
-1
@@ -51,7 +51,7 @@ if test "x$guix_build_daemon" = "xyes"; then
|
||||
no)
|
||||
LIBGCRYPT_LIBS="-lgcrypt"
|
||||
;;
|
||||
*)
|
||||
*)
|
||||
LIBGCRYPT_LIBS="-L$LIBGCRYPT_LIBDIR -lgcrypt"
|
||||
;;
|
||||
esac
|
||||
|
||||
+27
-16
@@ -2,7 +2,7 @@
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ(2.68)
|
||||
AC_INIT([GNU Guix], [0.8.3], [bug-guix@gnu.org], [guix],
|
||||
AC_INIT([GNU Guix], [0.9.0], [bug-guix@gnu.org], [guix],
|
||||
[http://www.gnu.org/software/guix/])
|
||||
AC_CONFIG_AUX_DIR([build-aux])
|
||||
|
||||
@@ -85,6 +85,11 @@ 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])
|
||||
|
||||
dnl Check whether (guix build syscalls) can be built.
|
||||
GUIX_CHECK_LIBC_MOUNT
|
||||
AM_CONDITIONAL([BUILD_SYSCALLS_MODULE],
|
||||
[test "x$guix_cv_libc_has_mount" = "xyes"])
|
||||
|
||||
AC_ARG_WITH([nix-prefix],
|
||||
[AS_HELP_STRING([--with-nix-prefix=DIR],
|
||||
[search for Nix in DIR (for testing purposes and '--disable-daemon' builds)])],
|
||||
@@ -127,23 +132,21 @@ else
|
||||
AC_MSG_RESULT([not found])
|
||||
fi
|
||||
|
||||
LIBGCRYPT="libgcrypt"
|
||||
LIBGCRYPT_LIBDIR="no"
|
||||
LIBGCRYPT_PREFIX="no"
|
||||
|
||||
AC_ARG_WITH([libgcrypt-prefix],
|
||||
[AS_HELP_STRING([--with-libgcrypt-prefix=DIR], [search for GNU libgcrypt in DIR])],
|
||||
[case "$withval" in
|
||||
yes|no)
|
||||
LIBGCRYPT="libgcrypt"
|
||||
LIBGCRYPT_PREFIX="no"
|
||||
LIBGCRYPT_LIBDIR="no"
|
||||
;;
|
||||
*)
|
||||
LIBGCRYPT="$withval/lib/libgcrypt"
|
||||
LIBGCRYPT_PREFIX="$withval"
|
||||
LIBGCRYPT_LIBDIR="$withval/lib"
|
||||
;;
|
||||
esac],
|
||||
[LIBGCRYPT="libgcrypt"
|
||||
LIBGCRYPT_PREFIX="no"
|
||||
LIBGCRYPT_LIBDIR="no"])
|
||||
esac])
|
||||
|
||||
AC_ARG_WITH([libgcrypt-libdir],
|
||||
[AS_HELP_STRING([--with-libgcrypt-libdir=DIR],
|
||||
@@ -157,13 +160,21 @@ AC_ARG_WITH([libgcrypt-libdir],
|
||||
LIBGCRYPT="$withval/libgcrypt"
|
||||
LIBGCRYPT_LIBDIR="$withval"
|
||||
;;
|
||||
esac],
|
||||
[if test "x$LIBGCRYPT" = x; then
|
||||
LIBGCRYPT="libgcrypt"
|
||||
fi
|
||||
if test "x$LIBGCRYPT_LIBDIR" = x; then
|
||||
esac])
|
||||
|
||||
dnl If none of the --with-libgcrypt-* options was used, try to determine the
|
||||
dnl absolute file name of libgcrypt.so.
|
||||
case "x$LIBGCRYPT_PREFIX$LIBGCRYPT_LIBDIR" in
|
||||
xnono)
|
||||
GUIX_LIBGCRYPT_LIBDIR([LIBGCRYPT_LIBDIR])
|
||||
if test "x$LIBGCRYPT_LIBDIR" != x; then
|
||||
LIBGCRYPT="$LIBGCRYPT_LIBDIR/libgcrypt"
|
||||
else
|
||||
dnl 'config-daemon.ac' expects "no" in this case.
|
||||
LIBGCRYPT_LIBDIR="no"
|
||||
fi])
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
dnl Library name suitable for `dynamic-link'.
|
||||
AC_MSG_CHECKING([for libgcrypt shared library name])
|
||||
@@ -195,13 +206,13 @@ AC_CONFIG_FILES([pre-inst-env], [chmod +x pre-inst-env])
|
||||
AC_CONFIG_FILES([test-env], [chmod +x test-env])
|
||||
|
||||
dnl Emacs interface.
|
||||
AC_PATH_PROG([DOT_USER_PROGRAM], [dot], [dot])
|
||||
AM_PATH_LISPDIR
|
||||
AM_CONDITIONAL([HAVE_EMACS], [test "x$EMACS" != "xno"])
|
||||
|
||||
emacsuidir="${guilemoduledir}/guix/emacs"
|
||||
AC_SUBST([emacsuidir])
|
||||
AC_CONFIG_FILES([emacs/guix-init.el
|
||||
emacs/guix-profiles.el
|
||||
AC_CONFIG_FILES([emacs/guix-config.el
|
||||
emacs/guix-helper.scm])
|
||||
|
||||
AC_OUTPUT
|
||||
|
||||
@@ -18,15 +18,27 @@
|
||||
# along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
info_TEXINFOS = doc/guix.texi
|
||||
|
||||
DOT_FILES = \
|
||||
doc/images/bootstrap-graph.dot \
|
||||
doc/images/coreutils-graph.dot \
|
||||
doc/images/coreutils-bag-graph.dot \
|
||||
doc/images/service-graph.dot \
|
||||
doc/images/dmd-graph.dot
|
||||
|
||||
DOT_VECTOR_GRAPHICS = \
|
||||
$(DOT_FILES:%.dot=%.eps) \
|
||||
$(DOT_FILES:%.dot=%.pdf)
|
||||
|
||||
EXTRA_DIST += \
|
||||
doc/contributing.texi \
|
||||
doc/emacs.texi \
|
||||
doc/fdl-1.3.texi \
|
||||
doc/images/bootstrap-graph.dot \
|
||||
doc/images/bootstrap-graph.eps \
|
||||
doc/images/bootstrap-graph.pdf \
|
||||
$(DOT_FILES) \
|
||||
$(DOT_VECTOR_GRAPHICS) \
|
||||
doc/images/coreutils-size-map.eps \
|
||||
doc/environment-gdb.scm
|
||||
doc/environment-gdb.scm \
|
||||
doc/package-hello.scm
|
||||
|
||||
OS_CONFIG_EXAMPLES_TEXI = \
|
||||
doc/os-config-bare-bones.texi \
|
||||
@@ -43,7 +55,7 @@ doc/os-config-%.texi: gnu/system/examples/%.tmpl
|
||||
|
||||
infoimagedir = $(infodir)/images
|
||||
dist_infoimage_DATA = \
|
||||
doc/images/bootstrap-graph.png \
|
||||
$(DOT_FILES:%.dot=%.png) \
|
||||
doc/images/coreutils-size-map.png
|
||||
|
||||
# Try hard to obtain an image size and aspect that's reasonable for inclusion
|
||||
@@ -71,9 +83,9 @@ DOT_OPTIONS = \
|
||||
# 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: $(top_srcdir)/doc/images/bootstrap-graph.pdf
|
||||
info-local: $(top_srcdir)/doc/images/bootstrap-graph.png
|
||||
ps-local: $(top_srcdir)/doc/images/bootstrap-graph.eps \
|
||||
pdf-local: $(DOT_FILES=%.dot=$(top_srcdir)/%.pdf)
|
||||
info-local: $(DOT_FILES=%.dot=$(top_srcdir)/%.png)
|
||||
ps-local: $(DOT_FILES=%.dot=$(top_srcdir)/%.eps) \
|
||||
$(top_srcdir)/doc/images/coreutils-size-map.eps
|
||||
dvi-local: ps-local
|
||||
|
||||
@@ -101,6 +113,7 @@ endef
|
||||
SUBCOMMANDS := \
|
||||
archive \
|
||||
build \
|
||||
challenge \
|
||||
download \
|
||||
edit \
|
||||
environment \
|
||||
|
||||
@@ -121,6 +121,9 @@ facilities to directly operate on the syntax tree, such as raising an
|
||||
s-expression or wrapping it, swallowing or rejecting the following
|
||||
s-expression, etc.
|
||||
|
||||
GNU Guix also comes with a minor mode that provides some additional
|
||||
functionality for Scheme buffers (@pxref{Emacs Development}).
|
||||
|
||||
|
||||
@node Coding Style
|
||||
@section Coding Style
|
||||
@@ -206,6 +209,10 @@ Before submitting a patch that adds or modifies a package definition,
|
||||
please run through this check list:
|
||||
|
||||
@enumerate
|
||||
@item
|
||||
Take some time to provide an adequate synopsis and description for the
|
||||
package. @xref{Synopses and Descriptions}, for some guidelines.
|
||||
|
||||
@item
|
||||
Run @code{guix lint @var{package}}, where @var{package} is the
|
||||
name of the new or modified package, and fix any errors it reports
|
||||
@@ -227,6 +234,17 @@ For important changes, check that dependent package (if applicable) are
|
||||
not affected by the change; @code{guix refresh --list-dependent
|
||||
@var{package}} will help you do that (@pxref{Invoking guix refresh}).
|
||||
|
||||
@item
|
||||
Check whether the package's build process is deterministic. This
|
||||
typically means checking whether an independent build of the package
|
||||
yields the exact same result that you obtained, bit for bit.
|
||||
|
||||
A simple way to do that is with @command{guix challenge}
|
||||
(@pxref{Invoking guix challenge}). You may run it once the package has
|
||||
been committed and built by @code{hydra.gnu.org} to check whether it
|
||||
obtains the same result as you did. Better yet: Find another machine
|
||||
that can build it and run @command{guix publish}.
|
||||
|
||||
@end enumerate
|
||||
|
||||
When posting a patch to the mailing list, use @samp{[PATCH] @dots{}} as a
|
||||
|
||||
+213
-30
@@ -1,29 +1,24 @@
|
||||
@node Emacs Interface
|
||||
@section Emacs Interface
|
||||
@chapter Emacs Interface
|
||||
|
||||
@cindex Emacs
|
||||
GNU Guix comes with a visual user interface for GNU@tie{}Emacs, known
|
||||
as ``guix.el''. It can be used for routine package management tasks,
|
||||
pretty much like the @command{guix package} command (@pxref{Invoking
|
||||
guix package}). Specifically, ``guix.el'' makes it easy to:
|
||||
|
||||
@itemize
|
||||
@item browse and display packages and generations;
|
||||
@item search, install, upgrade and remove packages;
|
||||
@item display packages from previous generations;
|
||||
@item do some other useful things.
|
||||
@end itemize
|
||||
GNU Guix comes with several useful modules (known as ``guix.el'') for
|
||||
GNU@tie{}Emacs which are intended to make an Emacs user interaction with
|
||||
Guix convenient and fun.
|
||||
|
||||
@menu
|
||||
* Initial Setup: Emacs Initial Setup. Preparing @file{~/.emacs}.
|
||||
* Usage: Emacs Usage. Using the interface.
|
||||
* Configuration: Emacs Configuration. Configuring the interface.
|
||||
* Package Management: Emacs Package Management. Managing packages and generations.
|
||||
* Popup Interface: Emacs Popup Interface. Magit-like interface for guix commands.
|
||||
* Prettify Mode: Emacs Prettify. Abbreviating @file{/gnu/store/@dots{}} file names.
|
||||
* Completions: Emacs Completions. Completing @command{guix} shell command.
|
||||
* Build Log Mode: Emacs Build Log. Highlighting Guix build logs.
|
||||
* Completions: Emacs Completions. Completing @command{guix} shell command.
|
||||
* Development: Emacs Development. Tools for Guix developers.
|
||||
@end menu
|
||||
|
||||
|
||||
@node Emacs Initial Setup
|
||||
@subsection Initial Setup
|
||||
@section Initial Setup
|
||||
|
||||
On the Guix System Distribution (@pxref{GNU Distribution}), ``guix.el''
|
||||
is ready to use, provided Guix is installed system-wide, which is the
|
||||
@@ -43,6 +38,12 @@ later;
|
||||
@uref{http://nongnu.org/geiser/, Geiser}, version 0.3 or later: it is
|
||||
used for interacting with the Guile process.
|
||||
|
||||
@item
|
||||
@uref{https://github.com/magit/magit/, magit-popup library}. You
|
||||
already have this library if you use Magit 2.1.0 or later. This library
|
||||
is an optional dependency---it is required only for @kbd{M-x@tie{}guix}
|
||||
command (@pxref{Emacs Popup Interface}).
|
||||
|
||||
@end itemize
|
||||
|
||||
When it is done ``guix.el'' may be configured by requiring a special
|
||||
@@ -105,22 +106,32 @@ emacs, The GNU Emacs Manual}).
|
||||
You can activate Emacs packages installed in your profile whenever you
|
||||
want using @kbd{M-x@tie{}guix-emacs-load-autoloads}.
|
||||
|
||||
@node Emacs Usage
|
||||
@subsection Usage
|
||||
|
||||
@node Emacs Package Management
|
||||
@section Package Management
|
||||
|
||||
Once ``guix.el'' has been successfully configured, you should be able to
|
||||
use commands for displaying packages and generations. This information
|
||||
can be displayed in a ``list'' or ``info'' buffer.
|
||||
use a visual interface for routine package management tasks, pretty much
|
||||
like the @command{guix package} command (@pxref{Invoking guix package}).
|
||||
Specifically, it makes it easy to:
|
||||
|
||||
@itemize
|
||||
@item browse and display packages and generations;
|
||||
@item search, install, upgrade and remove packages;
|
||||
@item display packages from previous generations;
|
||||
@item do some other useful things.
|
||||
@end itemize
|
||||
|
||||
@menu
|
||||
* Commands: Emacs Commands. @kbd{M-x guix-@dots{}}
|
||||
* General information: Emacs General info. Common for both interfaces.
|
||||
* ``List'' buffer: Emacs List buffer. List-like interface.
|
||||
* ``Info'' buffer: Emacs Info buffer. Help-like interface.
|
||||
* Configuration: Emacs Configuration. Configuring the interface.
|
||||
@end menu
|
||||
|
||||
@node Emacs Commands
|
||||
@subsubsection Commands
|
||||
@subsection Commands
|
||||
|
||||
All commands for displaying packages and generations use the current
|
||||
profile, which can be changed with
|
||||
@@ -191,7 +202,7 @@ Once @command{guix pull} has succeeded, the Guix REPL is restared. This
|
||||
allows you to keep using the Emacs interface with the updated Guix.
|
||||
|
||||
@node Emacs General info
|
||||
@subsubsection General information
|
||||
@subsection General information
|
||||
|
||||
The following keys are available for both ``list'' and ``info'' types of
|
||||
buffers:
|
||||
@@ -235,7 +246,7 @@ was restarted, you may want to revert ``list'' buffer (by pressing
|
||||
@kbd{g}).
|
||||
|
||||
@node Emacs List buffer
|
||||
@subsubsection ``List'' buffer
|
||||
@subsection ``List'' buffer
|
||||
|
||||
An interface of a ``list'' buffer is similar to the interface provided
|
||||
by ``package.el'' (@pxref{Package Menu,,, emacs, The GNU Emacs Manual}).
|
||||
@@ -310,7 +321,7 @@ with another marked generation.
|
||||
@end table
|
||||
|
||||
@node Emacs Info buffer
|
||||
@subsubsection ``Info'' buffer
|
||||
@subsection ``Info'' buffer
|
||||
|
||||
The interface of an ``info'' buffer is similar to the interface of
|
||||
@code{help-mode} (@pxref{Help Mode,,, emacs, The GNU Emacs Manual}).
|
||||
@@ -484,12 +495,92 @@ Various settings for ``info'' buffers.
|
||||
@end table
|
||||
|
||||
|
||||
@node Emacs Prettify
|
||||
@subsection Guix Prettify Mode
|
||||
@node Emacs Popup Interface
|
||||
@section Popup Interface
|
||||
|
||||
Along with ``guix.el'', GNU@tie{}Guix comes with ``guix-prettify.el''.
|
||||
It provides a minor mode for abbreviating store file names by replacing
|
||||
hash sequences of symbols with ``@dots{}'':
|
||||
If you ever used Magit, you know what ``popup interface'' is
|
||||
(@pxref{Top,,, magit-popup, Magit-Popup User Manual}). Even if you are
|
||||
not acquainted with Magit, there should be no worries as it is very
|
||||
intuitive.
|
||||
|
||||
So @kbd{M-x@tie{}guix} command provides a top-level popup interface for
|
||||
all available guix commands. When you select an option, you'll be
|
||||
prompted for a value in the minibuffer. Many values have completions,
|
||||
so don't hesitate to press @key{TAB} key. Multiple values (for example,
|
||||
packages or lint checkers) should be separated by commas.
|
||||
|
||||
After specifying all options and switches for a command, you may choose
|
||||
one of the available actions. The following default actions are
|
||||
available for all commands:
|
||||
|
||||
@itemize
|
||||
|
||||
@item
|
||||
Run the command in the Guix REPL. It is faster than running
|
||||
@code{guix@tie{}@dots{}} command directly in shell, as there is no
|
||||
need to run another guile process and to load required modules there.
|
||||
|
||||
@item
|
||||
Run the command in a shell buffer. You can set
|
||||
@code{guix-run-in-shell-function} variable to fine tune the shell buffer
|
||||
you want to use.
|
||||
|
||||
@item
|
||||
Add the command line to the kill ring (@pxref{Kill Ring,,, emacs, The
|
||||
GNU Emacs Manual}).
|
||||
|
||||
@end itemize
|
||||
|
||||
Several commands (@command{guix graph}, @command{guix system dmd-graph}
|
||||
and @command{guix system extension-graph}) also have a ``View graph''
|
||||
action, which allows you to view a generated graph using @command{dot}
|
||||
command (specified by @code{guix-dot-program} variable). By default a
|
||||
PNG file will be saved in @file{/tmp} directory and will be opened
|
||||
directly in Emacs. This behavior may be changed with the following
|
||||
variables:
|
||||
|
||||
@table @code
|
||||
|
||||
@item guix-find-file-function
|
||||
Function used to open a generated graph. If you want to open a graph in
|
||||
an external program, you can do it by modifying this variable---for
|
||||
example, you can use a functionality provided by the Org Mode
|
||||
(@pxref{Top,,, org, The Org Manual}):
|
||||
|
||||
@example
|
||||
(setq guix-find-file-function 'org-open-file)
|
||||
(add-to-list 'org-file-apps '("\\.png\\'" . "sxiv %s"))
|
||||
@end example
|
||||
|
||||
@item guix-dot-default-arguments
|
||||
Command line arguments to run @command{dot} command. If you change an
|
||||
output format (for example, into @code{-Tpdf}), you also need to change
|
||||
the next variable.
|
||||
|
||||
@item guix-dot-file-name-function
|
||||
Function used to define a name of the generated graph file. Default
|
||||
name is @file{/tmp/guix-emacs-graph-XXXXXX.png}.
|
||||
|
||||
@end table
|
||||
|
||||
So, for example, if you want to generate and open a PDF file in your
|
||||
Emacs, you may change the settings like this:
|
||||
|
||||
@example
|
||||
(defun my-guix-pdf-graph ()
|
||||
"/tmp/my-current-guix-graph.pdf")
|
||||
|
||||
(setq guix-dot-default-arguments '("-Tpdf")
|
||||
guix-dot-file-name-function 'my-guix-pdf-graph)
|
||||
@end example
|
||||
|
||||
|
||||
@node Emacs Prettify
|
||||
@section Guix Prettify Mode
|
||||
|
||||
GNU@tie{}Guix also comes with ``guix-prettify.el''. It provides a minor
|
||||
mode for abbreviating store file names by replacing hash sequences of
|
||||
symbols with ``@dots{}'':
|
||||
|
||||
@example
|
||||
/gnu/store/72f54nfp6g1hz873w8z3gfcah0h4nl9p-foo-0.1
|
||||
@@ -525,8 +616,44 @@ mode hooks (@pxref{Hooks,,, emacs, The GNU Emacs Manual}), for example:
|
||||
@end example
|
||||
|
||||
|
||||
@node Emacs Build Log
|
||||
@section Build Log Mode
|
||||
|
||||
GNU@tie{}Guix provides major and minor modes for highlighting build
|
||||
logs. So when you have a file with a package build output---for
|
||||
example, a file returned by @command{guix build --log-file @dots{}}
|
||||
command (@pxref{Invoking guix build}), you may call @kbd{M-x
|
||||
guix-build-log-mode} command in the buffer with this file. This major
|
||||
mode highlights some lines specific to build output and provides the
|
||||
following key bindings:
|
||||
|
||||
@table @kbd
|
||||
|
||||
@item M-n
|
||||
Move to the next build phase.
|
||||
|
||||
@item M-p
|
||||
Move to the previous build phase.
|
||||
|
||||
@item @key{TAB}
|
||||
Toggle (show/hide) the body of the current build phase.
|
||||
|
||||
@item S-@key{TAB}
|
||||
Toggle (show/hide) the bodies of all build phases.
|
||||
|
||||
@end table
|
||||
|
||||
There is also @kbd{M-x guix-build-log-minor-mode} which also provides
|
||||
the same highlighting (but not key bindings). And as it is a minor
|
||||
mode, it can be enabled in any buffer. For example, if you are building
|
||||
some package in a shell buffer (@pxref{Interactive Shell,,, emacs, The
|
||||
GNU Emacs Manual}), you may enable @command{guix-build-log-minor-mode}
|
||||
to make it more colorful. Guix build output is rather specific, so this
|
||||
new highlighting shouldn't conflict with the existing one.
|
||||
|
||||
|
||||
@node Emacs Completions
|
||||
@subsection Shell Completions
|
||||
@section Shell Completions
|
||||
|
||||
Another feature that becomes available after configuring Emacs interface
|
||||
(@pxref{Emacs Initial Setup}) is completing of @command{guix}
|
||||
@@ -554,3 +681,59 @@ something:
|
||||
@item @code{guix lint --checkers=synopsis,des}@key{TAB}
|
||||
|
||||
@end itemize
|
||||
|
||||
|
||||
@node Emacs Development
|
||||
@section Development
|
||||
|
||||
By default, when you open a Scheme file, @code{guix-devel-mode} will be
|
||||
activated (if you don't want it, set @code{guix-devel-activate-mode} to
|
||||
nil). This minor mode provides the following key bindings:
|
||||
|
||||
@table @kbd
|
||||
|
||||
@item C-c . k
|
||||
Copy the name of the current Guile module into kill ring
|
||||
(@code{guix-devel-copy-module-as-kill}).
|
||||
|
||||
@item C-c . u
|
||||
Use the current Guile module. Often after opening a Scheme file, you
|
||||
want to use a module it defines, so you switch to the Geiser REPL and
|
||||
write @code{,use (some module)} there. You may just use this command
|
||||
instead (@code{guix-devel-use-module}).
|
||||
|
||||
@item C-c . b
|
||||
Build a package defined by the current variable definition. The
|
||||
building process is run in the current Geiser REPL. If you modified the
|
||||
current package definition, don't forget to reevaluate it before calling
|
||||
this command---for example, with @kbd{C-M-x} (@pxref{To eval or not to
|
||||
eval,,, geiser, Geiser User Manual})
|
||||
(@code{guix-devel-build-package-definition}).
|
||||
|
||||
@item C-c . s
|
||||
Build a source derivation of the package defined by the current variable
|
||||
definition. This command has the same meaning as @code{guix build -S}
|
||||
shell command (@pxref{Invoking guix build})
|
||||
(@code{guix-devel-build-package-source}).
|
||||
|
||||
@item C-c . l
|
||||
Lint (check) a package defined by the current variable definition
|
||||
(@pxref{Invoking guix lint}) (@code{guix-devel-lint-package}).
|
||||
|
||||
@end table
|
||||
|
||||
Unluckily, there is a limitation related to long-running REPL commands.
|
||||
When there is a running process in a Geiser REPL, you are not supposed
|
||||
to evaluate anything in a scheme buffer, because this will ``freeze''
|
||||
the REPL: it will stop producing any output (however, the evaluating
|
||||
process will continue---you will just not see any progress anymore). Be
|
||||
aware: even moving the point in a scheme buffer may ``break'' the REPL
|
||||
if Autodoc (@pxref{Autodoc and friends,,, geiser, Geiser User Manual})
|
||||
is enabled (which is the default).
|
||||
|
||||
So you have to postpone editing your scheme buffers until the running
|
||||
evaluation will be finished in the REPL.
|
||||
|
||||
Alternatively, to avoid this limitation, you may just run another Geiser
|
||||
REPL, and while something is being evaluated in the previous REPL, you
|
||||
can continue editing a scheme file with the help of the current one.
|
||||
|
||||
+1466
-207
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,215 @@
|
||||
digraph "Guix bag-emerged" {
|
||||
"/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" [label = "coreutils-8.24", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" [color = red];
|
||||
"/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/0pr679inn5xj91z4d63scc7vgfji9vpp-tar-1.28.drv" [color = red];
|
||||
"/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/p3szkb87bp9fxhn715g88skry8g3jgkq-gzip-1.6.drv" [color = red];
|
||||
"/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/i398qn04cwvnzph7a0cckxqr9q0k3lyr-bzip2-1.0.6.drv" [color = red];
|
||||
"/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/wvnnsn89magnvn39zm3fv245s9m7yn5f-xz-5.0.4.drv" [color = red];
|
||||
"/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/sag0sx1zycnwixwfdrxwj1i9g2phxrh4-file-5.22.drv" [color = red];
|
||||
"/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/p61bsw6093x3wfg5vz3172wl9bzrlc3w-diffutils-3.3.drv" [color = red];
|
||||
"/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/rzsyx70vnfb8cm40r0b591vyvww2i5y6-patch-2.7.5.drv" [color = red];
|
||||
"/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/mc5fgclyr0v26242hmg30srv9ij27wyv-sed-4.2.2.drv" [color = red];
|
||||
"/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/ig9nr2f5hvr88br028r9nsdg4xpmmybg-findutils-4.4.2.drv" [color = red];
|
||||
"/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/jls1kj3pvqjpbmm7c09fhszfd3m61zif-gawk-4.1.3.drv" [color = red];
|
||||
"/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/vvlh6szjxr5iy192fsv9p4dwf39nhapf-grep-2.21.drv" [color = red];
|
||||
"/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/mysb2grsl1wc931xm08adncnqjwvdds7-coreutils-8.24.drv" [color = red];
|
||||
"/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/n0n20i1brmhmjvw9lx33f2l3dmzx873n-make-4.1.drv" [color = red];
|
||||
"/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/64cizlhq38x99dvjvza6c5ha226a9bf5-bash-4.3.39.drv" [color = red];
|
||||
"/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/mbshnjz590h3l1c3y2rxzqvn45bhx32b-ld-wrapper-0.drv" [color = red];
|
||||
"/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/hf62yhvyrr1rm5y8mq5afih12s9jasic-binutils-2.25.1.drv" [color = red];
|
||||
"/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/8mff0w2203h6m5s495knxg09is3qj15f-gcc-4.9.3.drv" [color = red];
|
||||
"/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/2pspbpclj4yq5dqd71fnqwa69s8xxryf-glibc-2.22.drv" [color = red];
|
||||
"/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/nflynk1n90yh41yfi91raczynka2mf86-glibc-utf8-locales-2.22.drv" [color = red];
|
||||
"/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" [color = red];
|
||||
"/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" [color = red];
|
||||
"/gnu/store/xpgn2qn54c323liliyqj6q11b5xnb1db-coreutils-8.24.drv" -> "/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" [color = red];
|
||||
"/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" [label = "perl-5.16.1", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/0pr679inn5xj91z4d63scc7vgfji9vpp-tar-1.28.drv" [color = red];
|
||||
"/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/p3szkb87bp9fxhn715g88skry8g3jgkq-gzip-1.6.drv" [color = red];
|
||||
"/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/i398qn04cwvnzph7a0cckxqr9q0k3lyr-bzip2-1.0.6.drv" [color = red];
|
||||
"/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/wvnnsn89magnvn39zm3fv245s9m7yn5f-xz-5.0.4.drv" [color = red];
|
||||
"/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/sag0sx1zycnwixwfdrxwj1i9g2phxrh4-file-5.22.drv" [color = red];
|
||||
"/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/p61bsw6093x3wfg5vz3172wl9bzrlc3w-diffutils-3.3.drv" [color = red];
|
||||
"/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/rzsyx70vnfb8cm40r0b591vyvww2i5y6-patch-2.7.5.drv" [color = red];
|
||||
"/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/mc5fgclyr0v26242hmg30srv9ij27wyv-sed-4.2.2.drv" [color = red];
|
||||
"/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/ig9nr2f5hvr88br028r9nsdg4xpmmybg-findutils-4.4.2.drv" [color = red];
|
||||
"/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/jls1kj3pvqjpbmm7c09fhszfd3m61zif-gawk-4.1.3.drv" [color = red];
|
||||
"/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/vvlh6szjxr5iy192fsv9p4dwf39nhapf-grep-2.21.drv" [color = red];
|
||||
"/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/mysb2grsl1wc931xm08adncnqjwvdds7-coreutils-8.24.drv" [color = red];
|
||||
"/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/n0n20i1brmhmjvw9lx33f2l3dmzx873n-make-4.1.drv" [color = red];
|
||||
"/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/64cizlhq38x99dvjvza6c5ha226a9bf5-bash-4.3.39.drv" [color = red];
|
||||
"/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/mbshnjz590h3l1c3y2rxzqvn45bhx32b-ld-wrapper-0.drv" [color = red];
|
||||
"/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/hf62yhvyrr1rm5y8mq5afih12s9jasic-binutils-2.25.1.drv" [color = red];
|
||||
"/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/8mff0w2203h6m5s495knxg09is3qj15f-gcc-4.9.3.drv" [color = red];
|
||||
"/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/2pspbpclj4yq5dqd71fnqwa69s8xxryf-glibc-2.22.drv" [color = red];
|
||||
"/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" -> "/gnu/store/nflynk1n90yh41yfi91raczynka2mf86-glibc-utf8-locales-2.22.drv" [color = red];
|
||||
"/gnu/store/0pr679inn5xj91z4d63scc7vgfji9vpp-tar-1.28.drv" [label = "tar-1.28", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/p3szkb87bp9fxhn715g88skry8g3jgkq-gzip-1.6.drv" [label = "gzip-1.6", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/i398qn04cwvnzph7a0cckxqr9q0k3lyr-bzip2-1.0.6.drv" [label = "bzip2-1.0.6", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/wvnnsn89magnvn39zm3fv245s9m7yn5f-xz-5.0.4.drv" [label = "xz-5.0.4", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/sag0sx1zycnwixwfdrxwj1i9g2phxrh4-file-5.22.drv" [label = "file-5.22", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/p61bsw6093x3wfg5vz3172wl9bzrlc3w-diffutils-3.3.drv" [label = "diffutils-3.3", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/rzsyx70vnfb8cm40r0b591vyvww2i5y6-patch-2.7.5.drv" [label = "patch-2.7.5", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/mc5fgclyr0v26242hmg30srv9ij27wyv-sed-4.2.2.drv" [label = "sed-4.2.2", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/ig9nr2f5hvr88br028r9nsdg4xpmmybg-findutils-4.4.2.drv" [label = "findutils-4.4.2", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/jls1kj3pvqjpbmm7c09fhszfd3m61zif-gawk-4.1.3.drv" [label = "gawk-4.1.3", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/vvlh6szjxr5iy192fsv9p4dwf39nhapf-grep-2.21.drv" [label = "grep-2.21", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/mysb2grsl1wc931xm08adncnqjwvdds7-coreutils-8.24.drv" [label = "coreutils-8.24", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/n0n20i1brmhmjvw9lx33f2l3dmzx873n-make-4.1.drv" [label = "make-4.1", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/64cizlhq38x99dvjvza6c5ha226a9bf5-bash-4.3.39.drv" [label = "bash-4.3.39", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/mbshnjz590h3l1c3y2rxzqvn45bhx32b-ld-wrapper-0.drv" [label = "ld-wrapper-0", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/hf62yhvyrr1rm5y8mq5afih12s9jasic-binutils-2.25.1.drv" [label = "binutils-2.25.1", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/8mff0w2203h6m5s495knxg09is3qj15f-gcc-4.9.3.drv" [label = "gcc-4.9.3", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/2pspbpclj4yq5dqd71fnqwa69s8xxryf-glibc-2.22.drv" [label = "glibc-2.22", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/nflynk1n90yh41yfi91raczynka2mf86-glibc-utf8-locales-2.22.drv" [label = "glibc-utf8-locales-2.22", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" [label = "acl-2.2.52", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" [color = red];
|
||||
"/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" [color = red];
|
||||
"/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/0pr679inn5xj91z4d63scc7vgfji9vpp-tar-1.28.drv" [color = red];
|
||||
"/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/p3szkb87bp9fxhn715g88skry8g3jgkq-gzip-1.6.drv" [color = red];
|
||||
"/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/i398qn04cwvnzph7a0cckxqr9q0k3lyr-bzip2-1.0.6.drv" [color = red];
|
||||
"/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/wvnnsn89magnvn39zm3fv245s9m7yn5f-xz-5.0.4.drv" [color = red];
|
||||
"/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/sag0sx1zycnwixwfdrxwj1i9g2phxrh4-file-5.22.drv" [color = red];
|
||||
"/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/p61bsw6093x3wfg5vz3172wl9bzrlc3w-diffutils-3.3.drv" [color = red];
|
||||
"/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/rzsyx70vnfb8cm40r0b591vyvww2i5y6-patch-2.7.5.drv" [color = red];
|
||||
"/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/mc5fgclyr0v26242hmg30srv9ij27wyv-sed-4.2.2.drv" [color = red];
|
||||
"/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/ig9nr2f5hvr88br028r9nsdg4xpmmybg-findutils-4.4.2.drv" [color = red];
|
||||
"/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/jls1kj3pvqjpbmm7c09fhszfd3m61zif-gawk-4.1.3.drv" [color = red];
|
||||
"/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/vvlh6szjxr5iy192fsv9p4dwf39nhapf-grep-2.21.drv" [color = red];
|
||||
"/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/mysb2grsl1wc931xm08adncnqjwvdds7-coreutils-8.24.drv" [color = red];
|
||||
"/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/n0n20i1brmhmjvw9lx33f2l3dmzx873n-make-4.1.drv" [color = red];
|
||||
"/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/64cizlhq38x99dvjvza6c5ha226a9bf5-bash-4.3.39.drv" [color = red];
|
||||
"/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/mbshnjz590h3l1c3y2rxzqvn45bhx32b-ld-wrapper-0.drv" [color = red];
|
||||
"/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/hf62yhvyrr1rm5y8mq5afih12s9jasic-binutils-2.25.1.drv" [color = red];
|
||||
"/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/8mff0w2203h6m5s495knxg09is3qj15f-gcc-4.9.3.drv" [color = red];
|
||||
"/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/2pspbpclj4yq5dqd71fnqwa69s8xxryf-glibc-2.22.drv" [color = red];
|
||||
"/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/nflynk1n90yh41yfi91raczynka2mf86-glibc-utf8-locales-2.22.drv" [color = red];
|
||||
"/gnu/store/6i8brik0khb2s5r6ih7h6g22l9s2xmph-acl-2.2.52.drv" -> "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" [color = red];
|
||||
"/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" [label = "gettext-0.19.6", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/0pr679inn5xj91z4d63scc7vgfji9vpp-tar-1.28.drv" [color = red];
|
||||
"/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/p3szkb87bp9fxhn715g88skry8g3jgkq-gzip-1.6.drv" [color = red];
|
||||
"/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/i398qn04cwvnzph7a0cckxqr9q0k3lyr-bzip2-1.0.6.drv" [color = red];
|
||||
"/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/wvnnsn89magnvn39zm3fv245s9m7yn5f-xz-5.0.4.drv" [color = red];
|
||||
"/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/sag0sx1zycnwixwfdrxwj1i9g2phxrh4-file-5.22.drv" [color = red];
|
||||
"/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/p61bsw6093x3wfg5vz3172wl9bzrlc3w-diffutils-3.3.drv" [color = red];
|
||||
"/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/rzsyx70vnfb8cm40r0b591vyvww2i5y6-patch-2.7.5.drv" [color = red];
|
||||
"/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/mc5fgclyr0v26242hmg30srv9ij27wyv-sed-4.2.2.drv" [color = red];
|
||||
"/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/ig9nr2f5hvr88br028r9nsdg4xpmmybg-findutils-4.4.2.drv" [color = red];
|
||||
"/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/jls1kj3pvqjpbmm7c09fhszfd3m61zif-gawk-4.1.3.drv" [color = red];
|
||||
"/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/vvlh6szjxr5iy192fsv9p4dwf39nhapf-grep-2.21.drv" [color = red];
|
||||
"/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/mysb2grsl1wc931xm08adncnqjwvdds7-coreutils-8.24.drv" [color = red];
|
||||
"/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/n0n20i1brmhmjvw9lx33f2l3dmzx873n-make-4.1.drv" [color = red];
|
||||
"/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/64cizlhq38x99dvjvza6c5ha226a9bf5-bash-4.3.39.drv" [color = red];
|
||||
"/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/mbshnjz590h3l1c3y2rxzqvn45bhx32b-ld-wrapper-0.drv" [color = red];
|
||||
"/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/hf62yhvyrr1rm5y8mq5afih12s9jasic-binutils-2.25.1.drv" [color = red];
|
||||
"/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/8mff0w2203h6m5s495knxg09is3qj15f-gcc-4.9.3.drv" [color = red];
|
||||
"/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/2pspbpclj4yq5dqd71fnqwa69s8xxryf-glibc-2.22.drv" [color = red];
|
||||
"/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/nflynk1n90yh41yfi91raczynka2mf86-glibc-utf8-locales-2.22.drv" [color = red];
|
||||
"/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" -> "/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" [color = red];
|
||||
"/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" [label = "expat-2.1.0", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/0pr679inn5xj91z4d63scc7vgfji9vpp-tar-1.28.drv" [color = red];
|
||||
"/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/p3szkb87bp9fxhn715g88skry8g3jgkq-gzip-1.6.drv" [color = red];
|
||||
"/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/i398qn04cwvnzph7a0cckxqr9q0k3lyr-bzip2-1.0.6.drv" [color = red];
|
||||
"/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/wvnnsn89magnvn39zm3fv245s9m7yn5f-xz-5.0.4.drv" [color = red];
|
||||
"/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/sag0sx1zycnwixwfdrxwj1i9g2phxrh4-file-5.22.drv" [color = red];
|
||||
"/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/p61bsw6093x3wfg5vz3172wl9bzrlc3w-diffutils-3.3.drv" [color = red];
|
||||
"/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/rzsyx70vnfb8cm40r0b591vyvww2i5y6-patch-2.7.5.drv" [color = red];
|
||||
"/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/mc5fgclyr0v26242hmg30srv9ij27wyv-sed-4.2.2.drv" [color = red];
|
||||
"/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/ig9nr2f5hvr88br028r9nsdg4xpmmybg-findutils-4.4.2.drv" [color = red];
|
||||
"/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/jls1kj3pvqjpbmm7c09fhszfd3m61zif-gawk-4.1.3.drv" [color = red];
|
||||
"/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/vvlh6szjxr5iy192fsv9p4dwf39nhapf-grep-2.21.drv" [color = red];
|
||||
"/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/mysb2grsl1wc931xm08adncnqjwvdds7-coreutils-8.24.drv" [color = red];
|
||||
"/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/n0n20i1brmhmjvw9lx33f2l3dmzx873n-make-4.1.drv" [color = red];
|
||||
"/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/64cizlhq38x99dvjvza6c5ha226a9bf5-bash-4.3.39.drv" [color = red];
|
||||
"/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/mbshnjz590h3l1c3y2rxzqvn45bhx32b-ld-wrapper-0.drv" [color = red];
|
||||
"/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/hf62yhvyrr1rm5y8mq5afih12s9jasic-binutils-2.25.1.drv" [color = red];
|
||||
"/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/8mff0w2203h6m5s495knxg09is3qj15f-gcc-4.9.3.drv" [color = red];
|
||||
"/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/2pspbpclj4yq5dqd71fnqwa69s8xxryf-glibc-2.22.drv" [color = red];
|
||||
"/gnu/store/n3ix2bl79ijv1v1winwf4qj46hlhyrdv-expat-2.1.0.drv" -> "/gnu/store/nflynk1n90yh41yfi91raczynka2mf86-glibc-utf8-locales-2.22.drv" [color = red];
|
||||
"/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" [label = "attr-2.4.46", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/a076d7ng0h3ynr1hsiyk4fmh3w1g4cv8-gettext-0.19.6.drv" [color = red];
|
||||
"/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/0pr679inn5xj91z4d63scc7vgfji9vpp-tar-1.28.drv" [color = red];
|
||||
"/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/p3szkb87bp9fxhn715g88skry8g3jgkq-gzip-1.6.drv" [color = red];
|
||||
"/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/i398qn04cwvnzph7a0cckxqr9q0k3lyr-bzip2-1.0.6.drv" [color = red];
|
||||
"/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/wvnnsn89magnvn39zm3fv245s9m7yn5f-xz-5.0.4.drv" [color = red];
|
||||
"/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/sag0sx1zycnwixwfdrxwj1i9g2phxrh4-file-5.22.drv" [color = red];
|
||||
"/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/p61bsw6093x3wfg5vz3172wl9bzrlc3w-diffutils-3.3.drv" [color = red];
|
||||
"/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/rzsyx70vnfb8cm40r0b591vyvww2i5y6-patch-2.7.5.drv" [color = red];
|
||||
"/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/mc5fgclyr0v26242hmg30srv9ij27wyv-sed-4.2.2.drv" [color = red];
|
||||
"/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/ig9nr2f5hvr88br028r9nsdg4xpmmybg-findutils-4.4.2.drv" [color = red];
|
||||
"/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/jls1kj3pvqjpbmm7c09fhszfd3m61zif-gawk-4.1.3.drv" [color = red];
|
||||
"/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/vvlh6szjxr5iy192fsv9p4dwf39nhapf-grep-2.21.drv" [color = red];
|
||||
"/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/mysb2grsl1wc931xm08adncnqjwvdds7-coreutils-8.24.drv" [color = red];
|
||||
"/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/n0n20i1brmhmjvw9lx33f2l3dmzx873n-make-4.1.drv" [color = red];
|
||||
"/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/64cizlhq38x99dvjvza6c5ha226a9bf5-bash-4.3.39.drv" [color = red];
|
||||
"/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/mbshnjz590h3l1c3y2rxzqvn45bhx32b-ld-wrapper-0.drv" [color = red];
|
||||
"/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/hf62yhvyrr1rm5y8mq5afih12s9jasic-binutils-2.25.1.drv" [color = red];
|
||||
"/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/8mff0w2203h6m5s495knxg09is3qj15f-gcc-4.9.3.drv" [color = red];
|
||||
"/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/2pspbpclj4yq5dqd71fnqwa69s8xxryf-glibc-2.22.drv" [color = red];
|
||||
"/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/nflynk1n90yh41yfi91raczynka2mf86-glibc-utf8-locales-2.22.drv" [color = red];
|
||||
"/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" -> "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" [color = red];
|
||||
"/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" [label = "gmp-6.0.0a", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" [color = red];
|
||||
"/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/0pr679inn5xj91z4d63scc7vgfji9vpp-tar-1.28.drv" [color = red];
|
||||
"/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/p3szkb87bp9fxhn715g88skry8g3jgkq-gzip-1.6.drv" [color = red];
|
||||
"/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/i398qn04cwvnzph7a0cckxqr9q0k3lyr-bzip2-1.0.6.drv" [color = red];
|
||||
"/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/wvnnsn89magnvn39zm3fv245s9m7yn5f-xz-5.0.4.drv" [color = red];
|
||||
"/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/sag0sx1zycnwixwfdrxwj1i9g2phxrh4-file-5.22.drv" [color = red];
|
||||
"/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/p61bsw6093x3wfg5vz3172wl9bzrlc3w-diffutils-3.3.drv" [color = red];
|
||||
"/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/rzsyx70vnfb8cm40r0b591vyvww2i5y6-patch-2.7.5.drv" [color = red];
|
||||
"/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/mc5fgclyr0v26242hmg30srv9ij27wyv-sed-4.2.2.drv" [color = red];
|
||||
"/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/ig9nr2f5hvr88br028r9nsdg4xpmmybg-findutils-4.4.2.drv" [color = red];
|
||||
"/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/jls1kj3pvqjpbmm7c09fhszfd3m61zif-gawk-4.1.3.drv" [color = red];
|
||||
"/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/vvlh6szjxr5iy192fsv9p4dwf39nhapf-grep-2.21.drv" [color = red];
|
||||
"/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/mysb2grsl1wc931xm08adncnqjwvdds7-coreutils-8.24.drv" [color = red];
|
||||
"/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/n0n20i1brmhmjvw9lx33f2l3dmzx873n-make-4.1.drv" [color = red];
|
||||
"/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/64cizlhq38x99dvjvza6c5ha226a9bf5-bash-4.3.39.drv" [color = red];
|
||||
"/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/mbshnjz590h3l1c3y2rxzqvn45bhx32b-ld-wrapper-0.drv" [color = red];
|
||||
"/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/hf62yhvyrr1rm5y8mq5afih12s9jasic-binutils-2.25.1.drv" [color = red];
|
||||
"/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/8mff0w2203h6m5s495knxg09is3qj15f-gcc-4.9.3.drv" [color = red];
|
||||
"/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/2pspbpclj4yq5dqd71fnqwa69s8xxryf-glibc-2.22.drv" [color = red];
|
||||
"/gnu/store/wmvpskqsw6hgriy0vbmmm6c4wp8rxp2c-gmp-6.0.0a.drv" -> "/gnu/store/nflynk1n90yh41yfi91raczynka2mf86-glibc-utf8-locales-2.22.drv" [color = red];
|
||||
"/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" [label = "m4-1.4.17", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/0pr679inn5xj91z4d63scc7vgfji9vpp-tar-1.28.drv" [color = red];
|
||||
"/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/p3szkb87bp9fxhn715g88skry8g3jgkq-gzip-1.6.drv" [color = red];
|
||||
"/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/i398qn04cwvnzph7a0cckxqr9q0k3lyr-bzip2-1.0.6.drv" [color = red];
|
||||
"/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/wvnnsn89magnvn39zm3fv245s9m7yn5f-xz-5.0.4.drv" [color = red];
|
||||
"/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/sag0sx1zycnwixwfdrxwj1i9g2phxrh4-file-5.22.drv" [color = red];
|
||||
"/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/p61bsw6093x3wfg5vz3172wl9bzrlc3w-diffutils-3.3.drv" [color = red];
|
||||
"/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/rzsyx70vnfb8cm40r0b591vyvww2i5y6-patch-2.7.5.drv" [color = red];
|
||||
"/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/mc5fgclyr0v26242hmg30srv9ij27wyv-sed-4.2.2.drv" [color = red];
|
||||
"/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/ig9nr2f5hvr88br028r9nsdg4xpmmybg-findutils-4.4.2.drv" [color = red];
|
||||
"/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/jls1kj3pvqjpbmm7c09fhszfd3m61zif-gawk-4.1.3.drv" [color = red];
|
||||
"/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/vvlh6szjxr5iy192fsv9p4dwf39nhapf-grep-2.21.drv" [color = red];
|
||||
"/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/mysb2grsl1wc931xm08adncnqjwvdds7-coreutils-8.24.drv" [color = red];
|
||||
"/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/n0n20i1brmhmjvw9lx33f2l3dmzx873n-make-4.1.drv" [color = red];
|
||||
"/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/64cizlhq38x99dvjvza6c5ha226a9bf5-bash-4.3.39.drv" [color = red];
|
||||
"/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/mbshnjz590h3l1c3y2rxzqvn45bhx32b-ld-wrapper-0.drv" [color = red];
|
||||
"/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/hf62yhvyrr1rm5y8mq5afih12s9jasic-binutils-2.25.1.drv" [color = red];
|
||||
"/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/8mff0w2203h6m5s495knxg09is3qj15f-gcc-4.9.3.drv" [color = red];
|
||||
"/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/2pspbpclj4yq5dqd71fnqwa69s8xxryf-glibc-2.22.drv" [color = red];
|
||||
"/gnu/store/1mwk0rc4lfcy3vax50ss8x3qfa304g67-m4-1.4.17.drv" -> "/gnu/store/nflynk1n90yh41yfi91raczynka2mf86-glibc-utf8-locales-2.22.drv" [color = red];
|
||||
"/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" [label = "libcap-2.24", shape = box, fontname = Helvetica];
|
||||
"/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/mi4a8m41ssrp7lv3b8vibw0a7ahv2mmg-perl-5.16.1.drv" [color = red];
|
||||
"/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/0pr679inn5xj91z4d63scc7vgfji9vpp-tar-1.28.drv" [color = red];
|
||||
"/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/p3szkb87bp9fxhn715g88skry8g3jgkq-gzip-1.6.drv" [color = red];
|
||||
"/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/i398qn04cwvnzph7a0cckxqr9q0k3lyr-bzip2-1.0.6.drv" [color = red];
|
||||
"/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/wvnnsn89magnvn39zm3fv245s9m7yn5f-xz-5.0.4.drv" [color = red];
|
||||
"/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/sag0sx1zycnwixwfdrxwj1i9g2phxrh4-file-5.22.drv" [color = red];
|
||||
"/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/p61bsw6093x3wfg5vz3172wl9bzrlc3w-diffutils-3.3.drv" [color = red];
|
||||
"/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/rzsyx70vnfb8cm40r0b591vyvww2i5y6-patch-2.7.5.drv" [color = red];
|
||||
"/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/mc5fgclyr0v26242hmg30srv9ij27wyv-sed-4.2.2.drv" [color = red];
|
||||
"/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/ig9nr2f5hvr88br028r9nsdg4xpmmybg-findutils-4.4.2.drv" [color = red];
|
||||
"/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/jls1kj3pvqjpbmm7c09fhszfd3m61zif-gawk-4.1.3.drv" [color = red];
|
||||
"/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/vvlh6szjxr5iy192fsv9p4dwf39nhapf-grep-2.21.drv" [color = red];
|
||||
"/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/mysb2grsl1wc931xm08adncnqjwvdds7-coreutils-8.24.drv" [color = red];
|
||||
"/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/n0n20i1brmhmjvw9lx33f2l3dmzx873n-make-4.1.drv" [color = red];
|
||||
"/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/64cizlhq38x99dvjvza6c5ha226a9bf5-bash-4.3.39.drv" [color = red];
|
||||
"/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/mbshnjz590h3l1c3y2rxzqvn45bhx32b-ld-wrapper-0.drv" [color = red];
|
||||
"/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/hf62yhvyrr1rm5y8mq5afih12s9jasic-binutils-2.25.1.drv" [color = red];
|
||||
"/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/8mff0w2203h6m5s495knxg09is3qj15f-gcc-4.9.3.drv" [color = red];
|
||||
"/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/2pspbpclj4yq5dqd71fnqwa69s8xxryf-glibc-2.22.drv" [color = red];
|
||||
"/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/nflynk1n90yh41yfi91raczynka2mf86-glibc-utf8-locales-2.22.drv" [color = red];
|
||||
"/gnu/store/d7d6k5bhk7gz3pvhxdn2f33jzlxg4c5l-libcap-2.24.drv" -> "/gnu/store/3lq0fkjmjb917asbj9f24vcxxnq3kwai-attr-2.4.46.drv" [color = red];
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
digraph "Guix package" {
|
||||
"70481600" [label = "coreutils-8.24", shape = box, fontname = Helvetica];
|
||||
"70481600" -> "50717824" [color = red];
|
||||
"70481600" -> "57499200" [color = red];
|
||||
"70481600" -> "57496320" [color = red];
|
||||
"70481600" -> "69877504" [color = red];
|
||||
"50717824" [label = "perl-5.16.1", shape = box, fontname = Helvetica];
|
||||
"57499200" [label = "acl-2.2.52", shape = box, fontname = Helvetica];
|
||||
"57499200" -> "70563904" [color = red];
|
||||
"57499200" -> "50717824" [color = red];
|
||||
"57499200" -> "70563520" [color = red];
|
||||
"70563904" [label = "gettext-0.19.6", shape = box, fontname = Helvetica];
|
||||
"70563904" -> "69316352" [color = red];
|
||||
"69316352" [label = "expat-2.1.0", shape = box, fontname = Helvetica];
|
||||
"70563520" [label = "attr-2.4.46", shape = box, fontname = Helvetica];
|
||||
"70563520" -> "70563904" [color = red];
|
||||
"70563520" -> "50717824" [color = red];
|
||||
"57496320" [label = "gmp-6.0.0a", shape = box, fontname = Helvetica];
|
||||
"57496320" -> "57498432" [color = red];
|
||||
"57498432" [label = "m4-1.4.17", shape = box, fontname = Helvetica];
|
||||
"69877504" [label = "libcap-2.24", shape = box, fontname = Helvetica];
|
||||
"69877504" -> "50717824" [color = red];
|
||||
"69877504" -> "70563520" [color = red];
|
||||
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
digraph "Guix dmd-service" {
|
||||
"user-file-systems" [label = "user-file-systems", shape = box, fontname = Helvetica];
|
||||
"user-processes" -> "user-file-systems" [color = red];
|
||||
"user-processes" [label = "user-processes", shape = box, fontname = Helvetica];
|
||||
"nscd" -> "user-processes" [color = red];
|
||||
"guix-daemon" -> "user-processes" [color = red];
|
||||
"syslogd" -> "user-processes" [color = red];
|
||||
"term-tty6" -> "user-processes" [color = red];
|
||||
"term-tty5" -> "user-processes" [color = red];
|
||||
"term-tty4" -> "user-processes" [color = red];
|
||||
"term-tty3" -> "user-processes" [color = red];
|
||||
"term-tty2" -> "user-processes" [color = red];
|
||||
"term-tty1" -> "user-processes" [color = red];
|
||||
"networking" -> "user-processes" [color = red];
|
||||
"nscd" [label = "nscd", shape = box, fontname = Helvetica];
|
||||
"guix-daemon" [label = "guix-daemon", shape = box, fontname = Helvetica];
|
||||
"syslogd" [label = "syslogd", shape = box, fontname = Helvetica];
|
||||
"ssh-daemon" -> "syslogd" [color = red];
|
||||
"ssh-daemon" [label = "ssh-daemon", shape = box, fontname = Helvetica];
|
||||
"term-tty6" [label = "term-tty6", shape = box, fontname = Helvetica];
|
||||
"console-font-tty6" -> "term-tty6" [color = red];
|
||||
"console-font-tty6" [label = "console-font-tty6", shape = box, fontname = Helvetica];
|
||||
"term-tty5" [label = "term-tty5", shape = box, fontname = Helvetica];
|
||||
"console-font-tty5" -> "term-tty5" [color = red];
|
||||
"console-font-tty5" [label = "console-font-tty5", shape = box, fontname = Helvetica];
|
||||
"term-tty4" [label = "term-tty4", shape = box, fontname = Helvetica];
|
||||
"console-font-tty4" -> "term-tty4" [color = red];
|
||||
"console-font-tty4" [label = "console-font-tty4", shape = box, fontname = Helvetica];
|
||||
"term-tty3" [label = "term-tty3", shape = box, fontname = Helvetica];
|
||||
"console-font-tty3" -> "term-tty3" [color = red];
|
||||
"console-font-tty3" [label = "console-font-tty3", shape = box, fontname = Helvetica];
|
||||
"term-tty2" [label = "term-tty2", shape = box, fontname = Helvetica];
|
||||
"console-font-tty2" -> "term-tty2" [color = red];
|
||||
"console-font-tty2" [label = "console-font-tty2", shape = box, fontname = Helvetica];
|
||||
"term-tty1" [label = "term-tty1", shape = box, fontname = Helvetica];
|
||||
"console-font-tty1" -> "term-tty1" [color = red];
|
||||
"console-font-tty1" [label = "console-font-tty1", shape = box, fontname = Helvetica];
|
||||
"networking" [label = "networking", shape = box, fontname = Helvetica];
|
||||
"ssh-daemon" -> "networking" [color = red];
|
||||
"root-file-system" [label = "root-file-system", shape = box, fontname = Helvetica];
|
||||
"file-system-/run/user" -> "root-file-system" [color = red];
|
||||
"file-system-/run/systemd" -> "root-file-system" [color = red];
|
||||
"file-system-/gnu/store" -> "root-file-system" [color = red];
|
||||
"file-system-/dev/shm" -> "root-file-system" [color = red];
|
||||
"file-system-/dev/pts" -> "root-file-system" [color = red];
|
||||
"user-processes" -> "root-file-system" [color = red];
|
||||
"udev" -> "root-file-system" [color = red];
|
||||
"file-system-/run/user" [label = "file-system-/run/user", shape = box, fontname = Helvetica];
|
||||
"user-processes" -> "file-system-/run/user" [color = red];
|
||||
"file-system-/run/systemd" [label = "file-system-/run/systemd", shape = box, fontname = Helvetica];
|
||||
"user-processes" -> "file-system-/run/systemd" [color = red];
|
||||
"file-system-/gnu/store" [label = "file-system-/gnu/store", shape = box, fontname = Helvetica];
|
||||
"user-processes" -> "file-system-/gnu/store" [color = red];
|
||||
"file-system-/dev/shm" [label = "file-system-/dev/shm", shape = box, fontname = Helvetica];
|
||||
"user-processes" -> "file-system-/dev/shm" [color = red];
|
||||
"file-system-/dev/pts" [label = "file-system-/dev/pts", shape = box, fontname = Helvetica];
|
||||
"user-processes" -> "file-system-/dev/pts" [color = red];
|
||||
"udev" [label = "udev", shape = box, fontname = Helvetica];
|
||||
"term-tty6" -> "udev" [color = red];
|
||||
"term-tty5" -> "udev" [color = red];
|
||||
"term-tty4" -> "udev" [color = red];
|
||||
"term-tty3" -> "udev" [color = red];
|
||||
"term-tty2" -> "udev" [color = red];
|
||||
"term-tty1" -> "udev" [color = red];
|
||||
"networking" -> "udev" [color = red];
|
||||
"host-name" [label = "host-name", shape = box, fontname = Helvetica];
|
||||
"term-tty6" -> "host-name" [color = red];
|
||||
"term-tty5" -> "host-name" [color = red];
|
||||
"term-tty4" -> "host-name" [color = red];
|
||||
"term-tty3" -> "host-name" [color = red];
|
||||
"term-tty2" -> "host-name" [color = red];
|
||||
"term-tty1" -> "host-name" [color = red];
|
||||
"loopback" [label = "loopback", shape = box, fontname = Helvetica];
|
||||
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
digraph "Service Type Dependencies" {
|
||||
dmd [shape = box, fontname = Helvetica];
|
||||
pam [shape = box, fontname = Helvetica];
|
||||
etc [shape = box, fontname = Helvetica];
|
||||
accounts [shape = box, fontname = Helvetica];
|
||||
activation [shape = box, fontname = Helvetica];
|
||||
boot [shape = house, fontname = Helvetica];
|
||||
lshd -> dmd;
|
||||
lshd -> pam;
|
||||
udev -> dmd;
|
||||
nscd -> dmd [label = "extends"];
|
||||
"nss-mdns" -> nscd;
|
||||
"kvm-rules" -> udev;
|
||||
colord -> udev;
|
||||
dbus -> dmd;
|
||||
colord -> dbus;
|
||||
upower -> udev;
|
||||
upower -> dbus;
|
||||
polkit -> dbus;
|
||||
polkit -> pam;
|
||||
elogind -> dbus;
|
||||
elogind -> udev;
|
||||
elogind -> polkit [label = "extends"];
|
||||
dmd -> boot;
|
||||
colord -> accounts;
|
||||
accounts -> activation;
|
||||
accounts -> etc;
|
||||
etc -> activation;
|
||||
activation -> boot;
|
||||
pam -> etc;
|
||||
elogind -> pam;
|
||||
guix -> dmd;
|
||||
guix -> activation;
|
||||
guix -> accounts;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
(use-modules (guix)
|
||||
(guix build-system gnu)
|
||||
(guix licenses))
|
||||
|
||||
(package
|
||||
(name "hello")
|
||||
(version "2.10")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/hello/hello-" version
|
||||
".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i"))))
|
||||
(build-system gnu-build-system)
|
||||
(synopsis "Hello, GNU world: An example GNU package")
|
||||
(description "Guess what GNU Hello prints!")
|
||||
(home-page "http://www.gnu.org/software/hello/")
|
||||
(license gpl3+))
|
||||
@@ -1,5 +1,5 @@
|
||||
# GNU Guix --- Functional package management for GNU
|
||||
# Copyright © 2014 Alex Kost <alezost@gmail.com>
|
||||
# Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
|
||||
#
|
||||
# This file is part of GNU Guix.
|
||||
#
|
||||
@@ -21,13 +21,24 @@ AUTOLOADS = emacs/guix-autoloads.el
|
||||
ELFILES = \
|
||||
emacs/guix-backend.el \
|
||||
emacs/guix-base.el \
|
||||
emacs/guix-build-log.el \
|
||||
emacs/guix-command.el \
|
||||
emacs/guix-devel.el \
|
||||
emacs/guix-emacs.el \
|
||||
emacs/guix-external.el \
|
||||
emacs/guix-geiser.el \
|
||||
emacs/guix-guile.el \
|
||||
emacs/guix-help-vars.el \
|
||||
emacs/guix-history.el \
|
||||
emacs/guix-info.el \
|
||||
emacs/guix-init.el \
|
||||
emacs/guix-list.el \
|
||||
emacs/guix-messages.el \
|
||||
emacs/guix-pcomplete.el \
|
||||
emacs/guix-popup.el \
|
||||
emacs/guix-prettify.el \
|
||||
emacs/guix-profiles.el \
|
||||
emacs/guix-read.el \
|
||||
emacs/guix-utils.el \
|
||||
emacs/guix.el
|
||||
|
||||
@@ -37,9 +48,7 @@ dist_lisp_DATA = \
|
||||
$(ELFILES) \
|
||||
$(AUTOLOADS)
|
||||
|
||||
nodist_lisp_DATA = \
|
||||
emacs/guix-init.el \
|
||||
emacs/guix-profiles.el
|
||||
nodist_lisp_DATA = emacs/guix-config.el
|
||||
|
||||
$(AUTOLOADS): $(ELFILES)
|
||||
$(EMACS) --batch --eval \
|
||||
|
||||
+19
-59
@@ -1,6 +1,6 @@
|
||||
;;; guix-backend.el --- Communication with Geiser
|
||||
;;; guix-backend.el --- Making and using Guix REPL
|
||||
|
||||
;; Copyright © 2014 Alex Kost <alezost@gmail.com>
|
||||
;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
|
||||
|
||||
;; This file is part of GNU Guix.
|
||||
|
||||
@@ -19,9 +19,10 @@
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; This file provides the code for interacting with Guile using Geiser.
|
||||
;; This file provides the code for interacting with Guile using Guix REPL
|
||||
;; (Geiser REPL with some guix-specific additions).
|
||||
|
||||
;; By default (if `guix-use-guile-server' is non-nil) 2 Geiser REPLs are
|
||||
;; By default (if `guix-use-guile-server' is non-nil) 2 Guix REPLs are
|
||||
;; started. The main one (with "guile --listen" process) is used for
|
||||
;; "interacting" with a user - for showing a progress of
|
||||
;; installing/deleting Guix packages. The second (internal) REPL is
|
||||
@@ -52,26 +53,19 @@
|
||||
;;; Code:
|
||||
|
||||
(require 'geiser-mode)
|
||||
(require 'geiser-guile)
|
||||
(require 'guix-geiser)
|
||||
(require 'guix-config)
|
||||
(require 'guix-external)
|
||||
(require 'guix-emacs)
|
||||
|
||||
(defvar guix-load-path
|
||||
(file-name-directory (or load-file-name
|
||||
(locate-library "guix")))
|
||||
(defvar guix-load-path guix-config-emacs-interface-directory
|
||||
"Directory with scheme files for \"guix.el\" package.")
|
||||
|
||||
(defvar guix-helper-file
|
||||
(expand-file-name "guix-helper.scm" guix-load-path)
|
||||
"Auxiliary scheme file for loading.")
|
||||
|
||||
(defvar guix-guile-program (or geiser-guile-binary "guile")
|
||||
"Name of the guile executable used for Guix REPL.
|
||||
May be either a string (the name of the executable) or a list of
|
||||
strings of the form:
|
||||
|
||||
(NAME . ARGS)
|
||||
|
||||
Where ARGS is a list of arguments to the guile program.")
|
||||
|
||||
|
||||
;;; REPL
|
||||
|
||||
@@ -315,46 +309,15 @@ additional internal REPL if it exists."
|
||||
(defvar guix-operation-buffer nil
|
||||
"Buffer from which the latest Guix operation was performed.")
|
||||
|
||||
(defun guix-make-guile-expression (fun &rest args)
|
||||
"Return string containing a guile expression for calling FUN with ARGS."
|
||||
(format "(%S %s)" fun
|
||||
(mapconcat
|
||||
(lambda (arg)
|
||||
(cond
|
||||
((null arg) "'()")
|
||||
((or (eq arg t)
|
||||
;; An ugly hack to separate 'false' from nil
|
||||
(equal arg 'f)
|
||||
(keywordp arg))
|
||||
(concat "#" (prin1-to-string arg t)))
|
||||
((or (symbolp arg) (listp arg))
|
||||
(concat "'" (prin1-to-string arg)))
|
||||
(t (prin1-to-string arg))))
|
||||
args
|
||||
" ")))
|
||||
(defun guix-eval (str)
|
||||
"Evaluate STR with guile expression using Guix REPL.
|
||||
See `guix-geiser-eval' for details."
|
||||
(guix-geiser-eval str (guix-get-repl-buffer 'internal)))
|
||||
|
||||
(defun guix-eval (str &optional wrap)
|
||||
"Evaluate guile expression STR.
|
||||
If WRAP is non-nil, wrap STR into (begin ...) form.
|
||||
Return a list of strings with result values of evaluation."
|
||||
(with-current-buffer (guix-get-repl-buffer 'internal)
|
||||
(let* ((wrapped (if wrap (geiser-debug--wrap-region str) str))
|
||||
(code `(:eval (:scm ,wrapped)))
|
||||
(ret (geiser-eval--send/wait code)))
|
||||
(if (geiser-eval--retort-error ret)
|
||||
(error "Error in evaluating guile expression: %s"
|
||||
(geiser-eval--retort-output ret))
|
||||
(cdr (assq 'result ret))))))
|
||||
|
||||
(defun guix-eval-read (str &optional wrap)
|
||||
"Evaluate guile expression STR.
|
||||
For the meaning of WRAP, see `guix-eval'.
|
||||
Return elisp expression of the first result value of evaluation."
|
||||
;; Parsing scheme code with elisp `read' is probably not the best idea.
|
||||
(read (replace-regexp-in-string
|
||||
"#f\\|#<unspecified>" "nil"
|
||||
(replace-regexp-in-string
|
||||
"#t" "t" (car (guix-eval str wrap))))))
|
||||
(defun guix-eval-read (str)
|
||||
"Evaluate STR with guile expression using Guix REPL.
|
||||
See `guix-geiser-eval-read' for details."
|
||||
(guix-geiser-eval-read str (guix-get-repl-buffer 'internal)))
|
||||
|
||||
(defun guix-eval-in-repl (str &optional operation-buffer operation-type)
|
||||
"Switch to Guix REPL and evaluate STR with guile expression there.
|
||||
@@ -368,10 +331,7 @@ successful executing of the current operation,
|
||||
(setq guix-repl-operation-p t
|
||||
guix-repl-operation-type operation-type
|
||||
guix-operation-buffer operation-buffer)
|
||||
(let ((repl (guix-get-repl-buffer)))
|
||||
(with-current-buffer repl
|
||||
(geiser-repl--send str))
|
||||
(geiser-repl--switch-to-buffer repl)))
|
||||
(guix-geiser-eval-in-repl str (guix-get-repl-buffer)))
|
||||
|
||||
(provide 'guix-backend)
|
||||
|
||||
|
||||
+110
-22
@@ -1,6 +1,6 @@
|
||||
;;; guix-base.el --- Common definitions -*- lexical-binding: t -*-
|
||||
|
||||
;; Copyright © 2014 Alex Kost <alezost@gmail.com>
|
||||
;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
|
||||
|
||||
;; This file is part of GNU Guix.
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
(require 'cl-lib)
|
||||
(require 'guix-profiles)
|
||||
(require 'guix-backend)
|
||||
(require 'guix-guile)
|
||||
(require 'guix-utils)
|
||||
(require 'guix-history)
|
||||
(require 'guix-messages)
|
||||
@@ -89,8 +90,8 @@ Each element of the list has a form:
|
||||
|
||||
(defun guix-get-param-title (entry-type param)
|
||||
"Return title of an ENTRY-TYPE entry parameter PARAM."
|
||||
(or (guix-get-key-val guix-param-titles
|
||||
entry-type param)
|
||||
(or (guix-assq-value guix-param-titles
|
||||
entry-type param)
|
||||
(prog1 (symbol-name param)
|
||||
(message "Couldn't find title for '%S %S'."
|
||||
entry-type param))))
|
||||
@@ -102,15 +103,15 @@ Each element of the list has a form:
|
||||
|
||||
(defun guix-get-full-name (entry &optional output)
|
||||
"Return name specification of the package ENTRY and OUTPUT."
|
||||
(guix-get-name-spec (guix-get-key-val entry 'name)
|
||||
(guix-get-key-val entry 'version)
|
||||
(guix-get-name-spec (guix-assq-value entry 'name)
|
||||
(guix-assq-value entry 'version)
|
||||
output))
|
||||
|
||||
(defun guix-entry-to-specification (entry)
|
||||
"Return name specification by the package or output ENTRY."
|
||||
(guix-get-name-spec (guix-get-key-val entry 'name)
|
||||
(guix-get-key-val entry 'version)
|
||||
(guix-get-key-val entry 'output)))
|
||||
(guix-get-name-spec (guix-assq-value entry 'name)
|
||||
(guix-assq-value entry 'version)
|
||||
(guix-assq-value entry 'output)))
|
||||
|
||||
(defun guix-entries-to-specifications (entries)
|
||||
"Return name specifications by the package or output ENTRIES."
|
||||
@@ -120,13 +121,13 @@ Each element of the list has a form:
|
||||
(defun guix-get-installed-outputs (entry)
|
||||
"Return list of installed outputs for the package ENTRY."
|
||||
(mapcar (lambda (installed-entry)
|
||||
(guix-get-key-val installed-entry 'output))
|
||||
(guix-get-key-val entry 'installed)))
|
||||
(guix-assq-value installed-entry 'output))
|
||||
(guix-assq-value entry 'installed)))
|
||||
|
||||
(defun guix-get-entry-by-id (id entries)
|
||||
"Return entry from ENTRIES by entry ID."
|
||||
(cl-find-if (lambda (entry)
|
||||
(equal id (guix-get-key-val entry 'id)))
|
||||
(equal id (guix-assq-value entry 'id)))
|
||||
entries))
|
||||
|
||||
(defun guix-get-package-id-and-output-by-output-id (oid)
|
||||
@@ -172,13 +173,36 @@ If PATH is relative, it is considered to be relative to
|
||||
(move-to-column col)
|
||||
(recenter 1))))
|
||||
|
||||
(defun guix-edit-package (id)
|
||||
"Edit (go to location of) package with ID."
|
||||
(let ((loc (guix-eval-read (guix-make-guile-expression
|
||||
'package-location-string id))))
|
||||
(if loc
|
||||
(guix-find-location loc)
|
||||
(message "Couldn't find package location."))))
|
||||
(defun guix-package-location (id-or-name)
|
||||
"Return location of a package with ID-OR-NAME.
|
||||
For the meaning of location, see `guix-find-location'."
|
||||
(guix-eval-read (guix-make-guile-expression
|
||||
'package-location-string id-or-name)))
|
||||
|
||||
|
||||
;;; Receivable lists of packages, lint checkers, etc.
|
||||
|
||||
(guix-memoized-defun guix-graph-type-names ()
|
||||
"Return a list of names of available graph node types."
|
||||
(guix-eval-read (guix-make-guile-expression 'graph-type-names)))
|
||||
|
||||
(guix-memoized-defun guix-lint-checker-names ()
|
||||
"Return a list of names of available lint checkers."
|
||||
(guix-eval-read (guix-make-guile-expression 'lint-checker-names)))
|
||||
|
||||
(guix-memoized-defun guix-package-names ()
|
||||
"Return a list of names of available packages."
|
||||
(sort
|
||||
;; Work around <https://github.com/jaor/geiser/issues/64>:
|
||||
;; list of strings is parsed much slower than list of lists,
|
||||
;; so we use 'package-names-lists' instead of 'package-names'.
|
||||
|
||||
;; (guix-eval-read (guix-make-guile-expression 'package-names))
|
||||
|
||||
(mapcar #'car
|
||||
(guix-eval-read (guix-make-guile-expression
|
||||
'package-names-lists)))
|
||||
#'string<))
|
||||
|
||||
|
||||
;;; Buffers and auto updating.
|
||||
@@ -391,8 +415,8 @@ following keywords are available:
|
||||
(buf-str (concat buf-type-str " buffer"))
|
||||
(prefix (concat "guix-" entry-type-str "-" buf-type-str))
|
||||
(group (intern prefix))
|
||||
(faces-group (intern (concat prefix "-faces")))
|
||||
(mode-map-str (concat prefix "-mode-map"))
|
||||
(mode-map (intern mode-map-str))
|
||||
(parent-mode (intern (concat "guix-" buf-type-str "-mode")))
|
||||
(mode (intern (concat prefix "-mode")))
|
||||
(mode-init-fun (intern (concat prefix "-mode-initialize")))
|
||||
@@ -420,6 +444,10 @@ following keywords are available:
|
||||
:prefix ,(concat prefix "-")
|
||||
:group ',(intern (concat "guix-" buf-type-str)))
|
||||
|
||||
(defgroup ,faces-group nil
|
||||
,(concat "Faces for " buf-type-str " buffer with " entry-str ".")
|
||||
:group ',(intern (concat "guix-" buf-type-str "-faces")))
|
||||
|
||||
(defcustom ,buf-name-var ,buf-name-val
|
||||
,(concat "Default name of the " buf-str " for displaying " entry-str ".")
|
||||
:type 'string
|
||||
@@ -767,7 +795,7 @@ GENERATION is a generation number of `guix-profile' profile."
|
||||
(defface guix-operation-option-key
|
||||
'((t :inherit font-lock-warning-face))
|
||||
"Face used for the keys of operation options."
|
||||
:group 'guix)
|
||||
:group 'guix-faces)
|
||||
|
||||
(defcustom guix-operation-confirm t
|
||||
"If nil, do not prompt to confirm an operation."
|
||||
@@ -910,11 +938,11 @@ ENTRIES is a list of package entries to get info about packages."
|
||||
(outputs (cdr spec))
|
||||
(entry (guix-get-entry-by-id id entries)))
|
||||
(when entry
|
||||
(let ((location (guix-get-key-val entry 'location)))
|
||||
(let ((location (guix-assq-value entry 'location)))
|
||||
(concat (guix-get-full-name entry)
|
||||
(when outputs
|
||||
(concat ":"
|
||||
(mapconcat #'identity outputs ",")))
|
||||
(guix-concat-strings outputs ",")))
|
||||
(when location
|
||||
(concat "\t(" location ")")))))))
|
||||
specs)))
|
||||
@@ -1060,6 +1088,66 @@ FILE. With a prefix argument, also prompt for PROFILE."
|
||||
(concat "--manifest=" file))
|
||||
operation-buffer)))
|
||||
|
||||
|
||||
;;; Executing guix commands
|
||||
|
||||
(defcustom guix-run-in-shell-function #'guix-run-in-shell
|
||||
"Function used to run guix command.
|
||||
The function is called with a single argument - a command line string."
|
||||
:type '(choice (function-item guix-run-in-shell)
|
||||
(function-item guix-run-in-eshell)
|
||||
(function :tag "Other function"))
|
||||
:group 'guix)
|
||||
|
||||
(defcustom guix-shell-buffer-name "*shell*"
|
||||
"Default name of a shell buffer used for running guix commands."
|
||||
:type 'string
|
||||
:group 'guix)
|
||||
|
||||
(declare-function comint-send-input "comint" t)
|
||||
|
||||
(defun guix-run-in-shell (string)
|
||||
"Run command line STRING in `guix-shell-buffer-name' buffer."
|
||||
(shell guix-shell-buffer-name)
|
||||
(goto-char (point-max))
|
||||
(insert string)
|
||||
(comint-send-input))
|
||||
|
||||
(declare-function eshell-send-input "esh-mode" t)
|
||||
|
||||
(defun guix-run-in-eshell (string)
|
||||
"Run command line STRING in eshell buffer."
|
||||
(eshell)
|
||||
(goto-char (point-max))
|
||||
(insert string)
|
||||
(eshell-send-input))
|
||||
|
||||
(defun guix-run-command-in-shell (args)
|
||||
"Execute 'guix ARGS ...' command in a shell buffer."
|
||||
(funcall guix-run-in-shell-function
|
||||
(guix-command-string args)))
|
||||
|
||||
(defun guix-run-command-in-repl (args)
|
||||
"Execute 'guix ARGS ...' command in Guix REPL."
|
||||
(guix-eval-in-repl
|
||||
(apply #'guix-make-guile-expression
|
||||
'guix-command args)))
|
||||
|
||||
(defun guix-command-output (args)
|
||||
"Return string with 'guix ARGS ...' output."
|
||||
(cl-multiple-value-bind (output error)
|
||||
(guix-eval (apply #'guix-make-guile-expression
|
||||
'guix-command-output args))
|
||||
;; Remove trailing new space from the error string.
|
||||
(message (replace-regexp-in-string "\n\\'" "" (read error)))
|
||||
(read output)))
|
||||
|
||||
(defun guix-help-string (&optional commands)
|
||||
"Return string with 'guix COMMANDS ... --help' output."
|
||||
(guix-eval-read
|
||||
(apply #'guix-make-guile-expression
|
||||
'help-string commands)))
|
||||
|
||||
|
||||
;;; Pull
|
||||
|
||||
|
||||
@@ -0,0 +1,334 @@
|
||||
;;; guix-build-log.el --- Major and minor modes for build logs -*- lexical-binding: t -*-
|
||||
|
||||
;; Copyright © 2015 Alex Kost <alezost@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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; This file provides a major mode (`guix-build-log-mode') and a minor mode
|
||||
;; (`guix-build-log-minor-mode') for highlighting Guix build logs.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(defgroup guix-build-log nil
|
||||
"Settings for `guix-build-log-mode'."
|
||||
:group 'guix)
|
||||
|
||||
(defgroup guix-build-log-faces nil
|
||||
"Faces for `guix-build-log-mode'."
|
||||
:group 'guix-build-log
|
||||
:group 'guix-faces)
|
||||
|
||||
(defface guix-build-log-title-head
|
||||
'((t :inherit font-lock-keyword-face))
|
||||
"Face for '@' symbol of a log title."
|
||||
:group 'guix-build-log-faces)
|
||||
|
||||
(defface guix-build-log-title-start
|
||||
'((t :inherit guix-build-log-title-head))
|
||||
"Face for a log title denoting a start of a process."
|
||||
:group 'guix-build-log-faces)
|
||||
|
||||
(defface guix-build-log-title-success
|
||||
'((t :inherit guix-build-log-title-head))
|
||||
"Face for a log title denoting a successful end of a process."
|
||||
:group 'guix-build-log-faces)
|
||||
|
||||
(defface guix-build-log-title-fail
|
||||
'((t :inherit error))
|
||||
"Face for a log title denoting a failed end of a process."
|
||||
:group 'guix-build-log-faces)
|
||||
|
||||
(defface guix-build-log-title-end
|
||||
'((t :inherit guix-build-log-title-head))
|
||||
"Face for a log title denoting an undefined end of a process."
|
||||
:group 'guix-build-log-faces)
|
||||
|
||||
(defface guix-build-log-phase-name
|
||||
'((t :inherit font-lock-function-name-face))
|
||||
"Face for a phase name."
|
||||
:group 'guix-build-log-faces)
|
||||
|
||||
(defface guix-build-log-phase-start
|
||||
'((default :weight bold)
|
||||
(((class grayscale) (background light)) :foreground "Gray90")
|
||||
(((class grayscale) (background dark)) :foreground "DimGray")
|
||||
(((class color) (min-colors 16) (background light))
|
||||
:foreground "DarkGreen")
|
||||
(((class color) (min-colors 16) (background dark))
|
||||
:foreground "LimeGreen")
|
||||
(((class color) (min-colors 8)) :foreground "green"))
|
||||
"Face for the start line of a phase."
|
||||
:group 'guix-build-log-faces)
|
||||
|
||||
(defface guix-build-log-phase-end
|
||||
'((((class grayscale) (background light)) :foreground "Gray90")
|
||||
(((class grayscale) (background dark)) :foreground "DimGray")
|
||||
(((class color) (min-colors 16) (background light))
|
||||
:foreground "ForestGreen")
|
||||
(((class color) (min-colors 16) (background dark))
|
||||
:foreground "LightGreen")
|
||||
(((class color) (min-colors 8)) :foreground "green")
|
||||
(t :weight bold))
|
||||
"Face for the end line of a phase."
|
||||
:group 'guix-build-log-faces)
|
||||
|
||||
(defface guix-build-log-phase-success
|
||||
'((t))
|
||||
"Face for the 'succeeded' word of a phase line."
|
||||
:group 'guix-build-log-faces)
|
||||
|
||||
(defface guix-build-log-phase-fail
|
||||
'((t :inherit error))
|
||||
"Face for the 'failed' word of a phase line."
|
||||
:group 'guix-build-log-faces)
|
||||
|
||||
(defface guix-build-log-phase-seconds
|
||||
'((t :inherit font-lock-constant-face))
|
||||
"Face for the number of seconds for a phase."
|
||||
:group 'guix-build-log-faces)
|
||||
|
||||
(defcustom guix-build-log-mode-hook
|
||||
;; Not using `compilation-minor-mode' because it rebinds some standard
|
||||
;; keys, including M-n/M-p.
|
||||
'(compilation-shell-minor-mode view-mode)
|
||||
"Hook run after `guix-build-log-mode' is entered."
|
||||
:type 'hook
|
||||
:group 'guix-build-log)
|
||||
|
||||
(defvar guix-build-log-phase-name-regexp "`\\([^']+\\)'"
|
||||
"Regexp for a phase name.")
|
||||
|
||||
(defvar guix-build-log-phase-start-regexp
|
||||
(concat "^starting phase " guix-build-log-phase-name-regexp)
|
||||
"Regexp for the start line of a 'build' phase.")
|
||||
|
||||
(defun guix-build-log-title-regexp (&optional state)
|
||||
"Return regexp for the log title.
|
||||
STATE is a symbol denoting a state of the title. It should be
|
||||
`start', `fail', `success' or `nil' (for a regexp matching any
|
||||
state)."
|
||||
(let* ((word-rx (rx (1+ (any word "-"))))
|
||||
(state-rx (cond ((eq state 'start) (concat word-rx "started"))
|
||||
((eq state 'success) (concat word-rx "succeeded"))
|
||||
((eq state 'fail) (concat word-rx "failed"))
|
||||
(t word-rx))))
|
||||
(rx-to-string
|
||||
`(and bol (group "@") " " (group (regexp ,state-rx)))
|
||||
t)))
|
||||
|
||||
(defun guix-build-log-phase-end-regexp (&optional state)
|
||||
"Return regexp for the end line of a 'build' phase.
|
||||
STATE is a symbol denoting how a build phase was ended. It should be
|
||||
`fail', `success' or `nil' (for a regexp matching any state)."
|
||||
(let ((state-rx (cond ((eq state 'success) "succeeded")
|
||||
((eq state 'fail) "failed")
|
||||
(t (regexp-opt '("succeeded" "failed"))))))
|
||||
(rx-to-string
|
||||
`(and bol "phase " (regexp ,guix-build-log-phase-name-regexp)
|
||||
" " (group (regexp ,state-rx)) " after "
|
||||
(group (1+ (or digit "."))) " seconds")
|
||||
t)))
|
||||
|
||||
(defvar guix-build-log-phase-end-regexp
|
||||
;; For efficiency, it is better to have a regexp for the general line
|
||||
;; of the phase end, then to call the function all the time.
|
||||
(guix-build-log-phase-end-regexp)
|
||||
"Regexp for the end line of a 'build' phase.")
|
||||
|
||||
(defvar guix-build-log-font-lock-keywords
|
||||
`((,(guix-build-log-title-regexp 'start)
|
||||
(1 'guix-build-log-title-head)
|
||||
(2 'guix-build-log-title-start))
|
||||
(,(guix-build-log-title-regexp 'success)
|
||||
(1 'guix-build-log-title-head)
|
||||
(2 'guix-build-log-title-success))
|
||||
(,(guix-build-log-title-regexp 'fail)
|
||||
(1 'guix-build-log-title-head)
|
||||
(2 'guix-build-log-title-fail))
|
||||
(,(guix-build-log-title-regexp)
|
||||
(1 'guix-build-log-title-head)
|
||||
(2 'guix-build-log-title-end))
|
||||
(,guix-build-log-phase-start-regexp
|
||||
(0 'guix-build-log-phase-start)
|
||||
(1 'guix-build-log-phase-name prepend))
|
||||
(,(guix-build-log-phase-end-regexp 'success)
|
||||
(0 'guix-build-log-phase-end)
|
||||
(1 'guix-build-log-phase-name prepend)
|
||||
(2 'guix-build-log-phase-success prepend)
|
||||
(3 'guix-build-log-phase-seconds prepend))
|
||||
(,(guix-build-log-phase-end-regexp 'fail)
|
||||
(0 'guix-build-log-phase-end)
|
||||
(1 'guix-build-log-phase-name prepend)
|
||||
(2 'guix-build-log-phase-fail prepend)
|
||||
(3 'guix-build-log-phase-seconds prepend)))
|
||||
"A list of `font-lock-keywords' for `guix-build-log-mode'.")
|
||||
|
||||
(defvar guix-build-log-mode-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(set-keymap-parent map special-mode-map)
|
||||
(define-key map (kbd "M-n") 'guix-build-log-next-phase)
|
||||
(define-key map (kbd "M-p") 'guix-build-log-previous-phase)
|
||||
(define-key map (kbd "TAB") 'guix-build-log-phase-toggle)
|
||||
(define-key map (kbd "<tab>") 'guix-build-log-phase-toggle)
|
||||
(define-key map (kbd "<backtab>") 'guix-build-log-phase-toggle-all)
|
||||
(define-key map [(shift tab)] 'guix-build-log-phase-toggle-all)
|
||||
map)
|
||||
"Keymap for `guix-build-log-mode' buffers.")
|
||||
|
||||
(defun guix-build-log-phase-start (&optional with-header?)
|
||||
"Return the start point of the current build phase.
|
||||
If WITH-HEADER? is non-nil, do not skip 'starting phase ...' header.
|
||||
Return nil, if there is no phase start before the current point."
|
||||
(save-excursion
|
||||
(end-of-line)
|
||||
(when (re-search-backward guix-build-log-phase-start-regexp nil t)
|
||||
(unless with-header? (end-of-line))
|
||||
(point))))
|
||||
|
||||
(defun guix-build-log-phase-end ()
|
||||
"Return the end point of the current build phase."
|
||||
(save-excursion
|
||||
(beginning-of-line)
|
||||
(when (re-search-forward guix-build-log-phase-end-regexp nil t)
|
||||
(point))))
|
||||
|
||||
(defun guix-build-log-phase-hide ()
|
||||
"Hide the body of the current build phase."
|
||||
(interactive)
|
||||
(let ((beg (guix-build-log-phase-start))
|
||||
(end (guix-build-log-phase-end)))
|
||||
(when (and beg end)
|
||||
;; If not on the header line, move to it.
|
||||
(when (and (> (point) beg)
|
||||
(< (point) end))
|
||||
(goto-char (guix-build-log-phase-start t)))
|
||||
(remove-overlays beg end 'invisible t)
|
||||
(let ((o (make-overlay beg end)))
|
||||
(overlay-put o 'evaporate t)
|
||||
(overlay-put o 'invisible t)))))
|
||||
|
||||
(defun guix-build-log-phase-show ()
|
||||
"Show the body of the current build phase."
|
||||
(interactive)
|
||||
(let ((beg (guix-build-log-phase-start))
|
||||
(end (guix-build-log-phase-end)))
|
||||
(when (and beg end)
|
||||
(remove-overlays beg end 'invisible t))))
|
||||
|
||||
(defun guix-build-log-phase-hidden-p ()
|
||||
"Return non-nil, if the body of the current build phase is hidden."
|
||||
(let ((beg (guix-build-log-phase-start)))
|
||||
(and beg
|
||||
(cl-some (lambda (o)
|
||||
(overlay-get o 'invisible))
|
||||
(overlays-at beg)))))
|
||||
|
||||
(defun guix-build-log-phase-toggle-function ()
|
||||
"Return a function to toggle the body of the current build phase."
|
||||
(if (guix-build-log-phase-hidden-p)
|
||||
#'guix-build-log-phase-show
|
||||
#'guix-build-log-phase-hide))
|
||||
|
||||
(defun guix-build-log-phase-toggle ()
|
||||
"Show/hide the body of the current build phase."
|
||||
(interactive)
|
||||
(funcall (guix-build-log-phase-toggle-function)))
|
||||
|
||||
(defun guix-build-log-phase-toggle-all ()
|
||||
"Show/hide the bodies of all build phases."
|
||||
(interactive)
|
||||
(save-excursion
|
||||
;; Some phases may be hidden, and some shown. Whether to hide or to
|
||||
;; show them, it is determined by the state of the first phase here.
|
||||
(goto-char (point-min))
|
||||
(let ((fun (save-excursion
|
||||
(re-search-forward guix-build-log-phase-start-regexp nil t)
|
||||
(guix-build-log-phase-toggle-function))))
|
||||
(while (re-search-forward guix-build-log-phase-start-regexp nil t)
|
||||
(funcall fun)))))
|
||||
|
||||
(defun guix-build-log-next-phase (&optional arg)
|
||||
"Move to the next build phase.
|
||||
With ARG, do it that many times. Negative ARG means move
|
||||
backward."
|
||||
(interactive "^p")
|
||||
(if arg
|
||||
(when (zerop arg) (user-error "Try again"))
|
||||
(setq arg 1))
|
||||
(let ((search-fun (if (> arg 0)
|
||||
#'re-search-forward
|
||||
#'re-search-backward))
|
||||
(n (abs arg))
|
||||
found last-found)
|
||||
(save-excursion
|
||||
(end-of-line (if (> arg 0) 1 0)) ; skip the current line
|
||||
(while (and (not (zerop n))
|
||||
(setq found
|
||||
(funcall search-fun
|
||||
guix-build-log-phase-start-regexp
|
||||
nil t)))
|
||||
(setq n (1- n)
|
||||
last-found found)))
|
||||
(when last-found
|
||||
(goto-char last-found)
|
||||
(forward-line 0))
|
||||
(or found
|
||||
(user-error (if (> arg 0)
|
||||
"No next build phase"
|
||||
"No previous build phase")))))
|
||||
|
||||
(defun guix-build-log-previous-phase (&optional arg)
|
||||
"Move to the previous build phase.
|
||||
With ARG, do it that many times. Negative ARG means move
|
||||
forward."
|
||||
(interactive "^p")
|
||||
(guix-build-log-next-phase (- (or arg 1))))
|
||||
|
||||
;;;###autoload
|
||||
(define-derived-mode guix-build-log-mode special-mode
|
||||
"Guix-Build-Log"
|
||||
"Major mode for viewing Guix build logs.
|
||||
|
||||
\\{guix-build-log-mode-map}"
|
||||
(setq font-lock-defaults '(guix-build-log-font-lock-keywords t)))
|
||||
|
||||
;;;###autoload
|
||||
(define-minor-mode guix-build-log-minor-mode
|
||||
"Toggle Guix Build Log minor mode.
|
||||
|
||||
With a prefix argument ARG, enable Guix Build Log minor mode if
|
||||
ARG is positive, and disable it otherwise. If called from Lisp,
|
||||
enable the mode if ARG is omitted or nil.
|
||||
|
||||
When Guix Build Log minor mode is enabled, it highlights build
|
||||
log in the current buffer. This mode can be enabled
|
||||
programmatically using hooks:
|
||||
|
||||
(add-hook 'shell-mode-hook 'guix-build-log-minor-mode)"
|
||||
:init-value nil
|
||||
:lighter " Guix-Build-Log"
|
||||
:group 'guix-build-log
|
||||
(if guix-build-log-minor-mode
|
||||
(font-lock-add-keywords nil guix-build-log-font-lock-keywords)
|
||||
(font-lock-remove-keywords nil guix-build-log-font-lock-keywords))
|
||||
(when font-lock-mode
|
||||
(font-lock-fontify-buffer)))
|
||||
|
||||
(provide 'guix-build-log)
|
||||
|
||||
;;; guix-build-log.el ends here
|
||||
@@ -0,0 +1,718 @@
|
||||
;;; guix-command.el --- Popup interface for guix commands -*- lexical-binding: t -*-
|
||||
|
||||
;; Copyright © 2015 Alex Kost <alezost@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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; This file provides a magit-like popup interface for running guix
|
||||
;; commands in Guix REPL. The entry point is "M-x guix". When it is
|
||||
;; called the first time, "guix --help" output is parsed and
|
||||
;; `guix-COMMAND-action' functions are generated for each available guix
|
||||
;; COMMAND. Then a window with these commands is popped up. When a
|
||||
;; particular COMMAND is called, "guix COMMAND --help" output is parsed,
|
||||
;; and a user get a new popup window with available options for this
|
||||
;; command and so on.
|
||||
|
||||
;; To avoid hard-coding all guix options, actions, etc., as much data is
|
||||
;; taken from "guix ... --help" outputs as possible. But this data is
|
||||
;; still incomplete: not all long options have short analogs, also
|
||||
;; special readers should be used for some options (for example, to
|
||||
;; complete package names while prompting for a package). So after
|
||||
;; parsing --help output, the arguments are "improved". All arguments
|
||||
;; (switches, options and actions) are `guix-command-argument'
|
||||
;; structures.
|
||||
|
||||
;; Only "M-x guix" command is available after this file is loaded. The
|
||||
;; rest commands/actions/popups are generated on the fly only when they
|
||||
;; are needed (that's why there is a couple of `eval'-s in this file).
|
||||
|
||||
;; COMMANDS argument is used by many functions in this file. It means a
|
||||
;; list of guix commands without "guix" itself, e.g.: ("build"),
|
||||
;; ("import" "gnu"). The empty list stands for the plain "guix" without
|
||||
;; subcommands.
|
||||
|
||||
;; All actions in popup windows are divided into 2 groups:
|
||||
;;
|
||||
;; - 'Popup' actions - used to pop up another window. For example, every
|
||||
;; action in the 'guix' or 'guix import' window is a popup action. They
|
||||
;; are defined by `guix-command-define-popup-action' macro.
|
||||
;;
|
||||
;; - 'Execute' actions - used to do something with the command line (to
|
||||
;; run a command in Guix REPL or to copy it into kill-ring) constructed
|
||||
;; with the current popup. They are defined by
|
||||
;; `guix-command-define-execute-action' macro.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'cl-lib)
|
||||
(require 'guix-popup)
|
||||
(require 'guix-utils)
|
||||
(require 'guix-help-vars)
|
||||
(require 'guix-read)
|
||||
(require 'guix-base)
|
||||
(require 'guix-guile)
|
||||
(require 'guix-external)
|
||||
|
||||
(defgroup guix-commands nil
|
||||
"Settings for guix popup windows."
|
||||
:group 'guix)
|
||||
|
||||
(defvar guix-command-complex-with-shared-arguments
|
||||
'("system")
|
||||
"List of guix commands which have subcommands with shared options.
|
||||
I.e., 'guix foo --help' is the same as 'guix foo bar --help'.")
|
||||
|
||||
(defun guix-command-action-name (&optional commands &rest name-parts)
|
||||
"Return name of action function for guix COMMANDS."
|
||||
(guix-command-symbol (append commands name-parts (list "action"))))
|
||||
|
||||
|
||||
;;; Command arguments
|
||||
|
||||
(cl-defstruct (guix-command-argument
|
||||
(:constructor guix-command-make-argument)
|
||||
(:copier guix-command-copy-argument))
|
||||
name char doc fun switch? option? action?)
|
||||
|
||||
(cl-defun guix-command-modify-argument
|
||||
(argument &key
|
||||
(name nil name-bound?)
|
||||
(char nil char-bound?)
|
||||
(doc nil doc-bound?)
|
||||
(fun nil fun-bound?)
|
||||
(switch? nil switch?-bound?)
|
||||
(option? nil option?-bound?)
|
||||
(action? nil action?-bound?))
|
||||
"Return a modified version of ARGUMENT."
|
||||
(declare (indent 1))
|
||||
(let ((copy (guix-command-copy-argument argument)))
|
||||
(and name-bound? (setf (guix-command-argument-name copy) name))
|
||||
(and char-bound? (setf (guix-command-argument-char copy) char))
|
||||
(and doc-bound? (setf (guix-command-argument-doc copy) doc))
|
||||
(and fun-bound? (setf (guix-command-argument-fun copy) fun))
|
||||
(and switch?-bound? (setf (guix-command-argument-switch? copy) switch?))
|
||||
(and option?-bound? (setf (guix-command-argument-option? copy) option?))
|
||||
(and action?-bound? (setf (guix-command-argument-action? copy) action?))
|
||||
copy))
|
||||
|
||||
(defun guix-command-modify-argument-from-alist (argument alist)
|
||||
"Return a modified version of ARGUMENT or nil if it wasn't modified.
|
||||
Each assoc from ALIST have a form (NAME . PLIST). NAME is an
|
||||
argument name. PLIST is a property list of argument parameters
|
||||
to be modified."
|
||||
(let* ((name (guix-command-argument-name argument))
|
||||
(plist (guix-assoc-value alist name)))
|
||||
(when plist
|
||||
(apply #'guix-command-modify-argument
|
||||
argument plist))))
|
||||
|
||||
(defmacro guix-command-define-argument-improver (name alist)
|
||||
"Define NAME variable and function to modify an argument from ALIST."
|
||||
(declare (indent 1))
|
||||
`(progn
|
||||
(defvar ,name ,alist)
|
||||
(defun ,name (argument)
|
||||
(guix-command-modify-argument-from-alist argument ,name))))
|
||||
|
||||
(guix-command-define-argument-improver
|
||||
guix-command-improve-action-argument
|
||||
'(("graph" :char ?G)
|
||||
("environment" :char ?E)
|
||||
("publish" :char ?u)
|
||||
("pull" :char ?P)
|
||||
("size" :char ?z)))
|
||||
|
||||
(guix-command-define-argument-improver
|
||||
guix-command-improve-common-argument
|
||||
'(("--help" :switch? nil)
|
||||
("--version" :switch? nil)))
|
||||
|
||||
(guix-command-define-argument-improver
|
||||
guix-command-improve-target-argument
|
||||
'(("--target" :char ?T)))
|
||||
|
||||
(guix-command-define-argument-improver
|
||||
guix-command-improve-system-type-argument
|
||||
'(("--system" :fun guix-read-system-type)))
|
||||
|
||||
(guix-command-define-argument-improver
|
||||
guix-command-improve-load-path-argument
|
||||
'(("--load-path" :fun read-directory-name)))
|
||||
|
||||
(guix-command-define-argument-improver
|
||||
guix-command-improve-search-paths-argument
|
||||
'(("--search-paths" :char ?P)))
|
||||
|
||||
(guix-command-define-argument-improver
|
||||
guix-command-improve-substitute-urls-argument
|
||||
'(("--substitute-urls" :char ?U)))
|
||||
|
||||
(guix-command-define-argument-improver
|
||||
guix-command-improve-hash-argument
|
||||
'(("--format" :fun guix-read-hash-format)))
|
||||
|
||||
(guix-command-define-argument-improver
|
||||
guix-command-improve-key-policy-argument
|
||||
'(("--key-download" :fun guix-read-key-policy)))
|
||||
|
||||
(defvar guix-command-improve-common-build-argument
|
||||
'(("--no-substitutes" :char ?s)
|
||||
("--no-build-hook" :char ?h)
|
||||
("--max-silent-time" :char ?x)))
|
||||
|
||||
(defun guix-command-improve-common-build-argument (argument)
|
||||
(guix-command-modify-argument-from-alist
|
||||
argument
|
||||
(append guix-command-improve-load-path-argument
|
||||
guix-command-improve-substitute-urls-argument
|
||||
guix-command-improve-common-build-argument)))
|
||||
|
||||
(guix-command-define-argument-improver
|
||||
guix-command-improve-archive-argument
|
||||
'(("--generate-key" :char ?k)))
|
||||
|
||||
(guix-command-define-argument-improver
|
||||
guix-command-improve-build-argument
|
||||
'(("--no-grafts" :char ?g)
|
||||
("--root" :fun guix-read-file-name)
|
||||
("--sources" :char ?S :fun guix-read-source-type :switch? nil)
|
||||
("--with-source" :fun guix-read-file-name)))
|
||||
|
||||
(guix-command-define-argument-improver
|
||||
guix-command-improve-environment-argument
|
||||
'(("--exec" :fun read-shell-command)
|
||||
("--load" :fun guix-read-file-name)))
|
||||
|
||||
(guix-command-define-argument-improver
|
||||
guix-command-improve-gc-argument
|
||||
'(("--list-dead" :char ?D)
|
||||
("--list-live" :char ?L)
|
||||
("--referrers" :char ?f)
|
||||
("--verify" :fun guix-read-verify-options-string)))
|
||||
|
||||
(guix-command-define-argument-improver
|
||||
guix-command-improve-graph-argument
|
||||
'(("--type" :fun guix-read-graph-type)))
|
||||
|
||||
(guix-command-define-argument-improver
|
||||
guix-command-improve-import-argument
|
||||
'(("cran" :char ?r)))
|
||||
|
||||
(guix-command-define-argument-improver
|
||||
guix-command-improve-import-elpa-argument
|
||||
'(("--archive" :fun guix-read-elpa-archive)))
|
||||
|
||||
(guix-command-define-argument-improver
|
||||
guix-command-improve-lint-argument
|
||||
'(("--checkers" :fun guix-read-lint-checker-names-string)))
|
||||
|
||||
(guix-command-define-argument-improver
|
||||
guix-command-improve-package-argument
|
||||
;; Unlike all other options, --install/--remove do not have a form
|
||||
;; '--install=foo,bar' but '--install foo bar' instead, so we need
|
||||
;; some tweaks.
|
||||
'(("--install"
|
||||
:name "--install " :fun guix-read-package-names-string
|
||||
:switch? nil :option? t)
|
||||
("--remove"
|
||||
:name "--remove " :fun guix-read-package-names-string
|
||||
:switch? nil :option? t)
|
||||
("--install-from-file" :fun guix-read-file-name)
|
||||
("--manifest" :fun guix-read-file-name)
|
||||
("--do-not-upgrade" :char ?U)
|
||||
("--roll-back" :char ?R)
|
||||
("--show" :char ?w :fun guix-read-package-name)))
|
||||
|
||||
(guix-command-define-argument-improver
|
||||
guix-command-improve-refresh-argument
|
||||
'(("--select" :fun guix-read-refresh-subset)
|
||||
("--key-server" :char ?S)))
|
||||
|
||||
(guix-command-define-argument-improver
|
||||
guix-command-improve-size-argument
|
||||
'(("--map-file" :fun guix-read-file-name)))
|
||||
|
||||
(guix-command-define-argument-improver
|
||||
guix-command-improve-system-argument
|
||||
'(("disk-image" :char ?D)
|
||||
("vm-image" :char ?V)
|
||||
("--on-error" :char ?E)
|
||||
("--no-grub" :char ?g)
|
||||
("--full-boot" :char ?b)))
|
||||
|
||||
(defvar guix-command-argument-improvers
|
||||
'((()
|
||||
guix-command-improve-action-argument)
|
||||
(("archive")
|
||||
guix-command-improve-common-build-argument
|
||||
guix-command-improve-target-argument
|
||||
guix-command-improve-system-type-argument
|
||||
guix-command-improve-archive-argument)
|
||||
(("build")
|
||||
guix-command-improve-common-build-argument
|
||||
guix-command-improve-target-argument
|
||||
guix-command-improve-system-type-argument
|
||||
guix-command-improve-build-argument)
|
||||
(("download")
|
||||
guix-command-improve-hash-argument)
|
||||
(("hash")
|
||||
guix-command-improve-hash-argument)
|
||||
(("environment")
|
||||
guix-command-improve-common-build-argument
|
||||
guix-command-improve-search-paths-argument
|
||||
guix-command-improve-system-type-argument
|
||||
guix-command-improve-environment-argument)
|
||||
(("gc")
|
||||
guix-command-improve-gc-argument)
|
||||
(("graph")
|
||||
guix-command-improve-graph-argument)
|
||||
(("import")
|
||||
guix-command-improve-import-argument)
|
||||
(("import" "gnu")
|
||||
guix-command-improve-key-policy-argument)
|
||||
(("import" "elpa")
|
||||
guix-command-improve-import-elpa-argument)
|
||||
(("lint")
|
||||
guix-command-improve-lint-argument)
|
||||
(("package")
|
||||
guix-command-improve-common-build-argument
|
||||
guix-command-improve-search-paths-argument
|
||||
guix-command-improve-package-argument)
|
||||
(("refresh")
|
||||
guix-command-improve-key-policy-argument
|
||||
guix-command-improve-refresh-argument)
|
||||
(("size")
|
||||
guix-command-improve-system-type-argument
|
||||
guix-command-improve-substitute-urls-argument
|
||||
guix-command-improve-size-argument)
|
||||
(("system")
|
||||
guix-command-improve-common-build-argument
|
||||
guix-command-improve-system-argument))
|
||||
"Alist of guix commands and argument improvers for them.")
|
||||
|
||||
(defun guix-command-improve-argument (argument improvers)
|
||||
"Return ARGUMENT modified with IMPROVERS."
|
||||
(or (cl-some (lambda (improver)
|
||||
(funcall improver argument))
|
||||
improvers)
|
||||
argument))
|
||||
|
||||
(defun guix-command-improve-arguments (arguments commands)
|
||||
"Return ARGUMENTS for 'guix COMMANDS ...' modified for popup interface."
|
||||
(let ((improvers (cons 'guix-command-improve-common-argument
|
||||
(guix-assoc-value guix-command-argument-improvers
|
||||
commands))))
|
||||
(mapcar (lambda (argument)
|
||||
(guix-command-improve-argument argument improvers))
|
||||
arguments)))
|
||||
|
||||
(defun guix-command-parse-arguments (&optional commands)
|
||||
"Return a list of parsed 'guix COMMANDS ...' arguments."
|
||||
(with-temp-buffer
|
||||
(insert (guix-help-string commands))
|
||||
(let (args)
|
||||
(guix-while-search guix-help-parse-option-regexp
|
||||
(let* ((short (match-string-no-properties 1))
|
||||
(name (match-string-no-properties 2))
|
||||
(arg (match-string-no-properties 3))
|
||||
(doc (match-string-no-properties 4))
|
||||
(char (if short
|
||||
(elt short 1) ; short option letter
|
||||
(elt name 2))) ; first letter of the long option
|
||||
;; If "--foo=bar" or "--foo[=bar]" then it is 'option'.
|
||||
(option? (not (string= "" arg)))
|
||||
;; If "--foo" or "--foo[=bar]" then it is 'switch'.
|
||||
(switch? (or (string= "" arg)
|
||||
(eq ?\[ (elt arg 0)))))
|
||||
(push (guix-command-make-argument
|
||||
:name name
|
||||
:char char
|
||||
:doc doc
|
||||
:switch? switch?
|
||||
:option? option?)
|
||||
args)))
|
||||
(guix-while-search guix-help-parse-command-regexp
|
||||
(let* ((name (match-string-no-properties 1))
|
||||
(char (elt name 0)))
|
||||
(push (guix-command-make-argument
|
||||
:name name
|
||||
:char char
|
||||
:fun (guix-command-action-name commands name)
|
||||
:action? t)
|
||||
args)))
|
||||
args)))
|
||||
|
||||
(defun guix-command-rest-argument (&optional commands)
|
||||
"Return '--' argument for COMMANDS."
|
||||
(cl-flet ((argument (&rest args)
|
||||
(apply #'guix-command-make-argument
|
||||
:name "-- " :char ?= :option? t args)))
|
||||
(let ((command (car commands)))
|
||||
(cond
|
||||
((member command '("archive" "build" "graph" "edit"
|
||||
"environment" "lint" "refresh"))
|
||||
(argument :doc "Packages" :fun 'guix-read-package-names-string))
|
||||
((string= command "download")
|
||||
(argument :doc "URL"))
|
||||
((string= command "gc")
|
||||
(argument :doc "Paths" :fun 'guix-read-file-name))
|
||||
((member command '("hash" "system"))
|
||||
(argument :doc "File" :fun 'guix-read-file-name))
|
||||
((string= command "size")
|
||||
(argument :doc "Package" :fun 'guix-read-package-name))
|
||||
((equal commands '("import" "nix"))
|
||||
(argument :doc "Nixpkgs Attribute"))
|
||||
;; Other 'guix import' subcommands, but not 'import' itself.
|
||||
((and (cdr commands)
|
||||
(string= command "import"))
|
||||
(argument :doc "Package name"))))))
|
||||
|
||||
(defun guix-command-additional-arguments (&optional commands)
|
||||
"Return additional arguments for COMMANDS."
|
||||
(let ((rest-arg (guix-command-rest-argument commands)))
|
||||
(and rest-arg (list rest-arg))))
|
||||
|
||||
;; Ideally only `guix-command-arguments' function should exist with the
|
||||
;; contents of `guix-command-all-arguments', but we need to make a
|
||||
;; special case for `guix-command-complex-with-shared-arguments' commands.
|
||||
|
||||
(defun guix-command-all-arguments (&optional commands)
|
||||
"Return list of all arguments for 'guix COMMANDS ...'."
|
||||
(let ((parsed (guix-command-parse-arguments commands)))
|
||||
(append (guix-command-improve-arguments parsed commands)
|
||||
(guix-command-additional-arguments commands))))
|
||||
|
||||
(guix-memoized-defalias guix-command-all-arguments-memoize
|
||||
guix-command-all-arguments)
|
||||
|
||||
(defun guix-command-arguments (&optional commands)
|
||||
"Return list of arguments for 'guix COMMANDS ...'."
|
||||
(let ((command (car commands)))
|
||||
(if (member command
|
||||
guix-command-complex-with-shared-arguments)
|
||||
;; Take actions only for 'guix system', and switches+options for
|
||||
;; 'guix system foo'.
|
||||
(funcall (if (null (cdr commands))
|
||||
#'cl-remove-if-not
|
||||
#'cl-remove-if)
|
||||
#'guix-command-argument-action?
|
||||
(guix-command-all-arguments-memoize (list command)))
|
||||
(guix-command-all-arguments commands))))
|
||||
|
||||
(defun guix-command-switch->popup-switch (switch)
|
||||
"Return popup switch from command SWITCH argument."
|
||||
(list (guix-command-argument-char switch)
|
||||
(or (guix-command-argument-doc switch)
|
||||
"Unknown")
|
||||
(guix-command-argument-name switch)))
|
||||
|
||||
(defun guix-command-option->popup-option (option)
|
||||
"Return popup option from command OPTION argument."
|
||||
(list (guix-command-argument-char option)
|
||||
(or (guix-command-argument-doc option)
|
||||
"Unknown")
|
||||
(let ((name (guix-command-argument-name option)))
|
||||
(if (string-match-p " \\'" name) ; ends with space
|
||||
name
|
||||
(concat name "=")))
|
||||
(or (guix-command-argument-fun option)
|
||||
'read-from-minibuffer)))
|
||||
|
||||
(defun guix-command-action->popup-action (action)
|
||||
"Return popup action from command ACTION argument."
|
||||
(list (guix-command-argument-char action)
|
||||
(or (guix-command-argument-doc action)
|
||||
(guix-command-argument-name action)
|
||||
"Unknown")
|
||||
(guix-command-argument-fun action)))
|
||||
|
||||
(defun guix-command-sort-arguments (arguments)
|
||||
"Sort ARGUMENTS by name in alphabetical order."
|
||||
(sort arguments
|
||||
(lambda (a1 a2)
|
||||
(let ((name1 (guix-command-argument-name a1))
|
||||
(name2 (guix-command-argument-name a2)))
|
||||
(cond ((null name1) nil)
|
||||
((null name2) t)
|
||||
(t (string< name1 name2)))))))
|
||||
|
||||
(defun guix-command-switches (arguments)
|
||||
"Return switches from ARGUMENTS."
|
||||
(cl-remove-if-not #'guix-command-argument-switch? arguments))
|
||||
|
||||
(defun guix-command-options (arguments)
|
||||
"Return options from ARGUMENTS."
|
||||
(cl-remove-if-not #'guix-command-argument-option? arguments))
|
||||
|
||||
(defun guix-command-actions (arguments)
|
||||
"Return actions from ARGUMENTS."
|
||||
(cl-remove-if-not #'guix-command-argument-action? arguments))
|
||||
|
||||
(defun guix-command-post-process-args (args)
|
||||
"Adjust appropriately command line ARGS returned from popup command."
|
||||
;; XXX We need to split "--install foo bar" and similar strings into
|
||||
;; lists of strings. But some commands (e.g., 'guix hash') accept a
|
||||
;; file name as the 'rest' argument, and as file names may contain
|
||||
;; spaces, splitting by spaces will break such names. For example, the
|
||||
;; following argument: "-- /tmp/file with spaces" will be transformed
|
||||
;; into the following list: ("--" "/tmp/file" "with" "spaces") instead
|
||||
;; of the wished ("--" "/tmp/file with spaces").
|
||||
(let* (rest
|
||||
(rx (rx string-start
|
||||
(or "-- " "--install " "--remove ")))
|
||||
(args (mapcar (lambda (arg)
|
||||
(if (string-match-p rx arg)
|
||||
(progn (push (split-string arg) rest)
|
||||
nil)
|
||||
arg))
|
||||
args)))
|
||||
(if rest
|
||||
(apply #'append (delq nil args) rest)
|
||||
args)))
|
||||
|
||||
|
||||
;;; 'Execute' actions
|
||||
|
||||
(defvar guix-command-default-execute-arguments
|
||||
(list
|
||||
(guix-command-make-argument
|
||||
:name "repl" :char ?r :doc "Run in Guix REPL")
|
||||
(guix-command-make-argument
|
||||
:name "shell" :char ?s :doc "Run in shell")
|
||||
(guix-command-make-argument
|
||||
:name "copy" :char ?c :doc "Copy command line"))
|
||||
"List of default 'execute' action arguments.")
|
||||
|
||||
(defvar guix-command-additional-execute-arguments
|
||||
(let ((graph-arg (guix-command-make-argument
|
||||
:name "view" :char ?v :doc "View graph")))
|
||||
`((("build")
|
||||
,(guix-command-make-argument
|
||||
:name "log" :char ?l :doc "View build log"))
|
||||
(("graph") ,graph-arg)
|
||||
(("size")
|
||||
,(guix-command-make-argument
|
||||
:name "view" :char ?v :doc "View map"))
|
||||
(("system" "dmd-graph") ,graph-arg)
|
||||
(("system" "extension-graph") ,graph-arg)))
|
||||
"Alist of guix commands and additional 'execute' action arguments.")
|
||||
|
||||
(defun guix-command-execute-arguments (commands)
|
||||
"Return a list of 'execute' action arguments for COMMANDS."
|
||||
(mapcar (lambda (arg)
|
||||
(guix-command-modify-argument arg
|
||||
:action? t
|
||||
:fun (guix-command-action-name
|
||||
commands (guix-command-argument-name arg))))
|
||||
(append guix-command-default-execute-arguments
|
||||
(guix-assoc-value
|
||||
guix-command-additional-execute-arguments commands))))
|
||||
|
||||
(defvar guix-command-special-executors
|
||||
'((("environment")
|
||||
("repl" . guix-run-environment-command-in-repl))
|
||||
(("pull")
|
||||
("repl" . guix-run-pull-command-in-repl))
|
||||
(("build")
|
||||
("log" . guix-run-view-build-log))
|
||||
(("graph")
|
||||
("view" . guix-run-view-graph))
|
||||
(("size")
|
||||
("view" . guix-run-view-size-map))
|
||||
(("system" "dmd-graph")
|
||||
("view" . guix-run-view-graph))
|
||||
(("system" "extension-graph")
|
||||
("view" . guix-run-view-graph)))
|
||||
"Alist of guix commands and alists of special executers for them.
|
||||
See also `guix-command-default-executors'.")
|
||||
|
||||
(defvar guix-command-default-executors
|
||||
'(("repl" . guix-run-command-in-repl)
|
||||
("shell" . guix-run-command-in-shell)
|
||||
("copy" . guix-copy-command-as-kill))
|
||||
"Alist of default executers for action names.")
|
||||
|
||||
(defun guix-command-executor (commands name)
|
||||
"Return function to run command line arguments for guix COMMANDS."
|
||||
(or (guix-assoc-value guix-command-special-executors commands name)
|
||||
(guix-assoc-value guix-command-default-executors name)))
|
||||
|
||||
(defun guix-run-environment-command-in-repl (args)
|
||||
"Run 'guix ARGS ...' environment command in Guix REPL."
|
||||
;; As 'guix environment' usually tries to run another process, it may
|
||||
;; be fun but not wise to run this command in Geiser REPL.
|
||||
(when (or (member "--dry-run" args)
|
||||
(member "--search-paths" args)
|
||||
(when (y-or-n-p
|
||||
(format "'%s' command will spawn an external process.
|
||||
Do you really want to execute this command in Geiser REPL? "
|
||||
(guix-command-string args)))
|
||||
(message "May \"M-x shell-mode\" be with you!")
|
||||
t))
|
||||
(guix-run-command-in-repl args)))
|
||||
|
||||
(defun guix-run-pull-command-in-repl (args)
|
||||
"Run 'guix ARGS ...' pull command in Guix REPL.
|
||||
Perform pull-specific actions after operation, see
|
||||
`guix-after-pull-hook' and `guix-update-after-pull'."
|
||||
(guix-eval-in-repl
|
||||
(apply #'guix-make-guile-expression 'guix-command args)
|
||||
nil 'pull))
|
||||
|
||||
(defun guix-run-view-build-log (args)
|
||||
"Add --log-file to ARGS, run 'guix ARGS ...' build command, and
|
||||
open the log file(s)."
|
||||
(let* ((args (if (member "--log-file" args)
|
||||
args
|
||||
(apply #'list (car args) "--log-file" (cdr args))))
|
||||
(output (guix-command-output args))
|
||||
(files (split-string output "\n" t)))
|
||||
(dolist (file files)
|
||||
(guix-find-file-or-url file)
|
||||
(guix-build-log-mode))))
|
||||
|
||||
(defun guix-run-view-graph (args)
|
||||
"Run 'guix ARGS ...' graph command, make the image and open it."
|
||||
(let* ((graph-file (guix-dot-file-name))
|
||||
(dot-args (guix-dot-arguments graph-file)))
|
||||
(if (guix-eval-read (guix-make-guile-expression
|
||||
'pipe-guix-output args dot-args))
|
||||
(guix-find-file graph-file)
|
||||
(error "Couldn't create a graph"))))
|
||||
|
||||
(defun guix-run-view-size-map (args)
|
||||
"Run 'guix ARGS ...' size command, and open the map file."
|
||||
(let* ((wished-map-file
|
||||
(cl-some (lambda (arg)
|
||||
(and (string-match "--map-file=\\(.+\\)" arg)
|
||||
(match-string 1 arg)))
|
||||
args))
|
||||
(map-file (or wished-map-file (guix-png-file-name)))
|
||||
(args (if wished-map-file
|
||||
args
|
||||
(apply #'list
|
||||
(car args)
|
||||
(concat "--map-file=" map-file)
|
||||
(cdr args)))))
|
||||
(guix-command-output args)
|
||||
(guix-find-file map-file)))
|
||||
|
||||
|
||||
;;; Generating popups, actions, etc.
|
||||
|
||||
(defmacro guix-command-define-popup-action (name &optional commands)
|
||||
"Define NAME function to generate (if needed) and run popup for COMMANDS."
|
||||
(declare (indent 1) (debug t))
|
||||
(let* ((popup-fun (guix-command-symbol `(,@commands "popup")))
|
||||
(doc (format "Call `%s' (generate it if needed)."
|
||||
popup-fun)))
|
||||
`(defun ,name (&optional arg)
|
||||
,doc
|
||||
(interactive "P")
|
||||
(unless (fboundp ',popup-fun)
|
||||
(guix-command-generate-popup ',popup-fun ',commands))
|
||||
(,popup-fun arg))))
|
||||
|
||||
(defmacro guix-command-define-execute-action (name executor
|
||||
&optional commands)
|
||||
"Define NAME function to execute the current action for guix COMMANDS.
|
||||
EXECUTOR function is called with the current command line arguments."
|
||||
(declare (indent 1) (debug t))
|
||||
(let* ((arguments-fun (guix-command-symbol `(,@commands "arguments")))
|
||||
(doc (format "Call `%s' with the current popup arguments."
|
||||
executor)))
|
||||
`(defun ,name (&rest args)
|
||||
,doc
|
||||
(interactive (,arguments-fun))
|
||||
(,executor (append ',commands
|
||||
(guix-command-post-process-args args))))))
|
||||
|
||||
(defun guix-command-generate-popup-actions (actions &optional commands)
|
||||
"Generate 'popup' commands from ACTIONS arguments for guix COMMANDS."
|
||||
(dolist (action actions)
|
||||
(let ((fun (guix-command-argument-fun action)))
|
||||
(unless (fboundp fun)
|
||||
(eval `(guix-command-define-popup-action ,fun
|
||||
,(append commands
|
||||
(list (guix-command-argument-name action)))))))))
|
||||
|
||||
(defun guix-command-generate-execute-actions (actions &optional commands)
|
||||
"Generate 'execute' commands from ACTIONS arguments for guix COMMANDS."
|
||||
(dolist (action actions)
|
||||
(let ((fun (guix-command-argument-fun action)))
|
||||
(unless (fboundp fun)
|
||||
(eval `(guix-command-define-execute-action ,fun
|
||||
,(guix-command-executor
|
||||
commands (guix-command-argument-name action))
|
||||
,commands))))))
|
||||
|
||||
(defun guix-command-generate-popup (name &optional commands)
|
||||
"Define NAME popup with 'guix COMMANDS ...' interface."
|
||||
(let* ((command (car commands))
|
||||
(man-page (concat "guix" (and command (concat "-" command))))
|
||||
(doc (format "Popup window for '%s' command."
|
||||
(guix-concat-strings (cons "guix" commands)
|
||||
" ")))
|
||||
(args (guix-command-arguments commands))
|
||||
(switches (guix-command-sort-arguments
|
||||
(guix-command-switches args)))
|
||||
(options (guix-command-sort-arguments
|
||||
(guix-command-options args)))
|
||||
(popup-actions (guix-command-sort-arguments
|
||||
(guix-command-actions args)))
|
||||
(execute-actions (unless popup-actions
|
||||
(guix-command-execute-arguments commands)))
|
||||
(actions (or popup-actions execute-actions)))
|
||||
(if popup-actions
|
||||
(guix-command-generate-popup-actions popup-actions commands)
|
||||
(guix-command-generate-execute-actions execute-actions commands))
|
||||
(eval
|
||||
`(guix-define-popup ,name
|
||||
,doc
|
||||
'guix-commands
|
||||
:man-page ,man-page
|
||||
:switches ',(mapcar #'guix-command-switch->popup-switch switches)
|
||||
:options ',(mapcar #'guix-command-option->popup-option options)
|
||||
:actions ',(mapcar #'guix-command-action->popup-action actions)
|
||||
:max-action-columns 4))))
|
||||
|
||||
;;;###autoload (autoload 'guix "guix-command" "Popup window for 'guix'." t)
|
||||
(guix-command-define-popup-action guix)
|
||||
|
||||
(defalias 'guix-edit-action #'guix-edit)
|
||||
|
||||
|
||||
(defvar guix-command-font-lock-keywords
|
||||
(eval-when-compile
|
||||
`((,(rx "("
|
||||
(group "guix-command-define-"
|
||||
(or "popup-action"
|
||||
"execute-action"
|
||||
"argument-improver"))
|
||||
symbol-end
|
||||
(zero-or-more blank)
|
||||
(zero-or-one
|
||||
(group (one-or-more (or (syntax word) (syntax symbol))))))
|
||||
(1 font-lock-keyword-face)
|
||||
(2 font-lock-function-name-face nil t)))))
|
||||
|
||||
(font-lock-add-keywords 'emacs-lisp-mode guix-command-font-lock-keywords)
|
||||
|
||||
(provide 'guix-command)
|
||||
|
||||
;;; guix-command.el ends here
|
||||
@@ -0,0 +1,38 @@
|
||||
;;; guix-config.el --- Compile-time configuration of Guix.
|
||||
|
||||
;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
|
||||
;; Copyright © 2015 Alex Kost <alezost@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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(defconst guix-config-emacs-interface-directory
|
||||
(replace-regexp-in-string "${prefix}" "@prefix@" "@emacsuidir@"))
|
||||
|
||||
(defconst guix-config-state-directory
|
||||
;; This must match `NIX_STATE_DIR' as defined in `daemon.am'.
|
||||
(or (getenv "NIX_STATE_DIR") "@guix_localstatedir@/guix"))
|
||||
|
||||
(defconst guix-config-guile-program "@GUILE@"
|
||||
"Name of the 'guile' executable defined at configure time.")
|
||||
|
||||
(defconst guix-config-dot-program "@DOT_USER_PROGRAM@"
|
||||
"Name of the 'dot' executable defined at configure time.")
|
||||
|
||||
(provide 'guix-config)
|
||||
|
||||
;;; guix-config.el ends here
|
||||
@@ -0,0 +1,375 @@
|
||||
;;; guix-devel.el --- Development tools -*- lexical-binding: t -*-
|
||||
|
||||
;; Copyright © 2015 Alex Kost <alezost@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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; This file provides commands useful for developing Guix (or even
|
||||
;; arbitrary Guile code) with Geiser.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'lisp-mode)
|
||||
(require 'guix-guile)
|
||||
(require 'guix-geiser)
|
||||
(require 'guix-utils)
|
||||
(require 'guix-base)
|
||||
|
||||
(defgroup guix-devel nil
|
||||
"Settings for Guix development utils."
|
||||
:group 'guix)
|
||||
|
||||
(defgroup guix-devel-faces nil
|
||||
"Faces for `guix-devel-mode'."
|
||||
:group 'guix-devel
|
||||
:group 'guix-faces)
|
||||
|
||||
(defface guix-devel-modify-phases-keyword
|
||||
'((t :inherit font-lock-preprocessor-face))
|
||||
"Face for a `modify-phases' keyword ('delete', 'replace', etc.)."
|
||||
:group 'guix-devel-faces)
|
||||
|
||||
(defface guix-devel-gexp-symbol
|
||||
'((t :inherit font-lock-keyword-face))
|
||||
"Face for gexp symbols ('#~', '#$', etc.).
|
||||
See Info node `(guix) G-Expressions'."
|
||||
:group 'guix-devel-faces)
|
||||
|
||||
(defcustom guix-devel-activate-mode t
|
||||
"If non-nil, then `guix-devel-mode' is automatically activated
|
||||
in Scheme buffers."
|
||||
:type 'boolean
|
||||
:group 'guix-devel)
|
||||
|
||||
(defun guix-devel-use-modules (&rest modules)
|
||||
"Use guile MODULES."
|
||||
(apply #'guix-geiser-call "use-modules" modules))
|
||||
|
||||
(defun guix-devel-use-module (&optional module)
|
||||
"Use guile MODULE in the current Geiser REPL.
|
||||
MODULE is a string with the module name - e.g., \"(ice-9 match)\".
|
||||
Interactively, use the module defined by the current scheme file."
|
||||
(interactive (list (guix-guile-current-module)))
|
||||
(guix-devel-use-modules module)
|
||||
(message "Using %s module." module))
|
||||
|
||||
(defun guix-devel-copy-module-as-kill ()
|
||||
"Put the name of the current guile module into `kill-ring'."
|
||||
(interactive)
|
||||
(guix-copy-as-kill (guix-guile-current-module)))
|
||||
|
||||
(defun guix-devel-setup-repl (&optional repl)
|
||||
"Setup REPL for using `guix-devel-...' commands."
|
||||
(guix-devel-use-modules "(guix monad-repl)"
|
||||
"(guix scripts)"
|
||||
"(guix store)"
|
||||
"(guix ui)")
|
||||
;; Without this workaround, the warning/build output disappears. See
|
||||
;; <https://github.com/jaor/geiser/issues/83> for details.
|
||||
(guix-geiser-eval-in-repl-synchronously
|
||||
"(begin
|
||||
(guix-warning-port (current-warning-port))
|
||||
(current-build-output-port (current-error-port)))"
|
||||
repl 'no-history 'no-display))
|
||||
|
||||
(defvar guix-devel-repl-processes nil
|
||||
"List of REPL processes configured by `guix-devel-setup-repl'.")
|
||||
|
||||
(defun guix-devel-setup-repl-maybe (&optional repl)
|
||||
"Setup (if needed) REPL for using `guix-devel-...' commands."
|
||||
(let ((process (get-buffer-process (or repl (guix-geiser-repl)))))
|
||||
(when (and process
|
||||
(not (memq process guix-devel-repl-processes)))
|
||||
(guix-devel-setup-repl repl)
|
||||
(push process guix-devel-repl-processes))))
|
||||
|
||||
(defmacro guix-devel-with-definition (def-var &rest body)
|
||||
"Run BODY with the current guile definition bound to DEF-VAR.
|
||||
Bind DEF-VAR variable to the name of the current top-level
|
||||
definition, setup the current REPL, use the current module, and
|
||||
run BODY."
|
||||
(declare (indent 1) (debug (symbolp body)))
|
||||
`(let ((,def-var (guix-guile-current-definition)))
|
||||
(guix-devel-setup-repl-maybe)
|
||||
(guix-devel-use-modules (guix-guile-current-module))
|
||||
,@body))
|
||||
|
||||
(defun guix-devel-build-package-definition ()
|
||||
"Build a package defined by the current top-level variable definition."
|
||||
(interactive)
|
||||
(guix-devel-with-definition def
|
||||
(when (or (not guix-operation-confirm)
|
||||
(guix-operation-prompt (format "Build '%s'?" def)))
|
||||
(guix-geiser-eval-in-repl
|
||||
(concat ",run-in-store "
|
||||
(guix-guile-make-call-expression
|
||||
"build-package" def
|
||||
"#:use-substitutes?" (guix-guile-boolean
|
||||
guix-use-substitutes)
|
||||
"#:dry-run?" (guix-guile-boolean guix-dry-run)))))))
|
||||
|
||||
(defun guix-devel-build-package-source ()
|
||||
"Build the source of the current package definition."
|
||||
(interactive)
|
||||
(guix-devel-with-definition def
|
||||
(when (or (not guix-operation-confirm)
|
||||
(guix-operation-prompt
|
||||
(format "Build '%s' package source?" def)))
|
||||
(guix-geiser-eval-in-repl
|
||||
(concat ",run-in-store "
|
||||
(guix-guile-make-call-expression
|
||||
"build-package-source" def
|
||||
"#:use-substitutes?" (guix-guile-boolean
|
||||
guix-use-substitutes)
|
||||
"#:dry-run?" (guix-guile-boolean guix-dry-run)))))))
|
||||
|
||||
(defun guix-devel-lint-package ()
|
||||
"Check the current package.
|
||||
See Info node `(guix) Invoking guix lint' for details."
|
||||
(interactive)
|
||||
(guix-devel-with-definition def
|
||||
(guix-devel-use-modules "(guix scripts lint)")
|
||||
(when (or (not guix-operation-confirm)
|
||||
(y-or-n-p (format "Lint '%s' package?" def)))
|
||||
(guix-geiser-eval-in-repl
|
||||
(format "(run-checkers %s)" def)))))
|
||||
|
||||
|
||||
;;; Font-lock
|
||||
|
||||
(defvar guix-devel-modify-phases-keyword-regexp
|
||||
(rx (+ word))
|
||||
"Regexp for a 'modify-phases' keyword ('delete', 'replace', etc.).")
|
||||
|
||||
(defun guix-devel-modify-phases-font-lock-matcher (limit)
|
||||
"Find a 'modify-phases' keyword.
|
||||
This function is used as a MATCHER for `font-lock-keywords'."
|
||||
(ignore-errors
|
||||
(down-list)
|
||||
(or (re-search-forward guix-devel-modify-phases-keyword-regexp
|
||||
limit t)
|
||||
(set-match-data nil))
|
||||
(up-list)
|
||||
t))
|
||||
|
||||
(defun guix-devel-modify-phases-font-lock-pre ()
|
||||
"Skip the next sexp, and return the end point of the current list.
|
||||
This function is used as a PRE-MATCH-FORM for `font-lock-keywords'
|
||||
to find 'modify-phases' keywords."
|
||||
(let ((in-comment? (nth 4 (syntax-ppss))))
|
||||
;; If 'modify-phases' is commented, do not try to search for its
|
||||
;; keywords.
|
||||
(unless in-comment?
|
||||
(ignore-errors (forward-sexp))
|
||||
(save-excursion (up-list) (point)))))
|
||||
|
||||
(defconst guix-devel-keywords
|
||||
'("call-with-compressed-output-port"
|
||||
"call-with-container"
|
||||
"call-with-decompressed-port"
|
||||
"call-with-derivation-narinfo"
|
||||
"call-with-derivation-substitute"
|
||||
"call-with-error-handling"
|
||||
"call-with-temporary-directory"
|
||||
"call-with-temporary-output-file"
|
||||
"define-enumerate-type"
|
||||
"define-gexp-compiler"
|
||||
"define-lift"
|
||||
"define-monad"
|
||||
"define-operation"
|
||||
"define-record-type*"
|
||||
"emacs-substitute-sexps"
|
||||
"emacs-substitute-variables"
|
||||
"mbegin"
|
||||
"mlet"
|
||||
"mlet*"
|
||||
"munless"
|
||||
"mwhen"
|
||||
"run-with-state"
|
||||
"run-with-store"
|
||||
"signature-case"
|
||||
"substitute*"
|
||||
"substitute-keyword-arguments"
|
||||
"test-assertm"
|
||||
"use-package-modules"
|
||||
"use-service-modules"
|
||||
"use-system-modules"
|
||||
"with-atomic-file-output"
|
||||
"with-atomic-file-replacement"
|
||||
"with-derivation-narinfo"
|
||||
"with-derivation-substitute"
|
||||
"with-directory-excursion"
|
||||
"with-error-handling"
|
||||
"with-monad"
|
||||
"with-mutex"
|
||||
"with-store"))
|
||||
|
||||
(defvar guix-devel-font-lock-keywords
|
||||
`((,(rx (or "#~" "#$" "#$@" "#+" "#+@")) .
|
||||
'guix-devel-gexp-symbol)
|
||||
(,(guix-guile-keyword-regexp (regexp-opt guix-devel-keywords))
|
||||
(1 'font-lock-keyword-face))
|
||||
(,(guix-guile-keyword-regexp "modify-phases")
|
||||
(1 'font-lock-keyword-face)
|
||||
(guix-devel-modify-phases-font-lock-matcher
|
||||
(guix-devel-modify-phases-font-lock-pre)
|
||||
nil
|
||||
(0 'guix-devel-modify-phases-keyword nil t))))
|
||||
"A list of `font-lock-keywords' for `guix-devel-mode'.")
|
||||
|
||||
|
||||
;;; Indentation
|
||||
|
||||
(defmacro guix-devel-scheme-indent (&rest rules)
|
||||
"Set `scheme-indent-function' according to RULES.
|
||||
Each rule should have a form (SYMBOL VALUE). See `put' for details."
|
||||
(declare (indent 0))
|
||||
`(progn
|
||||
,@(mapcar (lambda (rule)
|
||||
`(put ',(car rule) 'scheme-indent-function ,(cadr rule)))
|
||||
rules)))
|
||||
|
||||
(defun guix-devel-indent-package (state indent-point normal-indent)
|
||||
"Indentation rule for 'package' form."
|
||||
(let* ((package-eol (line-end-position))
|
||||
(count (if (and (ignore-errors (down-list) t)
|
||||
(< (point) package-eol)
|
||||
(looking-at "inherit\\>"))
|
||||
1
|
||||
0)))
|
||||
(lisp-indent-specform count state indent-point normal-indent)))
|
||||
|
||||
(defun guix-devel-indent-modify-phases-keyword (count)
|
||||
"Return indentation function for 'modify-phases' keywords."
|
||||
(lambda (state indent-point normal-indent)
|
||||
(when (ignore-errors
|
||||
(goto-char (nth 1 state)) ; start of keyword sexp
|
||||
(backward-up-list)
|
||||
(looking-at "(modify-phases\\>"))
|
||||
(lisp-indent-specform count state indent-point normal-indent))))
|
||||
|
||||
(defalias 'guix-devel-indent-modify-phases-keyword-1
|
||||
(guix-devel-indent-modify-phases-keyword 1))
|
||||
(defalias 'guix-devel-indent-modify-phases-keyword-2
|
||||
(guix-devel-indent-modify-phases-keyword 2))
|
||||
|
||||
(guix-devel-scheme-indent
|
||||
(bag 0)
|
||||
(build-system 0)
|
||||
(call-with-compressed-output-port 2)
|
||||
(call-with-container 1)
|
||||
(call-with-decompressed-port 2)
|
||||
(call-with-error-handling 0)
|
||||
(container-excursion 1)
|
||||
(emacs-batch-edit-file 1)
|
||||
(emacs-batch-eval 0)
|
||||
(emacs-substitute-sexps 1)
|
||||
(emacs-substitute-variables 1)
|
||||
(file-system 0)
|
||||
(graft 0)
|
||||
(manifest-entry 0)
|
||||
(manifest-pattern 0)
|
||||
(mbegin 1)
|
||||
(mlet 2)
|
||||
(mlet* 2)
|
||||
(modify-phases 1)
|
||||
(munless 1)
|
||||
(mwhen 1)
|
||||
(operating-system 0)
|
||||
(origin 0)
|
||||
(package 'guix-devel-indent-package)
|
||||
(run-with-state 1)
|
||||
(run-with-store 1)
|
||||
(signature-case 1)
|
||||
(substitute* 1)
|
||||
(substitute-keyword-arguments 1)
|
||||
(test-assertm 1)
|
||||
(with-atomic-file-output 1)
|
||||
(with-derivation-narinfo 1)
|
||||
(with-derivation-substitute 2)
|
||||
(with-directory-excursion 1)
|
||||
(with-error-handling 0)
|
||||
(with-monad 1)
|
||||
(with-mutex 1)
|
||||
(with-store 1)
|
||||
(wrap-program 1)
|
||||
|
||||
;; 'modify-phases' keywords:
|
||||
(replace 'guix-devel-indent-modify-phases-keyword-1)
|
||||
(add-after 'guix-devel-indent-modify-phases-keyword-2)
|
||||
(add-before 'guix-devel-indent-modify-phases-keyword-2))
|
||||
|
||||
|
||||
(defvar guix-devel-keys-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(define-key map (kbd "b") 'guix-devel-build-package-definition)
|
||||
(define-key map (kbd "s") 'guix-devel-build-package-source)
|
||||
(define-key map (kbd "l") 'guix-devel-lint-package)
|
||||
(define-key map (kbd "k") 'guix-devel-copy-module-as-kill)
|
||||
(define-key map (kbd "u") 'guix-devel-use-module)
|
||||
map)
|
||||
"Keymap with subkeys for `guix-devel-mode-map'.")
|
||||
|
||||
(defvar guix-devel-mode-map
|
||||
(let ((map (make-sparse-keymap)))
|
||||
(define-key map (kbd "C-c .") guix-devel-keys-map)
|
||||
map)
|
||||
"Keymap for `guix-devel-mode'.")
|
||||
|
||||
;;;###autoload
|
||||
(define-minor-mode guix-devel-mode
|
||||
"Minor mode for `scheme-mode' buffers.
|
||||
|
||||
With a prefix argument ARG, enable the mode if ARG is positive,
|
||||
and disable it otherwise. If called from Lisp, enable the mode
|
||||
if ARG is omitted or nil.
|
||||
|
||||
When Guix Devel mode is enabled, it provides the following key
|
||||
bindings:
|
||||
|
||||
\\{guix-devel-mode-map}"
|
||||
:init-value nil
|
||||
:lighter " Guix"
|
||||
:keymap guix-devel-mode-map
|
||||
(if guix-devel-mode
|
||||
(progn
|
||||
(setq-local font-lock-multiline t)
|
||||
(font-lock-add-keywords nil guix-devel-font-lock-keywords))
|
||||
(setq-local font-lock-multiline nil)
|
||||
(font-lock-remove-keywords nil guix-devel-font-lock-keywords))
|
||||
(when font-lock-mode
|
||||
(font-lock-fontify-buffer)))
|
||||
|
||||
;;;###autoload
|
||||
(defun guix-devel-activate-mode-maybe ()
|
||||
"Activate `guix-devel-mode' depending on
|
||||
`guix-devel-activate-mode' variable."
|
||||
(when guix-devel-activate-mode
|
||||
(guix-devel-mode)))
|
||||
|
||||
|
||||
(defvar guix-devel-emacs-font-lock-keywords
|
||||
(eval-when-compile
|
||||
`((,(rx "(" (group "guix-devel-with-definition") symbol-end) . 1))))
|
||||
|
||||
(font-lock-add-keywords 'emacs-lisp-mode
|
||||
guix-devel-emacs-font-lock-keywords)
|
||||
|
||||
(provide 'guix-devel)
|
||||
|
||||
;;; guix-devel.el ends here
|
||||
@@ -0,0 +1,88 @@
|
||||
;;; guix-external.el --- External programs -*- lexical-binding: t -*-
|
||||
|
||||
;; Copyright © 2015 Alex Kost <alezost@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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; This file provides auxiliary code for running external programs.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'guix-config)
|
||||
|
||||
(defgroup guix-external nil
|
||||
"Settings for external programs."
|
||||
:group 'guix)
|
||||
|
||||
(defcustom guix-guile-program guix-config-guile-program
|
||||
"Name of the 'guile' executable used for Guix REPL.
|
||||
May be either a string (the name of the executable) or a list of
|
||||
strings of the form:
|
||||
|
||||
(NAME . ARGS)
|
||||
|
||||
Where ARGS is a list of arguments to the guile program."
|
||||
:type 'string
|
||||
:group 'guix-external)
|
||||
|
||||
(defcustom guix-dot-program
|
||||
(if (file-name-absolute-p guix-config-dot-program)
|
||||
guix-config-dot-program
|
||||
(executable-find "dot"))
|
||||
"Name of the 'dot' executable."
|
||||
:type 'string
|
||||
:group 'guix-external)
|
||||
|
||||
(defcustom guix-dot-default-arguments
|
||||
'("-Tpng")
|
||||
"Default arguments for 'dot' program."
|
||||
:type '(repeat string)
|
||||
:group 'guix-external)
|
||||
|
||||
(defcustom guix-dot-file-name-function #'guix-png-file-name
|
||||
"Function used to define a file name of a temporary 'dot' file.
|
||||
The function is called without arguments."
|
||||
:type '(choice (function-item guix-png-file-name)
|
||||
(function :tag "Other function"))
|
||||
:group 'guix-external)
|
||||
|
||||
(defun guix-dot-arguments (output-file &rest args)
|
||||
"Return a list of dot arguments for writing a graph into OUTPUT-FILE.
|
||||
If ARGS is nil, use `guix-dot-default-arguments'."
|
||||
(or guix-dot-program
|
||||
(error (concat "Couldn't find 'dot'.\n"
|
||||
"Set guix-dot-program to a proper value")))
|
||||
(apply #'list
|
||||
guix-dot-program
|
||||
(concat "-o" output-file)
|
||||
(or args guix-dot-default-arguments)))
|
||||
|
||||
(defun guix-dot-file-name ()
|
||||
"Call `guix-dot-file-name-function'."
|
||||
(funcall guix-dot-file-name-function))
|
||||
|
||||
(defun guix-png-file-name ()
|
||||
"Return '.png' file name in the `temporary-file-directory'."
|
||||
(concat (make-temp-name
|
||||
(concat (file-name-as-directory temporary-file-directory)
|
||||
"guix-emacs-graph-"))
|
||||
".png"))
|
||||
|
||||
(provide 'guix-external)
|
||||
|
||||
;;; guix-external.el ends here
|
||||
@@ -0,0 +1,114 @@
|
||||
;;; guix-geiser.el --- Interacting with Geiser -*- lexical-binding: t -*-
|
||||
|
||||
;; Copyright © 2015 Alex Kost <alezost@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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; This file provides functions to evaluate guile code using Geiser.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'geiser-mode)
|
||||
(require 'guix-guile)
|
||||
|
||||
(defun guix-geiser-repl ()
|
||||
"Return the current Geiser REPL."
|
||||
(or geiser-repl--repl
|
||||
(geiser-repl--repl/impl 'guile)
|
||||
(error "Geiser REPL not found")))
|
||||
|
||||
(defun guix-geiser-eval (str &optional repl)
|
||||
"Evaluate STR with guile expression using Geiser REPL.
|
||||
If REPL is nil, use the current Geiser REPL.
|
||||
Return a list of strings with result values of evaluation."
|
||||
(with-current-buffer (or repl (guix-geiser-repl))
|
||||
(let ((res (geiser-eval--send/wait `(:eval (:scm ,str)))))
|
||||
(if (geiser-eval--retort-error res)
|
||||
(error "Error in evaluating guile expression: %s"
|
||||
(geiser-eval--retort-output res))
|
||||
(cdr (assq 'result res))))))
|
||||
|
||||
(defun guix-geiser-eval-read (str &optional repl)
|
||||
"Evaluate STR with guile expression using Geiser REPL.
|
||||
Return elisp expression of the first result value of evaluation."
|
||||
;; Parsing scheme code with elisp `read' is probably not the best idea.
|
||||
(read (replace-regexp-in-string
|
||||
"#f\\|#<unspecified>" "nil"
|
||||
(replace-regexp-in-string
|
||||
"#t" "t" (car (guix-geiser-eval str repl))))))
|
||||
|
||||
(defun guix-repl-send (cmd &optional save-history)
|
||||
"Send CMD input string to the current REPL buffer.
|
||||
This is the same as `geiser-repl--send', but with SAVE-HISTORY
|
||||
argument. If SAVE-HISTORY is non-nil, save CMD in the REPL
|
||||
history."
|
||||
(when (and cmd (eq major-mode 'geiser-repl-mode))
|
||||
(geiser-repl--prepare-send)
|
||||
(goto-char (point-max))
|
||||
(comint-kill-input)
|
||||
(insert cmd)
|
||||
(let ((comint-input-filter (if save-history
|
||||
comint-input-filter
|
||||
'ignore)))
|
||||
(comint-send-input nil t))))
|
||||
|
||||
(defun guix-geiser-eval-in-repl (str &optional repl no-history no-display)
|
||||
"Switch to Geiser REPL and evaluate STR with guile expression there.
|
||||
If NO-HISTORY is non-nil, do not save STR in the REPL history.
|
||||
If NO-DISPLAY is non-nil, do not switch to the REPL buffer."
|
||||
(let ((repl (or repl (guix-geiser-repl))))
|
||||
(with-current-buffer repl
|
||||
;; XXX Since Geiser 0.8, `geiser-repl--send' has SAVE-HISTORY
|
||||
;; argument, so use this function eventually and remove
|
||||
;; `guix-repl-send'.
|
||||
(guix-repl-send str (not no-history)))
|
||||
(unless no-display
|
||||
(geiser-repl--switch-to-buffer repl))))
|
||||
|
||||
(defun guix-geiser-eval-in-repl-synchronously (str &optional repl
|
||||
no-history no-display)
|
||||
"Evaluate STR in Geiser REPL synchronously, i.e. wait until the
|
||||
REPL operation will be finished.
|
||||
See `guix-geiser-eval-in-repl' for the meaning of arguments."
|
||||
(let* ((repl (if repl (get-buffer repl) (guix-geiser-repl)))
|
||||
(running? nil)
|
||||
(filter (lambda (output)
|
||||
(setq running?
|
||||
(and (get-buffer-process repl)
|
||||
(not (guix-guile-prompt? output))))))
|
||||
(comint-output-filter-functions
|
||||
(cons filter comint-output-filter-functions)))
|
||||
(guix-geiser-eval-in-repl str repl no-history no-display)
|
||||
(while running?
|
||||
(sleep-for 0.1))))
|
||||
|
||||
(defun guix-geiser-call (proc &rest args)
|
||||
"Call (PROC ARGS ...) synchronously using the current Geiser REPL.
|
||||
PROC and ARGS should be strings."
|
||||
(guix-geiser-eval
|
||||
(apply #'guix-guile-make-call-expression proc args)))
|
||||
|
||||
(defun guix-geiser-call-in-repl (proc &rest args)
|
||||
"Call (PROC ARGS ...) in the current Geiser REPL.
|
||||
PROC and ARGS should be strings."
|
||||
(guix-geiser-eval-in-repl
|
||||
(apply #'guix-guile-make-call-expression proc args)))
|
||||
|
||||
(provide 'guix-geiser)
|
||||
|
||||
;;; guix-geiser.el ends here
|
||||
@@ -0,0 +1,98 @@
|
||||
;;; guix-guile.el --- Auxiliary tools for working with guile code -*- lexical-binding: t -*-
|
||||
|
||||
;; Copyright © 2015 Alex Kost <alezost@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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; This file provides functions for parsing guile code, making guile
|
||||
;; expressions, etc.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'geiser-guile)
|
||||
|
||||
(defvar guix-guile-definition-regexp
|
||||
(rx bol "(define"
|
||||
(zero-or-one "*")
|
||||
(zero-or-one "-public")
|
||||
(one-or-more space)
|
||||
(zero-or-one "(")
|
||||
(group (one-or-more (or word (syntax symbol)))))
|
||||
"Regexp used to find the guile definition.")
|
||||
|
||||
(defun guix-guile-current-definition ()
|
||||
"Return string with name of the current top-level guile definition."
|
||||
(save-excursion
|
||||
(beginning-of-defun)
|
||||
(if (looking-at guix-guile-definition-regexp)
|
||||
(match-string-no-properties 1)
|
||||
(error "Couldn't find the current definition"))))
|
||||
|
||||
(defun guix-guile-current-module ()
|
||||
"Return a string with the current guile module.
|
||||
Return nil, if current buffer does not define a module."
|
||||
;; Modified version of `geiser-guile--get-module'.
|
||||
(save-excursion
|
||||
(geiser-syntax--pop-to-top)
|
||||
(when (or (re-search-backward geiser-guile--module-re nil t)
|
||||
(looking-at geiser-guile--library-re)
|
||||
(re-search-forward geiser-guile--module-re nil t))
|
||||
(match-string-no-properties 1))))
|
||||
|
||||
(defun guix-guile-boolean (arg)
|
||||
"Return a string with guile boolean value.
|
||||
Transform elisp ARG (nil or non-nil) to the guile boolean (#f or #t)."
|
||||
(concat "#" (prin1-to-string (if arg 't 'f))))
|
||||
|
||||
(defun guix-guile-keyword-regexp (keyword)
|
||||
"Return regexp to find guile KEYWORD."
|
||||
(format "(\\(%s\\)\\_>" keyword))
|
||||
|
||||
(defun guix-guile-make-call-expression (proc &rest args)
|
||||
"Return \"(PROC ARGS ...)\" string.
|
||||
PROC and ARGS should be strings."
|
||||
(format "(%s %s)"
|
||||
proc
|
||||
(mapconcat #'identity args " ")))
|
||||
|
||||
(defun guix-make-guile-expression (fun &rest args)
|
||||
"Return string containing a guile expression for calling FUN with ARGS."
|
||||
(format "(%S %s)" fun
|
||||
(mapconcat
|
||||
(lambda (arg)
|
||||
(cond
|
||||
((null arg) "'()")
|
||||
((or (eq arg t)
|
||||
;; An ugly hack to separate 'false' from nil.
|
||||
(equal arg 'f)
|
||||
(keywordp arg))
|
||||
(concat "#" (prin1-to-string arg t)))
|
||||
((or (symbolp arg) (listp arg))
|
||||
(concat "'" (prin1-to-string arg)))
|
||||
(t (prin1-to-string arg))))
|
||||
args
|
||||
" ")))
|
||||
|
||||
(defun guix-guile-prompt? (string)
|
||||
"Return non-nil, if STRING contains a Guile prompt."
|
||||
(or (string-match-p geiser-guile--prompt-regexp string)
|
||||
(string-match-p geiser-guile--debugger-prompt-regexp string)))
|
||||
|
||||
(provide 'guix-guile)
|
||||
|
||||
;;; guix-guile.el ends here
|
||||
@@ -0,0 +1,108 @@
|
||||
;;; guix-help-vars.el --- Variables related to --help output
|
||||
|
||||
;; Copyright © 2015 Alex Kost <alezost@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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; This file provides regular expressions to parse various "guix
|
||||
;; ... --help" outputs and lists of non-receivable items (system types,
|
||||
;; hash formats, etc.).
|
||||
|
||||
;;; Code:
|
||||
|
||||
|
||||
;;; Regexps for parsing "guix ..." outputs
|
||||
|
||||
(defvar guix-help-parse-option-regexp
|
||||
(rx bol " "
|
||||
(zero-or-one (group "-" (not (any "- ")))
|
||||
",")
|
||||
(one-or-more " ")
|
||||
(group "--" (one-or-more (or wordchar "-")))
|
||||
(group (zero-or-one "[")
|
||||
(zero-or-one "="))
|
||||
(zero-or-more (not space))
|
||||
(one-or-more space)
|
||||
(group (one-or-more any)))
|
||||
"Common regexp used to find command options.")
|
||||
|
||||
(defvar guix-help-parse-command-regexp
|
||||
(rx bol " "
|
||||
(group wordchar (one-or-more (or wordchar "-"))))
|
||||
"Regexp used to find guix commands.
|
||||
'Command' means any option not prefixed with '-'. For example,
|
||||
guix subcommand, system action, importer, etc.")
|
||||
|
||||
(defvar guix-help-parse-long-option-regexp
|
||||
(rx (or " " ", ")
|
||||
(group "--" (one-or-more (or wordchar "-"))
|
||||
(zero-or-one "=")))
|
||||
"Regexp used to find long options.")
|
||||
|
||||
(defvar guix-help-parse-short-option-regexp
|
||||
(rx bol (one-or-more blank)
|
||||
"-" (group (not (any "- "))))
|
||||
"Regexp used to find short options.")
|
||||
|
||||
(defvar guix-help-parse-package-regexp
|
||||
(rx bol (group (one-or-more (not blank))))
|
||||
"Regexp used to find names of the packages.")
|
||||
|
||||
(defvar guix-help-parse-list-regexp
|
||||
(rx bol (zero-or-more blank) "- "
|
||||
(group (one-or-more (or wordchar "-"))))
|
||||
"Regexp used to find various lists (lint checkers, graph types).")
|
||||
|
||||
(defvar guix-help-parse-regexp-group 1
|
||||
"Parenthesized expression of regexps used to find commands and
|
||||
options.")
|
||||
|
||||
|
||||
;;; Non-receivable lists of system types, hash formats, etc.
|
||||
|
||||
(defvar guix-help-system-types
|
||||
'("x86_64-linux" "i686-linux" "armhf-linux" "mips64el-linux")
|
||||
"List of supported systems.")
|
||||
|
||||
(defvar guix-help-source-types
|
||||
'("package" "all" "transitive")
|
||||
"List of supported sources types.")
|
||||
|
||||
(defvar guix-help-hash-formats
|
||||
'("nix-base32" "base32" "base16" "hex" "hexadecimal")
|
||||
"List of supported hash formats.")
|
||||
|
||||
(defvar guix-help-refresh-subsets
|
||||
'("core" "non-core")
|
||||
"List of supported 'refresh' subsets.")
|
||||
|
||||
(defvar guix-help-key-policies
|
||||
'("interactive" "always" "never")
|
||||
"List of supported key download policies.")
|
||||
|
||||
(defvar guix-help-verify-options
|
||||
'("repair" "contents")
|
||||
"List of supported 'verify' options")
|
||||
|
||||
(defvar guix-help-elpa-archives
|
||||
'("gnu" "melpa" "melpa-stable")
|
||||
"List of supported ELPA archives.")
|
||||
|
||||
(provide 'guix-help-vars)
|
||||
|
||||
;;; guix-help-vars.el ends here
|
||||
+51
-46
@@ -33,25 +33,30 @@
|
||||
:prefix "guix-info-"
|
||||
:group 'guix)
|
||||
|
||||
(defgroup guix-info-faces nil
|
||||
"Faces for info buffers."
|
||||
:group 'guix-info
|
||||
:group 'guix-faces)
|
||||
|
||||
(defface guix-info-param-title
|
||||
'((t :inherit font-lock-type-face))
|
||||
"Face used for titles of parameters."
|
||||
:group 'guix-info)
|
||||
:group 'guix-info-faces)
|
||||
|
||||
(defface guix-info-file-path
|
||||
'((t :inherit link))
|
||||
"Face used for file paths."
|
||||
:group 'guix-info)
|
||||
:group 'guix-info-faces)
|
||||
|
||||
(defface guix-info-url
|
||||
'((t :inherit link))
|
||||
"Face used for URLs."
|
||||
:group 'guix-info)
|
||||
:group 'guix-info-faces)
|
||||
|
||||
(defface guix-info-time
|
||||
'((t :inherit font-lock-constant-face))
|
||||
"Face used for timestamps."
|
||||
:group 'guix-info)
|
||||
:group 'guix-info-faces)
|
||||
|
||||
(defface guix-info-action-button
|
||||
'((((type x w32 ns) (class color))
|
||||
@@ -59,7 +64,7 @@
|
||||
:background "lightgrey" :foreground "black")
|
||||
(t :inherit button))
|
||||
"Face used for action buttons."
|
||||
:group 'guix-info)
|
||||
:group 'guix-info-faces)
|
||||
|
||||
(defface guix-info-action-button-mouse
|
||||
'((((type x w32 ns) (class color))
|
||||
@@ -67,7 +72,7 @@
|
||||
:background "grey90" :foreground "black")
|
||||
(t :inherit highlight))
|
||||
"Mouse face used for action buttons."
|
||||
:group 'guix-info)
|
||||
:group 'guix-info-faces)
|
||||
|
||||
(defcustom guix-info-ignore-empty-vals nil
|
||||
"If non-nil, do not display parameters with nil values."
|
||||
@@ -178,13 +183,13 @@ The order of displayed parameters is the same as in this list.")
|
||||
(defun guix-info-get-insert-methods (entry-type param)
|
||||
"Return list of insert methods for parameter PARAM of ENTRY-TYPE.
|
||||
See `guix-info-insert-methods' for details."
|
||||
(guix-get-key-val guix-info-insert-methods
|
||||
entry-type param))
|
||||
(guix-assq-value guix-info-insert-methods
|
||||
entry-type param))
|
||||
|
||||
(defun guix-info-get-displayed-params (entry-type)
|
||||
"Return parameters of ENTRY-TYPE that should be displayed."
|
||||
(guix-get-key-val guix-info-displayed-params
|
||||
entry-type))
|
||||
(guix-assq-value guix-info-displayed-params
|
||||
entry-type))
|
||||
|
||||
(defun guix-info-get-indent (&optional level)
|
||||
"Return `guix-info-indent' \"multiplied\" by LEVEL spaces.
|
||||
@@ -232,7 +237,7 @@ Use `guix-info-insert-ENTRY-TYPE-function' or
|
||||
"Insert title and value of a PARAM at point.
|
||||
ENTRY is alist with parameters and their values.
|
||||
ENTRY-TYPE is a type of ENTRY."
|
||||
(let ((val (guix-get-key-val entry param)))
|
||||
(let ((val (guix-assq-value entry param)))
|
||||
(unless (and guix-info-ignore-empty-vals (null val))
|
||||
(let* ((title (guix-get-param-title entry-type param))
|
||||
(insert-methods (guix-info-get-insert-methods entry-type param))
|
||||
@@ -414,43 +419,43 @@ See `insert-text-button' for the meaning of PROPERTIES."
|
||||
'((((type tty pc) (class color)) :weight bold)
|
||||
(t :height 1.6 :weight bold :inherit variable-pitch))
|
||||
"Face for package name and version headings."
|
||||
:group 'guix-package-info)
|
||||
:group 'guix-package-info-faces)
|
||||
|
||||
(defface guix-package-info-name
|
||||
'((t :inherit font-lock-keyword-face))
|
||||
"Face used for a name of a package."
|
||||
:group 'guix-package-info)
|
||||
:group 'guix-package-info-faces)
|
||||
|
||||
(defface guix-package-info-name-button
|
||||
'((t :inherit button))
|
||||
"Face used for a full name that can be used to describe a package."
|
||||
:group 'guix-package-info)
|
||||
:group 'guix-package-info-faces)
|
||||
|
||||
(defface guix-package-info-version
|
||||
'((t :inherit font-lock-builtin-face))
|
||||
"Face used for a version of a package."
|
||||
:group 'guix-package-info)
|
||||
:group 'guix-package-info-faces)
|
||||
|
||||
(defface guix-package-info-synopsis
|
||||
'((((type tty pc) (class color)) :weight bold)
|
||||
(t :height 1.1 :weight bold :inherit variable-pitch))
|
||||
"Face used for a synopsis of a package."
|
||||
:group 'guix-package-info)
|
||||
:group 'guix-package-info-faces)
|
||||
|
||||
(defface guix-package-info-description
|
||||
'((t))
|
||||
"Face used for a description of a package."
|
||||
:group 'guix-package-info)
|
||||
:group 'guix-package-info-faces)
|
||||
|
||||
(defface guix-package-info-license
|
||||
'((t :inherit font-lock-string-face))
|
||||
"Face used for a license of a package."
|
||||
:group 'guix-package-info)
|
||||
:group 'guix-package-info-faces)
|
||||
|
||||
(defface guix-package-info-location
|
||||
'((t :inherit link))
|
||||
"Face used for a location of a package."
|
||||
:group 'guix-package-info)
|
||||
:group 'guix-package-info-faces)
|
||||
|
||||
(defface guix-package-info-installed-outputs
|
||||
'((default :weight bold)
|
||||
@@ -462,17 +467,17 @@ See `insert-text-button' for the meaning of PROPERTIES."
|
||||
:foreground "green")
|
||||
(t :underline t))
|
||||
"Face used for installed outputs of a package."
|
||||
:group 'guix-package-info)
|
||||
:group 'guix-package-info-faces)
|
||||
|
||||
(defface guix-package-info-uninstalled-outputs
|
||||
'((t :weight bold))
|
||||
"Face used for uninstalled outputs of a package."
|
||||
:group 'guix-package-info)
|
||||
:group 'guix-package-info-faces)
|
||||
|
||||
(defface guix-package-info-obsolete
|
||||
'((t :inherit error))
|
||||
"Face used if a package is obsolete."
|
||||
:group 'guix-package-info)
|
||||
:group 'guix-package-info-faces)
|
||||
|
||||
(defvar guix-info-insert-package-function
|
||||
#'guix-package-info-insert-with-heading
|
||||
@@ -492,12 +497,12 @@ filling them to fit the window."
|
||||
(defun guix-package-info-insert-heading (entry)
|
||||
"Insert the heading for package ENTRY.
|
||||
Show package name, version, and `guix-package-info-heading-params'."
|
||||
(guix-format-insert (concat (guix-get-key-val entry 'name) " "
|
||||
(guix-get-key-val entry 'version))
|
||||
(guix-format-insert (concat (guix-assq-value entry 'name) " "
|
||||
(guix-assq-value entry 'version))
|
||||
'guix-package-info-heading)
|
||||
(insert "\n\n")
|
||||
(mapc (lambda (param)
|
||||
(let ((val (guix-get-key-val entry param))
|
||||
(let ((val (guix-assq-value entry param))
|
||||
(face (guix-get-symbol (symbol-name param)
|
||||
'info 'package)))
|
||||
(when val
|
||||
@@ -541,7 +546,7 @@ Face name is `guix-package-info-TYPE-inputs'."
|
||||
(defface ,face
|
||||
'((t :inherit guix-package-info-name-button))
|
||||
,(concat "Face used for " type-desc "inputs of a package.")
|
||||
:group 'guix-package-info)
|
||||
:group 'guix-package-info-faces)
|
||||
|
||||
(define-button-type ',btn
|
||||
:supertype 'guix-package-name
|
||||
@@ -587,10 +592,10 @@ If nil, insert installed info in a default way.")
|
||||
|
||||
(defun guix-package-info-insert-outputs (outputs entry)
|
||||
"Insert OUTPUTS from package ENTRY at point."
|
||||
(and (guix-get-key-val entry 'obsolete)
|
||||
(and (guix-assq-value entry 'obsolete)
|
||||
(guix-package-info-insert-obsolete-text))
|
||||
(and (guix-get-key-val entry 'non-unique)
|
||||
(guix-get-key-val entry 'installed)
|
||||
(and (guix-assq-value entry 'non-unique)
|
||||
(guix-assq-value entry 'installed)
|
||||
(guix-package-info-insert-non-unique-text
|
||||
(guix-get-full-name entry)))
|
||||
(insert "\n")
|
||||
@@ -617,11 +622,11 @@ If nil, insert installed info in a default way.")
|
||||
Make some fancy text with buttons and additional stuff if the
|
||||
current OUTPUT is installed (if there is such output in
|
||||
`installed' parameter of a package ENTRY)."
|
||||
(let* ((installed (guix-get-key-val entry 'installed))
|
||||
(obsolete (guix-get-key-val entry 'obsolete))
|
||||
(let* ((installed (guix-assq-value entry 'installed))
|
||||
(obsolete (guix-assq-value entry 'obsolete))
|
||||
(installed-entry (cl-find-if
|
||||
(lambda (entry)
|
||||
(string= (guix-get-key-val entry 'output)
|
||||
(string= (guix-assq-value entry 'output)
|
||||
output))
|
||||
installed))
|
||||
(action-type (if installed-entry 'delete 'install)))
|
||||
@@ -655,8 +660,8 @@ ENTRY is an alist with package info."
|
||||
(current-buffer)))
|
||||
(concat type-str " '" full-name "'")
|
||||
'action-type type
|
||||
'id (or (guix-get-key-val entry 'package-id)
|
||||
(guix-get-key-val entry 'id))
|
||||
'id (or (guix-assq-value entry 'package-id)
|
||||
(guix-assq-value entry 'id))
|
||||
'output output)))
|
||||
|
||||
(defun guix-package-info-insert-output-path (path &optional _)
|
||||
@@ -672,7 +677,7 @@ ENTRY is an alist with package info."
|
||||
(defface guix-package-info-source
|
||||
'((t :inherit link :underline nil))
|
||||
"Face used for a source URL of a package."
|
||||
:group 'guix-package-info)
|
||||
:group 'guix-package-info-faces)
|
||||
|
||||
(defcustom guix-package-info-auto-find-source nil
|
||||
"If non-nil, find a source file after pressing a \"Show\" button.
|
||||
@@ -720,7 +725,7 @@ PACKAGE-ID is an ID of the package which source to show."
|
||||
(entries (cl-substitute-if
|
||||
new-entry
|
||||
(lambda (entry)
|
||||
(equal (guix-get-key-val entry 'id)
|
||||
(equal (guix-assq-value entry 'id)
|
||||
entry-id))
|
||||
guix-entries
|
||||
:count 1)))
|
||||
@@ -746,9 +751,9 @@ SOURCE is a list of URLs."
|
||||
(guix-info-insert-indent)
|
||||
(if (null source)
|
||||
(guix-format-insert nil)
|
||||
(let* ((source-file (guix-get-key-val entry 'source-file))
|
||||
(entry-id (guix-get-key-val entry 'id))
|
||||
(package-id (or (guix-get-key-val entry 'package-id)
|
||||
(let* ((source-file (guix-assq-value entry 'source-file))
|
||||
(entry-id (guix-assq-value entry 'id))
|
||||
(package-id (or (guix-assq-value entry 'package-id)
|
||||
entry-id)))
|
||||
(if (null source-file)
|
||||
(guix-info-insert-action-button
|
||||
@@ -798,13 +803,13 @@ If nil, insert output in a default way.")
|
||||
"Insert output VERSION and obsolete text if needed at point."
|
||||
(guix-info-insert-val-default version
|
||||
'guix-package-info-version)
|
||||
(and (guix-get-key-val entry 'obsolete)
|
||||
(and (guix-assq-value entry 'obsolete)
|
||||
(guix-package-info-insert-obsolete-text)))
|
||||
|
||||
(defun guix-output-info-insert-output (output entry)
|
||||
"Insert OUTPUT and action buttons at point."
|
||||
(let* ((installed (guix-get-key-val entry 'installed))
|
||||
(obsolete (guix-get-key-val entry 'obsolete))
|
||||
(let* ((installed (guix-assq-value entry 'installed))
|
||||
(obsolete (guix-assq-value entry 'obsolete))
|
||||
(action-type (if installed 'delete 'install)))
|
||||
(guix-info-insert-val-default
|
||||
output
|
||||
@@ -825,17 +830,17 @@ If nil, insert output in a default way.")
|
||||
(defface guix-generation-info-number
|
||||
'((t :inherit font-lock-keyword-face))
|
||||
"Face used for a number of a generation."
|
||||
:group 'guix-generation-info)
|
||||
:group 'guix-generation-info-faces)
|
||||
|
||||
(defface guix-generation-info-current
|
||||
'((t :inherit guix-package-info-installed-outputs))
|
||||
"Face used if a generation is the current one."
|
||||
:group 'guix-generation-info)
|
||||
:group 'guix-generation-info-faces)
|
||||
|
||||
(defface guix-generation-info-not-current
|
||||
'((t nil))
|
||||
"Face used if a generation is not the current one."
|
||||
:group 'guix-generation-info)
|
||||
:group 'guix-generation-info-faces)
|
||||
|
||||
(defvar guix-info-insert-generation-function nil
|
||||
"Function used to insert a generation information.
|
||||
@@ -874,7 +879,7 @@ If nil, insert generation in a default way.")
|
||||
(guix-switch-to-generation guix-profile (button-get btn 'number)
|
||||
(current-buffer)))
|
||||
"Switch to this generation (make it the current one)"
|
||||
'number (guix-get-key-val entry 'number))))
|
||||
'number (guix-assq-value entry 'number))))
|
||||
|
||||
(provide 'guix-info)
|
||||
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
(require 'guix-autoloads)
|
||||
|
||||
(defvar guix-load-path
|
||||
(replace-regexp-in-string "${prefix}" "@prefix@" "@emacsuidir@")
|
||||
"Directory with scheme files for \"guix.el\" package.")
|
||||
(require 'guix-emacs)
|
||||
|
||||
(defcustom guix-package-enable-at-startup t
|
||||
"If non-nil, activate Emacs packages installed in a user profile.
|
||||
@@ -12,8 +9,11 @@ avoid loading autoloads of Emacs packages installed in
|
||||
:type 'boolean
|
||||
:group 'guix)
|
||||
|
||||
(add-to-list 'load-path (guix-emacs-directory))
|
||||
|
||||
(when guix-package-enable-at-startup
|
||||
(require 'guix-emacs)
|
||||
(guix-emacs-load-autoloads 'all))
|
||||
|
||||
(add-hook 'scheme-mode-hook 'guix-devel-activate-mode-maybe)
|
||||
|
||||
(provide 'guix-init)
|
||||
+34
-29
@@ -1,6 +1,6 @@
|
||||
;;; guix-list.el --- List buffers for displaying entries -*- lexical-binding: t -*-
|
||||
|
||||
;; Copyright © 2014 Alex Kost <alezost@gmail.com>
|
||||
;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
|
||||
|
||||
;; This file is part of GNU Guix.
|
||||
|
||||
@@ -35,10 +35,15 @@
|
||||
:prefix "guix-list-"
|
||||
:group 'guix)
|
||||
|
||||
(defgroup guix-list-faces nil
|
||||
"Faces for list buffers."
|
||||
:group 'guix-list
|
||||
:group 'guix-faces)
|
||||
|
||||
(defface guix-list-file-path
|
||||
'((t :inherit guix-info-file-path))
|
||||
"Face used for file paths."
|
||||
:group 'guix-list)
|
||||
:group 'guix-list-faces)
|
||||
|
||||
(defcustom guix-list-describe-warning-count 10
|
||||
"The maximum number of entries for describing without a warning.
|
||||
@@ -110,13 +115,13 @@ parameters and their values).")
|
||||
|
||||
(defun guix-list-get-param-title (entry-type param)
|
||||
"Return title of an ENTRY-TYPE entry parameter PARAM."
|
||||
(or (guix-get-key-val guix-list-column-titles
|
||||
entry-type param)
|
||||
(or (guix-assq-value guix-list-column-titles
|
||||
entry-type param)
|
||||
(guix-get-param-title entry-type param)))
|
||||
|
||||
(defun guix-list-get-column-format (entry-type)
|
||||
"Return column format for ENTRY-TYPE."
|
||||
(guix-get-key-val guix-list-column-format entry-type))
|
||||
(guix-assq-value guix-list-column-format entry-type))
|
||||
|
||||
(defun guix-list-get-displayed-params (entry-type)
|
||||
"Return list of parameters of ENTRY-TYPE that should be displayed."
|
||||
@@ -170,7 +175,7 @@ ENTRIES should have a form of `guix-entries'."
|
||||
Values are taken from ENTRIES which should have the form of
|
||||
`guix-entries'."
|
||||
(mapcar (lambda (entry)
|
||||
(list (guix-get-key-val entry 'id)
|
||||
(list (guix-assq-value entry 'id)
|
||||
(guix-list-get-tabulated-entry entry entry-type)))
|
||||
entries))
|
||||
|
||||
@@ -180,9 +185,9 @@ Parameters are taken from ENTRY of ENTRY-TYPE."
|
||||
(guix-list-make-tabulated-vector
|
||||
entry-type
|
||||
(lambda (param _)
|
||||
(let ((val (guix-get-key-val entry param))
|
||||
(fun (guix-get-key-val guix-list-column-value-methods
|
||||
entry-type param)))
|
||||
(let ((val (guix-assq-value entry param))
|
||||
(fun (guix-assq-value guix-list-column-value-methods
|
||||
entry-type param)))
|
||||
(if fun
|
||||
(funcall fun val entry)
|
||||
(guix-get-string val))))))
|
||||
@@ -221,7 +226,7 @@ VAL may be nil."
|
||||
(guix-package-list-mode
|
||||
(guix-list-current-id))
|
||||
(guix-output-list-mode
|
||||
(guix-get-key-val (guix-list-current-entry) 'package-id))))
|
||||
(guix-assq-value (guix-list-current-entry) 'package-id))))
|
||||
|
||||
(defun guix-list-for-each-line (fun &rest args)
|
||||
"Call FUN with ARGS for each entry line."
|
||||
@@ -262,7 +267,7 @@ ARGS is a list of additional values.")
|
||||
|
||||
(defsubst guix-list-get-mark (name)
|
||||
"Return mark character by its NAME."
|
||||
(or (guix-get-key-val guix-list-mark-alist name)
|
||||
(or (guix-assq-value guix-list-mark-alist name)
|
||||
(error "Mark '%S' not found" name)))
|
||||
|
||||
(defsubst guix-list-get-mark-string (name)
|
||||
@@ -355,8 +360,8 @@ With ARG, unmark all lines."
|
||||
"Put marks according to `guix-list-mark-alist'."
|
||||
(guix-list-for-each-line
|
||||
(lambda ()
|
||||
(let ((mark-name (car (guix-get-key-val guix-list-marked
|
||||
(guix-list-current-id)))))
|
||||
(let ((mark-name (car (guix-assq-value guix-list-marked
|
||||
(guix-list-current-id)))))
|
||||
(tabulated-list-put-tag
|
||||
(guix-list-get-mark-string (or mark-name 'empty)))))))
|
||||
|
||||
@@ -472,7 +477,7 @@ With prefix (if ARG is non-nil), describe entries marked with any mark."
|
||||
(defun guix-list-edit-package ()
|
||||
"Go to the location of the current package."
|
||||
(interactive)
|
||||
(guix-edit-package (guix-list-current-package-id)))
|
||||
(guix-edit (guix-list-current-package-id)))
|
||||
|
||||
|
||||
;;; Displaying packages
|
||||
@@ -488,12 +493,12 @@ With prefix (if ARG is non-nil), describe entries marked with any mark."
|
||||
(defface guix-package-list-installed
|
||||
'((t :inherit guix-package-info-installed-outputs))
|
||||
"Face used if there are installed outputs for the current package."
|
||||
:group 'guix-package-list)
|
||||
:group 'guix-package-list-faces)
|
||||
|
||||
(defface guix-package-list-obsolete
|
||||
'((t :inherit guix-package-info-obsolete))
|
||||
"Face used if a package is obsolete."
|
||||
:group 'guix-package-list)
|
||||
:group 'guix-package-list-faces)
|
||||
|
||||
(defcustom guix-package-list-generation-marking-enabled nil
|
||||
"If non-nil, allow putting marks in a list with 'generation packages'.
|
||||
@@ -524,16 +529,16 @@ likely)."
|
||||
Colorize it with `guix-package-list-installed' or
|
||||
`guix-package-list-obsolete' if needed."
|
||||
(guix-get-string name
|
||||
(cond ((guix-get-key-val entry 'obsolete)
|
||||
(cond ((guix-assq-value entry 'obsolete)
|
||||
'guix-package-list-obsolete)
|
||||
((guix-get-key-val entry 'installed)
|
||||
((guix-assq-value entry 'installed)
|
||||
'guix-package-list-installed))))
|
||||
|
||||
(defun guix-package-list-get-installed-outputs (installed &optional _)
|
||||
"Return string with outputs from INSTALLED entries."
|
||||
(guix-get-string
|
||||
(mapcar (lambda (entry)
|
||||
(guix-get-key-val entry 'output))
|
||||
(guix-assq-value entry 'output))
|
||||
installed)))
|
||||
|
||||
(defun guix-package-list-marking-check ()
|
||||
@@ -562,7 +567,7 @@ be separated with \",\")."
|
||||
(interactive "P")
|
||||
(guix-package-list-marking-check)
|
||||
(let* ((entry (guix-list-current-entry))
|
||||
(all (guix-get-key-val entry 'outputs))
|
||||
(all (guix-assq-value entry 'outputs))
|
||||
(installed (guix-get-installed-outputs entry))
|
||||
(available (cl-set-difference all installed :test #'string=)))
|
||||
(or available
|
||||
@@ -597,7 +602,7 @@ be separated with \",\")."
|
||||
(installed (guix-get-installed-outputs entry)))
|
||||
(or installed
|
||||
(user-error "This package is not installed"))
|
||||
(when (or (guix-get-key-val entry 'obsolete)
|
||||
(when (or (guix-assq-value entry 'obsolete)
|
||||
(y-or-n-p "This package is not obsolete. Try to upgrade it anyway? "))
|
||||
(guix-package-list-mark-outputs
|
||||
'upgrade installed
|
||||
@@ -611,14 +616,14 @@ accept an entry as argument."
|
||||
(guix-package-list-marking-check)
|
||||
(let ((obsolete (cl-remove-if-not
|
||||
(lambda (entry)
|
||||
(guix-get-key-val entry 'obsolete))
|
||||
(guix-assq-value entry 'obsolete))
|
||||
guix-entries)))
|
||||
(guix-list-for-each-line
|
||||
(lambda ()
|
||||
(let* ((id (guix-list-current-id))
|
||||
(entry (cl-find-if
|
||||
(lambda (entry)
|
||||
(equal id (guix-get-key-val entry 'id)))
|
||||
(equal id (guix-assq-value entry 'id)))
|
||||
obsolete)))
|
||||
(when entry
|
||||
(funcall fun entry)))))))
|
||||
@@ -682,7 +687,7 @@ The specification is suitable for `guix-process-package-actions'."
|
||||
(interactive)
|
||||
(guix-package-list-marking-check)
|
||||
(let* ((entry (guix-list-current-entry))
|
||||
(installed (guix-get-key-val entry 'installed)))
|
||||
(installed (guix-assq-value entry 'installed)))
|
||||
(if installed
|
||||
(user-error "This output is already installed")
|
||||
(guix-list--mark 'install t))))
|
||||
@@ -692,7 +697,7 @@ The specification is suitable for `guix-process-package-actions'."
|
||||
(interactive)
|
||||
(guix-package-list-marking-check)
|
||||
(let* ((entry (guix-list-current-entry))
|
||||
(installed (guix-get-key-val entry 'installed)))
|
||||
(installed (guix-assq-value entry 'installed)))
|
||||
(if installed
|
||||
(guix-list--mark 'delete t)
|
||||
(user-error "This output is not installed"))))
|
||||
@@ -702,10 +707,10 @@ The specification is suitable for `guix-process-package-actions'."
|
||||
(interactive)
|
||||
(guix-package-list-marking-check)
|
||||
(let* ((entry (guix-list-current-entry))
|
||||
(installed (guix-get-key-val entry 'installed)))
|
||||
(installed (guix-assq-value entry 'installed)))
|
||||
(or installed
|
||||
(user-error "This output is not installed"))
|
||||
(when (or (guix-get-key-val entry 'obsolete)
|
||||
(when (or (guix-assq-value entry 'obsolete)
|
||||
(y-or-n-p "This output is not obsolete. Try to upgrade it anyway? "))
|
||||
(guix-list--mark 'upgrade t))))
|
||||
|
||||
@@ -777,8 +782,8 @@ VAL is a boolean value."
|
||||
"Switch current profile to the generation at point."
|
||||
(interactive)
|
||||
(let* ((entry (guix-list-current-entry))
|
||||
(current (guix-get-key-val entry 'current))
|
||||
(number (guix-get-key-val entry 'number)))
|
||||
(current (guix-assq-value entry 'current))
|
||||
(number (guix-assq-value entry 'number)))
|
||||
(if current
|
||||
(user-error "This generation is already the current one")
|
||||
(guix-switch-to-generation guix-profile number (current-buffer)))))
|
||||
|
||||
+86
-6
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
|
||||
;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -45,6 +45,7 @@
|
||||
(use-modules
|
||||
(ice-9 vlist)
|
||||
(ice-9 match)
|
||||
(ice-9 popen)
|
||||
(srfi srfi-1)
|
||||
(srfi srfi-2)
|
||||
(srfi srfi-11)
|
||||
@@ -57,6 +58,8 @@
|
||||
(guix licenses)
|
||||
(guix utils)
|
||||
(guix ui)
|
||||
(guix scripts graph)
|
||||
(guix scripts lint)
|
||||
(guix scripts package)
|
||||
(guix scripts pull)
|
||||
(gnu packages))
|
||||
@@ -68,7 +71,26 @@
|
||||
(define (list-maybe obj)
|
||||
(if (list? obj) obj (list obj)))
|
||||
|
||||
(define full-name->name+version package-name->name+version)
|
||||
(define (output+error thunk)
|
||||
"Call THUNK and return 2 values: output and error output as strings."
|
||||
(let ((output-port (open-output-string))
|
||||
(error-port (open-output-string)))
|
||||
(with-output-to-port output-port
|
||||
(lambda () (with-error-to-port error-port thunk)))
|
||||
(let ((strings (list (get-output-string output-port)
|
||||
(get-output-string error-port))))
|
||||
(close-output-port output-port)
|
||||
(close-output-port error-port)
|
||||
(apply values strings))))
|
||||
|
||||
(define (full-name->name+version spec)
|
||||
"Given package specification SPEC with or without output,
|
||||
return two values: name and version. For example, for SPEC
|
||||
\"foo-0.9.1b:lib\", return \"foo\" and \"0.9.1b\"."
|
||||
(let-values (((name version output)
|
||||
(package-specification->name+version+output spec)))
|
||||
(values name version)))
|
||||
|
||||
(define (name+version->full-name name version)
|
||||
(string-append name "-" version))
|
||||
|
||||
@@ -244,6 +266,10 @@ Example:
|
||||
(filter-map (match-lambda
|
||||
((_ (? package? package))
|
||||
(package-full-name package))
|
||||
((_ (? package? package) output)
|
||||
(make-package-specification (package-name package)
|
||||
(package-version package)
|
||||
output))
|
||||
(_ #f))
|
||||
inputs))
|
||||
|
||||
@@ -279,7 +305,7 @@ Example:
|
||||
(license . ,package-license-names)
|
||||
(source . ,package-source-names)
|
||||
(synopsis . ,package-synopsis)
|
||||
(description . ,package-description)
|
||||
(description . ,package-description-string)
|
||||
(home-url . ,package-home-page)
|
||||
(outputs . ,package-outputs)
|
||||
(non-unique . ,(negate package-unique?))
|
||||
@@ -887,9 +913,10 @@ GENERATIONS is a list of generation numbers."
|
||||
(with-store store
|
||||
(delete-generations store profile generations)))
|
||||
|
||||
(define (package-location-string package-id)
|
||||
"Return a location string of a package PACKAGE-ID."
|
||||
(and-let* ((package (package-by-id package-id))
|
||||
(define (package-location-string id-or-name)
|
||||
"Return a location string of a package with ID-OR-NAME."
|
||||
(and-let* ((package (or (package-by-id id-or-name)
|
||||
(first (packages-by-name id-or-name))))
|
||||
(location (package-location package)))
|
||||
(location->string location)))
|
||||
|
||||
@@ -927,3 +954,56 @@ GENERATIONS is a list of generation numbers."
|
||||
(build-derivations store derivations))
|
||||
(format #t "The source store path: ~a~%"
|
||||
(package-source-derivation->store-path derivation))))))
|
||||
|
||||
|
||||
;;; Executing guix commands
|
||||
|
||||
(define (guix-command . args)
|
||||
"Run 'guix ARGS ...' command."
|
||||
(catch 'quit
|
||||
(lambda () (apply run-guix args))
|
||||
(const #t)))
|
||||
|
||||
(define (guix-command-output . args)
|
||||
"Return 2 strings with 'guix ARGS ...' output and error output."
|
||||
(output+error
|
||||
(lambda ()
|
||||
(parameterize ((guix-warning-port (current-error-port)))
|
||||
(apply guix-command args)))))
|
||||
|
||||
(define (help-string . commands)
|
||||
"Return string with 'guix COMMANDS ... --help' output."
|
||||
(apply guix-command-output `(,@commands "--help")))
|
||||
|
||||
(define (pipe-guix-output guix-args command-args)
|
||||
"Run 'guix GUIX-ARGS ...' command and pipe its output to a shell command
|
||||
defined by COMMAND-ARGS.
|
||||
Return #t if the shell command was executed successfully."
|
||||
(let ((pipe (apply open-pipe* OPEN_WRITE command-args)))
|
||||
(with-output-to-port pipe
|
||||
(lambda () (apply guix-command guix-args)))
|
||||
(zero? (status:exit-val (close-pipe pipe)))))
|
||||
|
||||
|
||||
;;; Lists of packages, lint checkers, etc.
|
||||
|
||||
(define (graph-type-names)
|
||||
"Return a list of names of available graph node types."
|
||||
(map node-type-name %node-types))
|
||||
|
||||
(define (lint-checker-names)
|
||||
"Return a list of names of available lint checkers."
|
||||
(map (lambda (checker)
|
||||
(symbol->string (lint-checker-name checker)))
|
||||
%checkers))
|
||||
|
||||
(define (package-names)
|
||||
"Return a list of names of available packages."
|
||||
(delete-duplicates
|
||||
(fold-packages (lambda (pkg res)
|
||||
(cons (package-name pkg) res))
|
||||
'())))
|
||||
|
||||
;; See the comment to 'guix-package-names' function in "guix-popup.el".
|
||||
(define (package-names-lists)
|
||||
(map list (package-names)))
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
;;; guix-messages.el --- Minibuffer messages
|
||||
|
||||
;; Copyright © 2014 Alex Kost <alezost@gmail.com>
|
||||
;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
|
||||
|
||||
;; This file is part of GNU Guix.
|
||||
|
||||
@@ -186,14 +186,14 @@
|
||||
(defun guix-result-message (profile entries entry-type
|
||||
search-type search-vals)
|
||||
"Display an appropriate message after displaying ENTRIES."
|
||||
(let* ((type-spec (guix-get-key-val guix-messages
|
||||
entry-type search-type))
|
||||
(let* ((type-spec (guix-assq-value guix-messages
|
||||
entry-type search-type))
|
||||
(fun-or-count-spec (car type-spec)))
|
||||
(if (functionp fun-or-count-spec)
|
||||
(funcall fun-or-count-spec profile entries search-vals)
|
||||
(let* ((count (length entries))
|
||||
(count-key (if (> count 1) 'many count))
|
||||
(msg-spec (guix-get-key-val type-spec count-key))
|
||||
(msg-spec (guix-assq-value type-spec count-key))
|
||||
(msg (car msg-spec))
|
||||
(args (cdr msg-spec)))
|
||||
(mapc (lambda (subst)
|
||||
|
||||
+30
-71
@@ -28,58 +28,7 @@
|
||||
(require 'pcmpl-unix)
|
||||
(require 'cl-lib)
|
||||
(require 'guix-utils)
|
||||
|
||||
|
||||
;;; Regexps for parsing various "guix ..." outputs
|
||||
|
||||
(defvar guix-pcomplete-parse-package-regexp
|
||||
(rx bol (group (one-or-more (not blank))))
|
||||
"Regexp used to find names of the packages.")
|
||||
|
||||
(defvar guix-pcomplete-parse-command-regexp
|
||||
(rx bol " "
|
||||
(group wordchar (one-or-more (or wordchar "-"))))
|
||||
"Regexp used to find guix commands.
|
||||
'Command' means any option not prefixed with '-'. For example,
|
||||
guix subcommand, system action, importer, etc.")
|
||||
|
||||
(defvar guix-pcomplete-parse-long-option-regexp
|
||||
(rx (or " " ", ")
|
||||
(group "--" (one-or-more (or wordchar "-"))
|
||||
(zero-or-one "=")))
|
||||
"Regexp used to find long options.")
|
||||
|
||||
(defvar guix-pcomplete-parse-short-option-regexp
|
||||
(rx bol (one-or-more blank)
|
||||
"-" (group (not (any "- "))))
|
||||
"Regexp used to find short options.")
|
||||
|
||||
(defvar guix-pcomplete-parse-linter-regexp
|
||||
(rx bol "- " (group (one-or-more (or wordchar "-"))))
|
||||
"Regexp used to find 'lint' checkers.")
|
||||
|
||||
(defvar guix-pcomplete-parse-regexp-group 1
|
||||
"Parenthesized expression of regexps used to find commands and
|
||||
options.")
|
||||
|
||||
|
||||
;;; Non-receivable completions
|
||||
|
||||
(defvar guix-pcomplete-systems
|
||||
'("x86_64-linux" "i686-linux" "armhf-linux" "mips64el-linux")
|
||||
"List of supported systems.")
|
||||
|
||||
(defvar guix-pcomplete-hash-formats
|
||||
'("nix-base32" "base32" "base16" "hex" "hexadecimal")
|
||||
"List of supported hash formats.")
|
||||
|
||||
(defvar guix-pcomplete-refresh-subsets
|
||||
'("core" "non-core")
|
||||
"List of supported 'refresh' subsets.")
|
||||
|
||||
(defvar guix-pcomplete-key-policies
|
||||
'("interactive" "always" "never")
|
||||
"List of supported key download policies.")
|
||||
(require 'guix-help-vars)
|
||||
|
||||
|
||||
;;; Interacting with guix
|
||||
@@ -104,9 +53,8 @@ Return a list of strings matching REGEXP.
|
||||
GROUP specifies a parenthesized expression used in REGEXP."
|
||||
(with-temp-buffer
|
||||
(apply #'guix-pcomplete-run-guix args)
|
||||
(goto-char (point-min))
|
||||
(let (result)
|
||||
(while (re-search-forward regexp nil t)
|
||||
(guix-while-search regexp
|
||||
(push (match-string-no-properties group) result))
|
||||
(nreverse result))))
|
||||
|
||||
@@ -128,7 +76,7 @@ function call is returned."
|
||||
(let* ((args '("--help"))
|
||||
(args (if command (cons command args) args))
|
||||
(res (apply #'guix-pcomplete-run-guix-and-search
|
||||
,regexp guix-pcomplete-parse-regexp-group args)))
|
||||
,regexp guix-help-parse-regexp-group args)))
|
||||
,(if filter
|
||||
`(funcall ,filter res)
|
||||
'res))))
|
||||
@@ -137,23 +85,23 @@ function call is returned."
|
||||
"If COMMAND is nil, return a list of available guix commands.
|
||||
If COMMAND is non-nil (it should be a string), return available
|
||||
subcommands, actions, etc. for this guix COMMAND."
|
||||
guix-pcomplete-parse-command-regexp)
|
||||
guix-help-parse-command-regexp)
|
||||
|
||||
(guix-pcomplete-define-options-finder guix-pcomplete-long-options
|
||||
"Return a list of available long options for guix COMMAND."
|
||||
guix-pcomplete-parse-long-option-regexp)
|
||||
guix-help-parse-long-option-regexp)
|
||||
|
||||
(guix-pcomplete-define-options-finder guix-pcomplete-short-options
|
||||
"Return a string with available short options for guix COMMAND."
|
||||
guix-pcomplete-parse-short-option-regexp
|
||||
guix-help-parse-short-option-regexp
|
||||
(lambda (list)
|
||||
(mapconcat #'identity list "")))
|
||||
(guix-concat-strings list "")))
|
||||
|
||||
(guix-memoized-defun guix-pcomplete-all-packages ()
|
||||
"Return a list of all available Guix packages."
|
||||
(guix-pcomplete-run-guix-and-search
|
||||
guix-pcomplete-parse-package-regexp
|
||||
guix-pcomplete-parse-regexp-group
|
||||
guix-help-parse-package-regexp
|
||||
guix-help-parse-regexp-group
|
||||
"package" "--list-available"))
|
||||
|
||||
(guix-memoized-defun guix-pcomplete-installed-packages (&optional profile)
|
||||
@@ -162,17 +110,24 @@ subcommands, actions, etc. for this guix COMMAND."
|
||||
(list (concat "--profile=" profile))))
|
||||
(args (append '("package" "--list-installed") args)))
|
||||
(apply #'guix-pcomplete-run-guix-and-search
|
||||
guix-pcomplete-parse-package-regexp
|
||||
guix-pcomplete-parse-regexp-group
|
||||
guix-help-parse-package-regexp
|
||||
guix-help-parse-regexp-group
|
||||
args)))
|
||||
|
||||
(guix-memoized-defun guix-pcomplete-lint-checkers ()
|
||||
"Return a list of all available lint checkers."
|
||||
(guix-pcomplete-run-guix-and-search
|
||||
guix-pcomplete-parse-linter-regexp
|
||||
guix-pcomplete-parse-regexp-group
|
||||
guix-help-parse-list-regexp
|
||||
guix-help-parse-regexp-group
|
||||
"lint" "--list-checkers"))
|
||||
|
||||
(guix-memoized-defun guix-pcomplete-graph-types ()
|
||||
"Return a list of all available graph types."
|
||||
(guix-pcomplete-run-guix-and-search
|
||||
guix-help-parse-list-regexp
|
||||
guix-help-parse-regexp-group
|
||||
"graph" "--list-types"))
|
||||
|
||||
|
||||
;;; Completing
|
||||
|
||||
@@ -254,8 +209,8 @@ group - the argument.")
|
||||
"Complete argument for guix COMMAND."
|
||||
(cond
|
||||
((member command
|
||||
'("archive" "build" "edit" "environment" "lint" "refresh"
|
||||
"size"))
|
||||
'("archive" "build" "graph" "edit" "environment"
|
||||
"lint" "refresh" "size"))
|
||||
(while t
|
||||
(pcomplete-here (guix-pcomplete-all-packages))))
|
||||
(t (pcomplete-here* (pcomplete-entries)))))
|
||||
@@ -276,7 +231,7 @@ INPUT is the current partially completed string."
|
||||
((option? "-L" "--load-path")
|
||||
(complete* (pcomplete-dirs)))
|
||||
((string= "--key-download" option)
|
||||
(complete* guix-pcomplete-key-policies))
|
||||
(complete* guix-help-key-policies))
|
||||
|
||||
((command? "package")
|
||||
(cond
|
||||
@@ -305,19 +260,23 @@ INPUT is the current partially completed string."
|
||||
|
||||
((and (command? "archive" "build" "size")
|
||||
(option? "-s" "--system"))
|
||||
(complete* guix-pcomplete-systems))
|
||||
(complete* guix-help-system-types))
|
||||
|
||||
((and (command? "build")
|
||||
(option? "-r" "--root"))
|
||||
(complete* (pcomplete-entries)))
|
||||
|
||||
((and (command? "graph")
|
||||
(option? "-t" "--type"))
|
||||
(complete* (guix-pcomplete-graph-types)))
|
||||
|
||||
((and (command? "environment")
|
||||
(option? "-l" "--load"))
|
||||
(complete* (pcomplete-entries)))
|
||||
|
||||
((and (command? "hash" "download")
|
||||
(option? "-f" "--format"))
|
||||
(complete* guix-pcomplete-hash-formats))
|
||||
(complete* guix-help-hash-formats))
|
||||
|
||||
((and (command? "lint")
|
||||
(option? "-c" "--checkers"))
|
||||
@@ -330,7 +289,7 @@ INPUT is the current partially completed string."
|
||||
|
||||
((and (command? "refresh")
|
||||
(option? "-s" "--select"))
|
||||
(complete* guix-pcomplete-refresh-subsets))
|
||||
(complete* guix-help-refresh-subsets))
|
||||
|
||||
((and (command? "size")
|
||||
(option? "-m" "--map-file"))
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
;;; guix-popup.el --- Popup windows library
|
||||
|
||||
;; Copyright © 2015 Alex Kost <alezost@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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; This file provides `guix-define-popup' macro which is just an alias
|
||||
;; to `magit-define-popup'. According to the manual (info
|
||||
;; "(magit-popup) Defining prefix and suffix commands") `magit-popup'
|
||||
;; library will eventually be superseded by a more general library.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'magit-popup)
|
||||
|
||||
(defalias 'guix-define-popup 'magit-define-popup)
|
||||
|
||||
(defvar guix-popup-font-lock-keywords
|
||||
(eval-when-compile
|
||||
`((,(rx "("
|
||||
(group "guix-define-popup")
|
||||
symbol-end
|
||||
(zero-or-more blank)
|
||||
(zero-or-one
|
||||
(group (one-or-more (or (syntax word) (syntax symbol))))))
|
||||
(1 font-lock-keyword-face)
|
||||
(2 font-lock-function-name-face nil t)))))
|
||||
|
||||
(font-lock-add-keywords 'emacs-lisp-mode guix-popup-font-lock-keywords)
|
||||
|
||||
(provide 'guix-popup)
|
||||
|
||||
;;; guix-popup.el ends here
|
||||
+17
-11
@@ -1,6 +1,6 @@
|
||||
;;; guix-prettify.el --- Prettify Guix store file names
|
||||
|
||||
;; Copyright © 2014 Alex Kost <alezost@gmail.com>
|
||||
;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
|
||||
|
||||
;; This file is part of GNU Guix.
|
||||
|
||||
@@ -47,9 +47,12 @@
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'guix-utils)
|
||||
|
||||
(defgroup guix-prettify nil
|
||||
"Prettify Guix store file names."
|
||||
:prefix "guix-prettify-"
|
||||
:group 'guix
|
||||
:group 'font-lock
|
||||
:group 'convenience)
|
||||
|
||||
@@ -74,9 +77,14 @@ disabling `guix-prettify-mode' a little faster."
|
||||
:group 'guix-prettify)
|
||||
|
||||
(defcustom guix-prettify-regexp
|
||||
(rx "/"
|
||||
(or "nix" "gnu")
|
||||
"/store/"
|
||||
;; The following file names / URLs should be abbreviated:
|
||||
|
||||
;; /gnu/store/…-foo-0.1
|
||||
;; /nix/store/…-foo-0.1
|
||||
;; http://hydra.gnu.org/nar/…-foo-0.1
|
||||
;; http://hydra.gnu.org/log/…-foo-0.1
|
||||
|
||||
(rx "/" (or "store" "nar" "log") "/"
|
||||
;; Hash-parts do not include "e", "o", "u" and "t". See base32Chars
|
||||
;; at <https://github.com/NixOS/nix/blob/master/src/libutil/hash.cc>
|
||||
(group (= 32 (any "0-9" "a-d" "f-n" "p-s" "v-z"))))
|
||||
@@ -136,13 +144,11 @@ enabling/disabling `guix-prettify-mode'. If nil, do nothing.")
|
||||
(remove-text-properties (point-min)
|
||||
(point-max)
|
||||
'(composition nil))
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
(while (re-search-forward guix-prettify-regexp nil t)
|
||||
(remove-text-properties
|
||||
(match-beginning guix-prettify-regexp-group)
|
||||
(match-end guix-prettify-regexp-group)
|
||||
'(composition nil))))))))
|
||||
(guix-while-search guix-prettify-regexp
|
||||
(remove-text-properties
|
||||
(match-beginning guix-prettify-regexp-group)
|
||||
(match-end guix-prettify-regexp-group)
|
||||
'(composition nil)))))))
|
||||
|
||||
;;;###autoload
|
||||
(define-minor-mode guix-prettify-mode
|
||||
|
||||
@@ -19,12 +19,14 @@
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'guix-config)
|
||||
|
||||
(defvar guix-user-profile
|
||||
(expand-file-name "~/.guix-profile")
|
||||
"User profile.")
|
||||
|
||||
(defvar guix-default-profile
|
||||
(concat (or (getenv "NIX_STATE_DIR") "@guix_localstatedir@/guix")
|
||||
(concat guix-config-state-directory
|
||||
"/profiles/per-user/"
|
||||
(getenv "USER")
|
||||
"/guix-profile")
|
||||
@@ -0,0 +1,176 @@
|
||||
;;; guix-read.el --- Minibuffer readers
|
||||
|
||||
;; Copyright © 2015 Alex Kost <alezost@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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; This file provides functions to prompt a user for packages, system
|
||||
;; types, hash formats and other guix related stuff.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(require 'guix-help-vars)
|
||||
(require 'guix-utils)
|
||||
(require 'guix-base)
|
||||
|
||||
(defun guix-read-file-name (prompt &optional dir default-filename
|
||||
mustmatch initial predicate)
|
||||
"Read file name.
|
||||
This function is similar to `read-file-name' except it also
|
||||
expands the file name."
|
||||
(expand-file-name (read-file-name prompt dir default-filename
|
||||
mustmatch initial predicate)))
|
||||
|
||||
(defmacro guix-define-reader (name read-fun completions prompt)
|
||||
"Define NAME function to read from minibuffer.
|
||||
READ-FUN may be `completing-read', `completing-read-multiple' or
|
||||
another function with the same arguments."
|
||||
`(defun ,name (&optional prompt initial-contents)
|
||||
(,read-fun ,(if prompt
|
||||
`(or prompt ,prompt)
|
||||
'prompt)
|
||||
,completions nil nil initial-contents)))
|
||||
|
||||
(defmacro guix-define-readers (&rest args)
|
||||
"Define reader functions.
|
||||
|
||||
ARGS should have a form [KEYWORD VALUE] ... The following
|
||||
keywords are available:
|
||||
|
||||
- `completions-var' - variable used to get completions.
|
||||
|
||||
- `completions-getter' - function used to get completions.
|
||||
|
||||
- `single-reader', `single-prompt' - name of a function to read
|
||||
a single value, and a prompt for it.
|
||||
|
||||
- `multiple-reader', `multiple-prompt' - name of a function to
|
||||
read multiple values, and a prompt for it.
|
||||
|
||||
- `multiple-separator' - if specified, another
|
||||
`<multiple-reader-name>-string' function returning a string
|
||||
of multiple values separated the specified separator will be
|
||||
defined."
|
||||
(let (completions-var
|
||||
completions-getter
|
||||
single-reader
|
||||
single-prompt
|
||||
multiple-reader
|
||||
multiple-prompt
|
||||
multiple-separator)
|
||||
|
||||
;; Process the keyword args.
|
||||
(while (keywordp (car args))
|
||||
(pcase (pop args)
|
||||
(`:completions-var (setq completions-var (pop args)))
|
||||
(`:completions-getter (setq completions-getter (pop args)))
|
||||
(`:single-reader (setq single-reader (pop args)))
|
||||
(`:single-prompt (setq single-prompt (pop args)))
|
||||
(`:multiple-reader (setq multiple-reader (pop args)))
|
||||
(`:multiple-prompt (setq multiple-prompt (pop args)))
|
||||
(`:multiple-separator (setq multiple-separator (pop args)))
|
||||
(_ (pop args))))
|
||||
|
||||
(let ((completions
|
||||
(cond ((and completions-var completions-getter)
|
||||
`(or ,completions-var
|
||||
(setq ,completions-var
|
||||
(funcall ',completions-getter))))
|
||||
(completions-var
|
||||
completions-var)
|
||||
(completions-getter
|
||||
`(funcall ',completions-getter)))))
|
||||
`(progn
|
||||
,(when (and completions-var
|
||||
(not (boundp completions-var)))
|
||||
`(defvar ,completions-var nil))
|
||||
|
||||
,(when single-reader
|
||||
`(guix-define-reader ,single-reader completing-read
|
||||
,completions ,single-prompt))
|
||||
|
||||
,(when multiple-reader
|
||||
`(guix-define-reader ,multiple-reader completing-read-multiple
|
||||
,completions ,multiple-prompt))
|
||||
|
||||
,(when (and multiple-reader multiple-separator)
|
||||
(let ((name (intern (concat (symbol-name multiple-reader)
|
||||
"-string"))))
|
||||
`(defun ,name (&optional prompt initial-contents)
|
||||
(guix-concat-strings
|
||||
(,multiple-reader prompt initial-contents)
|
||||
,multiple-separator))))))))
|
||||
|
||||
(guix-define-readers
|
||||
:completions-var guix-help-system-types
|
||||
:single-reader guix-read-system-type
|
||||
:single-prompt "System type: ")
|
||||
|
||||
(guix-define-readers
|
||||
:completions-var guix-help-source-types
|
||||
:single-reader guix-read-source-type
|
||||
:single-prompt "Source type: ")
|
||||
|
||||
(guix-define-readers
|
||||
:completions-var guix-help-hash-formats
|
||||
:single-reader guix-read-hash-format
|
||||
:single-prompt "Hash format: ")
|
||||
|
||||
(guix-define-readers
|
||||
:completions-var guix-help-refresh-subsets
|
||||
:single-reader guix-read-refresh-subset
|
||||
:single-prompt "Refresh subset: ")
|
||||
|
||||
(guix-define-readers
|
||||
:completions-var guix-help-key-policies
|
||||
:single-reader guix-read-key-policy
|
||||
:single-prompt "Key policy: ")
|
||||
|
||||
(guix-define-readers
|
||||
:completions-var guix-help-elpa-archives
|
||||
:single-reader guix-read-elpa-archive
|
||||
:single-prompt "ELPA archive: ")
|
||||
|
||||
(guix-define-readers
|
||||
:completions-var guix-help-verify-options
|
||||
:multiple-reader guix-read-verify-options
|
||||
:multiple-prompt "Verify option,s: "
|
||||
:multiple-separator ",")
|
||||
|
||||
(guix-define-readers
|
||||
:completions-getter guix-graph-type-names
|
||||
:single-reader guix-read-graph-type
|
||||
:single-prompt "Graph node type: ")
|
||||
|
||||
(guix-define-readers
|
||||
:completions-getter guix-lint-checker-names
|
||||
:multiple-reader guix-read-lint-checker-names
|
||||
:multiple-prompt "Linter,s: "
|
||||
:multiple-separator ",")
|
||||
|
||||
(guix-define-readers
|
||||
:completions-getter guix-package-names
|
||||
:single-reader guix-read-package-name
|
||||
:single-prompt "Package: "
|
||||
:multiple-reader guix-read-package-names
|
||||
:multiple-prompt "Package,s: "
|
||||
:multiple-separator " ")
|
||||
|
||||
(provide 'guix-read)
|
||||
|
||||
;;; guix-read.el ends here
|
||||
+114
-8
@@ -128,6 +128,53 @@ split it into several short lines."
|
||||
(fill-region (point-min) (point-max)))
|
||||
(buffer-string)))
|
||||
|
||||
(defun guix-concat-strings (strings separator &optional location)
|
||||
"Return new string by concatenating STRINGS with SEPARATOR.
|
||||
If LOCATION is a symbol `head', add another SEPARATOR to the
|
||||
beginning of the returned string; if `tail' - add SEPARATOR to
|
||||
the end of the string; if nil, do not add SEPARATOR; otherwise
|
||||
add both to the end and to the beginning."
|
||||
(let ((str (mapconcat #'identity strings separator)))
|
||||
(cond ((null location)
|
||||
str)
|
||||
((eq location 'head)
|
||||
(concat separator str))
|
||||
((eq location 'tail)
|
||||
(concat str separator))
|
||||
(t
|
||||
(concat separator str separator)))))
|
||||
|
||||
(defun guix-shell-quote-argument (argument)
|
||||
"Quote shell command ARGUMENT.
|
||||
This function is similar to `shell-quote-argument', but less strict."
|
||||
(if (equal argument "")
|
||||
"''"
|
||||
(replace-regexp-in-string
|
||||
"\n" "'\n'"
|
||||
(replace-regexp-in-string
|
||||
(rx (not (any alnum "-=,./\n"))) "\\\\\\&" argument))))
|
||||
|
||||
(defun guix-command-symbol (&optional args)
|
||||
"Return symbol by concatenating 'guix' and ARGS (strings)."
|
||||
(intern (guix-concat-strings (cons "guix" args) "-")))
|
||||
|
||||
(defun guix-command-string (&optional args)
|
||||
"Return 'guix ARGS ...' string with quoted shell arguments."
|
||||
(let ((args (mapcar #'guix-shell-quote-argument args)))
|
||||
(guix-concat-strings (cons "guix" args) " ")))
|
||||
|
||||
(defun guix-copy-as-kill (string &optional no-message?)
|
||||
"Put STRING into `kill-ring'.
|
||||
If NO-MESSAGE? is non-nil, do not display a message about it."
|
||||
(kill-new string)
|
||||
(unless no-message?
|
||||
(message "'%s' has been added to kill ring." string)))
|
||||
|
||||
(defun guix-copy-command-as-kill (args &optional no-message?)
|
||||
"Put 'guix ARGS ...' string into `kill-ring'.
|
||||
See also `guix-copy-as-kill'."
|
||||
(guix-copy-as-kill (guix-command-string args) no-message?))
|
||||
|
||||
(defun guix-completing-read-multiple (prompt table &optional predicate
|
||||
require-match initial-input
|
||||
hist def inherit-input-method)
|
||||
@@ -146,20 +193,58 @@ Return time value."
|
||||
(require 'org)
|
||||
(org-read-date nil t nil prompt))
|
||||
|
||||
(defun guix-get-key-val (alist &rest keys)
|
||||
"Return value from ALIST by KEYS.
|
||||
ALIST is alist of alists of alists ... which can be consecutively
|
||||
accessed with KEYS."
|
||||
(let ((val alist))
|
||||
(dolist (key keys val)
|
||||
(setq val (cdr (assq key val))))))
|
||||
(defcustom guix-find-file-function #'find-file
|
||||
"Function used to find a file.
|
||||
The function is called by `guix-find-file' with a file name as a
|
||||
single argument."
|
||||
:type '(choice (function-item find-file)
|
||||
(function-item org-open-file)
|
||||
(function :tag "Other function"))
|
||||
:group 'guix)
|
||||
|
||||
(defun guix-find-file (file)
|
||||
"Find FILE if it exists."
|
||||
(if (file-exists-p file)
|
||||
(find-file file)
|
||||
(funcall guix-find-file-function file)
|
||||
(message "File '%s' does not exist." file)))
|
||||
|
||||
(defvar url-handler-regexp)
|
||||
|
||||
(defun guix-find-file-or-url (file-or-url)
|
||||
"Find FILE-OR-URL."
|
||||
(require 'url-handlers)
|
||||
(let ((file-name-handler-alist
|
||||
(cons (cons url-handler-regexp 'url-file-handler)
|
||||
file-name-handler-alist)))
|
||||
(find-file file-or-url)))
|
||||
|
||||
(defmacro guix-while-search (regexp &rest body)
|
||||
"Evaluate BODY after each search for REGEXP in the current buffer."
|
||||
(declare (indent 1) (debug t))
|
||||
`(save-excursion
|
||||
(goto-char (point-min))
|
||||
(while (re-search-forward ,regexp nil t)
|
||||
,@body)))
|
||||
|
||||
|
||||
;;; Alist accessors
|
||||
|
||||
(defmacro guix-define-alist-accessor (name assoc-fun)
|
||||
"Define NAME function to access alist values using ASSOC-FUN."
|
||||
`(defun ,name (alist &rest keys)
|
||||
,(format "Return value from ALIST by KEYS using `%s'.
|
||||
ALIST is alist of alists of alists ... which can be consecutively
|
||||
accessed with KEYS."
|
||||
assoc-fun)
|
||||
(if (or (null alist) (null keys))
|
||||
alist
|
||||
(apply #',name
|
||||
(cdr (,assoc-fun (car keys) alist))
|
||||
(cdr keys)))))
|
||||
|
||||
(guix-define-alist-accessor guix-assq-value assq)
|
||||
(guix-define-alist-accessor guix-assoc-value assoc)
|
||||
|
||||
|
||||
;;; Diff
|
||||
|
||||
@@ -199,6 +284,27 @@ See `defun' for the meaning of arguments."
|
||||
(mapconcat #'symbol-name arglist " ")
|
||||
docstring)))
|
||||
|
||||
(defmacro guix-memoized-defalias (symbol definition &optional docstring)
|
||||
"Set SYMBOL's function definition to memoized version of DEFINITION."
|
||||
(declare (doc-string 3) (indent 1))
|
||||
`(defalias ',symbol
|
||||
(guix-memoize #',definition)
|
||||
,(or docstring
|
||||
(format "Memoized version of `%S'." definition))))
|
||||
|
||||
(defvar guix-memoized-font-lock-keywords
|
||||
(eval-when-compile
|
||||
`((,(rx "("
|
||||
(group "guix-memoized-" (or "defun" "defalias"))
|
||||
symbol-end
|
||||
(zero-or-more blank)
|
||||
(zero-or-one
|
||||
(group (one-or-more (or (syntax word) (syntax symbol))))))
|
||||
(1 font-lock-keyword-face)
|
||||
(2 font-lock-function-name-face nil t)))))
|
||||
|
||||
(font-lock-add-keywords 'emacs-lisp-mode guix-memoized-font-lock-keywords)
|
||||
|
||||
(provide 'guix-utils)
|
||||
|
||||
;;; guix-utils.el ends here
|
||||
|
||||
+16
-1
@@ -1,6 +1,6 @@
|
||||
;;; guix.el --- Interface for GNU Guix package manager
|
||||
|
||||
;; Copyright © 2014 Alex Kost <alezost@gmail.com>
|
||||
;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
|
||||
|
||||
;; Package-Requires: ((geiser "0.3"))
|
||||
;; Keywords: tools
|
||||
@@ -32,12 +32,18 @@
|
||||
(require 'guix-list)
|
||||
(require 'guix-info)
|
||||
(require 'guix-utils)
|
||||
(require 'guix-read)
|
||||
|
||||
(defgroup guix nil
|
||||
"Interface for Guix package manager."
|
||||
:prefix "guix-"
|
||||
:group 'external)
|
||||
|
||||
(defgroup guix-faces nil
|
||||
"Guix faces."
|
||||
:group 'guix
|
||||
:group 'faces)
|
||||
|
||||
(defcustom guix-list-single-package nil
|
||||
"If non-nil, list a package even if it is the only matching result.
|
||||
If nil, show a single package in the info buffer."
|
||||
@@ -193,6 +199,15 @@ Interactively with prefix, prompt for PROFILE."
|
||||
(float-time from)
|
||||
(float-time to)))
|
||||
|
||||
;;;###autoload
|
||||
(defun guix-edit (id-or-name)
|
||||
"Edit (go to location of) package with ID-OR-NAME."
|
||||
(interactive (list (guix-read-package-name)))
|
||||
(let ((loc (guix-package-location id-or-name)))
|
||||
(if loc
|
||||
(guix-find-location loc)
|
||||
(message "Couldn't find package location."))))
|
||||
|
||||
(provide 'guix)
|
||||
|
||||
;;; guix.el ends here
|
||||
|
||||
@@ -18,15 +18,24 @@
|
||||
|
||||
# Bash completion for Guix commands.
|
||||
|
||||
declare _guix_available_packages
|
||||
|
||||
_guix_complete_available_package ()
|
||||
{
|
||||
local prefix="$1"
|
||||
local packages="$(${COMP_WORDS[0]} package -A "^$prefix" | cut -f1)"
|
||||
COMPREPLY=($(compgen -W "$packages" -- "$prefix"))
|
||||
if [ -z "$_guix_available_packages" ]
|
||||
then
|
||||
# Cache the complete list because it rarely changes and makes
|
||||
# completion much faster.
|
||||
_guix_available_packages="$(${COMP_WORDS[0]} package -A | cut -f1)"
|
||||
fi
|
||||
COMPREPLY=($(compgen -W "$_guix_available_packages" -- "$prefix"))
|
||||
}
|
||||
|
||||
_guix_complete_installed_package ()
|
||||
{
|
||||
# Here we do not cache the list of installed packages because that
|
||||
# may change over time and the list is relatively small anyway.
|
||||
local prefix="$1"
|
||||
local packages="$(${COMP_WORDS[0]} package -I "^$prefix" | cut -f1)"
|
||||
COMPREPLY=($(compgen -W "$packages" -- "$prefix"))
|
||||
@@ -88,6 +97,8 @@ _guix_complete_file ()
|
||||
COMPREPLY=()
|
||||
}
|
||||
|
||||
declare _guix_subcommands
|
||||
|
||||
_guix_complete ()
|
||||
{
|
||||
local word_count=${#COMP_WORDS[*]}
|
||||
@@ -105,8 +116,12 @@ _guix_complete ()
|
||||
|
||||
case $COMP_CWORD in
|
||||
1)
|
||||
local subcommands="$(guix --help | grep '^ ' | cut -c 2-)"
|
||||
COMPREPLY=($(compgen -W "$subcommands" -- "$word_at_point"))
|
||||
if [ -z "$_guix_subcommands" ]
|
||||
then
|
||||
# Cache the list of subcommands to speed things up.
|
||||
_guix_subcommands="$(guix --help | grep '^ ' | cut -c 2-)"
|
||||
fi
|
||||
COMPREPLY=($(compgen -W "$_guix_subcommands" -- "$word_at_point"))
|
||||
;;
|
||||
*)
|
||||
if _guix_is_command "package"
|
||||
|
||||
+77
-63
@@ -26,6 +26,7 @@ GNU_SYSTEM_MODULES = \
|
||||
gnu/artwork.scm \
|
||||
gnu/packages.scm \
|
||||
gnu/packages/aarddict.scm \
|
||||
gnu/packages/abduco.scm \
|
||||
gnu/packages/abiword.scm \
|
||||
gnu/packages/acct.scm \
|
||||
gnu/packages/acl.scm \
|
||||
@@ -65,6 +66,7 @@ GNU_SYSTEM_MODULES = \
|
||||
gnu/packages/commencement.scm \
|
||||
gnu/packages/compression.scm \
|
||||
gnu/packages/conkeror.scm \
|
||||
gnu/packages/conky.scm \
|
||||
gnu/packages/cook.scm \
|
||||
gnu/packages/cpio.scm \
|
||||
gnu/packages/cppi.scm \
|
||||
@@ -87,6 +89,7 @@ GNU_SYSTEM_MODULES = \
|
||||
gnu/packages/docbook.scm \
|
||||
gnu/packages/doxygen.scm \
|
||||
gnu/packages/dunst.scm \
|
||||
gnu/packages/dvtm.scm \
|
||||
gnu/packages/ebook.scm \
|
||||
gnu/packages/ed.scm \
|
||||
gnu/packages/elf.scm \
|
||||
@@ -96,7 +99,9 @@ GNU_SYSTEM_MODULES = \
|
||||
gnu/packages/enlightenment.scm \
|
||||
gnu/packages/fcitx.scm \
|
||||
gnu/packages/feh.scm \
|
||||
gnu/packages/figlet.scm \
|
||||
gnu/packages/file.scm \
|
||||
gnu/packages/finance.scm \
|
||||
gnu/packages/firmware.scm \
|
||||
gnu/packages/fish.scm \
|
||||
gnu/packages/flashing-tools.scm \
|
||||
@@ -163,6 +168,7 @@ GNU_SYSTEM_MODULES = \
|
||||
gnu/packages/jrnl.scm \
|
||||
gnu/packages/julia.scm \
|
||||
gnu/packages/kde.scm \
|
||||
gnu/packages/kde-frameworks.scm \
|
||||
gnu/packages/key-mon.scm \
|
||||
gnu/packages/language.scm \
|
||||
gnu/packages/less.scm \
|
||||
@@ -234,10 +240,12 @@ GNU_SYSTEM_MODULES = \
|
||||
gnu/packages/onc-rpc.scm \
|
||||
gnu/packages/openbox.scm \
|
||||
gnu/packages/openldap.scm \
|
||||
gnu/packages/openstack.scm \
|
||||
gnu/packages/orpheus.scm \
|
||||
gnu/packages/ots.scm \
|
||||
gnu/packages/package-management.scm \
|
||||
gnu/packages/parallel.scm \
|
||||
gnu/packages/password-utils.scm \
|
||||
gnu/packages/patchutils.scm \
|
||||
gnu/packages/pciutils.scm \
|
||||
gnu/packages/pcre.scm \
|
||||
@@ -319,6 +327,7 @@ GNU_SYSTEM_MODULES = \
|
||||
gnu/packages/wget.scm \
|
||||
gnu/packages/wicd.scm \
|
||||
gnu/packages/wine.scm \
|
||||
gnu/packages/wm.scm \
|
||||
gnu/packages/wordnet.scm \
|
||||
gnu/packages/wv.scm \
|
||||
gnu/packages/wxwidgets.scm \
|
||||
@@ -339,11 +348,13 @@ GNU_SYSTEM_MODULES = \
|
||||
gnu/services/avahi.scm \
|
||||
gnu/services/base.scm \
|
||||
gnu/services/databases.scm \
|
||||
gnu/services/dbus.scm \
|
||||
gnu/services/desktop.scm \
|
||||
gnu/services/dmd.scm \
|
||||
gnu/services/lirc.scm \
|
||||
gnu/services/networking.scm \
|
||||
gnu/services/ssh.scm \
|
||||
gnu/services/web.scm \
|
||||
gnu/services/xorg.scm \
|
||||
\
|
||||
gnu/system.scm \
|
||||
@@ -351,6 +362,7 @@ GNU_SYSTEM_MODULES = \
|
||||
gnu/system/grub.scm \
|
||||
gnu/system/install.scm \
|
||||
gnu/system/linux.scm \
|
||||
gnu/system/linux-container.scm \
|
||||
gnu/system/linux-initrd.scm \
|
||||
gnu/system/locale.scm \
|
||||
gnu/system/nss.scm \
|
||||
@@ -375,6 +387,7 @@ dist_patch_DATA = \
|
||||
gnu/packages/patches/abiword-pass-no-undefined-to-linker.patch \
|
||||
gnu/packages/patches/abiword-use-proper-png-api.patch \
|
||||
gnu/packages/patches/abiword-wmf-version-lookup-fix.patch \
|
||||
gnu/packages/patches/acl-hurd-path-max.patch \
|
||||
gnu/packages/patches/aegis-constness-error.patch \
|
||||
gnu/packages/patches/aegis-perl-tempdir1.patch \
|
||||
gnu/packages/patches/aegis-perl-tempdir2.patch \
|
||||
@@ -389,8 +402,10 @@ dist_patch_DATA = \
|
||||
gnu/packages/patches/audacity-fix-ffmpeg-binding.patch \
|
||||
gnu/packages/patches/automake-skip-amhello-tests.patch \
|
||||
gnu/packages/patches/avahi-localstatedir.patch \
|
||||
gnu/packages/patches/avidemux-install-to-lib.patch \
|
||||
gnu/packages/patches/avrdude-fix-libusb.patch \
|
||||
gnu/packages/patches/bash-completion-directories.patch \
|
||||
gnu/packages/patches/bedtools-32bit-compilation.patch \
|
||||
gnu/packages/patches/bowtie-fix-makefile.patch \
|
||||
gnu/packages/patches/bigloo-gc-shebangs.patch \
|
||||
gnu/packages/patches/binutils-ld-new-dtags.patch \
|
||||
@@ -404,12 +419,6 @@ dist_patch_DATA = \
|
||||
gnu/packages/patches/clang-libc-search-path.patch \
|
||||
gnu/packages/patches/clucene-pkgconfig.patch \
|
||||
gnu/packages/patches/cmake-fix-tests.patch \
|
||||
gnu/packages/patches/cpio-CVE-2014-9112-pt1.patch \
|
||||
gnu/packages/patches/cpio-CVE-2014-9112-pt2.patch \
|
||||
gnu/packages/patches/cpio-CVE-2014-9112-pt3.patch \
|
||||
gnu/packages/patches/cpio-CVE-2014-9112-pt4.patch \
|
||||
gnu/packages/patches/cpio-CVE-2014-9112-pt5.patch \
|
||||
gnu/packages/patches/cpio-fix-symlink-bad-length-test.patch \
|
||||
gnu/packages/patches/cpio-gets-undeclared.patch \
|
||||
gnu/packages/patches/cpufrequtils-fix-aclocal.patch \
|
||||
gnu/packages/patches/crda-optional-gcrypt.patch \
|
||||
@@ -429,11 +438,22 @@ dist_patch_DATA = \
|
||||
gnu/packages/patches/elfutils-tests-ptrace.patch \
|
||||
gnu/packages/patches/emacs-exec-path.patch \
|
||||
gnu/packages/patches/eudev-rules-directory.patch \
|
||||
gnu/packages/patches/evilwm-lost-focus-bug.patch \
|
||||
gnu/packages/patches/expat-CVE-2015-1283.patch \
|
||||
gnu/packages/patches/fastcap-mulGlobal.patch \
|
||||
gnu/packages/patches/fastcap-mulSetup.patch \
|
||||
gnu/packages/patches/fasthenry-spAllocate.patch \
|
||||
gnu/packages/patches/fasthenry-spBuild.patch \
|
||||
gnu/packages/patches/fasthenry-spUtils.patch \
|
||||
gnu/packages/patches/fasthenry-spSolve.patch \
|
||||
gnu/packages/patches/fasthenry-spFactor.patch \
|
||||
gnu/packages/patches/findutils-absolute-paths.patch \
|
||||
gnu/packages/patches/findutils-localstatedir.patch \
|
||||
gnu/packages/patches/flashrom-use-libftdi1.patch \
|
||||
gnu/packages/patches/flex-bison-tests.patch \
|
||||
gnu/packages/patches/flint-ldconfig.patch \
|
||||
gnu/packages/patches/fltk-shared-lib-defines.patch \
|
||||
gnu/packages/patches/freeimage-CVE-2015-0852.patch \
|
||||
gnu/packages/patches/fuse-CVE-2015-3202.patch \
|
||||
gnu/packages/patches/gawk-shell.patch \
|
||||
gnu/packages/patches/gcc-arm-link-spec-fix.patch \
|
||||
@@ -441,8 +461,10 @@ dist_patch_DATA = \
|
||||
gnu/packages/patches/gcc-libvtv-runpath.patch \
|
||||
gnu/packages/patches/gcc-5.0-libvtv-runpath.patch \
|
||||
gnu/packages/patches/geoclue-config.patch \
|
||||
gnu/packages/patches/ghostscript-CVE-2015-3228.patch \
|
||||
gnu/packages/patches/ghostscript-runpath.patch \
|
||||
gnu/packages/patches/gitolite-openssh-6.8-compat.patch \
|
||||
gnu/packages/patches/glib-networking-ssl-cert-file.patch \
|
||||
gnu/packages/patches/glib-tests-desktop.patch \
|
||||
gnu/packages/patches/glib-tests-homedir.patch \
|
||||
gnu/packages/patches/glib-tests-prlimit.patch \
|
||||
@@ -451,7 +473,13 @@ dist_patch_DATA = \
|
||||
gnu/packages/patches/glibc-bootstrap-system.patch \
|
||||
gnu/packages/patches/glibc-ldd-x86_64.patch \
|
||||
gnu/packages/patches/glibc-locales.patch \
|
||||
gnu/packages/patches/glibc-locale-incompatibility.patch \
|
||||
gnu/packages/patches/glibc-o-largefile.patch \
|
||||
gnu/packages/patches/glibc-versioned-locpath.patch \
|
||||
gnu/packages/patches/gmp-arm-asm-nothumb.patch \
|
||||
gnu/packages/patches/gmp-faulty-test.patch \
|
||||
gnu/packages/patches/gnucash-price-quotes-perl.patch \
|
||||
gnu/packages/patches/gnutls-doc-fix.patch \
|
||||
gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch \
|
||||
gnu/packages/patches/gobject-introspection-cc.patch \
|
||||
gnu/packages/patches/gobject-introspection-girepository.patch \
|
||||
@@ -464,16 +492,21 @@ dist_patch_DATA = \
|
||||
gnu/packages/patches/guile-arm-fixes.patch \
|
||||
gnu/packages/patches/guile-default-utf8.patch \
|
||||
gnu/packages/patches/guile-linux-syscalls.patch \
|
||||
gnu/packages/patches/guile-present-coding.patch \
|
||||
gnu/packages/patches/guile-relocatable.patch \
|
||||
gnu/packages/patches/guile-rsvg-pkgconfig.patch \
|
||||
gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \
|
||||
gnu/packages/patches/hop-bigloo-4.0b.patch \
|
||||
gnu/packages/patches/hop-linker-flags.patch \
|
||||
gnu/packages/patches/hwloc-gather-topology-lstopo.patch \
|
||||
gnu/packages/patches/hydra-automake-1.15.patch \
|
||||
gnu/packages/patches/hydra-disable-darcs-test.patch \
|
||||
gnu/packages/patches/icecat-enable-acceleration-and-webgl.patch \
|
||||
gnu/packages/patches/icecat-avoid-bundled-includes.patch \
|
||||
gnu/packages/patches/icecat-freetype-2.6.patch \
|
||||
gnu/packages/patches/icecat-libvpx-1.4.patch \
|
||||
gnu/packages/patches/icu4c-CVE-2014-6585.patch \
|
||||
gnu/packages/patches/icu4c-CVE-2015-1270.patch \
|
||||
gnu/packages/patches/icu4c-CVE-2015-4760.patch \
|
||||
gnu/packages/patches/imagemagick-test-segv.patch \
|
||||
gnu/packages/patches/irrlicht-mesa-10.patch \
|
||||
gnu/packages/patches/jbig2dec-ignore-testtest.patch \
|
||||
gnu/packages/patches/julia-0.3.10-fix-empty-array.patch \
|
||||
@@ -489,44 +522,41 @@ dist_patch_DATA = \
|
||||
gnu/packages/patches/libbonobo-activation-test-race.patch \
|
||||
gnu/packages/patches/libcanberra-sound-theme-freedesktop.patch \
|
||||
gnu/packages/patches/libevent-dns-tests.patch \
|
||||
gnu/packages/patches/libmtp-devices.patch \
|
||||
gnu/packages/patches/liboop-mips64-deplibs-fix.patch \
|
||||
gnu/packages/patches/liblxqt-include.patch \
|
||||
gnu/packages/patches/libmad-armv7-thumb-pt1.patch \
|
||||
gnu/packages/patches/libmad-armv7-thumb-pt2.patch \
|
||||
gnu/packages/patches/libmad-frame-length.patch \
|
||||
gnu/packages/patches/libmad-mips-newgcc.patch \
|
||||
gnu/packages/patches/libtheora-config-guess.patch \
|
||||
gnu/packages/patches/libtiff-CVE-2012-4564.patch \
|
||||
gnu/packages/patches/libtiff-CVE-2013-1960.patch \
|
||||
gnu/packages/patches/libtiff-CVE-2013-1961.patch \
|
||||
gnu/packages/patches/libtiff-CVE-2013-4231.patch \
|
||||
gnu/packages/patches/libtiff-CVE-2013-4232.patch \
|
||||
gnu/packages/patches/libtiff-CVE-2013-4243.patch \
|
||||
gnu/packages/patches/libtiff-CVE-2013-4244.patch \
|
||||
gnu/packages/patches/libtiff-CVE-2014-8127-pt1.patch \
|
||||
gnu/packages/patches/libtiff-CVE-2014-8127-pt2.patch \
|
||||
gnu/packages/patches/libtiff-CVE-2014-8127-pt3.patch \
|
||||
gnu/packages/patches/libtiff-CVE-2014-8127-pt4.patch \
|
||||
gnu/packages/patches/libtiff-CVE-2014-8128-pt1.patch \
|
||||
gnu/packages/patches/libtiff-CVE-2014-8128-pt2.patch \
|
||||
gnu/packages/patches/libtiff-CVE-2014-8128-pt3.patch \
|
||||
gnu/packages/patches/libtiff-CVE-2014-8128-pt4.patch \
|
||||
gnu/packages/patches/libtiff-CVE-2014-8128-pt5.patch \
|
||||
gnu/packages/patches/libtiff-CVE-2014-8129.patch \
|
||||
gnu/packages/patches/libtiff-CVE-2014-9330.patch \
|
||||
gnu/packages/patches/libtiff-CVE-2014-9655.patch \
|
||||
gnu/packages/patches/libtool-skip-tests2.patch \
|
||||
gnu/packages/patches/libssh-CVE-2014-0017.patch \
|
||||
gnu/packages/patches/libunwind-CVE-2015-3239.patch \
|
||||
gnu/packages/patches/libwmf-CAN-2004-0941.patch \
|
||||
gnu/packages/patches/libwmf-CVE-2006-3376.patch \
|
||||
gnu/packages/patches/libwmf-CVE-2007-0455.patch \
|
||||
gnu/packages/patches/libwmf-CVE-2007-2756.patch \
|
||||
gnu/packages/patches/libwmf-CVE-2007-3472.patch \
|
||||
gnu/packages/patches/libwmf-CVE-2007-3473.patch \
|
||||
gnu/packages/patches/libwmf-CVE-2007-3477.patch \
|
||||
gnu/packages/patches/libwmf-CVE-2009-1364.patch \
|
||||
gnu/packages/patches/libwmf-CVE-2015-0848+4588+4695+4696.patch \
|
||||
gnu/packages/patches/libwmf-CVE-2009-3546.patch \
|
||||
gnu/packages/patches/libwmf-CVE-2015-0848+CVE-2015-4588.patch \
|
||||
gnu/packages/patches/libwmf-CVE-2015-4695.patch \
|
||||
gnu/packages/patches/libwmf-CVE-2015-4696.patch \
|
||||
gnu/packages/patches/lirc-localstatedir.patch \
|
||||
gnu/packages/patches/libpthread-glibc-preparation.patch \
|
||||
gnu/packages/patches/lm-sensors-hwmon-attrs.patch \
|
||||
gnu/packages/patches/lua-pkgconfig.patch \
|
||||
gnu/packages/patches/lua51-liblua-so.patch \
|
||||
gnu/packages/patches/luajit-no_ldconfig.patch \
|
||||
gnu/packages/patches/luajit-symlinks.patch \
|
||||
gnu/packages/patches/luit-posix.patch \
|
||||
gnu/packages/patches/m4-gets-undeclared.patch \
|
||||
gnu/packages/patches/make-impure-dirs.patch \
|
||||
gnu/packages/patches/mars-install.patch \
|
||||
gnu/packages/patches/mars-sfml-2.3.patch \
|
||||
gnu/packages/patches/maxima-defsystem-mkdir.patch \
|
||||
gnu/packages/patches/mc-fix-ncurses-build.patch \
|
||||
gnu/packages/patches/mcron-install.patch \
|
||||
@@ -538,7 +568,6 @@ dist_patch_DATA = \
|
||||
gnu/packages/patches/module-init-tools-moduledir.patch \
|
||||
gnu/packages/patches/mumps-build-parallelism.patch \
|
||||
gnu/packages/patches/mupdf-buildsystem-fix.patch \
|
||||
gnu/packages/patches/mutt-CVE-2014-9116.patch \
|
||||
gnu/packages/patches/mutt-store-references.patch \
|
||||
gnu/packages/patches/net-tools-bitrot.patch \
|
||||
gnu/packages/patches/ngircd-handle-zombies.patch \
|
||||
@@ -550,20 +579,25 @@ dist_patch_DATA = \
|
||||
gnu/packages/patches/nvi-dbpagesize-binpower.patch \
|
||||
gnu/packages/patches/nvi-db4.patch \
|
||||
gnu/packages/patches/openexr-missing-samples.patch \
|
||||
gnu/packages/patches/openjpeg-CVE-2015-6581.patch \
|
||||
gnu/packages/patches/openjpeg-use-after-free-fix.patch \
|
||||
gnu/packages/patches/openssl-runpath.patch \
|
||||
gnu/packages/patches/openssl-c-rehash.patch \
|
||||
gnu/packages/patches/orpheus-cast-errors-and-includes.patch \
|
||||
gnu/packages/patches/ots-no-include-missing-file.patch \
|
||||
gnu/packages/patches/patchelf-page-size.patch \
|
||||
gnu/packages/patches/patchelf-rework-for-arm.patch \
|
||||
gnu/packages/patches/patchutils-xfail-gendiff-tests.patch \
|
||||
gnu/packages/patches/patch-hurd-path-max.patch \
|
||||
gnu/packages/patches/pavucontrol-sigsegv.patch \
|
||||
gnu/packages/patches/perl-autosplit-default-time.patch \
|
||||
gnu/packages/patches/perl-finance-quote-unuse-mozilla-ca.patch \
|
||||
gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch \
|
||||
gnu/packages/patches/perl-module-pluggable-search.patch \
|
||||
gnu/packages/patches/perl-net-amazon-s3-moose-warning.patch \
|
||||
gnu/packages/patches/perl-net-ssleay-disable-ede-test.patch \
|
||||
gnu/packages/patches/perl-no-sys-dirs.patch \
|
||||
gnu/packages/patches/perl-tk-x11-discover.patch \
|
||||
gnu/packages/patches/pidgin-add-search-path.patch \
|
||||
gnu/packages/patches/pingus-sdl-libs-config.patch \
|
||||
gnu/packages/patches/plotutils-libpng-jmpbuf.patch \
|
||||
gnu/packages/patches/polkit-drop-test.patch \
|
||||
@@ -578,33 +612,17 @@ dist_patch_DATA = \
|
||||
gnu/packages/patches/pybugz-encode-error.patch \
|
||||
gnu/packages/patches/pybugz-stty.patch \
|
||||
gnu/packages/patches/pyqt-configure.patch \
|
||||
gnu/packages/patches/python-2.7-search-paths.patch \
|
||||
gnu/packages/patches/python-3-search-paths.patch \
|
||||
gnu/packages/patches/python-disable-ssl-test.patch \
|
||||
gnu/packages/patches/python-fix-tests.patch \
|
||||
gnu/packages/patches/python-libffi-mips-n32-fix.patch \
|
||||
gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch \
|
||||
gnu/packages/patches/python2-sqlite-3.8.4-test-fix.patch \
|
||||
gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \
|
||||
gnu/packages/patches/qemu-CVE-2015-3209.patch \
|
||||
gnu/packages/patches/qemu-CVE-2015-3456.patch \
|
||||
gnu/packages/patches/qemu-CVE-2015-4037.patch \
|
||||
gnu/packages/patches/qemu-CVE-2015-4103.patch \
|
||||
gnu/packages/patches/qemu-CVE-2015-4104.patch \
|
||||
gnu/packages/patches/qemu-CVE-2015-4105.patch \
|
||||
gnu/packages/patches/qemu-CVE-2015-4106-pt1.patch \
|
||||
gnu/packages/patches/qemu-CVE-2015-4106-pt2.patch \
|
||||
gnu/packages/patches/qemu-CVE-2015-4106-pt3.patch \
|
||||
gnu/packages/patches/qemu-CVE-2015-4106-pt4.patch \
|
||||
gnu/packages/patches/qemu-CVE-2015-4106-pt5.patch \
|
||||
gnu/packages/patches/qemu-CVE-2015-4106-pt6.patch \
|
||||
gnu/packages/patches/qemu-CVE-2015-4106-pt7.patch \
|
||||
gnu/packages/patches/qemu-CVE-2015-4106-pt8.patch \
|
||||
gnu/packages/patches/qemu-CVE-2015-6855.patch \
|
||||
gnu/packages/patches/qt4-ldflags.patch \
|
||||
gnu/packages/patches/qt4-tests.patch \
|
||||
gnu/packages/patches/qt5-conflicting-typedefs.patch \
|
||||
gnu/packages/patches/qt5-runpath.patch \
|
||||
gnu/packages/patches/ratpoison-shell.patch \
|
||||
gnu/packages/patches/readline-link-ncurses.patch \
|
||||
gnu/packages/patches/ripperx-libm.patch \
|
||||
gnu/packages/patches/ripperx-missing-file.patch \
|
||||
gnu/packages/patches/sed-hurd-path-max.patch \
|
||||
gnu/packages/patches/scheme48-tests.patch \
|
||||
gnu/packages/patches/scotch-test-threading.patch \
|
||||
@@ -615,12 +633,10 @@ dist_patch_DATA = \
|
||||
gnu/packages/patches/slim-config.patch \
|
||||
gnu/packages/patches/slim-sigusr1.patch \
|
||||
gnu/packages/patches/soprano-find-clucene.patch \
|
||||
gnu/packages/patches/subversion-sqlite-3.8.9-fix.patch \
|
||||
gnu/packages/patches/superlu-dist-scotchmetis.patch \
|
||||
gnu/packages/patches/tar-d_ino_in_dirent-fix.patch \
|
||||
gnu/packages/patches/tar-skip-unreliable-tests.patch \
|
||||
gnu/packages/patches/tcsh-fix-autotest.patch \
|
||||
gnu/packages/patches/teckit-cstdio.patch \
|
||||
gnu/packages/patches/texi2html-document-encoding.patch \
|
||||
gnu/packages/patches/texi2html-i18n.patch \
|
||||
gnu/packages/patches/tidy-CVE-2015-5522+5523.patch \
|
||||
@@ -633,28 +649,25 @@ dist_patch_DATA = \
|
||||
gnu/packages/patches/unzip-CVE-2014-8141.patch \
|
||||
gnu/packages/patches/unzip-CVE-2014-9636.patch \
|
||||
gnu/packages/patches/unzip-allow-greater-hostver-values.patch \
|
||||
gnu/packages/patches/unzip-increase-size-of-cfactorstr.patch \
|
||||
gnu/packages/patches/unzip-attribs-overflow.patch \
|
||||
gnu/packages/patches/unzip-fix-overflows-and-infloop.patch \
|
||||
gnu/packages/patches/unzip-format-secure.patch \
|
||||
gnu/packages/patches/unzip-initialize-symlink-flag.patch \
|
||||
gnu/packages/patches/unzip-overflow-long-fsize.patch \
|
||||
gnu/packages/patches/unzip-remove-build-date.patch \
|
||||
gnu/packages/patches/util-linux-tests.patch \
|
||||
gnu/packages/patches/upower-builddir.patch \
|
||||
gnu/packages/patches/valgrind-glibc-2.21.patch \
|
||||
gnu/packages/patches/valgrind-enable-arm.patch \
|
||||
gnu/packages/patches/vpnc-script.patch \
|
||||
gnu/packages/patches/vtk-mesa-10.patch \
|
||||
gnu/packages/patches/w3m-fix-compile.patch \
|
||||
gnu/packages/patches/webkitgtk-2.4-sql-init-string.patch \
|
||||
gnu/packages/patches/weex-vacopy.patch \
|
||||
gnu/packages/patches/wicd-bitrate-none-fix.patch \
|
||||
gnu/packages/patches/wicd-get-selected-profile-fix.patch \
|
||||
gnu/packages/patches/wicd-template-instantiation.patch \
|
||||
gnu/packages/patches/wicd-urwid-1.3.patch \
|
||||
gnu/packages/patches/wmctrl-64-fix.patch \
|
||||
gnu/packages/patches/wpa-supplicant-CVE-2015-1863.patch \
|
||||
gnu/packages/patches/wpa-supplicant-2015-2-fix.patch \
|
||||
gnu/packages/patches/wpa-supplicant-2015-3-fix.patch \
|
||||
gnu/packages/patches/wpa-supplicant-2015-4-fix-pt1.patch \
|
||||
gnu/packages/patches/wpa-supplicant-2015-4-fix-pt2.patch \
|
||||
gnu/packages/patches/wpa-supplicant-2015-4-fix-pt3.patch \
|
||||
gnu/packages/patches/wpa-supplicant-2015-4-fix-pt4.patch \
|
||||
gnu/packages/patches/wpa-supplicant-2015-4-fix-pt5.patch \
|
||||
gnu/packages/patches/wpa-supplicant-2015-5-fix.patch \
|
||||
gnu/packages/patches/xf86-video-ark-remove-mibstore.patch \
|
||||
gnu/packages/patches/xf86-video-ast-remove-mibstore.patch \
|
||||
gnu/packages/patches/xf86-video-geode-glibc-2.20.patch \
|
||||
@@ -675,6 +688,7 @@ dist_patch_DATA = \
|
||||
gnu/packages/patches/xf86-video-trident-remove-mibstore.patch \
|
||||
gnu/packages/patches/xf86-video-vmware-glibc-2.20.patch \
|
||||
gnu/packages/patches/xfce4-panel-plugins.patch \
|
||||
gnu/packages/patches/xfce4-settings-defaults.patch \
|
||||
gnu/packages/patches/xmodmap-asprintf.patch \
|
||||
gnu/packages/patches/zathura-plugindir-environment-variable.patch
|
||||
|
||||
|
||||
@@ -323,6 +323,10 @@ corresponds to the symbols listed in FLAGS."
|
||||
(()
|
||||
0))))
|
||||
|
||||
(define (regular-file? file-name)
|
||||
"Return #t if FILE-NAME is a regular file."
|
||||
(eq? (stat:type (stat file-name)) 'regular))
|
||||
|
||||
(define* (mount-file-system spec #:key (root "/root"))
|
||||
"Mount the file system described by SPEC under ROOT. SPEC must have the
|
||||
form:
|
||||
@@ -339,7 +343,16 @@ run a file system check."
|
||||
(flags (mount-flags->bit-mask flags)))
|
||||
(when check?
|
||||
(check-file-system source type))
|
||||
(mkdir-p mount-point)
|
||||
|
||||
;; Create the mount point. Most of the time this is a directory, but
|
||||
;; in the case of a bind mount, a regular file may be needed.
|
||||
(if (and (= MS_BIND (logand flags MS_BIND))
|
||||
(regular-file? source))
|
||||
(unless (file-exists? mount-point)
|
||||
(mkdir-p (dirname mount-point))
|
||||
(call-with-output-file mount-point (const #t)))
|
||||
(mkdir-p mount-point))
|
||||
|
||||
(mount source mount-point type flags options)
|
||||
|
||||
;; For read-only bind mounts, an extra remount is needed, as per
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
;;; Code:
|
||||
|
||||
(define* (mount-essential-file-systems #:key (root "/"))
|
||||
"Mount /proc and /sys under ROOT."
|
||||
"Mount /dev, /proc, and /sys under ROOT."
|
||||
(define (scope dir)
|
||||
(string-append root
|
||||
(if (string-suffix? "/" root)
|
||||
@@ -60,6 +60,10 @@
|
||||
(mkdir (scope "proc")))
|
||||
(mount "none" (scope "proc") "proc")
|
||||
|
||||
(unless (file-exists? (scope "dev"))
|
||||
(mkdir (scope "dev")))
|
||||
(mount "none" (scope "dev") "devtmpfs")
|
||||
|
||||
(unless (file-exists? (scope "sys"))
|
||||
(mkdir (scope "sys")))
|
||||
(mount "none" (scope "sys") "sysfs"))
|
||||
@@ -71,7 +75,7 @@
|
||||
(unless (file-exists? target)
|
||||
(mkdir target))
|
||||
(mount dir target "" MS_MOVE)))
|
||||
'("/proc" "/sys")))
|
||||
'("/dev" "/proc" "/sys")))
|
||||
|
||||
(define (linux-command-line)
|
||||
"Return the Linux kernel command line as a list of strings."
|
||||
@@ -100,7 +104,7 @@ with the given MAJOR number, starting with MINOR."
|
||||
|
||||
(define* (make-essential-device-nodes #:key (root "/"))
|
||||
"Make essential device nodes under ROOT/dev."
|
||||
;; The hand-made udev!
|
||||
;; The hand-made devtmpfs/udev!
|
||||
|
||||
(define (scope dir)
|
||||
(string-append root
|
||||
@@ -255,7 +259,8 @@ UNIONFS."
|
||||
(mount "none" "/rw-root" "tmpfs")
|
||||
|
||||
;; We want read-write /dev nodes.
|
||||
(make-essential-device-nodes #:root "/rw-root")
|
||||
(mkdir-p "/rw-root/dev")
|
||||
(mount "none" "/rw-root/dev" "devtmpfs")
|
||||
|
||||
;; Make /root a union of the tmpfs and the actual root. Use
|
||||
;; 'max_files' to set a high RLIMIT_NOFILE for the unionfs process
|
||||
@@ -385,9 +390,6 @@ to it are lost."
|
||||
(unless (configure-qemu-networking)
|
||||
(display "network interface is DOWN\n")))
|
||||
|
||||
;; Make /dev nodes.
|
||||
(make-essential-device-nodes)
|
||||
|
||||
;; Prepare the real root file system under /root.
|
||||
(unless (file-exists? "/root")
|
||||
(mkdir "/root"))
|
||||
@@ -405,10 +407,6 @@ to it are lost."
|
||||
#:volatile-root? volatile-root?)
|
||||
(mount "none" "/root" "tmpfs"))
|
||||
|
||||
(unless (file-exists? "/root/dev")
|
||||
(mkdir "/root/dev")
|
||||
(make-essential-device-nodes #:root "/root"))
|
||||
|
||||
;; Mount the specified file systems.
|
||||
(for-each mount-file-system
|
||||
(remove root-mount-point? mounts))
|
||||
|
||||
@@ -36,7 +36,9 @@
|
||||
"Apply THUNK, but exit with a status code of 1 if it fails."
|
||||
(dynamic-wind
|
||||
(const #t)
|
||||
thunk
|
||||
(lambda ()
|
||||
(thunk)
|
||||
(primitive-exit 0))
|
||||
(lambda ()
|
||||
(primitive-exit 1))))
|
||||
|
||||
@@ -55,6 +57,9 @@ to ROOT, then make ROOT the new root directory for the process."
|
||||
(define (scope dir)
|
||||
(string-append root dir))
|
||||
|
||||
(define (touch file-name)
|
||||
(call-with-output-file file-name (const #t)))
|
||||
|
||||
(define (bind-mount src dest)
|
||||
(mount src dest "none" MS_BIND))
|
||||
|
||||
@@ -89,8 +94,7 @@ to ROOT, then make ROOT the new root directory for the process."
|
||||
(for-each (lambda (device)
|
||||
(when (file-exists? device)
|
||||
;; Create the mount point file.
|
||||
(call-with-output-file (scope device)
|
||||
(const #t))
|
||||
(touch (scope device))
|
||||
(bind-mount device (scope device))))
|
||||
'("/dev/null"
|
||||
"/dev/zero"
|
||||
@@ -101,6 +105,15 @@ to ROOT, then make ROOT the new root directory for the process."
|
||||
"/dev/ptmx"
|
||||
"/dev/fuse"))
|
||||
|
||||
;; Setup the container's /dev/console by bind mounting the pseudo-terminal
|
||||
;; associated with standard input.
|
||||
(let ((in (current-input-port))
|
||||
(console (scope "/dev/console")))
|
||||
(when (isatty? in)
|
||||
(touch console)
|
||||
(chmod console #o600)
|
||||
(bind-mount (ttyname in) console)))
|
||||
|
||||
;; Setup standard input/output/error.
|
||||
(symlink "/proc/self/fd" (scope "/dev/fd"))
|
||||
(symlink "/proc/self/fd/0" (scope "/dev/stdin"))
|
||||
@@ -120,23 +133,17 @@ to ROOT, then make ROOT the new root directory for the process."
|
||||
(umount "real-root" MNT_DETACH)
|
||||
(rmdir "real-root")))
|
||||
|
||||
(define (initialize-user-namespace pid)
|
||||
"Configure the user namespace for PID."
|
||||
(define (initialize-user-namespace pid host-uids)
|
||||
"Configure the user namespace for PID. HOST-UIDS specifies the number of
|
||||
host user identifiers to map into the user namespace."
|
||||
(define proc-dir
|
||||
(string-append "/proc/" (number->string pid)))
|
||||
|
||||
(define (scope file)
|
||||
(string-append proc-dir file))
|
||||
|
||||
;; Only root can map more than a single uid/gid. A range of 65536 uid/gids
|
||||
;; is used to cover 16 bits worth of users and groups, which is sufficient
|
||||
;; for most cases.
|
||||
;;
|
||||
;; See also: http://www.freedesktop.org/software/systemd/man/systemd-nspawn.html#--private-users=
|
||||
(let* ((uid (getuid))
|
||||
(gid (getgid))
|
||||
(uid-range (if (zero? uid) 65536 1))
|
||||
(gid-range (if (zero? gid) 65536 1)))
|
||||
(let ((uid (getuid))
|
||||
(gid (getgid)))
|
||||
|
||||
;; Only root can write to the gid map without first disabling the
|
||||
;; setgroups syscall.
|
||||
@@ -149,15 +156,16 @@ to ROOT, then make ROOT the new root directory for the process."
|
||||
;; within the container.
|
||||
(call-with-output-file (scope "/uid_map")
|
||||
(lambda (port)
|
||||
(format port "0 ~d ~d" uid uid-range)))
|
||||
(format port "0 ~d ~d" uid host-uids)))
|
||||
(call-with-output-file (scope "/gid_map")
|
||||
(lambda (port)
|
||||
(format port "0 ~d ~d" gid gid-range)))))
|
||||
(format port "0 ~d ~d" gid host-uids)))))
|
||||
|
||||
(define (namespaces->bit-mask namespaces)
|
||||
"Return the number suitable for the 'flags' argument of 'clone' that
|
||||
corresponds to the symbols in NAMESPACES."
|
||||
(apply logior SIGCHLD
|
||||
;; Use the same flags as fork(3) in addition to the namespace flags.
|
||||
(apply logior SIGCHLD CLONE_CHILD_CLEARTID CLONE_CHILD_SETTID
|
||||
(map (match-lambda
|
||||
('mnt CLONE_NEWNS)
|
||||
('uts CLONE_NEWUTS)
|
||||
@@ -167,12 +175,13 @@ corresponds to the symbols in NAMESPACES."
|
||||
('net CLONE_NEWNET))
|
||||
namespaces)))
|
||||
|
||||
(define (run-container root mounts namespaces thunk)
|
||||
(define (run-container root mounts namespaces host-uids thunk)
|
||||
"Run THUNK in a new container process and return its PID. ROOT specifies
|
||||
the root directory for the container. MOUNTS is a list of file system specs
|
||||
that specify the mapping of host file systems into the container. NAMESPACES
|
||||
is a list of symbols that correspond to the possible Linux namespaces: mnt,
|
||||
ipc, uts, user, and net."
|
||||
ipc, uts, user, and net. HOST-UIDS specifies the number of
|
||||
host user identifiers to map into the user namespace."
|
||||
;; The parent process must initialize the user namespace for the child
|
||||
;; before it can boot. To negotiate this, a pipe is used such that the
|
||||
;; child process blocks until the parent writes to it.
|
||||
@@ -196,26 +205,31 @@ ipc, uts, user, and net."
|
||||
(thunk))))
|
||||
(pid
|
||||
(when (memq 'user namespaces)
|
||||
(initialize-user-namespace pid))
|
||||
(initialize-user-namespace pid host-uids))
|
||||
;; TODO: Initialize cgroups.
|
||||
(close in)
|
||||
(write 'ready out)
|
||||
(close out)
|
||||
pid))))))
|
||||
|
||||
(define* (call-with-container mounts thunk #:key (namespaces %namespaces))
|
||||
(define* (call-with-container mounts thunk #:key (namespaces %namespaces)
|
||||
(host-uids 1))
|
||||
"Run THUNK in a new container process and return its exit status.
|
||||
MOUNTS is a list of file system specs that specify the mapping of host file
|
||||
systems into the container. NAMESPACES is a list of symbols corresponding to
|
||||
the identifiers for Linux namespaces: mnt, ipc, uts, pid, user, and net. By
|
||||
default, all namespaces are used.
|
||||
default, all namespaces are used. HOST-UIDS is the number of host user
|
||||
identifiers to map into the container's user namespace, if there is one. By
|
||||
default, only a single uid/gid, that of the current user, is mapped into the
|
||||
container. The host user that creates the container is the root user (uid/gid
|
||||
0) within the container. Only root can map more than a single uid/gid.
|
||||
|
||||
Note that if THUNK needs to load any additional Guile modules, the relevant
|
||||
module files must be present in one of the mappings in MOUNTS and the Guile
|
||||
load path must be adjusted as needed."
|
||||
(call-with-temporary-directory
|
||||
(lambda (root)
|
||||
(let ((pid (run-container root mounts namespaces thunk)))
|
||||
(let ((pid (run-container root mounts namespaces host-uids thunk)))
|
||||
;; Catch SIGINT and kill the container process.
|
||||
(sigaction SIGINT
|
||||
(lambda (signum)
|
||||
|
||||
@@ -72,7 +72,9 @@ COMPRESS? is true, compress it using GZIP. On success, return OUTPUT."
|
||||
#:file->header cpio:file->cpio-header*)))
|
||||
|
||||
(or (not compress?)
|
||||
(and (zero? (system* gzip "--best" output))
|
||||
;; Use '--no-name' so that gzip records neither a file name nor a time
|
||||
;; stamp in its output.
|
||||
(and (zero? (system* gzip "--best" "--no-name" output))
|
||||
(rename-file (string-append output ".gz")
|
||||
output))
|
||||
output))
|
||||
|
||||
+164
-91
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -21,13 +21,26 @@
|
||||
#:use-module (guix build store-copy)
|
||||
#:use-module (gnu build linux-boot)
|
||||
#:use-module (gnu build install)
|
||||
#:use-module (guix records)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 regex)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-9)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:export (qemu-command
|
||||
load-in-linux-vm
|
||||
format-partition
|
||||
initialize-root-partition
|
||||
|
||||
partition
|
||||
partition?
|
||||
partition-device
|
||||
partition-size
|
||||
partition-file-system
|
||||
partition-label
|
||||
partition-bootable?
|
||||
partition-initializer
|
||||
|
||||
root-partition-initializer
|
||||
initialize-partition-table
|
||||
initialize-hard-disk))
|
||||
|
||||
@@ -110,24 +123,84 @@ the #:references-graphs parameter of 'derivation'."
|
||||
(mkdir output)
|
||||
(copy-recursively "xchg" output))))
|
||||
|
||||
(define* (initialize-partition-table device partition-size
|
||||
|
||||
;;;
|
||||
;;; Partitions.
|
||||
;;;
|
||||
|
||||
(define-record-type* <partition> partition make-partition
|
||||
partition?
|
||||
(device partition-device (default #f))
|
||||
(size partition-size)
|
||||
(file-system partition-file-system (default "ext4"))
|
||||
(label partition-label (default #f))
|
||||
(bootable? partition-bootable? (default #f))
|
||||
(initializer partition-initializer (default (const #t))))
|
||||
|
||||
(define (fold2 proc seed1 seed2 lst) ;TODO: factorize
|
||||
"Like `fold', but with a single list and two seeds."
|
||||
(let loop ((result1 seed1)
|
||||
(result2 seed2)
|
||||
(lst lst))
|
||||
(if (null? lst)
|
||||
(values result1 result2)
|
||||
(call-with-values
|
||||
(lambda () (proc (car lst) result1 result2))
|
||||
(lambda (result1 result2)
|
||||
(loop result1 result2 (cdr lst)))))))
|
||||
|
||||
(define* (initialize-partition-table device partitions
|
||||
#:key
|
||||
bootable?
|
||||
(label-type "msdos")
|
||||
(offset (expt 2 20)))
|
||||
"Create on DEVICE a partition table of type LABEL-TYPE, with a single
|
||||
partition of PARTITION-SIZE bytes starting at OFFSET bytes. When BOOTABLE? is
|
||||
true, set the bootable flag on the partition. Return #t on success."
|
||||
(format #t "creating partition table with a ~a B partition...\n"
|
||||
partition-size)
|
||||
(unless (zero? (apply system* "parted" device "mklabel" label-type
|
||||
"mkpart" "primary" "ext2"
|
||||
(format #f "~aB" offset)
|
||||
(format #f "~aB" partition-size)
|
||||
(if bootable?
|
||||
'("set" "1" "boot" "on")
|
||||
'())))
|
||||
(error "failed to create partition table")))
|
||||
"Create on DEVICE a partition table of type LABEL-TYPE, containing the given
|
||||
PARTITIONS (a list of <partition> objects), starting at OFFSET bytes. On
|
||||
success, return PARTITIONS with their 'device' field changed to reflect their
|
||||
actual /dev name based on DEVICE."
|
||||
(define (partition-options part offset index)
|
||||
(cons* "mkpart" "primary" "ext2"
|
||||
(format #f "~aB" offset)
|
||||
(format #f "~aB" (+ offset (partition-size part)))
|
||||
(if (partition-bootable? part)
|
||||
`("set" ,(number->string index) "boot" "on")
|
||||
'())))
|
||||
|
||||
(define (options partitions offset)
|
||||
(let loop ((partitions partitions)
|
||||
(offset offset)
|
||||
(index 1)
|
||||
(result '()))
|
||||
(match partitions
|
||||
(()
|
||||
(concatenate (reverse result)))
|
||||
((head tail ...)
|
||||
(loop tail
|
||||
;; Leave one sector (512B) between partitions to placate
|
||||
;; Parted.
|
||||
(+ offset 512 (partition-size head))
|
||||
(+ 1 index)
|
||||
(cons (partition-options head offset index)
|
||||
result))))))
|
||||
|
||||
(format #t "creating partition table with ~a partitions...\n"
|
||||
(length partitions))
|
||||
(unless (zero? (apply system* "parted" "--script"
|
||||
device "mklabel" label-type
|
||||
(options partitions offset)))
|
||||
(error "failed to create partition table"))
|
||||
|
||||
;; Set the 'device' field of each partition.
|
||||
(reverse
|
||||
(fold2 (lambda (part result index)
|
||||
(values (cons (partition
|
||||
(inherit part)
|
||||
(device (string-append device
|
||||
(number->string index))))
|
||||
result)
|
||||
(+ 1 index)))
|
||||
'()
|
||||
1
|
||||
partitions)))
|
||||
|
||||
(define MS_BIND 4096) ; <sys/mounts.h> again!
|
||||
|
||||
@@ -143,40 +216,67 @@ volume name."
|
||||
'())))
|
||||
(error "failed to create partition")))
|
||||
|
||||
(define* (initialize-root-partition target-directory
|
||||
#:key copy-closures? register-closures?
|
||||
closures system-directory)
|
||||
"Initialize the root partition mounted at TARGET-DIRECTORY."
|
||||
(define target-store
|
||||
(string-append target-directory (%store-directory)))
|
||||
(define (initialize-partition partition)
|
||||
"Format PARTITION, a <partition> object with a non-#f 'device' field, mount
|
||||
it, run its initializer, and unmount it."
|
||||
(let ((target "/fs"))
|
||||
(format-partition (partition-device partition)
|
||||
(partition-file-system partition)
|
||||
#:label (partition-label partition))
|
||||
(mkdir-p target)
|
||||
(mount (partition-device partition) target
|
||||
(partition-file-system partition))
|
||||
|
||||
(when copy-closures?
|
||||
;; Populate the store.
|
||||
(populate-store (map (cut string-append "/xchg/" <>) closures)
|
||||
target-directory))
|
||||
((partition-initializer partition) target)
|
||||
|
||||
;; Populate /dev.
|
||||
(make-essential-device-nodes #:root target-directory)
|
||||
(umount target)
|
||||
partition))
|
||||
|
||||
;; Optionally, register the inputs in the image's store.
|
||||
(when register-closures?
|
||||
(unless copy-closures?
|
||||
;; XXX: 'guix-register' wants to palpate the things it registers, so
|
||||
;; bind-mount the store on the target.
|
||||
(mkdir-p target-store)
|
||||
(mount (%store-directory) target-store "" MS_BIND))
|
||||
(define* (root-partition-initializer #:key (closures '())
|
||||
copy-closures?
|
||||
(register-closures? #t)
|
||||
system-directory)
|
||||
"Return a procedure to initialize a root partition.
|
||||
|
||||
(display "registering closures...\n")
|
||||
(for-each (lambda (closure)
|
||||
(register-closure target-directory
|
||||
(string-append "/xchg/" closure)))
|
||||
closures)
|
||||
(unless copy-closures?
|
||||
(system* "umount" target-store)))
|
||||
If REGISTER-CLOSURES? is true, register all of CLOSURES is the partition's
|
||||
store. If COPY-CLOSURES? is true, copy all of CLOSURES to the partition.
|
||||
SYSTEM-DIRECTORY is the name of the directory of the 'system' derivation."
|
||||
(lambda (target)
|
||||
(define target-store
|
||||
(string-append target (%store-directory)))
|
||||
|
||||
;; Add the non-store directories and files.
|
||||
(display "populating...\n")
|
||||
(populate-root-file-system system-directory target-directory))
|
||||
(when copy-closures?
|
||||
;; Populate the store.
|
||||
(populate-store (map (cut string-append "/xchg/" <>) closures)
|
||||
target))
|
||||
|
||||
;; Populate /dev.
|
||||
(make-essential-device-nodes #:root target)
|
||||
|
||||
;; Optionally, register the inputs in the image's store.
|
||||
(when register-closures?
|
||||
(unless copy-closures?
|
||||
;; XXX: 'guix-register' wants to palpate the things it registers, so
|
||||
;; bind-mount the store on the target.
|
||||
(mkdir-p target-store)
|
||||
(mount (%store-directory) target-store "" MS_BIND))
|
||||
|
||||
(display "registering closures...\n")
|
||||
(for-each (lambda (closure)
|
||||
(register-closure target
|
||||
(string-append "/xchg/" closure)))
|
||||
closures)
|
||||
(unless copy-closures?
|
||||
(umount target-store)))
|
||||
|
||||
;; Add the non-store directories and files.
|
||||
(display "populating...\n")
|
||||
(populate-root-file-system system-directory target)
|
||||
|
||||
;; 'guix-register' resets timestamps and everything, so no need to do it
|
||||
;; once more in that case.
|
||||
(unless register-closures?
|
||||
(reset-timestamps target))))
|
||||
|
||||
(define (register-grub.cfg-root target grub.cfg)
|
||||
"On file system TARGET, register GRUB.CFG as a GC root."
|
||||
@@ -186,56 +286,29 @@ volume name."
|
||||
|
||||
(define* (initialize-hard-disk device
|
||||
#:key
|
||||
system-directory
|
||||
grub.cfg
|
||||
disk-image-size
|
||||
(file-system-type "ext4")
|
||||
file-system-label
|
||||
(closures '())
|
||||
copy-closures?
|
||||
(bootable? #t)
|
||||
(register-closures? #t))
|
||||
"Initialize DEVICE, a disk of DISK-IMAGE-SIZE bytes, with a FILE-SYSTEM-TYPE
|
||||
partition with (optionally) FILE-SYSTEM-LABEL as its volume name, and with
|
||||
GRUB installed. When BOOTABLE? is true, set the bootable flag on that
|
||||
partition.
|
||||
(partitions '()))
|
||||
"Initialize DEVICE as a disk containing all the <partition> objects listed
|
||||
in PARTITIONS, and using GRUB.CFG as its bootloader configuration file.
|
||||
|
||||
If REGISTER-CLOSURES? is true, register all of CLOSURES is the partition's
|
||||
store. If COPY-CLOSURES? is true, copy all of CLOSURES to the partition.
|
||||
SYSTEM-DIRECTORY is the name of the directory of the 'system' derivation."
|
||||
(define target-directory
|
||||
"/fs")
|
||||
Each partition is initialized by calling its 'initializer' procedure,
|
||||
passing it a directory name where it is mounted."
|
||||
(let* ((partitions (initialize-partition-table device partitions))
|
||||
(root (find partition-bootable? partitions))
|
||||
(target "/fs"))
|
||||
(unless root
|
||||
(error "no bootable partition specified" partitions))
|
||||
|
||||
(define partition
|
||||
(string-append device "1"))
|
||||
(for-each initialize-partition partitions)
|
||||
|
||||
(initialize-partition-table device
|
||||
(- disk-image-size (* 5 (expt 2 20)))
|
||||
#:bootable? bootable?)
|
||||
(display "mounting root partition...\n")
|
||||
(mkdir-p target)
|
||||
(mount (partition-device root) target (partition-file-system root))
|
||||
(install-grub grub.cfg device target)
|
||||
|
||||
(format-partition partition file-system-type
|
||||
#:label file-system-label)
|
||||
;; Register GRUB.CFG as a GC root.
|
||||
(register-grub.cfg-root target grub.cfg)
|
||||
|
||||
(display "mounting partition...\n")
|
||||
(mkdir target-directory)
|
||||
(mount partition target-directory file-system-type)
|
||||
|
||||
(initialize-root-partition target-directory
|
||||
#:system-directory system-directory
|
||||
#:copy-closures? copy-closures?
|
||||
#:register-closures? register-closures?
|
||||
#:closures closures)
|
||||
|
||||
(install-grub grub.cfg device target-directory)
|
||||
|
||||
;; Register GRUB.CFG as a GC root.
|
||||
(register-grub.cfg-root target-directory grub.cfg)
|
||||
|
||||
;; 'guix-register' resets timestamps and everything, so no need to do it
|
||||
;; once more in that case.
|
||||
(unless register-closures?
|
||||
(reset-timestamps target-directory))
|
||||
|
||||
(zero? (system* "umount" target-directory)))
|
||||
(umount target)))
|
||||
|
||||
;;; vm.scm ends here
|
||||
|
||||
+8
-3
@@ -24,6 +24,7 @@
|
||||
#:use-module (guix utils)
|
||||
#:use-module ((guix ftp-client) #:select (ftp-open))
|
||||
#:use-module (guix gnu-maintenance)
|
||||
#:use-module (guix upstream)
|
||||
#:use-module (ice-9 ftw)
|
||||
#:use-module (ice-9 vlist)
|
||||
#:use-module (ice-9 match)
|
||||
@@ -377,14 +378,18 @@ it."
|
||||
(when (false-if-exception (gnu-package? package))
|
||||
(let ((name (package-name package))
|
||||
(full-name (package-full-name package)))
|
||||
;; XXX: This could work with non-GNU packages as well. However,
|
||||
;; GNU's FTP-based updater would be too slow if it weren't memoized,
|
||||
;; and the generic interface in (guix upstream) doesn't support
|
||||
;; that.
|
||||
(match (waiting (latest-release name
|
||||
#:ftp-open ftp-open*
|
||||
#:ftp-close (const #f))
|
||||
(_ "looking for the latest release of GNU ~a...") name)
|
||||
((? gnu-release? release)
|
||||
((? upstream-source? source)
|
||||
(let ((latest-version
|
||||
(string-append (gnu-release-package release) "-"
|
||||
(gnu-release-version release))))
|
||||
(string-append (upstream-source-package source) "-"
|
||||
(upstream-source-version source))))
|
||||
(when (version>? latest-version full-name)
|
||||
(format (current-error-port)
|
||||
(_ "~a: note: using ~a \
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
|
||||
;;;
|
||||
;;; 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 abduco)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix licenses)
|
||||
#:use-module (guix packages))
|
||||
|
||||
(define-public abduco
|
||||
(package
|
||||
(name "abduco")
|
||||
(version "0.4")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://www.brain-dump.org/projects/abduco/abduco-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "1fxwg2s5w183p0rwzsxizy9jdnilv5qqs647l3wl3khny6fp58xx"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:make-flags (list "CC=gcc"
|
||||
(string-append "PREFIX=" (assoc-ref %outputs "out")))
|
||||
#:phases (modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
(delete 'check)))) ; no test suite
|
||||
(synopsis "Session management in a clean and simple way")
|
||||
(description "abduco provides session management i.e. it allows programs to
|
||||
be run independently from their controlling terminal. That is, programs can
|
||||
be detached---run in the background---and then later reattached.")
|
||||
(home-page "http://www.brain-dump.org/projects/abduco/")
|
||||
(license isc)))
|
||||
@@ -99,8 +99,15 @@
|
||||
("pkg-config" ,pkg-config)))
|
||||
(home-page "http://abisource.org/")
|
||||
(synopsis "Word processing program")
|
||||
(description
|
||||
"AbiWord is a word processing program. It is rapidly becoming a state
|
||||
of the art word processor, with lots of features useful for your daily work,
|
||||
personal needs, or for just some good old typing fun.")
|
||||
|
||||
;; HACKERS: The comment below is here so that it shows up early in the
|
||||
;; .pot file.
|
||||
|
||||
;; TRANSLATORS: Dear translator, We would like to inform you that package
|
||||
;; descriptions may occasionally include Texinfo markup. Texinfo markup
|
||||
;; looks like "@code{rm -rf}", "@emph{important}", etc. When translating,
|
||||
;; please leave markup as is.
|
||||
(description "AbiWord is a word processing program. It is rapidly
|
||||
becoming a state of the art word processor, with lots of features useful for
|
||||
your daily work, personal needs, or for just some good old typing fun.")
|
||||
(license license:gpl2+)))
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (guix build-system gnu))
|
||||
|
||||
(define-public acl
|
||||
@@ -39,7 +40,8 @@
|
||||
version ".src.tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"08qd9s3wfhv0ajswsylnfwr5h0d7j9d4rgip855nrh400nxp940p"))))
|
||||
"08qd9s3wfhv0ajswsylnfwr5h0d7j9d4rgip855nrh400nxp940p"))
|
||||
(patches (list (search-patch "acl-hurd-path-max.patch")))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; FIXME: Investigate test suite failures
|
||||
@@ -58,11 +60,8 @@
|
||||
(inputs `(("attr" ,attr)))
|
||||
(native-inputs
|
||||
`(("gettext" ,gnu-gettext)
|
||||
("perl" ,perl)
|
||||
("sed" ,sed)))
|
||||
|
||||
(home-page
|
||||
"http://savannah.nongnu.org/projects/acl")
|
||||
("perl" ,perl)))
|
||||
(home-page "http://savannah.nongnu.org/projects/acl")
|
||||
(synopsis
|
||||
"Library and tools for manipulating access control lists")
|
||||
(description
|
||||
|
||||
+133
-48
@@ -5,6 +5,7 @@
|
||||
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
|
||||
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
|
||||
;;; Copyright © 2015 Alex Sassmannshausen <alex.sassmannshausen@gmail.com>
|
||||
;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -29,6 +30,7 @@
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system python)
|
||||
#:use-module (guix build-system trivial)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages base)
|
||||
@@ -58,29 +60,43 @@
|
||||
#:use-module (gnu packages man))
|
||||
|
||||
(define-public dmd
|
||||
(package
|
||||
(name "dmd")
|
||||
(version "0.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "ftp://alpha.gnu.org/gnu/dmd/dmd-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"10fl4k96f17gqx2fv8iw9c61ld26gsk4bbrlfqckdmiimz1k175z"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:configure-flags '("--localstatedir=/var")))
|
||||
(native-inputs `(("pkg-config" ,pkg-config)))
|
||||
(inputs `(("guile" ,guile-2.0)))
|
||||
(synopsis "Daemon managing daemons")
|
||||
(description
|
||||
"GNU DMD is a daemon-managing daemon, meaning that it manages the
|
||||
(let ((base-version "0.2")
|
||||
(patch-level "01"))
|
||||
(package
|
||||
(name "dmd")
|
||||
(version (string-append base-version "." patch-level))
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "ftp://alpha.gnu.org/gnu/dmd/dmd-"
|
||||
base-version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"10fl4k96f17gqx2fv8iw9c61ld26gsk4bbrlfqckdmiimz1k175z"))
|
||||
(patches
|
||||
(list (origin
|
||||
;; This patch augments 'make-fork+exec-constructor' and
|
||||
;; is used by a bunch of services.
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://git.savannah.gnu.org/cgit/dmd.git/patch/"
|
||||
"?id=d1d0ff30b3ed2b86b0a3c9bc048d2a855f8e31e6"))
|
||||
(sha256
|
||||
(base32
|
||||
"1lqymypixfiyb72d6bn24m06ry2q1ljnnv0qrc89pbb4z9azaa4d"))
|
||||
(file-name "dmd-user-group.patch"))))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:configure-flags '("--localstatedir=/var")))
|
||||
(native-inputs `(("pkg-config" ,pkg-config)))
|
||||
(inputs `(("guile" ,guile-2.0)))
|
||||
(synopsis "Daemon managing daemons")
|
||||
(description
|
||||
"GNU DMD is a daemon-managing daemon, meaning that it manages the
|
||||
execution of system services, replacing similar functionality found in
|
||||
typical init systems. It provides dependency-handling through a convenient
|
||||
interface and is based on GNU Guile.")
|
||||
(license license:gpl3+)
|
||||
(home-page "http://www.gnu.org/software/dmd/")))
|
||||
(license license:gpl3+)
|
||||
(home-page "http://www.gnu.org/software/dmd/"))))
|
||||
|
||||
(define-public dfc
|
||||
(package
|
||||
@@ -175,17 +191,15 @@ client and server, a telnet client and server, and an rsh client and server.")
|
||||
(define-public shadow
|
||||
(package
|
||||
(name "shadow")
|
||||
(version "4.1.5.1")
|
||||
(version "4.2.1")
|
||||
(source (origin
|
||||
;; Shadow has no real upstream, and not even tarballs.
|
||||
;; See <https://lists.gnu.org/archive/html/guix-devel/2014-03/msg00233.html>.
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "git://git.debian.org/git/pkg-shadow/shadow")
|
||||
(commit (string-append "upstream/" version))))
|
||||
(sha256
|
||||
(base32
|
||||
"1xx85d83kmacmjzqbamgydcjkwsqd5fi1s2wgwx6myq5wa39qx0n"))))
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://pkg-shadow.alioth.debian.org/releases/"
|
||||
name "-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0h9x1zdbq0pqmygmc1x459jraiqw4gqz8849v268crk78z8r621v"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(;; Assume System V `setpgrp (void)', which is the default on GNU
|
||||
@@ -206,7 +220,7 @@ client and server, a telnet client and server, and an rsh client and server.")
|
||||
;; Remove `groups', which is already provided by Coreutils.
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bin (string-append out "/bin"))
|
||||
(man (string-append out "/share/man/man1")))
|
||||
(man (string-append out "/share/man")))
|
||||
(delete-file (string-append bin "/groups"))
|
||||
(for-each delete-file (find-files man "^groups\\."))
|
||||
#t))
|
||||
@@ -414,6 +428,7 @@ connection alive.")
|
||||
(zero? (system* "tar" "cf" "bind.tar.gz"
|
||||
"bind-9.9.5-P1"
|
||||
;; avoid non-determinism in the archive
|
||||
"--sort=name"
|
||||
"--mtime=@0"
|
||||
"--owner=root:0"
|
||||
"--group=root:0"))))
|
||||
@@ -689,10 +704,10 @@ commands and their arguments.")
|
||||
;; See <http://www.sudo.ws/sudo/license.html>.
|
||||
(license license:x11)))
|
||||
|
||||
(define-public wpa-supplicant-light
|
||||
(define-public wpa-supplicant-minimal
|
||||
(package
|
||||
(name "wpa-supplicant-light")
|
||||
(version "2.4")
|
||||
(name "wpa-supplicant-minimal")
|
||||
(version "2.5")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@@ -701,17 +716,7 @@ commands and their arguments.")
|
||||
".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"08li21q1wjn5chrv289w666il9ah1w419y3dkq2rl4wnq0rci385"))
|
||||
(patches
|
||||
(map search-patch '("wpa-supplicant-CVE-2015-1863.patch"
|
||||
"wpa-supplicant-2015-2-fix.patch"
|
||||
"wpa-supplicant-2015-3-fix.patch"
|
||||
"wpa-supplicant-2015-4-fix-pt1.patch"
|
||||
"wpa-supplicant-2015-4-fix-pt2.patch"
|
||||
"wpa-supplicant-2015-4-fix-pt3.patch"
|
||||
"wpa-supplicant-2015-4-fix-pt4.patch"
|
||||
"wpa-supplicant-2015-4-fix-pt5.patch"
|
||||
"wpa-supplicant-2015-5-fix.patch")))))
|
||||
"05mkp5bx1c3z7h5biddsv0p49gkrq9ksany3anp4wdiv92p5prfc"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:phases (alist-replace
|
||||
@@ -781,12 +786,12 @@ This package provides the 'wpa_supplicant' daemon and the 'wpa_cli' command.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public wpa-supplicant
|
||||
(package (inherit wpa-supplicant-light)
|
||||
(package (inherit wpa-supplicant-minimal)
|
||||
(name "wpa-supplicant")
|
||||
(inputs `(("dbus" ,dbus)
|
||||
,@(package-inputs wpa-supplicant-light)))
|
||||
,@(package-inputs wpa-supplicant-minimal)))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments wpa-supplicant-light)
|
||||
(substitute-keyword-arguments (package-arguments wpa-supplicant-minimal)
|
||||
((#:phases phases)
|
||||
`(alist-cons-after
|
||||
'configure 'configure-for-dbus
|
||||
@@ -1130,3 +1135,83 @@ degradation and failure.")
|
||||
"fdupes is a program for identifying duplicate files residing within
|
||||
specified directories.")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public graphios
|
||||
(package
|
||||
(name "graphios")
|
||||
(version "2.0.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://pypi.python.org/packages/source/g/graphios/graphios-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1h87hvc315wg6lklbf4l7csd3n5pgljwrfli1p3nasdi0izgn66i"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
;; Be warned: Building with Python 3 succeeds, but the build process
|
||||
;; throws a syntax error that is ignored.
|
||||
`(#:python ,python-2
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'build 'fix-setup.py
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
;; Fix hardcoded, unprefixed file names.
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(substitute* '("setup.py")
|
||||
(("/etc") (string-append out "/etc"))
|
||||
(("/usr") out)
|
||||
(("distro_ver = .*") "distro_ver = ''"))
|
||||
#t))))))
|
||||
(inputs
|
||||
`(("python-setuptools" ,python2-setuptools)))
|
||||
(home-page "https://github.com/shawn-sterling/graphios")
|
||||
(synopsis "Emit Nagios metrics to Graphite, Statsd, and Librato")
|
||||
(description
|
||||
"Graphios is a script to emit nagios perfdata to various upstream metrics
|
||||
processing and time-series systems. It's currently compatible with Graphite,
|
||||
Statsd, Librato and InfluxDB. Graphios can emit Nagios metrics to any number
|
||||
of supported upstream metrics systems simultaneously.")
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define-public ansible
|
||||
(package
|
||||
(name "ansible")
|
||||
(version "1.9.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://pypi.python.org/packages/source/a/ansible/ansible-"
|
||||
version
|
||||
".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"007fzgsqaahb0y4gjdxxmir9kcni7wph2z14jhqgpz88idrz8pn2"))))
|
||||
(build-system python-build-system)
|
||||
(native-inputs
|
||||
`(("python2-setuptools" ,python2-setuptools)
|
||||
("python2-pycrypto" ,python2-pycrypto)
|
||||
("python2-httplib2" ,python2-httplib2)
|
||||
("python2-passlib" ,python2-passlib)
|
||||
("python2-nose" ,python2-nose)
|
||||
("python2-mock" ,python2-mock)
|
||||
("python2-jinja2" ,python2-jinja2)
|
||||
("python2-pyyaml" ,python2-pyyaml)
|
||||
("python2-paramiko" ,python2-paramiko)))
|
||||
(inputs
|
||||
`(("python2-pycrypto" ,python2-pycrypto)
|
||||
("python2-jinja2" ,python2-jinja2)
|
||||
("python2-pyyaml" ,python2-pyyaml)
|
||||
("python2-paramiko" ,python2-paramiko)))
|
||||
(arguments
|
||||
`(#:python ,python-2)) ; incompatible with Python 3
|
||||
(home-page "http://ansible.com/")
|
||||
(synopsis "Radically simple IT automation")
|
||||
(description "Ansible is a radically simple IT automation system. It
|
||||
handles configuration-management, application deployment, cloud provisioning,
|
||||
ad-hoc task-execution, and multinode orchestration - including trivializing
|
||||
things like zero downtime rolling updates with load balancers.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
+71
-43
@@ -20,12 +20,13 @@
|
||||
|
||||
(define-module (gnu packages algebra)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages multiprecision)
|
||||
#:use-module (gnu packages mpi)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages readline)
|
||||
#:use-module (gnu packages flex)
|
||||
#:use-module (guix licenses)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu)
|
||||
@@ -46,9 +47,10 @@
|
||||
(base32
|
||||
"0grw66b255r574lvll1bqccm5myj2m8ajzsjaygcyq9zjnnbnhhy"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("gmp" ,gmp)
|
||||
("mpfr" ,mpfr)
|
||||
("mpc" ,mpc)))
|
||||
(propagated-inputs
|
||||
`(("gmp" ,gmp)
|
||||
("mpfr" ,mpfr)
|
||||
("mpc" ,mpc))) ; Header files are included by mpfrcx.h.
|
||||
(synopsis "Arithmetic of polynomials over arbitrary precision numbers")
|
||||
(description
|
||||
"Mpfrcx is a library for the arithmetic of univariate polynomials over
|
||||
@@ -57,9 +59,37 @@ on the rounding. For the time being, only the few functions needed to
|
||||
implement the floating point approach to complex multiplication are
|
||||
implemented. On the other hand, these comprise asymptotically fast
|
||||
multiplication routines such as Toom–Cook and the FFT.")
|
||||
(license lgpl2.1+)
|
||||
(license license:lgpl2.1+)
|
||||
(home-page "http://mpfrcx.multiprecision.org/")))
|
||||
|
||||
(define-public cm
|
||||
(package
|
||||
(name "cm")
|
||||
(version "0.2.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://www.multiprecision.org/cm/download/cm-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1r5dx5qy0ka2sq26n9jll9iy4sjqg0jp5r3jnbjhpgxvmj8jbhq8"))))
|
||||
(build-system gnu-build-system)
|
||||
(propagated-inputs
|
||||
`(("mpfrcx" ,mpfrcx)
|
||||
("zlib" ,zlib))) ; Header files included from cm_common.h.
|
||||
(inputs
|
||||
`(("pari-gp" ,pari-gp)))
|
||||
(synopsis "CM constructions for elliptic curves")
|
||||
(description
|
||||
"The CM software implements the construction of ring class fields of
|
||||
imaginary quadratic number fields and of elliptic curves with complex
|
||||
multiplication via floating point approximations. It consists of libraries
|
||||
that can be called from within a C program and of executable command
|
||||
line applications.")
|
||||
(license license:gpl2+)
|
||||
(home-page "http://cm.multiprecision.org/")))
|
||||
|
||||
(define-public fplll
|
||||
(package
|
||||
(name "fplll")
|
||||
@@ -78,7 +108,7 @@ multiplication routines such as Toom–Cook and the FFT.")
|
||||
(description
|
||||
"fplll LLL-reduces euclidean lattices. Since version 3, it can also
|
||||
solve the shortest vector problem.")
|
||||
(license lgpl2.1+)
|
||||
(license license:lgpl2.1+)
|
||||
(home-page "http://perso.ens-lyon.fr/damien.stehle/fplll/")))
|
||||
|
||||
(define-public pari-gp
|
||||
@@ -119,20 +149,21 @@ functions to compute with mathematical entities such as matrices,
|
||||
polynomials, power series, algebraic numbers, etc., and a lot of
|
||||
transcendental functions.
|
||||
PARI is also available as a C library to allow for faster computations.")
|
||||
(license gpl2+)
|
||||
(license license:gpl2+)
|
||||
(home-page "http://pari.math.u-bordeaux.fr/")))
|
||||
|
||||
(define-public gp2c
|
||||
(package
|
||||
(name "gp2c")
|
||||
(version "0.0.9pl2")
|
||||
(version "0.0.9pl3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://pari.math.u-bordeaux.fr/pub/pari/GP2C/gp2c-"
|
||||
version ".tar.gz"))
|
||||
(sha256 (base32
|
||||
"02h35fwz1caicii7fj8zb9ky4hcrd8rqmzkyvhbls0r05yg5bwwb"))))
|
||||
(sha256
|
||||
(base32
|
||||
"0wbghihwlcx3w4j1la3bjf5gcrkk6lp9syw6iimqndq1f73ijlq3"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs `(("perl" ,perl)))
|
||||
(inputs `(("pari-gp" ,pari-gp)))
|
||||
@@ -152,45 +183,41 @@ transcendental functions.
|
||||
PARI is also available as a C library to allow for faster computations.
|
||||
|
||||
GP2C, the GP to C compiler, translates GP scripts to PARI programs.")
|
||||
(license gpl2)
|
||||
(license license:gpl2)
|
||||
(home-page "http://pari.math.u-bordeaux.fr/")))
|
||||
|
||||
(define-public flint
|
||||
(package
|
||||
(name "flint")
|
||||
(version "2.4.5")
|
||||
(version "2.5.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://flintlib.org/flint-"
|
||||
version ".tar.gz"))
|
||||
(sha256 (base32
|
||||
"1qq11sxliy499a9g656dgk47ffb951q4gl6ddjbq838gy16kb2g4"))))
|
||||
"11syazv1a8rrnac3wj3hnyhhflpqcmq02q8pqk2m6g2k6h0gxwfb"))
|
||||
(patches (map search-patch '("flint-ldconfig.patch")))))
|
||||
(build-system gnu-build-system)
|
||||
(propagated-inputs
|
||||
`(("gmp" ,gmp)
|
||||
("mpfr" ,mpfr))) ; header files from both are included by flint/arith.h
|
||||
(arguments
|
||||
`(#:phases
|
||||
(alist-replace
|
||||
'configure
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out"))
|
||||
(gmp (assoc-ref inputs "gmp"))
|
||||
(mpfr (assoc-ref inputs "mpfr")))
|
||||
;; Drop test failing with gmp-6 due to changed invertibility
|
||||
;; of 0 in Z/1 Z, which according to the flint authors has no
|
||||
;; impact on flint.
|
||||
;; FIXME: Drop with later version.
|
||||
(delete-file "fmpz/test/t-invmod.c")
|
||||
;; do not pass "--enable-fast-install", which makes the
|
||||
;; homebrew configure process fail
|
||||
(zero? (system*
|
||||
"./configure"
|
||||
(string-append "--prefix=" out)
|
||||
(string-append "--with-gmp=" gmp)
|
||||
(string-append "--with-mpfr=" mpfr)))))
|
||||
%standard-phases)))
|
||||
`(#:parallel-tests? #f ; seems to be necessary on arm
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace 'configure
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out"))
|
||||
(gmp (assoc-ref inputs "gmp"))
|
||||
(mpfr (assoc-ref inputs "mpfr")))
|
||||
;; do not pass "--enable-fast-install", which makes the
|
||||
;; homebrew configure process fail
|
||||
(zero? (system*
|
||||
"./configure"
|
||||
(string-append "--prefix=" out)
|
||||
(string-append "--with-gmp=" gmp)
|
||||
(string-append "--with-mpfr=" mpfr)))))))))
|
||||
(synopsis "Fast library for number theory")
|
||||
(description
|
||||
"FLINT is a C library for number theory. It supports arithmetic
|
||||
@@ -203,21 +230,22 @@ Operations that can be performed include conversions, arithmetic,
|
||||
GCDs, factoring, solving linear systems, and evaluating special
|
||||
functions. In addition, FLINT provides various low-level routines for
|
||||
fast arithmetic.")
|
||||
(license gpl2+)
|
||||
(license license:gpl2+)
|
||||
(home-page "http://flintlib.org/")))
|
||||
|
||||
(define-public arb
|
||||
(package
|
||||
(name "arb")
|
||||
(version "2.3.0")
|
||||
(version "2.7.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://github.com/fredrik-johansson/arb/archive/"
|
||||
version ".tar.gz"))
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256 (base32
|
||||
"0yvabxyyj1g0d8b5mfgzrxq6qya8cmq97vz60ss6aajzm3nwrabk"))))
|
||||
(sha256
|
||||
(base32
|
||||
"1rwkffs57v8mry63rq8l2dyw69zfs9rg5fpbfllqp3nkjnkp1fly"))))
|
||||
(build-system gnu-build-system)
|
||||
(propagated-inputs
|
||||
`(("flint" ,flint))) ; flint.h is included by arf.h
|
||||
@@ -248,7 +276,7 @@ fast arithmetic.")
|
||||
arithmetic. It supports efficient high-precision computation with
|
||||
polynomials, power series, matrices and special functions over the
|
||||
real and complex numbers, with automatic, rigorous error control.")
|
||||
(license gpl2+)
|
||||
(license license:gpl2+)
|
||||
(home-page "http://fredrikj.net/arb/")))
|
||||
|
||||
(define-public bc
|
||||
@@ -289,7 +317,7 @@ real and complex numbers, with automatic, rigorous error control.")
|
||||
an interactive environment for evaluating mathematical statements. Its
|
||||
syntax is similar to that of C, so basic usage is familiar. It also includes
|
||||
\"dc\", a reverse-polish calculator.")
|
||||
(license gpl2+)))
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define-public fftw
|
||||
(package
|
||||
@@ -323,7 +351,7 @@ syntax is similar to that of C, so basic usage is familiar. It also includes
|
||||
transform (DFT) in one or more dimensions, of arbitrary input size, and of
|
||||
both real and complex data (as well as of even/odd data---i.e. the discrete
|
||||
cosine/ sine transforms or DCT/DST).")
|
||||
(license gpl2+)))
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define-public fftwf
|
||||
(package (inherit fftw)
|
||||
@@ -353,14 +381,14 @@ cosine/ sine transforms or DCT/DST).")
|
||||
(define-public eigen
|
||||
(package
|
||||
(name "eigen")
|
||||
(version "3.2.5")
|
||||
(version "3.2.6")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://bitbucket.org/eigen/eigen/get/"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1yf27mfq1x38wlsghkvpjgs8xd5rvbbikf1wyj2l3qw8h6w6qvjz"))
|
||||
"0gil5ksmgcg6v3nw0v613mvpzz4n33xhawqs8l7fj7rnlpwm4cwa"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
;; There are 3 test failures in the "unsupported" directory,
|
||||
@@ -402,4 +430,4 @@ features, and more.")
|
||||
|
||||
;; Most of the code is MPLv2, with a few files under LGPLv2.1+ or BSD-3.
|
||||
;; See 'COPYING.README' for details.
|
||||
(license mpl2.0)))
|
||||
(license license:mpl2.0)))
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
`(("wxwidgets" ,wxwidgets-2)
|
||||
("gtk" ,gtk+-2)
|
||||
("alsa-lib" ,alsa-lib)
|
||||
("jack" ,jack-2)
|
||||
("jack" ,jack-1)
|
||||
("expat" ,expat)
|
||||
("ffmpeg" ,ffmpeg)
|
||||
("lame" ,lame)
|
||||
|
||||
+93
-33
@@ -3,6 +3,7 @@
|
||||
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
|
||||
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
|
||||
;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
|
||||
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -59,6 +60,7 @@
|
||||
#:use-module (gnu packages readline)
|
||||
#:use-module (gnu packages xiph)
|
||||
#:use-module (gnu packages xml)
|
||||
#:use-module (gnu packages xorg)
|
||||
#:use-module (gnu packages zip)
|
||||
#:use-module (srfi srfi-1))
|
||||
|
||||
@@ -231,13 +233,12 @@ engineers, musicians, soundtrack editors and composers.")
|
||||
(define-public ardour
|
||||
(package (inherit ardour-3)
|
||||
(name "ardour")
|
||||
;; We pick the commit after 4.1 because it fixes a build problem.
|
||||
(version "4.1-5aa834e")
|
||||
(version "4.2")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "git://git.ardour.org/ardour/ardour.git")
|
||||
(commit (cadr (string-split version #\-)))))
|
||||
(commit version)))
|
||||
(snippet
|
||||
;; Ardour expects this file to exist at build time. It can be
|
||||
;; created from a git checkout with:
|
||||
@@ -246,10 +247,10 @@ engineers, musicians, soundtrack editors and composers.")
|
||||
"libs/ardour/revision.cc"
|
||||
(lambda (port)
|
||||
(format port "#include \"ardour/revision.h\"
|
||||
namespace ARDOUR { const char* revision = \"4.1\" ; }"))))
|
||||
namespace ARDOUR { const char* revision = \"4.2\" ; }"))))
|
||||
(sha256
|
||||
(base32
|
||||
"0pfmxlscnwyqmgc89cdwrsk1769lr89dirfnpjbxj9zgcns6zqgb"))
|
||||
"1j8zw0bvh16qwyy8qrqynpak9nghl9j3qhjjcdl7wh9raafjqc00"))
|
||||
(file-name (string-append name "-" version))))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments ardour-3)
|
||||
@@ -339,7 +340,7 @@ tools (analyzer, mono/stereo tools, crossovers).")
|
||||
(define-public csound
|
||||
(package
|
||||
(name "csound")
|
||||
(version "6.04")
|
||||
(version "6.05")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@@ -347,7 +348,7 @@ tools (analyzer, mono/stereo tools, crossovers).")
|
||||
version "/Csound" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1030w38lxdwjz1irr32m9cl0paqmgr02lab2m7f7j1yihwxj1w0g"))))
|
||||
"0a1sni6lr7qpwywpggbkp0ia3h9bwwgf9i87gsag8ra2h30v82hd"))))
|
||||
(build-system cmake-build-system)
|
||||
(inputs
|
||||
`(("alsa-lib" ,alsa-lib)
|
||||
@@ -557,7 +558,7 @@ patches that can be used with softsynths such as Timidity and WildMidi.")
|
||||
(define-public guitarix
|
||||
(package
|
||||
(name "guitarix")
|
||||
(version "0.32.3")
|
||||
(version "0.33.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@@ -565,16 +566,13 @@ patches that can be used with softsynths such as Timidity and WildMidi.")
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1ybc5jk7fj6n8qh9ajzl1f6fzdmzab4nwjrh4fsylm94dn1jv0if"))))
|
||||
"1w6dg2n0alfjsx1iy6s53783invygwxk11p1i65cc3nq3zlidcgx"))))
|
||||
(build-system waf-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; no "check" target
|
||||
#:python ,python-2
|
||||
#:configure-flags
|
||||
(list
|
||||
;; FIXME: dsp2cc fails for src/faust/tonestack_engl.dsp, so we use the
|
||||
;; generated C++ files rather than compiling them from Faust sources.
|
||||
"--no-faust"
|
||||
;; Add the output lib directory to the RUNPATH.
|
||||
(string-append "--ldflags=-Wl,-rpath=" %output "/lib"))))
|
||||
(inputs
|
||||
@@ -594,7 +592,7 @@ patches that can be used with softsynths such as Timidity and WildMidi.")
|
||||
("zita-convolver" ,zita-convolver)))
|
||||
(native-inputs
|
||||
`(("gperf" ,gperf)
|
||||
;;("faust" ,faust) ; dsp2cc fails for src/faust/tonestack_engl.dsp
|
||||
("faust" ,faust)
|
||||
("intltool" ,intltool)
|
||||
("gettext" ,gnu-gettext)
|
||||
("pkg-config" ,pkg-config)))
|
||||
@@ -669,11 +667,12 @@ especially for creating reverb effects. It supports impulse responses with 1,
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("alsa-lib" ,alsa-lib)
|
||||
("bdb" ,bdb)
|
||||
("readline" ,readline)))
|
||||
;; uuid.h is included in the JACK type headers
|
||||
;; db.h is included in the libjack metadata headers
|
||||
(propagated-inputs
|
||||
`(("libuuid" ,util-linux)))
|
||||
`(("libuuid" ,util-linux)
|
||||
("bdb" ,bdb)))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(home-page "http://jackaudio.org/")
|
||||
@@ -689,6 +688,9 @@ synchronous execution of all clients, and low latency operation.")
|
||||
;; licensed under the LGPL in order to allow for proprietary usage.
|
||||
(license (list license:gpl2+ license:lgpl2.1+))))
|
||||
|
||||
;; Packages depending on JACK should always prefer jack-1. Both jack-1 and
|
||||
;; jack-2 implement the same API. JACK2 is provided primarily as a client
|
||||
;; program for users who might benefit from the D-BUS features.
|
||||
(define-public jack-2
|
||||
(package (inherit jack-1)
|
||||
(name "jack2")
|
||||
@@ -1051,7 +1053,25 @@ lv2-c++-tools.")
|
||||
"0mmhdqiyb3c9dzvxspm8h2v8jibhi8pfjxnf6m0wn744y1ia2a8f"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f)) ; no check target
|
||||
`(#:tests? #f ; no check target
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after
|
||||
'unpack 'use-full-library-paths
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(substitute* "Alc/backends/pulseaudio.c"
|
||||
(("#define PALIB \"libpulse\\.so\\.0\"")
|
||||
(string-append "#define PALIB \""
|
||||
(assoc-ref inputs "pulseaudio")
|
||||
"/lib/libpulse.so.0"
|
||||
"\"")))
|
||||
(substitute* "Alc/backends/alsa.c"
|
||||
(("LoadLib\\(\"libasound\\.so\\.2\"\\)")
|
||||
(string-append "LoadLib(\""
|
||||
(assoc-ref inputs "alsa-lib")
|
||||
"/lib/libasound.so.2"
|
||||
"\")")))
|
||||
#t)))))
|
||||
(inputs
|
||||
`(("alsa-lib" ,alsa-lib)
|
||||
("pulseaudio" ,pulseaudio)))
|
||||
@@ -1327,11 +1347,11 @@ disks as various audio file formats.")
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://code.soundsoftware.ac.uk"
|
||||
"/attachments/download/1514/vamp-plugin-sdk-"
|
||||
"/attachments/download/1520/vamp-plugin-sdk-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1s986w0mfh1m0870qd7i50hdzayls8kc3shfqf9651jzwdk34lxa"))))
|
||||
"0pzq0yy2kdl3jgfc2aqmh5m55nk1ild0hq8mydiiw35c6y0mglyh"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; no check target
|
||||
@@ -1374,17 +1394,23 @@ analysis plugins or audio feature extraction plugins.")
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs `(("automake" ,automake)))
|
||||
(arguments
|
||||
`(#:phases
|
||||
(alist-cons-after
|
||||
'unpack 'fix-ar-lib-path
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
;; Originally a symlink to '/usr/local/share/automake-1.12/ar-lib'.
|
||||
(delete-file "ar-lib")
|
||||
(symlink
|
||||
(string-append (assoc-ref inputs "automake") "/share/automake-"
|
||||
,(package-version automake) "/ar-lib")
|
||||
"ar-lib"))
|
||||
%standard-phases)))
|
||||
`(#:configure-flags
|
||||
;; Disable the use of SSE unless on x86_64.
|
||||
,(if (not (string-prefix? "x86_64" (or (%current-target-system)
|
||||
(%current-system))))
|
||||
''("--disable-sse")
|
||||
''())
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after
|
||||
'unpack 'fix-ar-lib-path
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
;; Originally a symlink to '/usr/local/share/automake-1.12/ar-lib'.
|
||||
(delete-file "ar-lib")
|
||||
(symlink
|
||||
(string-append (assoc-ref inputs "automake") "/share/automake-"
|
||||
,(package-version automake) "/ar-lib")
|
||||
"ar-lib"))))))
|
||||
(home-page "http://sbsms.sourceforge.net/")
|
||||
(synopsis "Library for time stretching and pitch scaling of audio")
|
||||
(description
|
||||
@@ -1625,7 +1651,7 @@ portions of LAME.")
|
||||
(inputs
|
||||
;; TODO: Add ASIHPI.
|
||||
`(("alsa-lib" ,alsa-lib)
|
||||
("jack" ,jack-2)))
|
||||
("jack" ,jack-1)))
|
||||
(native-inputs
|
||||
`(("autoconf" ,autoconf)
|
||||
("automake" ,automake)
|
||||
@@ -1652,14 +1678,14 @@ interface.")
|
||||
(define-public qsynth
|
||||
(package
|
||||
(name "qsynth")
|
||||
(version "0.3.9")
|
||||
(version "0.4.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"mirror://sourceforge/qsynth/qsynth-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "08kyn6cl755l9i1grzjx8yi3f8mgiz4gx0hgqad1n0d8yz85087b"))))
|
||||
(base32 "1chc89v9hcjw3k4rvzakl8g56wv24kh48fzv1gfs4iv8vhyl3j4x"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f)) ; no "check" phase
|
||||
@@ -1682,12 +1708,13 @@ synthesizer written in C++.")
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://github.com/Themaister/RSound/archive/v"
|
||||
version ".tar.gz"))
|
||||
(file-name (string-append name "-" version))
|
||||
(sha256
|
||||
(base32 "1wzs40c0k5zpkmm5ffl6c17xmr399sxli7ys0fbb9ib0fd334knx"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("alsa-lib" ,alsa-lib)
|
||||
("jack" ,jack-2)
|
||||
("jack" ,jack-1)
|
||||
("ao" ,ao)
|
||||
("libsamplerate" ,libsamplerate)
|
||||
("openal" ,openal)
|
||||
@@ -1713,6 +1740,39 @@ directly to a different computer on your LAN network. It is an audio daemon
|
||||
with a much different focus than most other audio daemons.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public xjackfreak
|
||||
(package
|
||||
(name "xjackfreak")
|
||||
(version "1.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://github.com/johnhldavis/xjackfreak/archive/v"
|
||||
version ".tar.gz"))
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0xj6gpxfnw9jbdgwgm0x23xgfvj2kwmwb1nk0drw8lxgcchkq7d9"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:make-flags
|
||||
(list (string-append "docdir=" (assoc-ref %outputs "out")
|
||||
"/share/doc/xjackfreak"))))
|
||||
(inputs
|
||||
`(("jack" ,jack-1)
|
||||
("libx11" ,libx11)
|
||||
("libxt" ,libxt)
|
||||
("libxext" ,libxext)))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(home-page "https://github.com/johnhldavis/xjackfreak")
|
||||
(synopsis "JACK audio frequency analyzer and display")
|
||||
(description
|
||||
"XJackFreak is an audio analysis and equalizing tool for the Jack Audio
|
||||
Connection Kit. It can display the FFT of any input, modify it and output the
|
||||
result.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public zita-convolver
|
||||
(package
|
||||
(name "zita-convolver")
|
||||
|
||||
@@ -30,16 +30,16 @@
|
||||
(define-public autogen
|
||||
(package
|
||||
(name "autogen")
|
||||
(version "5.18.5")
|
||||
(version "5.18.6")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/autogen/rel"
|
||||
version "/autogen-"
|
||||
version ".tar.gz"))
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1flnbnmkbqmbfgammkl8m36wrlk6rhpgnf9pdm6gdfhqalxvggbv"))))
|
||||
"0sfmmy19k9z0j3f738fyk6ljf6b66410cvd5zzyplxi2683j10qs"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs `(("perl" ,perl) ;for doc generator mdoc
|
||||
("pkg-config" ,pkg-config)))
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
|
||||
;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
|
||||
;;; Copyright © 2014 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
|
||||
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
|
||||
;;;
|
||||
@@ -158,6 +159,30 @@ exec ~a --no-auto-compile \"$0\" \"$@\"
|
||||
port)))
|
||||
(chmod (string-append bin "/autoconf") #o555)))))))
|
||||
|
||||
(define-public autobuild
|
||||
(package
|
||||
(name "autobuild")
|
||||
(version "5.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://savannah/autobuild/autobuild-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0gv7g61ja9q9zg1m30k4snqwwy1kq7b4df6sb7d2qra7kbdq8af1"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("perl" ,perl)))
|
||||
(synopsis "Process generated build logs")
|
||||
(description "Autobuild is a package that processes build logs generated
|
||||
when building software. Autobuild is primarily focused on packages using
|
||||
Autoconf and Automake, but can be used with other build systems too.
|
||||
Autobuild generates an HTML summary file, containing links to each build log.
|
||||
The summary includes project name, version, build hostname, host type (cross
|
||||
compile aware), date of build, and indication of success or failure. The
|
||||
output is indexed in many ways to simplify browsing.")
|
||||
(home-page "http://josefsson.org/autobuild/")
|
||||
(license gpl3+)))
|
||||
|
||||
(define-public automake
|
||||
(package
|
||||
(name "automake")
|
||||
|
||||
@@ -52,7 +52,8 @@
|
||||
"--disable-xmltoman"
|
||||
"--enable-tests"
|
||||
"--disable-qt3" "--disable-qt4"
|
||||
"--disable-gtk" "--disable-gtk3")))
|
||||
"--disable-gtk" "--disable-gtk3"
|
||||
"--enable-compat-libdns_sd")))
|
||||
(inputs
|
||||
`(("expat" ,expat)
|
||||
("glib" ,glib)
|
||||
|
||||
+39
-3
@@ -1,6 +1,7 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
|
||||
;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
|
||||
;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -26,6 +27,7 @@
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system python)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages acl)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages dejagnu)
|
||||
@@ -35,11 +37,11 @@
|
||||
#:use-module (gnu packages mcrypt)
|
||||
#:use-module (gnu packages nettle)
|
||||
#:use-module (gnu packages pcre)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages rsync)
|
||||
#:use-module (gnu packages ssh)
|
||||
#:use-module (gnu packages tls)
|
||||
#:use-module (gnu packages xml))
|
||||
|
||||
(define-public duplicity
|
||||
@@ -122,7 +124,7 @@ spying and/or modification by the server.")
|
||||
(home-page "http://archive.miek.nl/projects/hdup/index.html")
|
||||
(synopsis "Simple incremental backup tool")
|
||||
(description
|
||||
"Hdup2 is a backup utilty, its aim is to make backup really simple. The
|
||||
"Hdup2 is a backup utility, its aim is to make backup really simple. The
|
||||
backup scheduling is done by means of a cron job. It supports an
|
||||
include/exclude mechanism, remote backups, encrypted backups and split
|
||||
backups (called chunks) to allow easy burning to CD/DVD.")
|
||||
@@ -316,3 +318,37 @@ rsync. Thus you can use rdiff-backup and ssh to securely back a hard drive up
|
||||
to a remote location, and only the differences will be transmitted. Finally,
|
||||
rdiff-backup is easy to use and settings have sensible defaults.")
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define-public attic
|
||||
(package
|
||||
(name "attic")
|
||||
(version "0.16")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://pypi.python.org/packages/source/A/Attic/Attic-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0b5skd36r4c0915lwpkqg5hxm49gls9pprs1b7hc40910wlcsl36"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before
|
||||
'build 'set-openssl-prefix
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(setenv "ATTIC_OPENSSL_PREFIX" (assoc-ref inputs "openssl"))
|
||||
#t)))))
|
||||
(inputs
|
||||
`(("acl" ,acl)
|
||||
("openssl" ,openssl)
|
||||
("python-llfuse" ,python-llfuse)
|
||||
("python-msgpack" ,python-msgpack)))
|
||||
(synopsis "Deduplicating backup program")
|
||||
(description "Attic is a deduplicating backup program. The main goal of
|
||||
Attic is to provide an efficient and secure way to backup data. The data
|
||||
deduplication technique used makes Attic suitable for daily backups since only
|
||||
changes are stored.")
|
||||
(home-page "https://attic-backup.org/")
|
||||
(license license:bsd-3)))
|
||||
|
||||
+244
-99
@@ -4,6 +4,7 @@
|
||||
;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
|
||||
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
|
||||
;;; Copyright © 2014, 2015 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -33,11 +34,13 @@
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages texinfo)
|
||||
#:use-module (gnu packages hurd)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system trivial))
|
||||
|
||||
@@ -49,22 +52,23 @@
|
||||
|
||||
(define-public hello
|
||||
(package
|
||||
(name "hello")
|
||||
(version "2.10")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/hello/hello-" version
|
||||
".tar.gz"))
|
||||
(sha256
|
||||
(base32 "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i"))))
|
||||
(build-system gnu-build-system)
|
||||
(synopsis "Hello, GNU world: An example GNU package")
|
||||
(description
|
||||
"GNU Hello prints the message \"Hello, world!\" and then exits. It
|
||||
(name "hello")
|
||||
(version "2.10")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/hello/hello-" version
|
||||
".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i"))))
|
||||
(build-system gnu-build-system)
|
||||
(synopsis "Hello, GNU world: An example GNU package")
|
||||
(description
|
||||
"GNU Hello prints the message \"Hello, world!\" and then exits. It
|
||||
serves as an example of standard GNU coding practices. As such, it supports
|
||||
command-line arguments, multiple languages, and so on.")
|
||||
(home-page "http://www.gnu.org/software/hello/")
|
||||
(license gpl3+)))
|
||||
(home-page "http://www.gnu.org/software/hello/")
|
||||
(license gpl3+)))
|
||||
|
||||
(define-public grep
|
||||
(package
|
||||
@@ -245,10 +249,25 @@ used to apply commands with arbitrarily long arguments.")
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0w11jw3fb5sslf0f72kxy7llxgk1ia3a6bcw0c9kmvxrlj355mx2"))))
|
||||
"0w11jw3fb5sslf0f72kxy7llxgk1ia3a6bcw0c9kmvxrlj355mx2"))
|
||||
(patches
|
||||
(list (origin
|
||||
(method url-fetch)
|
||||
(uri "http://git.savannah.gnu.org/cgit/coreutils.git/\
|
||||
patch/?id=3ba68f9e64fa2eb8af22d510437a0c6441feb5e0")
|
||||
(sha256
|
||||
(base32
|
||||
"1dnlszhc8lihhg801i9sz896mlrgfsjfcz62636prb27k5hmixqz"))
|
||||
(file-name "coreutils-tail-inotify-race.patch"))))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("acl" ,acl) ; TODO: add SELinux
|
||||
("gmp" ,gmp)))
|
||||
("gmp" ,gmp) ;bignums in 'expr', yay!
|
||||
|
||||
;; Drop the dependency on libcap when cross-compiling since it's
|
||||
;; not quite cross-compilable.
|
||||
,@(if (%current-target-system)
|
||||
'()
|
||||
`(("libcap" ,libcap))))) ;capability support is 'ls', etc.
|
||||
(native-inputs
|
||||
;; Perl is needed to run tests in native builds, and to run the bundled
|
||||
;; copy of help2man. However, don't pass it when cross-compiling since
|
||||
@@ -284,6 +303,14 @@ functionality beyond that which is outlined in the POSIX standard.")
|
||||
(license gpl3+)
|
||||
(home-page "http://www.gnu.org/software/coreutils/")))
|
||||
|
||||
(define-public coreutils-minimal
|
||||
;; Coreutils without its optional dependencies.
|
||||
(package
|
||||
(inherit coreutils)
|
||||
(name "coreutils-minimal")
|
||||
(outputs '("out"))
|
||||
(inputs '())))
|
||||
|
||||
(define-public gnu-make
|
||||
(package
|
||||
(name "make")
|
||||
@@ -325,14 +352,14 @@ change. GNU make offers many powerful extensions over the standard utility.")
|
||||
(define-public binutils
|
||||
(package
|
||||
(name "binutils")
|
||||
(version "2.25")
|
||||
(version "2.25.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/binutils/binutils-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"08r9i26b05zcwb9zxb6zllpfdiiicdfsgbpsjlrjmvx3rxjzrpi2"))
|
||||
"08lzmhidzc16af1zbx34f8cy4z7mzrswpdbhrb8shy3xxpflmcdm"))
|
||||
(patches (list (search-patch "binutils-ld-new-dtags.patch")
|
||||
(search-patch "binutils-loongson-workaround.patch")))))
|
||||
(build-system gnu-build-system)
|
||||
@@ -438,14 +465,14 @@ store.")
|
||||
(define-public glibc
|
||||
(package
|
||||
(name "glibc")
|
||||
(version "2.21")
|
||||
(version "2.22")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/glibc/glibc-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1f135546j34s9bfkydmx2nhh9vwxlx60jldi80zmsnln6wj3dsxf"))
|
||||
"0j49682pm2nh4qbdw35bas82p1pgfnz4d2l7iwfyzvrvj0318wzb"))
|
||||
(snippet
|
||||
;; Disable 'ldconfig' and /etc/ld.so.cache. The latter is
|
||||
;; required on LFS distros to avoid loading the distro's libc.so
|
||||
@@ -454,7 +481,11 @@ store.")
|
||||
(("use_ldconfig=yes")
|
||||
"use_ldconfig=no")))
|
||||
(modules '((guix build utils)))
|
||||
(patches (list (search-patch "glibc-ldd-x86_64.patch")))))
|
||||
(patches (map search-patch
|
||||
'("glibc-ldd-x86_64.patch"
|
||||
"glibc-locale-incompatibility.patch"
|
||||
"glibc-versioned-locpath.patch"
|
||||
"glibc-o-largefile.patch")))))
|
||||
(build-system gnu-build-system)
|
||||
|
||||
;; Glibc's <limits.h> refers to <linux/limit.h>, for instance, so glibc
|
||||
@@ -471,7 +502,7 @@ store.")
|
||||
#:parallel-build? #f
|
||||
|
||||
;; The libraries have an empty RUNPATH, but some, such as the versioned
|
||||
;; libraries (libdl-2.21.so, etc.) have ld.so marked as NEEDED. Since
|
||||
;; libraries (libdl-2.22.so, etc.) have ld.so marked as NEEDED. Since
|
||||
;; these libraries are always going to be found anyway, just skip
|
||||
;; RUNPATH checks.
|
||||
#:validate-runpath? #f
|
||||
@@ -487,12 +518,16 @@ store.")
|
||||
;; Set the default locale path. In practice, $LOCPATH may be
|
||||
;; defined to point whatever locales users want. However, setuid
|
||||
;; binaries don't honor $LOCPATH, so they'll instead look into
|
||||
;; $libc_cv_localedir; we choose /run/current-system/locale, with
|
||||
;; the idea that it is going to be populated by the sysadmin.
|
||||
;; $libc_cv_localedir; we choose /run/current-system/locale/X.Y,
|
||||
;; with the idea that it is going to be populated by the sysadmin.
|
||||
;; The "X.Y" sub-directory is because locale data formats are
|
||||
;; incompatible across libc versions; see
|
||||
;; <https://lists.gnu.org/archive/html/guix-devel/2015-08/msg00737.html>.
|
||||
;;
|
||||
;; `--localedir' is not honored, so work around it.
|
||||
;; See <http://sourceware.org/ml/libc-alpha/2013-03/msg00093.html>.
|
||||
(string-append "libc_cv_localedir=/run/current-system/locale")
|
||||
(string-append "libc_cv_localedir=/run/current-system/locale/"
|
||||
,version)
|
||||
|
||||
(string-append "--with-headers="
|
||||
(assoc-ref %build-inputs "linux-headers")
|
||||
@@ -512,72 +547,65 @@ store.")
|
||||
"libc_cv_ssp=no")
|
||||
|
||||
#:tests? #f ; XXX
|
||||
#:phases (alist-cons-before
|
||||
'configure 'pre-configure
|
||||
(lambda* (#:key inputs native-inputs outputs
|
||||
#:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bin (string-append out "/bin")))
|
||||
;; Use `pwd', not `/bin/pwd'.
|
||||
(substitute* "configure"
|
||||
(("/bin/pwd") "pwd"))
|
||||
#:phases (modify-phases %standard-phases
|
||||
(add-before
|
||||
'configure 'pre-configure
|
||||
(lambda* (#:key inputs native-inputs outputs
|
||||
#:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bin (string-append out "/bin"))
|
||||
;; FIXME: Normally we would look it up only in INPUTS
|
||||
;; but cross-base uses it as a native input.
|
||||
(bash (or (assoc-ref inputs "static-bash")
|
||||
(assoc-ref native-inputs "static-bash"))))
|
||||
;; Use `pwd', not `/bin/pwd'.
|
||||
(substitute* "configure"
|
||||
(("/bin/pwd") "pwd"))
|
||||
|
||||
;; Install the rpc data base file under `$out/etc/rpc'.
|
||||
;; FIXME: Use installFlags = [ "sysconfdir=$(out)/etc" ];
|
||||
(substitute* "sunrpc/Makefile"
|
||||
(("^\\$\\(inst_sysconfdir\\)/rpc(.*)$" _ suffix)
|
||||
(string-append out "/etc/rpc" suffix "\n"))
|
||||
(("^install-others =.*$")
|
||||
(string-append "install-others = " out "/etc/rpc\n")))
|
||||
;; Install the rpc data base file under `$out/etc/rpc'.
|
||||
;; FIXME: Use installFlags = [ "sysconfdir=$(out)/etc" ];
|
||||
(substitute* "sunrpc/Makefile"
|
||||
(("^\\$\\(inst_sysconfdir\\)/rpc(.*)$" _ suffix)
|
||||
(string-append out "/etc/rpc" suffix "\n"))
|
||||
(("^install-others =.*$")
|
||||
(string-append "install-others = " out "/etc/rpc\n")))
|
||||
|
||||
(substitute* "Makeconfig"
|
||||
;; According to
|
||||
;; <http://www.linuxfromscratch.org/lfs/view/stable/chapter05/glibc.html>,
|
||||
;; linking against libgcc_s is not needed with GCC
|
||||
;; 4.7.1.
|
||||
((" -lgcc_s") ""))
|
||||
(substitute* "Makeconfig"
|
||||
;; According to
|
||||
;; <http://www.linuxfromscratch.org/lfs/view/stable/chapter05/glibc.html>,
|
||||
;; linking against libgcc_s is not needed with GCC
|
||||
;; 4.7.1.
|
||||
((" -lgcc_s") ""))
|
||||
|
||||
;; Copy a statically-linked Bash in the output, with
|
||||
;; no references to other store paths.
|
||||
;; FIXME: Normally we would look it up only in INPUTS but
|
||||
;; cross-base uses it as a native input.
|
||||
(mkdir-p bin)
|
||||
(copy-file (string-append (or (assoc-ref inputs
|
||||
"static-bash")
|
||||
(assoc-ref native-inputs
|
||||
"static-bash"))
|
||||
"/bin/bash")
|
||||
(string-append bin "/bash"))
|
||||
(remove-store-references (string-append bin "/bash"))
|
||||
(chmod (string-append bin "/bash") #o555)
|
||||
;; Have `system' use that Bash.
|
||||
(substitute* "sysdeps/posix/system.c"
|
||||
(("#define[[:blank:]]+SHELL_PATH.*$")
|
||||
(format #f "#define SHELL_PATH \"~a/bin/bash\"\n"
|
||||
bash)))
|
||||
|
||||
;; Keep a symlink, for `patch-shebang' resolution.
|
||||
(with-directory-excursion bin
|
||||
(symlink "bash" "sh"))
|
||||
;; Same for `popen'.
|
||||
(substitute* "libio/iopopen.c"
|
||||
(("/bin/sh")
|
||||
(string-append bash "/bin/bash")))
|
||||
|
||||
;; Have `system' use that Bash.
|
||||
(substitute* "sysdeps/posix/system.c"
|
||||
(("#define[[:blank:]]+SHELL_PATH.*$")
|
||||
(format #f "#define SHELL_PATH \"~a/bin/bash\"\n"
|
||||
out)))
|
||||
;; Same for the shell used by the 'exec' functions for
|
||||
;; scripts that lack a shebang.
|
||||
(substitute* (find-files "." "^paths\\.h$")
|
||||
(("#define[[:blank:]]+_PATH_BSHELL[[:blank:]].*$")
|
||||
(string-append "#define _PATH_BSHELL \""
|
||||
bash "/bin/bash\"\n")))
|
||||
|
||||
;; Same for `popen'.
|
||||
(substitute* "libio/iopopen.c"
|
||||
(("/bin/sh")
|
||||
(string-append out "/bin/bash")))
|
||||
;; Make sure we don't retain a reference to the
|
||||
;; bootstrap Perl.
|
||||
(substitute* "malloc/mtrace.pl"
|
||||
(("^#!.*")
|
||||
;; The shebang can be omitted, because there's the
|
||||
;; "bilingual" eval/exec magic at the top of the file.
|
||||
"")
|
||||
(("exec @PERL@")
|
||||
"exec perl"))))))))
|
||||
|
||||
;; Make sure we don't retain a reference to the
|
||||
;; bootstrap Perl.
|
||||
(substitute* "malloc/mtrace.pl"
|
||||
(("^#!.*")
|
||||
;; The shebang can be omitted, because there's the
|
||||
;; "bilingual" eval/exec magic at the top of the file.
|
||||
"")
|
||||
(("exec @PERL@")
|
||||
"exec perl"))))
|
||||
%standard-phases)))
|
||||
|
||||
(inputs `(("static-bash" ,(static-package bash-light))))
|
||||
(inputs `(("static-bash" ,static-bash)))
|
||||
|
||||
;; To build the manual, we need Texinfo and Perl. Gettext is needed to
|
||||
;; install the message catalogs, with 'msgfmt'.
|
||||
@@ -587,9 +615,11 @@ store.")
|
||||
|
||||
(native-search-paths
|
||||
;; Search path for packages that provide locale data. This is useful
|
||||
;; primarily in build environments.
|
||||
;; primarily in build environments. Use 'GUIX_LOCPATH' rather than
|
||||
;; 'LOCPATH' to avoid interference with the host system's libc on foreign
|
||||
;; distros.
|
||||
(list (search-path-specification
|
||||
(variable "LOCPATH")
|
||||
(variable "GUIX_LOCPATH")
|
||||
(files '("lib/locale")))))
|
||||
|
||||
(synopsis "The GNU C Library")
|
||||
@@ -625,19 +655,16 @@ the 'share/locale' sub-directory of this package.")
|
||||
`(alist-replace
|
||||
'build
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
;; Delete $out/bin, which contains 'bash'.
|
||||
(delete-file-recursively (string-append out "/bin")))
|
||||
|
||||
(zero? (system* "make" "localedata/install-locales"
|
||||
"-j" (number->string (parallel-job-count)))))
|
||||
(alist-delete 'install ,phases)))
|
||||
((#:configure-flags flags)
|
||||
`(append ,flags
|
||||
;; Use $(libdir)/locale as is the case by default.
|
||||
;; Use $(libdir)/locale/X.Y as is the case by default.
|
||||
(list (string-append "libc_cv_localedir="
|
||||
(assoc-ref %outputs "out")
|
||||
"/lib/locale")))))))))
|
||||
"/lib/locale/"
|
||||
,(package-version glibc))))))))))
|
||||
|
||||
(define-public glibc-utf8-locales
|
||||
(package
|
||||
@@ -646,7 +673,7 @@ the 'share/locale' sub-directory of this package.")
|
||||
(source #f)
|
||||
(build-system trivial-build-system)
|
||||
(arguments
|
||||
'(#:modules ((guix build utils))
|
||||
`(#:modules ((guix build utils))
|
||||
#:builder (begin
|
||||
(use-modules (srfi srfi-1)
|
||||
(guix build utils))
|
||||
@@ -654,18 +681,29 @@ the 'share/locale' sub-directory of this package.")
|
||||
(let* ((libc (assoc-ref %build-inputs "glibc"))
|
||||
(gzip (assoc-ref %build-inputs "gzip"))
|
||||
(out (assoc-ref %outputs "out"))
|
||||
(localedir (string-append out "/lib/locale")))
|
||||
(localedir (string-append out "/lib/locale/"
|
||||
,version)))
|
||||
;; 'localedef' needs 'gzip'.
|
||||
(setenv "PATH" (string-append libc "/bin:" gzip "/bin"))
|
||||
|
||||
(mkdir-p localedir)
|
||||
(every (lambda (locale)
|
||||
(zero? (system* "localedef" "--no-archive"
|
||||
"--prefix" localedir "-i" locale
|
||||
"-f" "UTF-8"
|
||||
(define file
|
||||
;; Use the "normalized codeset" by
|
||||
;; default--e.g., "en_US.utf8".
|
||||
(string-append localedir "/" locale ".utf8"))
|
||||
|
||||
(and (zero? (system* "localedef" "--no-archive"
|
||||
"--prefix" localedir
|
||||
"-i" locale
|
||||
"-f" "UTF-8" file))
|
||||
(begin
|
||||
;; For backward compatibility with Guix
|
||||
;; <= 0.8.3, add "xx_YY.UTF-8".
|
||||
(symlink (string-append locale ".utf8")
|
||||
(string-append localedir "/"
|
||||
locale
|
||||
".UTF-8"))))
|
||||
locale ".UTF-8"))
|
||||
#t)))
|
||||
|
||||
;; These are the locales commonly used for
|
||||
;; tests---e.g., in Guile's i18n tests.
|
||||
@@ -699,6 +737,113 @@ variety of options. It is an alternative to the shell \"type\" built-in
|
||||
command.")
|
||||
(license gpl3+))) ; some files are under GPLv2+
|
||||
|
||||
(define-public glibc/hurd
|
||||
;; The Hurd's libc variant.
|
||||
(package (inherit glibc)
|
||||
(name "glibc-hurd")
|
||||
(version "2.18")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "git://git.sv.gnu.org/hurd/glibc")
|
||||
(commit "cc94b3cfe65523f980359e5f0e93a26196bda1d3")))
|
||||
(sha256
|
||||
(base32
|
||||
"17gsh0kaz0zyvghjmx861mi2p65m9901lngi179x61zm6v2v3xc4"))
|
||||
(file-name (string-append name "-" version))
|
||||
(patches (map search-patch
|
||||
'("glibc-hurd-extern-inline.patch")))))
|
||||
|
||||
;; Libc provides <hurd.h>, which includes a bunch of Hurd and Mach headers,
|
||||
;; so both should be propagated.
|
||||
(propagated-inputs `(("gnumach-headers" ,gnumach-headers)
|
||||
("hurd-headers" ,hurd-headers)
|
||||
("hurd-minimal" ,hurd-minimal)))
|
||||
(native-inputs
|
||||
`(,@(package-native-inputs glibc)
|
||||
("patch/libpthread-patch" ,(search-patch "libpthread-glibc-preparation.patch"))
|
||||
("mig" ,mig)
|
||||
("perl" ,perl)
|
||||
("libpthread" ,(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "git://git.sv.gnu.org/hurd/libpthread")
|
||||
(commit "0ef7b75c4ba91b6660f0d3d8b51d14d25e3d5bfb")))
|
||||
(sha256
|
||||
(base32
|
||||
"031py18fls15z0wprni33mf762kg6fx8xqijppimhp83yp6ky3l3"))
|
||||
(file-name "libpthread")))))
|
||||
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments glibc)
|
||||
((#:configure-flags original-configure-flags)
|
||||
`(append (list "--host=i686-pc-gnu"
|
||||
|
||||
;; nscd fails to build for GNU/Hurd:
|
||||
;; <https://lists.gnu.org/archive/html/bug-hurd/2014-07/msg00006.html>.
|
||||
;; Disable it.
|
||||
"--disable-nscd")
|
||||
(filter (lambda (flag)
|
||||
(not (or (string-prefix? "--with-headers=" flag)
|
||||
(string-prefix? "--enable-kernel=" flag))))
|
||||
;; Evaluate 'original-configure-flags' in a
|
||||
;; lexical environment that has a dummy
|
||||
;; "linux-headers" input, to prevent errors.
|
||||
(let ((%build-inputs `(("linux-headers" . "@DUMMY@")
|
||||
,@%build-inputs)))
|
||||
,original-configure-flags))))
|
||||
((#:phases phases)
|
||||
`(alist-cons-after
|
||||
'unpack 'prepare-libpthread
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(copy-recursively (assoc-ref inputs "libpthread") "libpthread")
|
||||
|
||||
(system* "patch" "--force" "-p1" "-i"
|
||||
(assoc-ref inputs "patch/libpthread-patch"))
|
||||
#t)
|
||||
,phases))))
|
||||
(synopsis "The GNU C Library (GNU Hurd variant)")
|
||||
(supported-systems %hurd-systems)))
|
||||
|
||||
(define-public glibc/hurd-headers
|
||||
(package (inherit glibc/hurd)
|
||||
(name "glibc-hurd-headers")
|
||||
(outputs '("out"))
|
||||
(propagated-inputs `(("gnumach-headers" ,gnumach-headers)
|
||||
("hurd-headers" ,hurd-headers)))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments glibc/hurd)
|
||||
;; We just pass the flags really needed to build the headers.
|
||||
((#:configure-flags _)
|
||||
`(list "--enable-add-ons"
|
||||
"--host=i686-pc-gnu"
|
||||
"--enable-obsolete-rpc"))
|
||||
((#:phases _)
|
||||
'(alist-replace
|
||||
'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(and (zero? (system* "make" "install-headers"))
|
||||
|
||||
;; Make an empty stubs.h to work around not being able to
|
||||
;; produce a valid stubs.h and causing the build to fail. See
|
||||
;; <http://lists.gnu.org/archive/html/guix-devel/2014-04/msg00233.html>.
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(close-port
|
||||
(open-output-file
|
||||
(string-append out "/include/gnu/stubs.h"))))))
|
||||
|
||||
;; Nothing to build.
|
||||
(alist-delete
|
||||
'build
|
||||
|
||||
(alist-cons-before
|
||||
'configure 'pre-configure
|
||||
(lambda _
|
||||
;; Use the right 'pwd'.
|
||||
(substitute* "configure"
|
||||
(("/bin/pwd") "pwd")))
|
||||
%standard-phases))))))))
|
||||
|
||||
(define-public tzdata
|
||||
(package
|
||||
(name "tzdata")
|
||||
|
||||
+24
-2
@@ -214,10 +214,10 @@ without modification.")
|
||||
(license gpl3+)
|
||||
(home-page "http://www.gnu.org/software/bash/"))))
|
||||
|
||||
(define-public bash-light
|
||||
(define-public bash-minimal
|
||||
;; A stripped-down Bash for non-interactive use.
|
||||
(package (inherit bash)
|
||||
(name "bash-light")
|
||||
(name "bash-minimal")
|
||||
(inputs '()) ; no readline, no curses
|
||||
(arguments
|
||||
(let ((args `(#:modules ((guix build gnu-build-system)
|
||||
@@ -239,6 +239,28 @@ without modification.")
|
||||
'("bash_cv_job_control_missing=no")
|
||||
'()))))))))
|
||||
|
||||
(define-public static-bash
|
||||
;; Statically-linked Bash that contains nothing but the 'bash' binary and
|
||||
;; 'sh' symlink, without any reference.
|
||||
(let ((bash (static-package bash-minimal)))
|
||||
(package
|
||||
(inherit bash)
|
||||
(name "bash-static")
|
||||
(arguments
|
||||
(substitute-keyword-arguments
|
||||
`(#:allowed-references ("out") ,@(package-arguments bash))
|
||||
((#:phases phases)
|
||||
`(alist-cons-after
|
||||
'strip 'remove-everything-but-the-binary
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bin (string-append out "/bin")))
|
||||
(remove-store-references (string-append bin "/bash"))
|
||||
(delete-file (string-append bin "/bashbug"))
|
||||
(delete-file-recursively (string-append out "/share"))
|
||||
#t))
|
||||
,phases)))))))
|
||||
|
||||
(define-public bash-completion
|
||||
(package
|
||||
(name "bash-completion")
|
||||
|
||||
+456
-167
@@ -1,6 +1,8 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2014, 2015 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2015 Ben Woodcroft <donttrustben@gmail.com>
|
||||
;;; Copyright © 2015 Pjotr Prins <pjotr.guix@thebird.nl>
|
||||
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -27,8 +29,11 @@
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system perl)
|
||||
#:use-module (guix build-system python)
|
||||
#:use-module (guix build-system r)
|
||||
#:use-module (guix build-system ruby)
|
||||
#:use-module (guix build-system trivial)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages algebra)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages boost)
|
||||
@@ -45,14 +50,16 @@
|
||||
#:use-module (gnu packages popt)
|
||||
#:use-module (gnu packages protobuf)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages ruby)
|
||||
#:use-module (gnu packages statistics)
|
||||
#:use-module (gnu packages swig)
|
||||
#:use-module (gnu packages tbb)
|
||||
#:use-module (gnu packages textutils)
|
||||
#:use-module (gnu packages tls)
|
||||
#:use-module (gnu packages vim)
|
||||
#:use-module (gnu packages web)
|
||||
#:use-module (gnu packages xml)
|
||||
#:use-module (gnu packages zip))
|
||||
#:use-module (gnu packages zip)
|
||||
#:use-module (srfi srfi-1))
|
||||
|
||||
(define-public aragorn
|
||||
(package
|
||||
@@ -196,7 +203,7 @@ computational cluster.")
|
||||
(define-public bedtools
|
||||
(package
|
||||
(name "bedtools")
|
||||
(version "2.22.0")
|
||||
(version "2.24.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://github.com/arq5x/bedtools2/archive/v"
|
||||
@@ -204,7 +211,8 @@ computational cluster.")
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"16aq0w3dmbd0853j32xk9jin4vb6v6fgakfyvrsmsjizzbn3fpfl"))))
|
||||
"0lnxrjvs3nnmb4bmskag1wg3h2hd80przz5q3xd0bvs7vyxrvpbl"))
|
||||
(patches (list (search-patch "bedtools-32bit-compilation.patch")))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs `(("python" ,python-2)))
|
||||
(inputs `(("samtools" ,samtools)
|
||||
@@ -227,9 +235,8 @@ computational cluster.")
|
||||
'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
|
||||
(mkdir-p bin)
|
||||
(for-each (lambda (file)
|
||||
(copy-file file (string-append bin (basename file))))
|
||||
(install-file file bin))
|
||||
(find-files "bin" ".*"))))
|
||||
%standard-phases)))))
|
||||
(home-page "https://github.com/arq5x/bedtools2")
|
||||
@@ -276,6 +283,67 @@ pybedtools extends BEDTools by offering feature-level manipulations from with
|
||||
Python.")
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define-public bioperl-minimal
|
||||
(let* ((inputs `(("perl-module-build" ,perl-module-build)
|
||||
("perl-data-stag" ,perl-data-stag)
|
||||
("perl-libwww" ,perl-libwww)
|
||||
("perl-uri" ,perl-uri)))
|
||||
(transitive-inputs
|
||||
(map (compose package-name cadr)
|
||||
(delete-duplicates
|
||||
(concatenate
|
||||
(map (compose package-transitive-target-inputs cadr) inputs))))))
|
||||
(package
|
||||
(name "bioperl-minimal")
|
||||
(version "1.6.924")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://cpan/authors/id/C/CJ/CJFIELDS/BioPerl-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1l3npcvvvwjlhkna9dndpfv1hklhrgva013kw96m0n1wpd37ask1"))))
|
||||
(build-system perl-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after
|
||||
'install 'wrap-programs
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
;; Make sure all executables in "bin" find the required Perl
|
||||
;; modules at runtime. As the PERL5LIB variable contains also
|
||||
;; the paths of native inputs, we pick the transitive target
|
||||
;; inputs from %build-inputs.
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bin (string-append out "/bin/"))
|
||||
(path (string-join
|
||||
(cons (string-append out "/lib/perl5/site_perl")
|
||||
(map (lambda (name)
|
||||
(assoc-ref %build-inputs name))
|
||||
',transitive-inputs))
|
||||
":")))
|
||||
(for-each (lambda (file)
|
||||
(wrap-program file
|
||||
`("PERL5LIB" ":" prefix (,path))))
|
||||
(find-files bin "\\.pl$"))
|
||||
#t))))))
|
||||
(inputs inputs)
|
||||
(native-inputs
|
||||
`(("perl-test-most" ,perl-test-most)))
|
||||
(home-page "http://search.cpan.org/dist/BioPerl")
|
||||
(synopsis "Bioinformatics toolkit")
|
||||
(description
|
||||
"BioPerl is the product of a community effort to produce Perl code which
|
||||
is useful in biology. Examples include Sequence objects, Alignment objects
|
||||
and database searching objects. These objects not only do what they are
|
||||
advertised to do in the documentation, but they also interact - Alignment
|
||||
objects are made from the Sequence objects, Sequence objects have access to
|
||||
Annotation and SeqFeature objects and databases, Blast objects can be
|
||||
converted to Alignment objects, and so on. This means that the objects
|
||||
provide a coordinated and extensible framework to do computational biology.")
|
||||
(license (package-license perl)))))
|
||||
|
||||
(define-public python-biopython
|
||||
(package
|
||||
(name "python-biopython")
|
||||
@@ -492,9 +560,8 @@ confidence to have in an alignment.")
|
||||
'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
|
||||
(mkdir-p bin)
|
||||
(for-each (lambda (file)
|
||||
(copy-file file (string-append bin file)))
|
||||
(install-file file bin))
|
||||
(find-files "." "bowtie2.*"))))
|
||||
(alist-replace
|
||||
'check
|
||||
@@ -544,12 +611,15 @@ gapped, local, and paired-end alignment modes.")
|
||||
(mkdir-p bin)
|
||||
(mkdir-p doc)
|
||||
(mkdir-p man)
|
||||
(copy-file "bwa" (string-append bin "/bwa"))
|
||||
(copy-file "README.md" (string-append doc "/README.md"))
|
||||
(copy-file "bwa.1" (string-append man "/bwa.1"))))
|
||||
(install-file "bwa" bin)
|
||||
(install-file "README.md" doc)
|
||||
(install-file "bwa.1" man)))
|
||||
;; no "configure" script
|
||||
(alist-delete 'configure %standard-phases))))
|
||||
(inputs `(("zlib" ,zlib)))
|
||||
;; Non-portable SSE instructions are used so building fails on platforms
|
||||
;; other than x86_64.
|
||||
(supported-systems '("x86_64-linux"))
|
||||
(home-page "http://bio-bwa.sourceforge.net/")
|
||||
(synopsis "Burrows-Wheeler sequence aligner")
|
||||
(description
|
||||
@@ -608,6 +678,7 @@ multiple sequence alignments.")
|
||||
(uri (string-append
|
||||
"https://github.com/YeoLab/clipper/archive/"
|
||||
version ".tar.gz"))
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1q7jpimsqln7ic44i8v2rx2haj5wvik8hc1s2syd31zcn0xk1iyq"))
|
||||
@@ -813,6 +884,45 @@ file formats including SAM/BAM, Wiggle/BigWig, BED, GFF/GTF, VCF.")
|
||||
other types of unwanted sequence from high-throughput sequencing reads.")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public deeptools
|
||||
(package
|
||||
(name "deeptools")
|
||||
(version "1.5.11")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://github.com/fidelram/deepTools/archive/"
|
||||
version ".tar.gz"))
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1kaagygcbvjs9sxd9cqmskd02wcfp9imvb735r087w7hwqpvz6fs"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:python ,python-2))
|
||||
(propagated-inputs
|
||||
`(("python-scipy" ,python2-scipy)
|
||||
("python-numpy" ,python2-numpy)
|
||||
("python-matplotlib" ,python2-matplotlib)
|
||||
("python-bx-python" ,python2-bx-python)
|
||||
("python-pysam" ,python2-pysam)))
|
||||
(native-inputs
|
||||
`(("python-mock" ,python2-mock) ;for tests
|
||||
("python-pytz" ,python2-pytz) ;for tests
|
||||
("python-setuptools" ,python2-setuptools)))
|
||||
(home-page "https://github.com/fidelram/deepTools")
|
||||
(synopsis "Tools for normalizing and visualizing deep-sequencing data")
|
||||
(description
|
||||
"DeepTools addresses the challenge of handling the large amounts of data
|
||||
that are now routinely generated from DNA sequencing centers. To do so,
|
||||
deepTools contains useful modules to process the mapped reads data to create
|
||||
coverage files in standard bedGraph and bigWig file formats. By doing so,
|
||||
deepTools allows the creation of normalized coverage files or the comparison
|
||||
between two files (for example, treatment and control). Finally, using such
|
||||
normalized and standardized files, multiple visualizations can be created to
|
||||
identify enrichments with functional annotations of the genome.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public diamond
|
||||
(package
|
||||
(name "diamond")
|
||||
@@ -860,6 +970,9 @@ translated DNA query sequences against a protein reference database (BLASTP
|
||||
and BLASTX alignment mode). The speedup over BLAST is up to 20,000 on short
|
||||
reads at a typical sensitivity of 90-99% relative to BLAST depending on the
|
||||
data and settings.")
|
||||
;; diamond fails to build on other platforms
|
||||
;; https://github.com/bbuchfink/diamond/issues/18
|
||||
(supported-systems '("x86_64-linux"))
|
||||
(license (license:non-copyleft "file://src/COPYING"
|
||||
"See src/COPYING in the distribution."))))
|
||||
|
||||
@@ -1202,14 +1315,12 @@ estimates transcript expression.")
|
||||
(alist-replace
|
||||
'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
|
||||
(mkdir-p bin)
|
||||
(for-each
|
||||
(lambda (file)
|
||||
(copy-file file (string-append bin file)))
|
||||
(find-files
|
||||
"."
|
||||
"hisat(-(build|align|inspect)(-(s|l)(-debug)*)*)*$"))))
|
||||
(let ((bin (string-append (assoc-ref outputs "out") "/bi/")))
|
||||
(for-each (lambda (file)
|
||||
(install-file file bin))
|
||||
(find-files
|
||||
"."
|
||||
"hisat(-(build|align|inspect)(-(s|l)(-debug)*)*)*$"))))
|
||||
(alist-delete 'configure %standard-phases)))))
|
||||
(native-inputs
|
||||
`(("unzip" ,unzip)))
|
||||
@@ -1442,6 +1553,64 @@ resolution of binding sites through combining the information of both
|
||||
sequencing tag position and orientation.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public mafft
|
||||
(package
|
||||
(name "mafft")
|
||||
(version "7.221")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://mafft.cbrc.jp/alignment/software/mafft-" version
|
||||
"-without-extensions-src.tgz"))
|
||||
(file-name (string-append name "-" version ".tgz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0xi7klbsgi049vsrk6jiwh9wfj3b770gz3c8c7zwij448v0dr73d"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; no automated tests, though there are tests in the read me
|
||||
#:make-flags (let ((out (assoc-ref %outputs "out")))
|
||||
(list (string-append "PREFIX=" out)
|
||||
(string-append "BINDIR="
|
||||
(string-append out "/bin"))))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'enter-dir
|
||||
(lambda _ (chdir "core") #t))
|
||||
(add-after 'enter-dir 'patch-makefile
|
||||
(lambda _
|
||||
;; on advice from the MAFFT authors, there is no need to
|
||||
;; distribute mafft-profile, mafft-distance, or
|
||||
;; mafft-homologs.rb as they are too "specialised".
|
||||
(substitute* "Makefile"
|
||||
;; remove mafft-homologs.rb from SCRIPTS
|
||||
(("^SCRIPTS = mafft mafft-homologs.rb")
|
||||
"SCRIPTS = mafft")
|
||||
;; remove mafft-distance from PROGS
|
||||
(("^PROGS = dvtditr dndfast7 dndblast sextet5 mafft-distance")
|
||||
"PROGS = dvtditr dndfast7 dndblast sextet5")
|
||||
;; remove mafft-profile from PROGS
|
||||
(("splittbfast disttbfast tbfast mafft-profile 2cl mccaskillwrap")
|
||||
"splittbfast disttbfast tbfast f2cl mccaskillwrap")
|
||||
(("^rm -f mafft-profile mafft-profile.exe") "#")
|
||||
(("^rm -f mafft-distance mafft-distance.exe") ")#")
|
||||
;; do not install MAN pages in libexec folder
|
||||
(("^\t\\$\\(INSTALL\\) -m 644 \\$\\(MANPAGES\\) \
|
||||
\\$\\(DESTDIR\\)\\$\\(LIBDIR\\)") "#"))
|
||||
#t))
|
||||
(delete 'configure))))
|
||||
(inputs
|
||||
`(("perl" ,perl)))
|
||||
(home-page "http://mafft.cbrc.jp/alignment/software/")
|
||||
(synopsis "Multiple sequence alignment program")
|
||||
(description
|
||||
"MAFFT offers a range of multiple alignment methods for nucleotide and
|
||||
protein sequences. For instance, it offers L-INS-i (accurate; for alignment
|
||||
of <~200 sequences) and FFT-NS-2 (fast; for alignment of <~30,000
|
||||
sequences).")
|
||||
(license (license:non-copyleft
|
||||
"http://mafft.cbrc.jp/alignment/software/license.txt"
|
||||
"BSD-3 with different formatting"))))
|
||||
|
||||
(define-public metabat
|
||||
(package
|
||||
@@ -1927,17 +2096,14 @@ distribution, coverage uniformity, strand specificity, etc.")
|
||||
'install 'install-library
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((lib (string-append (assoc-ref outputs "out") "/lib")))
|
||||
(mkdir-p lib)
|
||||
(copy-file "libbam.a" (string-append lib "/libbam.a"))))
|
||||
(install-file "libbam.a" lib)))
|
||||
(alist-cons-after
|
||||
'install 'install-headers
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((include (string-append (assoc-ref outputs "out")
|
||||
"/include/samtools/")))
|
||||
(mkdir-p include)
|
||||
(for-each (lambda (file)
|
||||
(copy-file file (string-append include
|
||||
(basename file))))
|
||||
(install-file file include))
|
||||
(scandir "." (lambda (name) (string-match "\\.h$" name))))
|
||||
#t))
|
||||
(alist-delete 'configure %standard-phases))))))
|
||||
@@ -1983,6 +2149,52 @@ viewer.")
|
||||
(string-append bin "/samtools")))))
|
||||
(delete 'patch-tests)))))))
|
||||
|
||||
(define-public mosaik
|
||||
(let ((commit "5c25216d"))
|
||||
(package
|
||||
(name "mosaik")
|
||||
(version "2.2.30")
|
||||
(source (origin
|
||||
;; There are no release tarballs nor tags.
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/wanpinglee/MOSAIK.git")
|
||||
(commit commit)))
|
||||
(file-name (string-append name "-" version))
|
||||
(sha256
|
||||
(base32
|
||||
"17gj3s07cm77r41z92awh0bim7w7q7fbn0sf5nkqmcm1vw052qgw"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; no tests
|
||||
#:make-flags (list "CC=gcc")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace 'configure
|
||||
(lambda _ (chdir "src") #t))
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((bin (string-append (assoc-ref outputs "out")
|
||||
"/bin")))
|
||||
(mkdir-p bin)
|
||||
(copy-recursively "../bin" bin)
|
||||
#t))))))
|
||||
(inputs
|
||||
`(("perl" ,perl)
|
||||
("zlib" ,zlib)))
|
||||
(home-page "https://code.google.com/p/mosaik-aligner/")
|
||||
(synopsis "Map nucleotide sequence reads to reference genomes")
|
||||
(description
|
||||
"MOSAIK is a program for mapping second and third-generation sequencing
|
||||
reads to a reference genome. MOSAIK can align reads generated by all the
|
||||
major sequencing technologies, including Illumina, Applied Biosystems SOLiD,
|
||||
Roche 454, Ion Torrent and Pacific BioSciences SMRT.")
|
||||
;; MOSAIK is released under the GPLv2+ with the exception of third-party
|
||||
;; code released into the public domain:
|
||||
;; 1. fastlz by Ariya Hidayat - http://www.fastlz.org/
|
||||
;; 2. MD5 implementation - RSA Data Security, RFC 1321
|
||||
(license (list license:gpl2+ license:public-domain)))))
|
||||
|
||||
(define-public ngs-sdk
|
||||
(package
|
||||
(name "ngs-sdk")
|
||||
@@ -2016,6 +2228,10 @@ viewer.")
|
||||
(lambda _ (chdir "ngs-sdk") #t)
|
||||
%standard-phases))))
|
||||
(native-inputs `(("perl" ,perl)))
|
||||
;; According to the test
|
||||
;; unless ($MARCH =~ /x86_64/i || $MARCH =~ /i?86/i)
|
||||
;; in ngs-sdk/setup/konfigure.perl
|
||||
(supported-systems '("i686-linux" "x86_64-linux"))
|
||||
(home-page "https://github.com/ncbi/ngs")
|
||||
(synopsis "API for accessing Next Generation Sequencing data")
|
||||
(description
|
||||
@@ -2192,8 +2408,7 @@ accessed/downloaded on demand across HTTP.")
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((bin (string-append (assoc-ref outputs "out")
|
||||
"/bin/")))
|
||||
(mkdir-p bin)
|
||||
(copy-file "plink" (string-append bin "plink"))
|
||||
(install-file "plink" bin)
|
||||
#t))))))
|
||||
(inputs
|
||||
`(("zlib" ,zlib)
|
||||
@@ -2388,6 +2603,44 @@ manipulation, online and indexed string search, efficient I/O of
|
||||
bioinformatics file formats, sequence alignment, and more.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public seqmagick
|
||||
(package
|
||||
(name "seqmagick")
|
||||
(version "0.6.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://pypi.python.org/packages/source/s/seqmagick/seqmagick-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0cgn477n74gsl4qdaakrrhi953kcsd4q3ivk2lr18x74s3g4ma1d"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
;; python2 only, see https://github.com/fhcrc/seqmagick/issues/56
|
||||
`(#:python ,python-2
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
;; Current test in setup.py does not work as of 0.6.1,
|
||||
;; so use nose to run tests instead for now. See
|
||||
;; https://github.com/fhcrc/seqmagick/issues/55
|
||||
(replace 'check (lambda _ (zero? (system* "nosetests")))))))
|
||||
(inputs
|
||||
`(("python-biopython" ,python2-biopython)))
|
||||
(native-inputs
|
||||
`(("python-setuptools" ,python2-setuptools)
|
||||
("python-nose" ,python2-nose)))
|
||||
(home-page "http://github.com/fhcrc/seqmagick")
|
||||
(synopsis "Tools for converting and modifying sequence files")
|
||||
(description
|
||||
"Bioinformaticians often have to convert sequence files between formats
|
||||
and do little manipulations on them, and it's not worth writing scripts for
|
||||
that. Seqmagick is a utility to expose the file format conversion in
|
||||
BioPython in a convenient way. Instead of having a big mess of scripts, there
|
||||
is one that takes arguments.")
|
||||
(license license:gpl3)))
|
||||
|
||||
(define-public star
|
||||
(package
|
||||
(name "star")
|
||||
@@ -2415,8 +2668,7 @@ bioinformatics file formats, sequence alignment, and more.")
|
||||
'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
|
||||
(mkdir-p bin)
|
||||
(copy-file "STAR" (string-append bin "STAR"))))
|
||||
(install-file "STAR" bin)))
|
||||
(alist-delete
|
||||
'configure %standard-phases)))))
|
||||
(native-inputs
|
||||
@@ -2475,145 +2727,6 @@ features; exactSNP: a SNP caller that discovers SNPs by testing signals
|
||||
against local background noises.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public shogun
|
||||
(package
|
||||
(name "shogun")
|
||||
(version "4.0.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"ftp://shogun-toolbox.org/shogun/releases/"
|
||||
(version-major+minor version)
|
||||
"/sources/shogun-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"159nlijnb7mnrv9za80wnm1shwvy45hgrqzn51hxy7gw4z6d6fdb"))
|
||||
(modules '((guix build utils)
|
||||
(ice-9 rdelim)))
|
||||
(snippet
|
||||
'(begin
|
||||
;; Remove non-free sources and files referencing them
|
||||
(for-each delete-file
|
||||
(find-files "src/shogun/classifier/svm/"
|
||||
"SVMLight\\.(cpp|h)"))
|
||||
(for-each delete-file
|
||||
(find-files "examples/undocumented/libshogun/"
|
||||
(string-append
|
||||
"(classifier_.*svmlight.*|"
|
||||
"evaluation_cross_validation_locked_comparison).cpp")))
|
||||
;; Remove non-free functions.
|
||||
(define (delete-ifdefs file)
|
||||
(with-atomic-file-replacement file
|
||||
(lambda (in out)
|
||||
(let loop ((line (read-line in 'concat))
|
||||
(skipping? #f))
|
||||
(if (eof-object? line)
|
||||
#t
|
||||
(let ((skip-next?
|
||||
(or (and skipping?
|
||||
(not (string-prefix?
|
||||
"#endif //USE_SVMLIGHT" line)))
|
||||
(string-prefix?
|
||||
"#ifdef USE_SVMLIGHT" line))))
|
||||
(when (or (not skipping?)
|
||||
(and skipping? (not skip-next?)))
|
||||
(display line out))
|
||||
(loop (read-line in 'concat) skip-next?)))))))
|
||||
(for-each delete-ifdefs (find-files "src/shogun/kernel/"
|
||||
"^Kernel\\.(cpp|h)"))))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f ;no check target
|
||||
#:phases
|
||||
(alist-cons-after
|
||||
'unpack 'delete-broken-symlinks
|
||||
(lambda _
|
||||
(for-each delete-file '("applications/arts/data"
|
||||
"applications/asp/data"
|
||||
"applications/easysvm/data"
|
||||
"applications/msplicer/data"
|
||||
"applications/ocr/data"
|
||||
"examples/documented/data"
|
||||
"examples/documented/matlab_static"
|
||||
"examples/documented/octave_static"
|
||||
"examples/undocumented/data"
|
||||
"examples/undocumented/matlab_static"
|
||||
"examples/undocumented/octave_static"
|
||||
"tests/integration/data"
|
||||
"tests/integration/matlab_static"
|
||||
"tests/integration/octave_static"
|
||||
"tests/integration/python_modular/tests"))
|
||||
#t)
|
||||
(alist-cons-after
|
||||
'unpack 'change-R-target-path
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(substitute* '("src/interfaces/r_modular/CMakeLists.txt"
|
||||
"src/interfaces/r_static/CMakeLists.txt"
|
||||
"examples/undocumented/r_modular/CMakeLists.txt")
|
||||
(("\\$\\{R_COMPONENT_LIB_PATH\\}")
|
||||
(string-append (assoc-ref outputs "out")
|
||||
"/lib/R/library/")))
|
||||
#t)
|
||||
(alist-cons-after
|
||||
'unpack 'fix-octave-modules
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(substitute* '("src/interfaces/octave_modular/CMakeLists.txt"
|
||||
"src/interfaces/octave_static/CMakeLists.txt")
|
||||
(("^include_directories\\(\\$\\{OCTAVE_INCLUDE_DIRS\\}")
|
||||
"include_directories(${OCTAVE_INCLUDE_DIRS} ${OCTAVE_INCLUDE_DIRS}/octave"))
|
||||
|
||||
;; change target directory
|
||||
(substitute* "src/interfaces/octave_modular/CMakeLists.txt"
|
||||
(("\\$\\{OCTAVE_OCT_LOCAL_API_FILE_DIR\\}")
|
||||
(string-append (assoc-ref outputs "out")
|
||||
"/share/octave/packages")))
|
||||
#t)
|
||||
(alist-cons-before
|
||||
'build 'set-HOME
|
||||
;; $HOME needs to be set at some point during the build phase
|
||||
(lambda _ (setenv "HOME" "/tmp") #t)
|
||||
%standard-phases))))
|
||||
#:configure-flags
|
||||
(list "-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE"
|
||||
"-DUSE_SVMLIGHT=OFF" ;disable proprietary SVMLIGHT
|
||||
;;"-DJavaModular=ON" ;requires unpackaged jblas
|
||||
;;"-DRubyModular=ON" ;requires unpackaged ruby-narray
|
||||
;;"-DPerlModular=ON" ;"FindPerlLibs" does not exist
|
||||
;;"-DLuaModular=ON" ;fails because lua doesn't build pkgconfig file
|
||||
"-DOctaveModular=ON"
|
||||
"-DOctaveStatic=ON"
|
||||
"-DPythonModular=ON"
|
||||
"-DPythonStatic=ON"
|
||||
"-DRModular=ON"
|
||||
"-DRStatic=ON"
|
||||
"-DCmdLineStatic=ON")))
|
||||
(inputs
|
||||
`(("python" ,python)
|
||||
("numpy" ,python-numpy)
|
||||
("r" ,r)
|
||||
("octave" ,octave)
|
||||
("swig" ,swig)
|
||||
("hdf5" ,hdf5)
|
||||
("atlas" ,atlas)
|
||||
("arpack" ,arpack-ng)
|
||||
("lapack" ,lapack)
|
||||
("glpk" ,glpk)
|
||||
("libxml2" ,libxml2)
|
||||
("lzo" ,lzo)
|
||||
("zlib" ,zlib)))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(home-page "http://shogun-toolbox.org/")
|
||||
(synopsis "Machine learning toolbox")
|
||||
(description
|
||||
"The Shogun Machine learning toolbox provides a wide range of unified and
|
||||
efficient Machine Learning (ML) methods. The toolbox seamlessly allows to
|
||||
combine multiple data representations, algorithm classes, and general purpose
|
||||
tools. This enables both rapid prototyping of data pipelines and extensibility
|
||||
in terms of new algorithms.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public vcftools
|
||||
(package
|
||||
(name "vcftools")
|
||||
@@ -2654,3 +2767,179 @@ data in the form of VCF files.")
|
||||
;; The license is declared as LGPLv3 in the README and
|
||||
;; at http://vcftools.sourceforge.net/license.html
|
||||
(license license:lgpl3)))
|
||||
|
||||
(define-public vsearch
|
||||
(package
|
||||
(name "vsearch")
|
||||
(version "1.4.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://github.com/torognes/vsearch/archive/v"
|
||||
version ".tar.gz"))
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0b1359wbzgb2cm04h7dq05v80vik88hnsv298xxd1q1f2q4ydni7"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
;; Remove bundled cityhash and '-mtune=native'.
|
||||
(substitute* "src/Makefile.am"
|
||||
(("^AM_CXXFLAGS=-I\\$\\{srcdir\\}/cityhash \
|
||||
-O3 -mtune=native -Wall -Wsign-compare")
|
||||
(string-append "AM_CXXFLAGS=-lcityhash"
|
||||
" -O3 -Wall -Wsign-compare"))
|
||||
(("^__top_builddir__bin_vsearch_SOURCES = cityhash/city.h \\\\")
|
||||
"__top_builddir__bin_vsearch_SOURCES = \\")
|
||||
(("^cityhash/config.h \\\\") "\\")
|
||||
(("^cityhash/city.cc \\\\") "\\"))
|
||||
(substitute* "src/vsearch.h"
|
||||
(("^\\#include \"cityhash/city.h\"")
|
||||
"#include <city.h>"))
|
||||
(delete-file-recursively "src/cityhash")
|
||||
#t))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'configure 'autogen
|
||||
(lambda _ (zero? (system* "autoreconf" "-vif")))))))
|
||||
(inputs
|
||||
`(("zlib" ,zlib)
|
||||
("bzip2" ,bzip2)
|
||||
("cityhash" ,cityhash)))
|
||||
(native-inputs
|
||||
`(("autoconf" ,autoconf)
|
||||
("automake" ,automake)))
|
||||
(synopsis "Sequence search tools for metagenomics")
|
||||
(description
|
||||
"VSEARCH supports DNA sequence searching, clustering, chimera detection,
|
||||
dereplication, pairwise alignment, shuffling, subsampling, sorting and
|
||||
masking. The tool takes advantage of parallelism in the form of SIMD
|
||||
vectorization as well as multiple threads to perform accurate alignments at
|
||||
high speed. VSEARCH uses an optimal global aligner (full dynamic programming
|
||||
Needleman-Wunsch).")
|
||||
(home-page "https://github.com/torognes/vsearch")
|
||||
;; vsearch uses non-portable SSE intrinsics so building fails on other
|
||||
;; platforms.
|
||||
(supported-systems '("x86_64-linux"))
|
||||
;; Dual licensed; also includes public domain source.
|
||||
(license (list license:gpl3 license:bsd-2))))
|
||||
|
||||
(define-public bio-locus
|
||||
(package
|
||||
(name "bio-locus")
|
||||
(version "0.0.7")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (rubygems-uri "bio-locus" version))
|
||||
(sha256
|
||||
(base32
|
||||
"02vmrxyimkj9sahsp4zhfhnmbvz6dbbqz1y01vglf8cbwvkajfl0"))))
|
||||
(build-system ruby-build-system)
|
||||
(native-inputs
|
||||
`(("ruby-rspec" ,ruby-rspec)))
|
||||
(synopsis "Tool for fast querying of genome locations")
|
||||
(description
|
||||
"Bio-locus is a tabix-like tool for fast querying of genome
|
||||
locations. Many file formats in bioinformatics contain records that
|
||||
start with a chromosome name and a position for a SNP, or a start-end
|
||||
position for indels. Bio-locus allows users to store this chr+pos or
|
||||
chr+pos+alt information in a database.")
|
||||
(home-page "https://github.com/pjotrp/bio-locus")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public bio-blastxmlparser
|
||||
(package
|
||||
(name "bio-blastxmlparser")
|
||||
(version "2.0.4")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (rubygems-uri "bio-blastxmlparser" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1wf4qygcmdjgcqm6flmvsagfr1gs9lf63mj32qv3z1f481zc5692"))))
|
||||
(build-system ruby-build-system)
|
||||
(propagated-inputs
|
||||
`(("ruby-bio-logger" ,ruby-bio-logger)
|
||||
("ruby-nokogiri" ,ruby-nokogiri)))
|
||||
(inputs
|
||||
`(("ruby-rspec" ,ruby-rspec)))
|
||||
(synopsis "Fast big data BLAST XML parser and library")
|
||||
(description
|
||||
"Very fast parallel big-data BLAST XML file parser which can be used as
|
||||
command line utility. Use blastxmlparser to: Parse BLAST XML; filter output;
|
||||
generate FASTA, JSON, YAML, RDF, JSON-LD, HTML, CSV, tabular output etc.")
|
||||
(home-page "http://github.com/pjotrp/blastxmlparser")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public bioruby
|
||||
(package
|
||||
(name "bioruby")
|
||||
(version "1.5.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (rubygems-uri "bio" version))
|
||||
(sha256
|
||||
(base32
|
||||
"01k2fyjl5fpx4zn8g6gqiqvsg2j1fgixrs9p03vzxckynxdq3wmc"))))
|
||||
(build-system ruby-build-system)
|
||||
(propagated-inputs
|
||||
`(("ruby-libxml" ,ruby-libxml)))
|
||||
(native-inputs
|
||||
`(("which" ,which))) ; required for test phase
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'build 'patch-test-command
|
||||
(lambda _
|
||||
(substitute* '("test/functional/bio/test_command.rb")
|
||||
(("/bin/sh") (which "sh")))
|
||||
(substitute* '("test/functional/bio/test_command.rb")
|
||||
(("/bin/ls") (which "ls")))
|
||||
(substitute* '("test/functional/bio/test_command.rb")
|
||||
(("which") (which "which")))
|
||||
(substitute* '("test/functional/bio/test_command.rb",
|
||||
"test/data/command/echoarg2.sh")
|
||||
(("/bin/echo") (which "echo")))
|
||||
#t)))))
|
||||
(synopsis "Ruby library, shell and utilities for bioinformatics")
|
||||
(description "BioRuby comes with a comprehensive set of Ruby development
|
||||
tools and libraries for bioinformatics and molecular biology. BioRuby has
|
||||
components for sequence analysis, pathway analysis, protein modelling and
|
||||
phylogenetic analysis; it supports many widely used data formats and provides
|
||||
easy access to databases, external programs and public web services, including
|
||||
BLAST, KEGG, GenBank, MEDLINE and GO.")
|
||||
(home-page "http://bioruby.org/")
|
||||
;; Code is released under Ruby license, except for setup
|
||||
;; (LGPLv2.1+) and scripts in samples (which have GPL2 and GPL2+)
|
||||
(license (list license:ruby license:lgpl2.1+ license:gpl2+ ))))
|
||||
|
||||
(define-public r-qtl
|
||||
(package
|
||||
(name "r-qtl")
|
||||
(version "1.37-11")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://cran/src/contrib/qtl_"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0h20d36mww7ljp51pfs66xq33yq4b4fwq9nsh02dpmfhlaxgx1xi"))))
|
||||
(build-system r-build-system)
|
||||
(home-page "http://rqtl.org/")
|
||||
(synopsis "R package for analyzing QTL experiments in genetics")
|
||||
(description "R/qtl is an extension library for the R statistics
|
||||
system. It is used to analyze experimental crosses for identifying
|
||||
genes contributing to variation in quantitative traits (so-called
|
||||
quantitative trait loci, QTLs).
|
||||
|
||||
Using a hidden Markov model, R/qtl allows to estimate genetic maps, to
|
||||
identify genotyping errors, and to perform single-QTL and two-QTL,
|
||||
two-dimensional genome scans.")
|
||||
(license license:gpl3)))
|
||||
|
||||
@@ -99,46 +99,40 @@ DHT, µTP, PEX and Magnet Links.")
|
||||
(define-public libtorrent
|
||||
(package
|
||||
(name "libtorrent")
|
||||
(version "0.13.4")
|
||||
(version "0.13.6")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://libtorrent.rakshasa.no/downloads/libtorrent-"
|
||||
"http://rtorrent.net/downloads/libtorrent-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0ma910br5vxrfpm4f4w4942lpmhwvqjnnf9h8vpf52fw35qhjkkh"))))
|
||||
"012s1nwcvz5m5r4d2z9klgy2n34kpgn9kgwgzxm97zgdjs6a0f18"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("openssl" ,openssl)
|
||||
("zlib" ,zlib)))
|
||||
(native-inputs `(("pkg-config" ,pkg-config)
|
||||
;; Add this when you enable tests:
|
||||
;; ("cppunit" ,cppunit)
|
||||
))
|
||||
(arguments
|
||||
;; FIXME: enable tests on the next release:
|
||||
;; https://github.com/rakshasa/libtorrent/issues/59
|
||||
`(#:tests? #f))
|
||||
("cppunit" ,cppunit)))
|
||||
(synopsis "BitTorrent library of rtorrent")
|
||||
(description
|
||||
"LibTorrent is a BitTorrent library used by and developed in parallel
|
||||
with the BitTorrent client rtorrent. It is written in C++ with emphasis on
|
||||
speed and efficiency.")
|
||||
(home-page "http://libtorrent.rakshasa.no/")
|
||||
(home-page "https://github.com/rakshasa/libtorrent")
|
||||
(license l:gpl2+)))
|
||||
|
||||
(define-public rtorrent
|
||||
(package
|
||||
(name "rtorrent")
|
||||
(version "0.9.4")
|
||||
(version "0.9.6")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://libtorrent.rakshasa.no/downloads/rtorrent-"
|
||||
"http://rtorrent.net/downloads/rtorrent-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"113yrrac75vqi4g8r6bgs0ggjllj9bkg9shv08vqzdhkwqg2q2mw"))))
|
||||
"03jvzw9pi2mhcm913h8qg0qw9gwjqc6lhwynb1yz1y163x7w4s8y"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("libtorrent" ,libtorrent)
|
||||
("ncurses" ,ncurses)
|
||||
@@ -153,5 +147,5 @@ speed and efficiency.")
|
||||
"rTorrent is a BitTorrent client with an ncurses interface. It supports
|
||||
full encryption, DHT, PEX, and Magnet Links. It can also be controlled via
|
||||
XML-RPC over SCGI.")
|
||||
(home-page "http://libtorrent.rakshasa.no/")
|
||||
(home-page "https://github.com/rakshasa/rtorrent")
|
||||
(license l:gpl2+)))
|
||||
|
||||
@@ -127,7 +127,7 @@ successful, or false to signal an error."
|
||||
(synopsis description)
|
||||
(description #f)
|
||||
(home-page #f)
|
||||
(license #f)))
|
||||
(license gpl3+)))
|
||||
|
||||
(define package-with-bootstrap-guile
|
||||
(memoize
|
||||
@@ -164,6 +164,8 @@ successful, or false to signal an error."
|
||||
((string=? system "i686-linux") "/lib/ld-linux.so.2")
|
||||
((string=? system "armhf-linux") "/lib/ld-linux-armhf.so.3")
|
||||
((string=? system "mips64el-linux") "/lib/ld.so.1")
|
||||
((string=? system "i586-gnu") "/lib/ld.so.1")
|
||||
((string=? system "i686-gnu") "/lib/ld.so.1")
|
||||
|
||||
;; XXX: This one is used bare-bones, without a libc, so add a case
|
||||
;; here just so we can keep going.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
|
||||
;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -27,7 +27,7 @@
|
||||
(define-public calcurse
|
||||
(package
|
||||
(name "calcurse")
|
||||
(version "3.2.1")
|
||||
(version "4.0.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -35,9 +35,14 @@
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0g92c4x02iv2wi3c1sm3nz1ay96bi2m7klxq3qyyx3pr11l53m85"))))
|
||||
"0d33cpkbhyidvm3xx6iw9ljqdvl6477c2kcwix3bs63nj0ch06v2"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("ncurses" ,ncurses)))
|
||||
(arguments
|
||||
;; The ical tests all want to create a ".calcurse" directory, and may
|
||||
;; fail with "cannot create directory '.calcurse': File exists" if run
|
||||
;; concurently.
|
||||
'(#:parallel-tests? #f))
|
||||
(home-page "http://www.calcurse.org")
|
||||
(synopsis "Text-based calendar and scheduling")
|
||||
(description
|
||||
|
||||
+22
-2
@@ -2,6 +2,7 @@
|
||||
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
|
||||
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
|
||||
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -231,6 +232,25 @@ depend on the file system of the medium. The maximum error correction
|
||||
capacity is user-selectable.")
|
||||
(license gpl2+)))
|
||||
|
||||
(define-public libcue
|
||||
(package
|
||||
(name "libcue")
|
||||
(version "1.4.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/libcue/libcue-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"17kjd7rjz1bvfn44n3n2bjb7a1ywd0yc0g4sqp5ihf9b5bn7cwlb"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "http://libcue.sourceforge.net/")
|
||||
(synopsis "C library to parse cue sheets")
|
||||
(description "Libcue is a C library to parse so-called @dfn{cue sheets}
|
||||
which contain meta-data for CD/DVD tracks. It provides an API to manipulate
|
||||
the data.")
|
||||
(license gpl2+)))
|
||||
|
||||
(define-public cd-discid
|
||||
(package
|
||||
(name "cd-discid")
|
||||
@@ -264,7 +284,7 @@ from an audio CD.")
|
||||
(define-public abcde
|
||||
(package
|
||||
(name "abcde")
|
||||
(version "2.6")
|
||||
(version "2.7")
|
||||
(home-page "http://abcde.einval.com/")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
@@ -272,7 +292,7 @@ from an audio CD.")
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0y2cg233n2hixs0ji76dggpzgf52v4c4mnpwiai889ql2piafgk8"))
|
||||
"0ikpffzvacadh6vj9qlary8126j1zrd2knp9gvivmp7y1656jj01"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(substitute* "Makefile"
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages gnuzilla)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages tls))
|
||||
|
||||
(define certdata2pem
|
||||
@@ -76,7 +77,8 @@
|
||||
(outputs '("out"))
|
||||
(native-inputs
|
||||
`(("certdata2pem" ,certdata2pem)
|
||||
("openssl" ,openssl)))
|
||||
("openssl" ,openssl)
|
||||
("perl" ,perl))) ;for OpenSSL's 'c_rehash'
|
||||
(inputs '())
|
||||
(propagated-inputs '())
|
||||
(arguments
|
||||
|
||||
@@ -136,10 +136,9 @@ supervised tests.")
|
||||
,version)))
|
||||
(begin
|
||||
(for-each mkdir-p (list incdir docdir))
|
||||
(copy-file (string-append source
|
||||
(install-file (string-append source
|
||||
"/single_include/catch.hpp")
|
||||
(string-append incdir
|
||||
"/catch.hpp"))
|
||||
incdir)
|
||||
(copy-recursively (string-append source "/docs")
|
||||
docdir))))))
|
||||
(home-page "http://catch-lib.net/")
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
(define-public cmake
|
||||
(package
|
||||
(name "cmake")
|
||||
(version "3.2.2")
|
||||
(version "3.3.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@@ -44,12 +44,11 @@
|
||||
(version-major+minor version)
|
||||
"/cmake-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "0y3w83al0vh9ll7fnqm3nx7l8hsl85k8iv9abxb791q36rp4xsdd"))
|
||||
(base32 "1mp32dqywk4dfw7zmpgp31axszv7h74yk69g273z21q7d8n04rfd"))
|
||||
(patches (list (search-patch "cmake-fix-tests.patch")))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:test-target "test"
|
||||
#:parallel-tests? #f ; 3 test from RunCMake fails
|
||||
#:phases (alist-cons-before
|
||||
'configure 'patch-bin-sh
|
||||
(lambda _
|
||||
|
||||
@@ -67,14 +67,14 @@ a major mode for Emacs for examining the flowcharts that it produces.")
|
||||
(define-public complexity
|
||||
(package
|
||||
(name "complexity")
|
||||
(version "1.2")
|
||||
(version "1.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/complexity/complexity-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0pmlhlj1chl4caaqffvn1cy9z8gwmjbx97syi7pdfa0vqygkql6d"))))
|
||||
"19bc64sxpqd5rqylqaa7dijz2x7qp2b0dg3ah3fb3qbcvd8b4wgy"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("texinfo" ,texinfo)
|
||||
@@ -91,14 +91,14 @@ highlighting your own code that seemed comprehensible when you wrote it.")
|
||||
(define-public global ; a global variable
|
||||
(package
|
||||
(name "global")
|
||||
(version "6.5")
|
||||
(version "6.5.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/global/global-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1af6lhwhrpdnigd3707fnk3dd6y53pbc4g0i75xjf0563bdi5zaa"))))
|
||||
"1y34nbazsw2p6r2jhv27z15qvm9mhy5xjchpz8pwps00shkm578f"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("ncurses" ,ncurses)
|
||||
("libltdl" ,libltdl)
|
||||
@@ -117,9 +117,8 @@ highlighting your own code that seemed comprehensible when you wrote it.")
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(data (string-append out "/share/gtags"))
|
||||
(lisp (string-append out "/share/emacs/site-lisp")))
|
||||
(mkdir-p lisp)
|
||||
(copy-file (string-append data "/gtags.el")
|
||||
(string-append lisp "/gtags.el"))
|
||||
(install-file (string-append data "/gtags.el")
|
||||
lisp)
|
||||
(delete-file (string-append data "/gtags.el"))
|
||||
#t))
|
||||
%standard-phases)))
|
||||
|
||||
@@ -419,18 +419,17 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
|
||||
#:guile %bootstrap-guile))))
|
||||
|
||||
(define static-bash-for-glibc
|
||||
;; A statically-linked Bash to be embedded in GLIBC-FINAL, for use by
|
||||
;; system(3) & co.
|
||||
;; A statically-linked Bash to be used by GLIBC-FINAL in system(3) & co.
|
||||
(let* ((gcc (cross-gcc-wrapper gcc-boot0 binutils-boot0
|
||||
glibc-final-with-bootstrap-bash
|
||||
(car (assoc-ref %boot1-inputs "bash"))))
|
||||
(bash (package (inherit bash-light)
|
||||
(bash (package (inherit static-bash)
|
||||
(native-inputs `(("bison" ,bison-boot1)))
|
||||
(arguments
|
||||
`(#:guile ,%bootstrap-guile
|
||||
,@(package-arguments bash-light))))))
|
||||
,@(package-arguments static-bash))))))
|
||||
(package-with-bootstrap-guile
|
||||
(package-with-explicit-inputs (static-package bash)
|
||||
(package-with-explicit-inputs bash
|
||||
`(("gcc" ,gcc)
|
||||
("libc" ,glibc-final-with-bootstrap-bash)
|
||||
,@(fold alist-delete %boot1-inputs
|
||||
@@ -490,6 +489,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
|
||||
(arguments
|
||||
`(#:allowed-references
|
||||
,(cons* `(,gcc-boot0 "lib") (linux-libre-headers-boot0)
|
||||
static-bash-for-glibc
|
||||
(package-outputs glibc-final-with-bootstrap-bash))
|
||||
|
||||
,@(package-arguments glibc-final-with-bootstrap-bash)))))
|
||||
@@ -562,7 +562,8 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
|
||||
`(#:guile ,%bootstrap-guile
|
||||
#:implicit-inputs? #f
|
||||
|
||||
#:allowed-references ("out" "lib" ,glibc-final)
|
||||
#:allowed-references ("out" "lib"
|
||||
,glibc-final ,static-bash-for-glibc)
|
||||
|
||||
;; Things like libasan.so and libstdc++.so NEED ld.so for some
|
||||
;; reason, but it is not in their RUNPATH. This is a false
|
||||
@@ -596,8 +597,12 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
|
||||
((#:phases phases)
|
||||
`(alist-delete 'symlink-libgcc_eh ,phases)))))
|
||||
|
||||
;; This time we want Texinfo, so we get the manual.
|
||||
;; This time we want Texinfo, so we get the manual. Add
|
||||
;; STATIC-BASH-FOR-GLIBC so that it's used in the final shebangs of
|
||||
;; scripts such as 'mkheaders' and 'fixinc.sh' (XXX: who cares about these
|
||||
;; scripts?).
|
||||
(native-inputs `(("texinfo" ,texinfo-boot0)
|
||||
("static-bash" ,static-bash-for-glibc)
|
||||
,@(package-native-inputs gcc-boot0)))
|
||||
|
||||
(inputs `(("gmp-source" ,(bootstrap-origin (package-source gmp)))
|
||||
@@ -655,8 +660,19 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
|
||||
(current-source-location)
|
||||
#:guile %bootstrap-guile))))))
|
||||
|
||||
(define-public ld-wrapper
|
||||
;; The final 'ld' wrapper, which uses the final Guile and Binutils.
|
||||
(package (inherit ld-wrapper-boot3)
|
||||
(name "ld-wrapper")
|
||||
(inputs `(("guile" ,guile-final)
|
||||
("bash" ,bash-final)
|
||||
,@(fold alist-delete (package-inputs ld-wrapper-boot3)
|
||||
'("guile" "bash"))))))
|
||||
|
||||
(define %boot5-inputs
|
||||
;; Now with UTF-8 locale.
|
||||
;; Now with UTF-8 locales. Remember that the bootstrap binaries were built
|
||||
;; with an older libc, which cannot load the new locale format. See
|
||||
;; <https://lists.gnu.org/archive/html/guix-devel/2015-08/msg00737.html>.
|
||||
`(("locales" ,glibc-utf8-locales-final)
|
||||
,@%boot4-inputs))
|
||||
|
||||
@@ -668,15 +684,6 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
|
||||
,@%boot5-inputs)
|
||||
(current-source-location))))
|
||||
|
||||
(define-public ld-wrapper
|
||||
;; The final `ld' wrapper, which uses the final Guile.
|
||||
(package (inherit ld-wrapper-boot3)
|
||||
(name "ld-wrapper")
|
||||
(inputs `(("guile" ,guile-final)
|
||||
("bash" ,bash-final)
|
||||
,@(fold alist-delete (package-inputs ld-wrapper-boot3)
|
||||
'("guile" "bash"))))))
|
||||
|
||||
(define coreutils-final
|
||||
;; The final Coreutils. Treat them specially because some packages, such as
|
||||
;; Findutils, keep a reference to the Coreutils they were built with.
|
||||
@@ -791,14 +798,6 @@ COREUTILS-FINAL vs. COREUTILS, etc."
|
||||
(((names . directories) ...)
|
||||
(union-build out directories)))
|
||||
|
||||
;; Remove the 'sh' and 'bash' binaries that come with
|
||||
;; libc to avoid polluting the user's profile (these are
|
||||
;; statically-linked binaries with no locale support and
|
||||
;; so on.)
|
||||
(for-each (lambda (file)
|
||||
(delete-file (string-append out "/bin/" file)))
|
||||
'("sh" "bash"))
|
||||
|
||||
(union-build (assoc-ref %outputs "debug")
|
||||
(list (assoc-ref %build-inputs
|
||||
"libc-debug")))))))
|
||||
|
||||
+154
-10
@@ -5,6 +5,9 @@
|
||||
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
|
||||
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
|
||||
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
|
||||
;;; Copyright © 2015 Jeff Mickey <j@codemac.net>
|
||||
;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -23,6 +26,7 @@
|
||||
|
||||
(define-module (gnu packages compression)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
@@ -30,6 +34,7 @@
|
||||
#:use-module (guix build-system perl)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages valgrind)
|
||||
#:use-module ((srfi srfi-1) #:select (last)))
|
||||
|
||||
(define-public zlib
|
||||
@@ -222,6 +227,36 @@ decompression.")
|
||||
"See LICENSE in the distribution."))
|
||||
(home-page "http://www.bzip.org/"))))
|
||||
|
||||
(define-public pbzip2
|
||||
(package
|
||||
(name "pbzip2")
|
||||
(version "1.1.12")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://launchpad.net/pbzip2/"
|
||||
(version-major+minor version) "/" version
|
||||
"/+download/" name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1vk6065dv3a47p86vmp8hv3n1ygd9hraz0gq89gvzlx7lmcb6fsp"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("bzip2", bzip2)))
|
||||
(arguments
|
||||
`(#:tests? #f ; no tests
|
||||
#:phases (modify-phases %standard-phases
|
||||
(delete 'configure))
|
||||
#:make-flags (list (string-append "PREFIX=" %output))))
|
||||
(home-page "http://compression.ca/pbzip2/")
|
||||
(synopsis "Parallel bzip2 implementation")
|
||||
(description
|
||||
"Pbzip2 is a parallel implementation of the bzip2 block-sorting file
|
||||
compressor that uses pthreads and achieves near-linear speedup on SMP machines.
|
||||
The output of this version is fully compatible with bzip2 v1.0.2 (i.e. anything
|
||||
compressed with pbzip2 can be decompressed with bzip2).")
|
||||
(license (license:non-copyleft "file://COPYING"
|
||||
"See COPYING in the distribution."))))
|
||||
|
||||
(define-public xz
|
||||
(package
|
||||
(name "xz")
|
||||
@@ -251,7 +286,7 @@ than gzip and 15 % smaller output than bzip2.")
|
||||
(define-public lzo
|
||||
(package
|
||||
(name "lzo")
|
||||
(version "2.06")
|
||||
(version "2.09")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -259,7 +294,7 @@ than gzip and 15 % smaller output than bzip2.")
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0wryshs446s7cclrbjykyj766znhcpnr7s3cxy33ybfn6vwfcygz"))))
|
||||
"0k5kpj3jnsjfxqqkblpfpx0mqcy86zs5fhjhgh2kq1hksg7ag57j"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments '(#:configure-flags '("--enable-shared")))
|
||||
(home-page "http://www.oberhumer.com/opensource/lzo")
|
||||
@@ -355,17 +390,15 @@ This package is mostly for compatibility and historical interest.")
|
||||
(define-public sfarklib
|
||||
(package
|
||||
(name "sfarklib")
|
||||
(version "2.23.5ca96b779")
|
||||
(version "2.24")
|
||||
(source (origin
|
||||
;; The 2.23 tarball does not include the Makefile, but only
|
||||
;; Makefile.am.
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/raboof/sfArkLib.git")
|
||||
(commit (last (string-split version #\.)))))
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://github.com/raboof/sfArkLib/archive/"
|
||||
version ".tar.gz"))
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1hk1x88dl5b9jq016r6rx5wyszxknyv0sa7gmil4m4alnhwl4h7h"))))
|
||||
"0bzs2d98rk1xw9qwpnc7gmlbxwmwc3dg1rpn310afy9pq1k9clzi"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ;no "check" target
|
||||
@@ -513,3 +546,114 @@ compression library.")
|
||||
(description "IO-Compress provides a Perl interface to allow reading and
|
||||
writing of compressed data created with the zlib and bzip2 libraries.")
|
||||
(license (package-license perl))))
|
||||
|
||||
(define-public lz4
|
||||
(package
|
||||
(name "lz4")
|
||||
(version "131")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://github.com/Cyan4973/lz4/archive/"
|
||||
"r" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "1vfg305zvj50hwscad24wan9jar6nqj14gdk2hqyr7bb9mhh0kcx"))
|
||||
(file-name (string-append name "-" version ".tar.gz"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs `(("valgrind" ,valgrind)))
|
||||
(arguments
|
||||
`(#:test-target "test"
|
||||
#:parallel-tests? #f ; tests fail if run in parallel
|
||||
#:make-flags (list "CC=gcc"
|
||||
(string-append "PREFIX=" (assoc-ref %outputs "out")))
|
||||
#:phases (modify-phases %standard-phases
|
||||
(delete 'configure))))
|
||||
(home-page "https://github.com/Cyan4973/lz4")
|
||||
(synopsis "Compression algorithm focused on speed")
|
||||
(description "LZ4 is a lossless compression algorithm, providing
|
||||
compression speed at 400 MB/s per core (0.16 Bytes/cycle). It also features an
|
||||
extremely fast decoder, with speed in multiple GB/s per core (0.71 Bytes/cycle).
|
||||
A high compression derivative, called LZ4_HC, is also provided. It trades CPU
|
||||
time for compression ratio.")
|
||||
;; The libraries (lz4, lz4hc, and xxhash are BSD licenced. The command
|
||||
;; line interface programs (lz4, fullbench, fuzzer, datagen) are GPL2+.
|
||||
(license (list license:bsd-2 license:gpl2+))))
|
||||
|
||||
(define-public squashfs-tools
|
||||
(package
|
||||
(name "squashfs-tools")
|
||||
(version "4.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/squashfs/"
|
||||
"squashfs" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1xpklm0y43nd9i6jw43y2xh5zvlmj9ar2rvknh0bh7kv8c95aq0d"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f ; no check target
|
||||
#:make-flags
|
||||
(list "CC=gcc"
|
||||
"XZ_SUPPORT=1"
|
||||
"LZO_SUPPORT=1"
|
||||
"LZ4_SUPPORT=1"
|
||||
(string-append "INSTALL_DIR=" %output "/bin"))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace 'configure
|
||||
(lambda _
|
||||
(chdir "squashfs-tools"))))))
|
||||
(inputs
|
||||
`(("lz4" ,lz4)
|
||||
("lzo" ,lzo)
|
||||
("xz" ,xz)
|
||||
("zlib" ,zlib)))
|
||||
(home-page "http://squashfs.sourceforge.net/")
|
||||
(synopsis "Tools to create and extract squashfs filesystems")
|
||||
(description
|
||||
"Squashfs is a highly compressed read-only filesystem for Linux. It uses
|
||||
zlib to compress files, inodes, and directories. All blocks are packed to
|
||||
minimize the data overhead, and block sizes of between 4K and 1M are supported.
|
||||
It is intended to be used for archival use, for live CDs, and for embedded
|
||||
systems where low overhead is needed. This package allows you to create and
|
||||
extract such filesystems.")
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define-public pigz
|
||||
(package
|
||||
(name "pigz")
|
||||
(version "2.3.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://zlib.net/pigz/"
|
||||
name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"172hdf26k4zmm7z8md7nl0dph2a7mhf3x7slb9bhfyff6as6g2sf"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bin (string-append out "/bin"))
|
||||
(man (string-append out "/share/man/man1")))
|
||||
(install-file "pigz" bin)
|
||||
(symlink "pigz" (string-append bin "/unpigz"))
|
||||
(install-file "pigz.1" man)
|
||||
#t))))
|
||||
#:make-flags (list "CC=gcc")
|
||||
#:test-target "tests"))
|
||||
(inputs `(("zlib" ,zlib)))
|
||||
(home-page "http://zlib.net/pigz/")
|
||||
(synopsis "Parallel implementation of gzip")
|
||||
(description
|
||||
"This package provides a parallel implementation of gzip that exploits
|
||||
multiple processors and multiple cores when compressing data.")
|
||||
|
||||
;; Things under zopfli/ are under ASL2.0, but 4 files at the top-level,
|
||||
;; written by Mark Adler, are under another non-copyleft license.
|
||||
(license license:asl2.0)))
|
||||
|
||||
+25
-29
@@ -1,6 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
|
||||
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
|
||||
;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -28,46 +28,42 @@
|
||||
(define-public conkeror
|
||||
(package
|
||||
(name "conkeror")
|
||||
(version "1.0pre1")
|
||||
(version "1.0pre1.20150730")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
(string-append "http://repo.or.cz/w/conkeror.git/snapshot/"
|
||||
"8a26fff5896a3360549e2adfbf06b1d57e909266"
|
||||
".tar.gz")) ; tag: debian-1.0--pre-1+git140616-1
|
||||
"a1f7e879b129df5cf14ea4ce80a9c1407380ed58"
|
||||
".tar.gz")) ; tag: debian-1.0--pre-1+git150730-1
|
||||
(sha256
|
||||
(base32
|
||||
"1cgjzi7g3g22zcx6bpfnid4i12sb45w6icmxdzjn8d3c0m8qsyp1"))))
|
||||
"1q45hc30733gz3ca2ixvw0rzzcbi7rlay7gx7kvzjv17a030nyk0"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("icecat" ,icecat)))
|
||||
(arguments
|
||||
`(#:tests? #f ;no tests
|
||||
#:make-flags '("CC=gcc")
|
||||
#:make-flags `("CC=gcc"
|
||||
,(string-append "PREFIX=" (assoc-ref %outputs "out")))
|
||||
#:phases
|
||||
(alist-delete
|
||||
'configure
|
||||
(alist-replace
|
||||
'install
|
||||
(lambda _
|
||||
(begin
|
||||
(use-modules (guix build utils))
|
||||
(let* ((datadir (string-append %output "/share/conkeror"))
|
||||
(bindir (string-append %output "/bin"))
|
||||
(launcher (string-append bindir "/conkeror"))
|
||||
(spawn (string-append bindir "/conkeror-spawn-helper")))
|
||||
(copy-recursively "." datadir)
|
||||
(mkdir-p bindir)
|
||||
(copy-file "conkeror-spawn-helper" spawn)
|
||||
(call-with-output-file launcher
|
||||
(lambda (p)
|
||||
(format p "#!~a/bin/bash
|
||||
(modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
(add-after
|
||||
'install 'install-app-launcher
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
;; This overwrites the installed launcher, which execs xulrunner,
|
||||
;; with one that execs 'icecat --app'
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(datadir (string-append out "/share/conkeror"))
|
||||
(launcher (string-append out "/bin/conkeror")))
|
||||
(call-with-output-file launcher
|
||||
(lambda (p)
|
||||
(format p "#!~a/bin/bash
|
||||
exec ~a/bin/icecat --app ~a \"$@\"~%"
|
||||
(assoc-ref %build-inputs "bash") ;implicit input
|
||||
(assoc-ref %build-inputs "icecat")
|
||||
(string-append datadir
|
||||
"/application.ini"))))
|
||||
(chmod launcher #o555))))
|
||||
%standard-phases))))
|
||||
(assoc-ref inputs "bash") ;implicit input
|
||||
(assoc-ref inputs "icecat")
|
||||
(string-append datadir
|
||||
"/application.ini"))))
|
||||
(chmod launcher #o555)))))))
|
||||
(synopsis "Keyboard focused web browser with Emacs look and feel")
|
||||
(description "Conkeror is a highly-programmable web browser based on
|
||||
Mozilla XULRunner which is the base of all Mozilla products including Firefox.
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2015 Siniša Biđin <sinisa@bidin.eu>
|
||||
;;;
|
||||
;;; 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 conky)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (gnu packages fontutils)
|
||||
#:use-module (gnu packages ncurses)
|
||||
#:use-module (gnu packages lua)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages xorg))
|
||||
|
||||
(define-public conky
|
||||
(package
|
||||
(name "conky")
|
||||
(version "1.10.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://github.com/brndnmtthws/conky/archive/v"
|
||||
version ".tar.gz"))
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "1szq4ckfkvyabv5llf9nkdxipn7429sralsxyr7z0dyc3zwz74pk"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; there are no tests
|
||||
#:phases
|
||||
(alist-cons-after
|
||||
'unpack 'add-freetype-to-search-path
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(substitute* "cmake/ConkyPlatformChecks.cmake"
|
||||
(("set\\(INCLUDE_SEARCH_PATH")
|
||||
(string-append
|
||||
"set(INCLUDE_SEARCH_PATH "
|
||||
(assoc-ref inputs "freetype") "/include/freetype2 ")))
|
||||
#t)
|
||||
(alist-replace
|
||||
'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((bin (string-append (assoc-ref outputs "out") "/bin")))
|
||||
(mkdir-p bin)
|
||||
(copy-file "src/conky" (string-append bin "/conky"))))
|
||||
%standard-phases))))
|
||||
(inputs
|
||||
`(("freetype" ,freetype)
|
||||
("ncurses" ,ncurses)
|
||||
("libx11" ,libx11)
|
||||
("libxdamage" ,libxdamage)
|
||||
("libxft" ,libxft)
|
||||
("lua" ,lua)))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(home-page "https://github.com/brndnmtthws/conky")
|
||||
(synopsis "Lightweight system monitor for X")
|
||||
(description
|
||||
"Conky is a lightweight system monitor for X that displays operating
|
||||
system statistics (CPU, disk, and memory usage, etc.) and more on the
|
||||
desktop.")
|
||||
(license license:gpl3+)))
|
||||
+2
-16
@@ -28,29 +28,15 @@
|
||||
(define-public cpio
|
||||
(package
|
||||
(name "cpio")
|
||||
(version "2.11")
|
||||
(version "2.12")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/cpio/cpio-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1gavgpzqwgkpagjxw72xgxz52y1ifgz0ckqh8g7cckz7jvyhp0mv"))
|
||||
(patches (map search-patch
|
||||
'("cpio-CVE-2014-9112-pt1.patch"
|
||||
"cpio-CVE-2014-9112-pt2.patch"
|
||||
"cpio-CVE-2014-9112-pt3.patch"
|
||||
"cpio-CVE-2014-9112-pt4.patch"
|
||||
"cpio-CVE-2014-9112-pt5.patch"
|
||||
"cpio-fix-symlink-bad-length-test.patch"
|
||||
"cpio-gets-undeclared.patch")))))
|
||||
"0vi9q475h1rki53100zml75vxsykzyhrn70hidy41s5c2rc8r6bh"))))
|
||||
(build-system gnu-build-system)
|
||||
|
||||
;; FIXME: autoconf is needed to run autom4te, to update to test suite
|
||||
;; after the CVE-2014-9112 patches. Remove this when cpio is
|
||||
;; updated to post-2.11.
|
||||
(native-inputs `(("autoconf" ,autoconf)))
|
||||
|
||||
(home-page "https://www.gnu.org/software/cpio/")
|
||||
(synopsis "Manage cpio and tar file archives")
|
||||
(description
|
||||
|
||||
@@ -100,7 +100,9 @@ may be either a libc package or #f.)"
|
||||
((#:configure-flags flags)
|
||||
`(append (list ,(string-append "--target=" target)
|
||||
,@(if libc
|
||||
'()
|
||||
`( ;; Disable libcilkrts because it is not
|
||||
;; ported to GNU/Hurd.
|
||||
"--disable-libcilkrts")
|
||||
`( ;; Disable features not needed at this stage.
|
||||
"--disable-shared" "--enable-static"
|
||||
|
||||
@@ -116,6 +118,7 @@ may be either a libc package or #f.)"
|
||||
"--disable-libssp"
|
||||
"--disable-libquadmath"
|
||||
"--disable-decimal-float" ;would need libc
|
||||
"--disable-libcilkrts"
|
||||
)))
|
||||
|
||||
,(if libc
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
(define-public cups-filters
|
||||
(package
|
||||
(name "cups-filters")
|
||||
(version "1.0.71")
|
||||
(version "1.0.75")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
@@ -45,7 +45,7 @@
|
||||
"cups-filters-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"07wwlqcykfjfqcwj1bxk60ggahyaw7wcx32n5s104d1qkhham01i"))
|
||||
"0wrh9jmd2rm4z8c8nb50llb10shj1hik9vwqnr0djcvf63mfqsbw"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
;; install backends, banners and filters to cups-filters output
|
||||
@@ -71,7 +71,8 @@
|
||||
,(string-append "--with-rcdir="
|
||||
(assoc-ref %outputs "out") "/etc/rc.d"))))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
`(("glib" ,glib "bin") ; for gdbus-codegen
|
||||
("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
`(("fontconfig" ,fontconfig)
|
||||
("freetype" ,freetype)
|
||||
@@ -109,14 +110,14 @@ filters for the PDF-centric printing workflow introduced by OpenPrinting.")
|
||||
(define-public cups-minimal
|
||||
(package
|
||||
(name "cups-minimal")
|
||||
(version "2.0.3")
|
||||
(version "2.1.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://www.cups.org/software/"
|
||||
version "/cups-" version "-source.tar.gz"))
|
||||
version "/cups-" version "-source.tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1kq1kpny0hghqgbjvashlv6qw1xn0c1p3d4r3cx8qxdzd2ifk4lf"))))
|
||||
"1jfjqsw9l7jbn5kb9i96k0wj12kjdbgx0rd8157dif22hi0kh0ms"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
|
||||
+47
-34
@@ -2,6 +2,7 @@
|
||||
;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
|
||||
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2015 Tomáš Čech <sleep_walker@suse.cz>
|
||||
;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -38,15 +39,17 @@
|
||||
(define-public curl
|
||||
(package
|
||||
(name "curl")
|
||||
(version "7.43.0")
|
||||
(version "7.44.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://curl.haxx.se/download/curl-"
|
||||
version ".tar.lzma"))
|
||||
(sha256
|
||||
(base32
|
||||
"1ykpfsm5ildpcj3vw5m1xh49jk3yfpna6zj7r0fgi1bxki6xif72"))))
|
||||
"0gjnaav9vmwwwza451na1643br7i0kxgd4002pwqh3xk5ywvdap7"))))
|
||||
(build-system gnu-build-system)
|
||||
(outputs '("out"
|
||||
"doc")) ;1.2 MiB of man3 pages
|
||||
(inputs `(("gnutls" ,gnutls)
|
||||
("gss" ,gss)
|
||||
("libidn" ,libidn)
|
||||
@@ -63,40 +66,50 @@
|
||||
`(#:configure-flags '("--with-gnutls" "--with-gssapi")
|
||||
;; Add a phase to patch '/bin/sh' occurances in tests/runtests.pl
|
||||
#:phases
|
||||
(alist-replace
|
||||
'check
|
||||
(lambda _
|
||||
(substitute* "tests/runtests.pl"
|
||||
(("/bin/sh") (which "sh")))
|
||||
;; Test #1135 requires extern-scan.pl, which is not part of the
|
||||
;; tarball due to a mistake. It has been fixed upstream. We can
|
||||
;; simply disable the test as it is specific to VMS and OS/400.
|
||||
(delete-file "tests/data/test1135")
|
||||
(modify-phases %standard-phases
|
||||
(add-after
|
||||
'install 'move-man3-pages
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
;; Move section 3 man pages to "doc".
|
||||
(let ((out (assoc-ref outputs "out"))
|
||||
(doc (assoc-ref outputs "doc")))
|
||||
(mkdir-p (string-append doc "/share/man"))
|
||||
(rename-file (string-append out "/share/man/man3")
|
||||
(string-append doc "/share/man/man3"))
|
||||
#t)))
|
||||
(replace
|
||||
'check
|
||||
(lambda _
|
||||
(substitute* "tests/runtests.pl"
|
||||
(("/bin/sh") (which "sh")))
|
||||
;; Test #1135 requires extern-scan.pl, which is not part of the
|
||||
;; tarball due to a mistake. It has been fixed upstream. We can
|
||||
;; simply disable the test as it is specific to VMS and OS/400.
|
||||
(delete-file "tests/data/test1135")
|
||||
|
||||
;; XXX FIXME: Test #1510 seems to work on some machines and not
|
||||
;; others, possibly based on the kernel version. It works on GuixSD
|
||||
;; on x86_64 with linux-libre-4.1, but fails on Hydra for both i686
|
||||
;; and x86_64 with the following error:
|
||||
;;
|
||||
;; test 1510...[HTTP GET connection cache limit (CURLOPT_MAXCONNECTS)]
|
||||
;;
|
||||
;; 1510: output (log/stderr1510) FAILED:
|
||||
;; --- log/check-expected 2015-06-27 07:45:53.166720834 +0000
|
||||
;; +++ log/check-generated 2015-06-27 07:45:53.166720834 +0000
|
||||
;; @@ -1,5 +1,5 @@
|
||||
;; * Connection #0 to host server1.example.com left intact[LF]
|
||||
;; * Connection #1 to host server2.example.com left intact[LF]
|
||||
;; * Connection #2 to host server3.example.com left intact[LF]
|
||||
;; -* Closing connection 0[LF]
|
||||
;; +* Closing connection 1[LF]
|
||||
;; * Connection #3 to host server4.example.com left intact[LF]
|
||||
(delete-file "tests/data/test1510")
|
||||
;; XXX FIXME: Test #1510 seems to work on some machines and not
|
||||
;; others, possibly based on the kernel version. It works on GuixSD
|
||||
;; on x86_64 with linux-libre-4.1, but fails on Hydra for both i686
|
||||
;; and x86_64 with the following error:
|
||||
;;
|
||||
;; test 1510...[HTTP GET connection cache limit (CURLOPT_MAXCONNECTS)]
|
||||
;;
|
||||
;; 1510: output (log/stderr1510) FAILED:
|
||||
;; --- log/check-expected 2015-06-27 07:45:53.166720834 +0000
|
||||
;; +++ log/check-generated 2015-06-27 07:45:53.166720834 +0000
|
||||
;; @@ -1,5 +1,5 @@
|
||||
;; * Connection #0 to host server1.example.com left intact[LF]
|
||||
;; * Connection #1 to host server2.example.com left intact[LF]
|
||||
;; * Connection #2 to host server3.example.com left intact[LF]
|
||||
;; -* Closing connection 0[LF]
|
||||
;; +* Closing connection 1[LF]
|
||||
;; * Connection #3 to host server4.example.com left intact[LF]
|
||||
(delete-file "tests/data/test1510")
|
||||
|
||||
;; The top-level "make check" does "make -C tests quiet-test", which
|
||||
;; is too quiet. Use the "test" target instead, which is more
|
||||
;; verbose.
|
||||
(zero? (system* "make" "-C" "tests" "test")))
|
||||
%standard-phases)))
|
||||
;; The top-level "make check" does "make -C tests quiet-test", which
|
||||
;; is too quiet. Use the "test" target instead, which is more
|
||||
;; verbose.
|
||||
(zero? (system* "make" "-C" "tests" "test")))))))
|
||||
(synopsis "Command line tool for transferring data with URL syntax")
|
||||
(description
|
||||
"curl is a command line tool for transferring data with URL syntax,
|
||||
|
||||
+71
-27
@@ -1,6 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2012, 2014 Andreas Enge <andreas@enge.fr>
|
||||
;;; Copyright © 2012, 2014, 2015 Andreas Enge <andreas@enge.fr>
|
||||
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
|
||||
;;; Copyright © 2014 David Thompson <davet@gnu.org>
|
||||
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
|
||||
@@ -43,7 +43,7 @@
|
||||
#:use-module (gnu packages jemalloc)
|
||||
#:use-module ((guix licenses)
|
||||
#:select (gpl2 gpl3+ lgpl2.1+ lgpl3+ x11-style non-copyleft
|
||||
bsd-2 public-domain))
|
||||
bsd-2 bsd-3 public-domain))
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu)
|
||||
@@ -68,26 +68,31 @@
|
||||
"doc")) ; 94 MiB of HTML docs
|
||||
(arguments
|
||||
'(#:tests? #f ; no check target available
|
||||
#:phases
|
||||
(alist-replace
|
||||
'configure
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out"))
|
||||
(doc (assoc-ref outputs "doc")))
|
||||
;; '--docdir' is not honored, so we need to patch.
|
||||
(substitute* "dist/Makefile.in"
|
||||
(("docdir[[:blank:]]*=.*")
|
||||
(string-append "docdir = " doc "/share/doc/bdb")))
|
||||
#:phases
|
||||
(alist-replace
|
||||
'configure
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out"))
|
||||
(doc (assoc-ref outputs "doc")))
|
||||
;; '--docdir' is not honored, so we need to patch.
|
||||
(substitute* "dist/Makefile.in"
|
||||
(("docdir[[:blank:]]*=.*")
|
||||
(string-append "docdir = " doc "/share/doc/bdb")))
|
||||
|
||||
(zero?
|
||||
(system* "./dist/configure"
|
||||
(string-append "--prefix=" out)
|
||||
(string-append "CONFIG_SHELL=" (which "bash"))
|
||||
(string-append "SHELL=" (which "bash"))
|
||||
(zero?
|
||||
(system* "./dist/configure"
|
||||
(string-append "--prefix=" out)
|
||||
(string-append "CONFIG_SHELL=" (which "bash"))
|
||||
(string-append "SHELL=" (which "bash"))
|
||||
|
||||
;; The compatibility mode is needed by some packages,
|
||||
;; notably iproute2.
|
||||
"--enable-compat185"))))
|
||||
;; The compatibility mode is needed by some packages,
|
||||
;; notably iproute2.
|
||||
"--enable-compat185"
|
||||
|
||||
;; The following flag is needed so that the inclusion
|
||||
;; of db_cxx.h into C++ files works; it leads to
|
||||
;; HAVE_CXX_STDHEADERS being defined in db_cxx.h.
|
||||
"--enable-cxx"))))
|
||||
%standard-phases)))
|
||||
(synopsis "Berkeley database")
|
||||
(description
|
||||
@@ -284,7 +289,8 @@ pictures, sounds, or video.")
|
||||
(arguments '(#:parallel-tests? #f))
|
||||
|
||||
(native-inputs `(("emacs" ,emacs-no-x)
|
||||
("bc" ,bc)))
|
||||
("bc" ,bc)
|
||||
("libuuid", util-linux)))
|
||||
|
||||
;; TODO: Add more optional inputs.
|
||||
;; FIXME: Our Bash doesn't have development headers (need for the 'readrec'
|
||||
@@ -306,7 +312,7 @@ types are supported, as is encryption.")
|
||||
(define-public sqlite
|
||||
(package
|
||||
(name "sqlite")
|
||||
(version "3.8.10.2")
|
||||
(version "3.8.11.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
;; TODO: Download from sqlite.org once this bug :
|
||||
@@ -321,12 +327,23 @@ types are supported, as is encryption.")
|
||||
(map (cut string-pad <> 2 #\0)
|
||||
other-digits))
|
||||
6 #\0))))))
|
||||
(string-append
|
||||
"mirror://sourceforge/sqlite.mirror/SQLite%20" version
|
||||
"/sqlite-autoconf-" numeric-version ".tar.gz")))
|
||||
(list
|
||||
(string-append
|
||||
"https://fossies.org/linux/misc/sqlite-autoconf-"
|
||||
numeric-version ".tar.gz")
|
||||
(string-append
|
||||
"http://distfiles.gentoo.org/distfiles/"
|
||||
"/sqlite-autoconf-" numeric-version ".tar.gz"))
|
||||
|
||||
;; XXX: As of 2015-09-08, SourceForge is squatting the URL
|
||||
;; below, returning 200 and showing an advertising page.
|
||||
;; (string-append
|
||||
;; "mirror://sourceforge/sqlite.mirror/SQLite%20" version
|
||||
;; "/sqlite-autoconf-" numeric-version ".tar.gz")
|
||||
))
|
||||
(sha256
|
||||
(base32
|
||||
"09nnaqx50gl1vmfvdipirizr61q3s0ywlql50f9kr1bx9rdfb0l3"))))
|
||||
"1dnkl4qr1dgaprbyf3jddfiynkhxnin86qabni47wjlc0fnb16gv"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("readline" ,readline)))
|
||||
(arguments
|
||||
@@ -725,5 +742,32 @@ Driver.")
|
||||
self-contained, serverless, zero-configuration, transactional NoSQL
|
||||
database engine. UnQLite is a document store database similar to
|
||||
MongoDB, Redis, CouchDB, etc. as well as a standard Key/Value store
|
||||
similar to BerkelyDB, LevelDB, etc.")
|
||||
similar to BerkeleyDB, LevelDB, etc.")
|
||||
(license bsd-2)))
|
||||
|
||||
(define-public redis
|
||||
(package
|
||||
(name "redis")
|
||||
(version "3.0.4")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://download.redis.io/releases/redis-"
|
||||
version".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1kqjc4qrasadgnl3cg71x3g5qpw2rilyk4pwl151698rb2nr0pm3"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f ; tests related to master/slave and replication fail
|
||||
#:phases (modify-phases %standard-phases
|
||||
(delete 'configure))
|
||||
#:make-flags `("CC=gcc"
|
||||
"MALLOC=libc"
|
||||
,(string-append "PREFIX="
|
||||
(assoc-ref %outputs "out")))))
|
||||
(synopsis "Key-value cache and store")
|
||||
(description "Redis is an advanced key-value cache and store. Redis
|
||||
supports many data structures including strings, hashes, lists, sets, sorted
|
||||
sets, bitmaps and hyperloglogs.")
|
||||
(home-page "http://redis.io/")
|
||||
(license bsd-3)))
|
||||
|
||||
+105
-6
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
|
||||
;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -27,7 +27,10 @@
|
||||
#:use-module (gnu packages indent)
|
||||
#:use-module (gnu packages llvm)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages pretty-print))
|
||||
#:use-module (gnu packages pretty-print)
|
||||
#:use-module (gnu packages qemu)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (srfi srfi-1))
|
||||
|
||||
(define-public delta
|
||||
(package
|
||||
@@ -81,7 +84,7 @@ program to exhibit a bug.")
|
||||
(define-public c-reduce
|
||||
(package
|
||||
(name "c-reduce")
|
||||
(version "2.2.1")
|
||||
(version "2.3.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -90,7 +93,7 @@ program to exhibit a bug.")
|
||||
"creduce-" version ".tar.gz")))
|
||||
(sha256
|
||||
(base32
|
||||
"0wh0fkyg2l41d2wkndrgdiai9g2qiav7jik7cys21vmgzq01pyy2"))
|
||||
"0r9lvnifjcnsrkrk8k4mha1kmmb93jya7alm523ck59y3173bpi0"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(substitute* "clang_delta/TransformationManager.cpp"
|
||||
@@ -99,8 +102,8 @@ program to exhibit a bug.")
|
||||
(inputs
|
||||
`(("astyle" ,astyle)
|
||||
("delta" ,delta)
|
||||
("llvm" ,llvm-3.5)
|
||||
("clang" ,clang-3.5)
|
||||
("llvm" ,llvm)
|
||||
("clang" ,clang)
|
||||
("flex" ,flex)
|
||||
("indent" ,indent)
|
||||
("perl" ,perl)
|
||||
@@ -137,3 +140,99 @@ produces a much smaller C/C++ program that has the same property. It is
|
||||
intended for use by people who discover and report bugs in compilers and other
|
||||
tools that process C/C++ code.")
|
||||
(license ncsa)))
|
||||
|
||||
(define-public american-fuzzy-lop
|
||||
(let ((machine (match (or (%current-target-system)
|
||||
(%current-system))
|
||||
("x86_64-linux" "x86_64")
|
||||
("i686-linux" "i386")
|
||||
;; Prevent errors when querying this package on unsupported
|
||||
;; platforms, e.g. when running "guix package --search="
|
||||
(_ "UNSUPPORTED"))))
|
||||
(package
|
||||
(name "american-fuzzy-lop")
|
||||
(version "1.86b") ;It seems all releases have the 'b' suffix
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://lcamtuf.coredump.cx/afl/releases/"
|
||||
"afl-" version ".tgz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1by9ncf6lgcyibzqwyla34jv64sd66mn8zhgjz2pcgsds51qwn0r"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("custom-qemu"
|
||||
;; The afl-qemu tool builds qemu 2.3.0 with a few patches applied.
|
||||
,(package (inherit qemu-headless)
|
||||
(name "afl-qemu")
|
||||
(inputs
|
||||
`(("afl-src" ,source)
|
||||
,@(package-inputs qemu-headless)))
|
||||
;; afl only supports using a single afl-qemu-trace executable, so
|
||||
;; we only build qemu for the native target.
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
(list (string-append "--target-list=" ,machine "-linux-user"))
|
||||
#:modules ((srfi srfi-1)
|
||||
,@%gnu-build-system-modules)
|
||||
,@(substitute-keyword-arguments (package-arguments qemu-headless)
|
||||
((#:phases qemu-phases)
|
||||
`(modify-phases ,qemu-phases
|
||||
(add-after
|
||||
'unpack 'apply-afl-patches
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let* ((afl-dir (string-append "afl-" ,version))
|
||||
(patch-dir
|
||||
(string-append afl-dir
|
||||
"/qemu_mode/patches")))
|
||||
(unless (zero?
|
||||
(system* "tar" "xf"
|
||||
(assoc-ref inputs "afl-src")))
|
||||
(error "tar failed to unpack afl-src"))
|
||||
(copy-file (string-append patch-dir
|
||||
"/afl-qemu-cpu-inl.h")
|
||||
"./afl-qemu-cpu-inl.h")
|
||||
(copy-file (string-append afl-dir "/config.h")
|
||||
"./afl-config.h")
|
||||
(copy-file (string-append afl-dir "/types.h")
|
||||
"./types.h")
|
||||
(substitute* "afl-qemu-cpu-inl.h"
|
||||
(("\\.\\./\\.\\./config.h") "afl-config.h"))
|
||||
(substitute* (string-append patch-dir
|
||||
"/cpu-exec.diff")
|
||||
(("\\.\\./patches/") ""))
|
||||
(every (lambda (patch-file)
|
||||
(zero? (system* "patch" "--force" "-p1"
|
||||
"--input" patch-file)))
|
||||
(find-files patch-dir
|
||||
"\\.diff$"))))))))))))))
|
||||
(arguments
|
||||
`(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
|
||||
"CC=gcc")
|
||||
#:phases (modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
(add-after
|
||||
;; TODO: Build and install the afl-llvm tool.
|
||||
'install 'install-qemu
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let ((qemu (assoc-ref inputs "custom-qemu"))
|
||||
(out (assoc-ref outputs "out")))
|
||||
(copy-file (string-append qemu "/bin/qemu-" ,machine)
|
||||
(string-append out "/bin/afl-qemu-trace"))
|
||||
#t)))
|
||||
(delete 'check))))
|
||||
(supported-systems (fold delete
|
||||
%supported-systems
|
||||
'("armhf-linux" "mips64el-linux")))
|
||||
(home-page "http://lcamtuf.coredump.cx/afl")
|
||||
(synopsis "Security-oriented fuzzer")
|
||||
(description
|
||||
"American fuzzy lop is a security-oriented fuzzer that employs a novel
|
||||
type of compile-time instrumentation and genetic algorithms to automatically
|
||||
discover clean, interesting test cases that trigger new internal states in the
|
||||
targeted binary. This substantially improves the functional coverage for the
|
||||
fuzzed code. The compact synthesized corpora produced by the tool are also
|
||||
useful for seeding other, more labor- or resource-intensive testing regimes
|
||||
down the road.")
|
||||
(license asl2.0))))
|
||||
|
||||
@@ -101,7 +101,7 @@ tables, and it understands a variety of different formats.")
|
||||
(define-public ddrescue
|
||||
(package
|
||||
(name "ddrescue")
|
||||
(version "1.19")
|
||||
(version "1.20")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -109,7 +109,7 @@ tables, and it understands a variety of different formats.")
|
||||
version ".tar.lz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1f278w7i9sx45jk6fsw1kyzx743k3alx1c4w1q8sk05ckafhr3gd"))))
|
||||
"1gb0ak2c47nass7qdf9pnfrshcb38c318z1fx5v5v1k7l6qr7yc3"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "http://www.gnu.org/software/ddrescue/ddrescue.html")
|
||||
(synopsis "Data recovery utility")
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
|
||||
;;;
|
||||
;;; 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 dvtm)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix licenses)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (gnu packages ncurses))
|
||||
|
||||
(define-public dvtm
|
||||
(package
|
||||
(name "dvtm")
|
||||
(version "0.14")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://www.brain-dump.org/projects/dvtm/dvtm-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "0ykl8dz7ivjgdzhmhlgidnp2ffh5gxq9lbg276w7iid4z10v76wa"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:make-flags (list "CC=gcc"
|
||||
(string-append "PREFIX=" (assoc-ref %outputs "out")))
|
||||
#:phases (modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
(delete 'check)))) ; no test suite
|
||||
(inputs `(("ncurses" ,ncurses)))
|
||||
(synopsis "Tiling window management for the console")
|
||||
(description "dvtm brings the concept of tiling window management,
|
||||
popularized by X11-window managers like dwm, to the console. As a console
|
||||
window manager it tries to make it easy to work with multiple console based
|
||||
programs.")
|
||||
(home-page "http://www.brain-dump.org/projects/dvtm/")
|
||||
|
||||
;; "dvtm reuses some code of dwm and is released under the same MIT/X11
|
||||
;; license. The terminal emulation part is licensed under the ISC license."
|
||||
;; source: http://www.brain-dump.org/projects/dvtm/#license
|
||||
(license (list expat isc))))
|
||||
@@ -60,7 +60,7 @@
|
||||
(define-public calibre
|
||||
(package
|
||||
(name "calibre")
|
||||
(version "2.29.0")
|
||||
(version "2.41.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -69,7 +69,7 @@
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1n3cfnjnghhhsgzcbcvbr0gh191lhl6az09q1s68jhlcc2lski6l"))
|
||||
"069fkcsx7kaazs7f095nkz4jw9jrm0k9zq16ayx41lxjbd1r97ik"))
|
||||
;; Remove non-free or doubtful code, see
|
||||
;; https://lists.gnu.org/archive/html/guix-devel/2015-02/msg00478.html
|
||||
(modules '((guix build utils)))
|
||||
|
||||
+337
-73
@@ -2,7 +2,7 @@
|
||||
;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>
|
||||
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
|
||||
;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
|
||||
;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
|
||||
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;;
|
||||
@@ -38,7 +38,6 @@
|
||||
#:use-module (gnu packages texinfo)
|
||||
#:use-module (gnu packages tls)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages guile)
|
||||
#:use-module (gnu packages xorg)
|
||||
#:use-module (gnu packages lesstif)
|
||||
#:use-module (gnu packages image)
|
||||
@@ -48,13 +47,13 @@
|
||||
#:use-module (gnu packages w3m)
|
||||
#:use-module (gnu packages wget)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages xml)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages acl)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages pdf)
|
||||
#:use-module (gnu packages linux) ;alsa
|
||||
#:use-module (gnu packages xiph)
|
||||
#:use-module (gnu packages mp3)
|
||||
#:use-module (guix utils)
|
||||
@@ -110,6 +109,12 @@
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)
|
||||
("texinfo" ,texinfo)))
|
||||
|
||||
(native-search-paths
|
||||
(list (search-path-specification
|
||||
(variable "INFOPATH")
|
||||
(files '("share/info")))))
|
||||
|
||||
(home-page "http://www.gnu.org/software/emacs/")
|
||||
(synopsis "The extensible, customizable, self-documenting text editor")
|
||||
(description
|
||||
@@ -187,14 +192,14 @@ editor (without an X toolkit)" )
|
||||
(define-public geiser
|
||||
(package
|
||||
(name "geiser")
|
||||
(version "0.7")
|
||||
(version "0.8.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://savannah/geiser/" version
|
||||
"/geiser-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0cp7r91ibw45yw9k3fz1s13y7ryfsxjgpk57qv37qsznb9lmqylx"))))
|
||||
"163zh8qf1q8l485d94a51a9xixirj8r2xvrbgxyw06vkaqrz5qvc"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:phases (alist-cons-after
|
||||
@@ -266,15 +271,16 @@ when typing parentheses directly or commenting out code line by line.")
|
||||
(define-public git-modes
|
||||
(package
|
||||
(name "git-modes")
|
||||
(version "1.0.0")
|
||||
(version "1.2.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://github.com/magit/git-modes/archive/"
|
||||
version ".tar.gz"))
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1biiss75bswx4alk85k3g9p0a3q3sc9i74h4mnrxc2rsk2iwhws0"))))
|
||||
"09dv7ikbj2bi4y3lmvjfzqpdmx2f9bd4w7jkp10bkap62d05iqhk"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:modules ((guix build gnu-build-system)
|
||||
@@ -290,7 +296,7 @@ when typing parentheses directly or commenting out code line by line.")
|
||||
(string-append "LISPDIR="
|
||||
(assoc-ref %outputs "out")
|
||||
"/share/emacs/site-lisp"))
|
||||
#:test-target "test"
|
||||
#:tests? #f ; no check target
|
||||
#:phases (modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
(add-after 'install 'emacs-autoloads
|
||||
@@ -310,7 +316,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.")
|
||||
(define-public magit
|
||||
(package
|
||||
(name "magit")
|
||||
(version "1.4.1")
|
||||
(version "2.2.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@@ -318,13 +324,12 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.")
|
||||
version "/" name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0bbvz6cma5vj6qxx9v2m60zqkjwgwjrdf9kp04iacybvrcm8vcg7"))))
|
||||
"1imkj4prprnivhbpdn1mdpiryxkckzy5hbnqaahv7gixwac1irh8"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs `(("texinfo" ,texinfo)
|
||||
("emacs" ,emacs-no-x)))
|
||||
(inputs `(("git" ,git)
|
||||
("git:gui" ,git "gui")))
|
||||
(propagated-inputs `(("git-modes" ,git-modes)))
|
||||
(inputs `(("git" ,git)))
|
||||
(propagated-inputs `(("dash" ,emacs-dash)))
|
||||
(arguments
|
||||
`(#:modules ((guix build gnu-build-system)
|
||||
(guix build utils)
|
||||
@@ -333,45 +338,27 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.")
|
||||
(guix build emacs-utils))
|
||||
|
||||
#:test-target "test"
|
||||
#:tests? #f ;'tests/magit-tests.el' is missing
|
||||
#:tests? #f ; tests are not included in the release
|
||||
|
||||
#:make-flags (list
|
||||
;; Don't put .el files in a sub-directory.
|
||||
(string-append "lispdir=" (assoc-ref %outputs "out")
|
||||
"/share/emacs/site-lisp"))
|
||||
#:make-flags
|
||||
(list (string-append "PREFIX=" %output)
|
||||
;; Don't put .el files in a sub-directory.
|
||||
(string-append "lispdir=" %output "/share/emacs/site-lisp")
|
||||
(string-append "DASH_DIR="
|
||||
(assoc-ref %build-inputs "dash")
|
||||
"/share/emacs/site-lisp/guix.d/dash-"
|
||||
,(package-version emacs-dash)))
|
||||
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace
|
||||
'configure
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(substitute* "Makefile"
|
||||
(("/usr/local") out)
|
||||
(("/etc") (string-append out "/etc"))))))
|
||||
(delete 'configure)
|
||||
(add-before
|
||||
'build 'patch-exec-paths
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((git (assoc-ref inputs "git"))
|
||||
(git:gui (assoc-ref inputs "git:gui")))
|
||||
(emacs-substitute-variables "magit.el"
|
||||
("magit-git-executable" (string-append git "/bin/git"))
|
||||
("magit-gitk-executable" (string-append git:gui
|
||||
"/bin/gitk"))))))
|
||||
(add-before
|
||||
'build 'augment-load-path
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
;; Allow git-commit-mode.el & co. to be found.
|
||||
(let ((git-modes (assoc-ref inputs "git-modes")))
|
||||
(setenv "EMACSLOADPATH"
|
||||
(string-append ":" git-modes "/share/emacs/site-lisp"))
|
||||
#t)))
|
||||
(add-after
|
||||
'install 'post-install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(emacs-generate-autoloads
|
||||
,name (string-append (assoc-ref outputs "out")
|
||||
"/share/emacs/site-lisp/")))))))
|
||||
(let ((git (assoc-ref inputs "git")))
|
||||
(emacs-substitute-variables "lisp/magit-git.el"
|
||||
("magit-git-executable" (string-append git "/bin/git")))
|
||||
#t))))))
|
||||
(home-page "http://magit.github.io/")
|
||||
(synopsis "Emacs interface for the Git version control system")
|
||||
(description
|
||||
@@ -385,18 +372,22 @@ operations.")
|
||||
(define-public magit-svn
|
||||
(package
|
||||
(name "magit-svn")
|
||||
(version "b69b79")
|
||||
(version "2.1.0")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(commit version)
|
||||
(url "https://github.com/magit/magit-svn.git")))
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://github.com/magit/magit-svn/archive/"
|
||||
version ".tar.gz"))
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"07xxszd12r38s46sz8fn2qz26b7s88i022cqp3gmkmmj3j57kqv6"))))
|
||||
"09sz93g7x7g9q75jsw8bdh7yr4jr1igfb4fpg5i302a7l2ahxfr8"))))
|
||||
(build-system trivial-build-system)
|
||||
(inputs `(("emacs" ,emacs-no-x)
|
||||
("magit" ,magit)))
|
||||
(native-inputs `(("emacs" ,emacs-no-x)
|
||||
("tar" ,tar)
|
||||
("gzip" ,gzip)))
|
||||
(propagated-inputs `(("dash" ,emacs-dash)
|
||||
("magit" ,magit)))
|
||||
(arguments
|
||||
`(#:modules ((guix build utils)
|
||||
(guix build emacs-utils))
|
||||
@@ -406,23 +397,30 @@ operations.")
|
||||
(use-modules (guix build utils)
|
||||
(guix build emacs-utils))
|
||||
|
||||
(let* ((emacs (string-append (assoc-ref %build-inputs "emacs")
|
||||
(let* ((tar (string-append (assoc-ref %build-inputs "tar")
|
||||
"/bin/tar"))
|
||||
(PATH (string-append (assoc-ref %build-inputs "gzip")
|
||||
"/bin"))
|
||||
(emacs (string-append (assoc-ref %build-inputs "emacs")
|
||||
"/bin/emacs"))
|
||||
(magit (string-append (assoc-ref %build-inputs "magit")
|
||||
"/share/emacs/site-lisp"))
|
||||
(commit (string-append (assoc-ref %build-inputs "git-modes")
|
||||
"/share/emacs/site-lisp"))
|
||||
(dash (string-append (assoc-ref %build-inputs "dash")
|
||||
"/share/emacs/site-lisp/guix.d/dash-"
|
||||
,(package-version emacs-dash)))
|
||||
(source (assoc-ref %build-inputs "source"))
|
||||
(lisp-dir (string-append %output "/share/emacs/site-lisp")))
|
||||
(mkdir-p lisp-dir)
|
||||
(copy-file (string-append source "/magit-svn.el")
|
||||
(string-append lisp-dir "/magit-svn.el"))
|
||||
(setenv "PATH" PATH)
|
||||
(system* tar "xvf" source)
|
||||
|
||||
(install-file (string-append ,name "-" ,version "/magit-svn.el")
|
||||
lisp-dir)
|
||||
|
||||
(with-directory-excursion lisp-dir
|
||||
(parameterize ((%emacs emacs))
|
||||
(emacs-generate-autoloads ,name lisp-dir)
|
||||
(setenv "EMACSLOADPATH"
|
||||
(string-append ":" magit ":" commit))
|
||||
(string-append ":" magit ":" dash))
|
||||
(emacs-batch-eval '(byte-compile-file "magit-svn.el"))))))))
|
||||
(home-page "https://github.com/magit/magit-svn")
|
||||
(synopsis "Git-SVN extension to Magit")
|
||||
@@ -470,18 +468,14 @@ support for Git-SVN.")
|
||||
out "/share/doc/haskell-mode-" ,version))
|
||||
(info (string-append out "/share/info")))
|
||||
(define (copy-to-dir dir files)
|
||||
(mkdir-p dir)
|
||||
(for-each
|
||||
(lambda (f)
|
||||
(copy-file f (string-append dir "/" (basename f))))
|
||||
files))
|
||||
(for-each (lambda (f)
|
||||
(install-file f dir))
|
||||
files))
|
||||
|
||||
(with-directory-excursion "doc"
|
||||
(unless (zero? (system* "makeinfo" "haskell-mode.texi"))
|
||||
(error "makeinfo failed"))
|
||||
(mkdir-p info)
|
||||
(copy-file "haskell-mode.info"
|
||||
(string-append info "/haskell-mode.info")))
|
||||
(install-file "haskell-mode.info" info))
|
||||
(copy-to-dir doc '("CONTRIBUTING.md" "NEWS" "README.md"))
|
||||
(copy-to-dir el-dir (find-files "." "\\.elc?"))
|
||||
;; these are now distributed with emacs
|
||||
@@ -495,6 +489,82 @@ support for Git-SVN.")
|
||||
programs.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public let-alist
|
||||
(package
|
||||
(name "emacs-let-alist")
|
||||
(version "1.0.4")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://elpa.gnu.org/packages/let-alist-"
|
||||
version ".el"))
|
||||
(sha256
|
||||
(base32
|
||||
"07312bvvyz86lf64vdkxg2l1wgfjl25ljdjwlf1bdzj01c4hm88x"))))
|
||||
(build-system trivial-build-system)
|
||||
(arguments
|
||||
`(#:modules ((guix build utils)
|
||||
(guix build emacs-utils))
|
||||
|
||||
#:builder (begin
|
||||
(use-modules (guix build emacs-utils)
|
||||
(guix build utils))
|
||||
|
||||
(let* ((out (assoc-ref %outputs "out"))
|
||||
(lispdir (string-append out
|
||||
"/share/emacs/site-lisp/"
|
||||
"guix.d/let-alist-"
|
||||
,version))
|
||||
(emacs (assoc-ref %build-inputs "emacs")))
|
||||
|
||||
(mkdir-p lispdir)
|
||||
(copy-file (assoc-ref %build-inputs "source")
|
||||
(string-append lispdir "/let-alist.el"))
|
||||
|
||||
(setenv "PATH" (string-append emacs "/bin"))
|
||||
(emacs-byte-compile-directory lispdir)
|
||||
#t))))
|
||||
(native-inputs `(("emacs" ,emacs-no-x)))
|
||||
(home-page "http://elpa.gnu.org/packages/let-alist.html")
|
||||
(synopsis "Easily let-bind values of an assoc-list by their names")
|
||||
(description
|
||||
"This package offers a single Emacs Lisp macro, @code{let-alist}. This
|
||||
macro takes a first argument, whose value must be an alist (association list),
|
||||
and a body.
|
||||
|
||||
The macro expands to a let form containing the body, where each dotted symbol
|
||||
inside body is let-bound to their cdrs in the alist. Only those present in
|
||||
the body are let-bound and this search is done at compile time.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public flycheck
|
||||
(package
|
||||
(name "emacs-flycheck")
|
||||
(version "0.23")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://github.com/flycheck/flycheck/releases/download/"
|
||||
version "/flycheck-" version ".tar"))
|
||||
(sha256
|
||||
(base32
|
||||
"1n2cifzsl5dbv42l82bi3y1vk6q33msi8dd4bj7b9nvnl9jfjj5b"))))
|
||||
(build-system emacs-build-system)
|
||||
(propagated-inputs
|
||||
`(("emacs-dash" ,emacs-dash)
|
||||
("emacs-let-alist" ,let-alist)))
|
||||
(home-page "https://www.flycheck.org")
|
||||
(synopsis "On-the-fly syntax checking")
|
||||
(description
|
||||
"This package provides on-the-fly syntax checking for GNU Emacs. It is a
|
||||
replacement for the older Flymake extension which is part of GNU Emacs, with
|
||||
many improvements and additional features.
|
||||
|
||||
Flycheck provides fully-automatic, fail-safe, on-the-fly background syntax
|
||||
checking for over 30 programming and markup languages with more than 70
|
||||
different tools. It highlights errors and warnings inline in the buffer, and
|
||||
provides an optional IDE-like error list.")
|
||||
(license license:gpl3+))) ;+GFDLv1.3+ for the manual
|
||||
|
||||
|
||||
;;;
|
||||
;;; Web browsing.
|
||||
@@ -884,11 +954,9 @@ single buffer.")
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((target (string-append (assoc-ref outputs "out")
|
||||
"/share/emacs/site-lisp/")))
|
||||
(mkdir-p target)
|
||||
(for-each
|
||||
(lambda (file)
|
||||
(copy-file file (string-append target (basename file))))
|
||||
(find-files "../lisp" "^(pdf|tab).*\\.elc?"))
|
||||
(for-each (lambda (file)
|
||||
(install-file file target))
|
||||
(find-files "../lisp" "^(pdf|tab).*\\.elc?"))
|
||||
(emacs-byte-compile-directory target)
|
||||
(emacs-generate-autoloads "pdf-tools" target)))))))
|
||||
(native-inputs `(("autoconf" ,autoconf)
|
||||
@@ -908,3 +976,199 @@ e.g. ghostscript and stored in the file-system, but rather created on-demand
|
||||
and stored in memory.")
|
||||
(home-page "https://github.com/politza/pdf-tools")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public emacs-dash
|
||||
(package
|
||||
(name "emacs-dash")
|
||||
(version "2.11.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://github.com/magnars/dash.el/archive/"
|
||||
version ".tar.gz"))
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1piwcwilkxcbjxx832mhb7q3pz1fgwp203r581bpqcw6kd5x726q"))))
|
||||
(build-system emacs-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'install 'check
|
||||
(lambda _
|
||||
(zero? (system* "./run-tests.sh")))))))
|
||||
(home-page "https://github.com/magnars/dash.el")
|
||||
(synopsis "Modern list library for Emacs")
|
||||
(description "This package provides a modern list API library for Emacs.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public emacs-s
|
||||
(package
|
||||
(name "emacs-s")
|
||||
(version "1.9.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://github.com/magnars/s.el/archive/"
|
||||
version ".tar.gz"))
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1gah2k577gvnmxlpw7zrz0jr571vghzhdv2hbgchlgah07czd091"))))
|
||||
(build-system emacs-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'install 'check
|
||||
(lambda _
|
||||
(zero? (system* "./run-tests.sh")))))))
|
||||
(home-page "https://github.com/magnars/s.el")
|
||||
(synopsis "Emacs string manipulation library.")
|
||||
(description "This package provides an Emacs library for manipulating
|
||||
strings.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public emacs-f
|
||||
(package
|
||||
(name "emacs-f")
|
||||
(version "0.17.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://github.com/rejeep/f.el/archive/v"
|
||||
version ".tar.gz"))
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1n5gcldf43wmkr7jxgs519v21zavwr0yn8048iv6gvgfwicnyjlx"))))
|
||||
(build-system emacs-build-system)
|
||||
(propagated-inputs
|
||||
`(("emacs-s" ,emacs-s)
|
||||
("emacs-dash" ,emacs-dash)))
|
||||
(home-page "http://github.com/rejeep/f.el")
|
||||
(synopsis "Emacs API for working with files and directories")
|
||||
(description "This package provides an Emacs library for working with
|
||||
files and directories.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public emacs-ob-ipython
|
||||
(package
|
||||
(name "emacs-ob-ipython")
|
||||
(version "20150704.8807064693")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(commit "8807064693")
|
||||
(url "https://github.com/gregsexton/ob-ipython.git")))
|
||||
(sha256
|
||||
(base32
|
||||
"1scf25snbds9ymagpny30ijbsg479r3nm0ih01dy4m9d0g7qryb7"))))
|
||||
(build-system emacs-build-system)
|
||||
(propagated-inputs
|
||||
`(("emacs-f" ,emacs-f)))
|
||||
(home-page "http://www.gregsexton.org")
|
||||
(synopsis "Org-Babel functions for IPython evaluation")
|
||||
(description "This package adds support to Org-Babel for evaluating Python
|
||||
source code using IPython.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public emacs-debbugs
|
||||
(package
|
||||
(name "emacs-debbugs")
|
||||
(version "0.7")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://elpa.gnu.org/packages/debbugs-"
|
||||
version ".tar"))
|
||||
(sha256
|
||||
(base32
|
||||
"0pbglx3paa8icazgxlg4jf40wl8war63y9j2jmbb7gbd1xp95v72"))))
|
||||
(build-system emacs-build-system)
|
||||
(home-page "http://elpa.gnu.org/packages/debbugs.html")
|
||||
(synopsis "Access the Debbugs bug tracker in Emacs")
|
||||
(description
|
||||
"This package lets you access the @uref{http://bugs.gnu.org,GNU Bug
|
||||
Tracker} from within Emacs.
|
||||
|
||||
For instance, it defines the command @code{M-x debbugs-gnu} for listing bugs,
|
||||
and the command @code{M-x debbugs-gnu-search} for bug searching. If you
|
||||
prefer the listing of bugs as TODO items of @code{org-mode}, you could use
|
||||
@code{M-x debbugs-org} and related commands.
|
||||
|
||||
A minor mode @code{debbugs-browse-mode} let you browse URLs to the GNU Bug
|
||||
Tracker as well as bug identifiers prepared for @code{bug-reference-mode}.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public emacs-deferred
|
||||
(package
|
||||
(name "emacs-deferred")
|
||||
(version "0.3.2")
|
||||
(home-page "https://github.com/kiwanami/emacs-deferred")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url home-page)
|
||||
(commit (string-append "v" version))))
|
||||
(sha256
|
||||
(base32
|
||||
"0059jy01ni5irpgrj9fa81ayd9j25nvmjjm79ms3210ysx4pgqdr"))
|
||||
(file-name (string-append name "-" version))))
|
||||
(build-system emacs-build-system)
|
||||
;; FIXME: Would need 'el-expectations' to actually run tests.
|
||||
(synopsis "Simple asynchronous functions for Emacs Lisp")
|
||||
(description
|
||||
"The @code{deferred.el} library provides support for asynchronous tasks.
|
||||
The API is almost the same as that of
|
||||
@uref{https://github.com/cho45/jsdeferred, JSDeferred}, a JavaScript library
|
||||
for asynchronous tasks.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public butler
|
||||
(package
|
||||
(name "emacs-butler")
|
||||
(version "0.2.4")
|
||||
(home-page "https://github.com/AshtonKem/Butler")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url home-page)
|
||||
(commit version)))
|
||||
(sha256
|
||||
(base32
|
||||
"1pii9dw4skq7nr4na6qxqasl36av8cwjp71bf1fgppqpcd9z8skj"))
|
||||
(file-name (string-append name "-" version))))
|
||||
(build-system emacs-build-system)
|
||||
(propagated-inputs
|
||||
`(("emacs-deferred" ,emacs-deferred)))
|
||||
(synopsis "Emacs client for Jenkins")
|
||||
(description
|
||||
"Butler provides an interface to connect to Jenkins continuous
|
||||
integration servers. Users can specify a list of server in the
|
||||
@code{butler-server-list} variable and then use @code{M-x butler-status} to
|
||||
view the build status of those servers' build jobs, and possibly to trigger
|
||||
build jobs.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public typo
|
||||
(package
|
||||
(name "emacs-typo")
|
||||
(version "1.1")
|
||||
(home-page "https://github.com/jorgenschaefer/typoel")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url home-page)
|
||||
(commit (string-append "v" version))))
|
||||
(sha256
|
||||
(base32
|
||||
"1jhd4grch5iz12gyxwfbsgh4dmz5hj4bg4gnvphccg8dsnni05k2"))
|
||||
(file-name (string-append name "-" version))))
|
||||
(build-system emacs-build-system)
|
||||
(synopsis "Minor mode for typographic editing")
|
||||
(description
|
||||
"This package provides two Emacs modes, @code{typo-mode} and
|
||||
@code{typo-global-mode}. These modes automatically insert Unicode characters
|
||||
for quotation marks, dashes, and ellipses. For example, typing @kbd{\"}
|
||||
automatically inserts a Unicode opening or closing quotation mark, depending
|
||||
on context.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -19,17 +20,24 @@
|
||||
(define-module (gnu packages engineering)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix monads)
|
||||
#:use-module (guix store)
|
||||
#:use-module (guix utils)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages bison)
|
||||
#:use-module (gnu packages boost)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages flex)
|
||||
#:use-module (gnu packages fontutils)
|
||||
#:use-module (gnu packages gd)
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages ghostscript)
|
||||
#:use-module (gnu packages gl)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages gnome)
|
||||
@@ -41,6 +49,7 @@
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages qt)
|
||||
#:use-module (gnu packages tcl)
|
||||
#:use-module (gnu packages texlive)
|
||||
#:use-module (srfi srfi-1))
|
||||
|
||||
(define-public librecad
|
||||
@@ -196,3 +205,219 @@ layouts. It features a rats-nest implementation, schematic/netlist import,
|
||||
and design rule checking. It also includes an autorouter and a trace
|
||||
optimizer; and it can produce photorealistic and design review images.")
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define* (broken-tarball-fetch url hash-algo hash
|
||||
#:optional name
|
||||
#:key (system (%current-system))
|
||||
(guile (default-guile)))
|
||||
(mlet %store-monad ((drv (url-fetch url hash-algo hash
|
||||
(string-append "tarbomb-" name)
|
||||
#:system system
|
||||
#:guile guile)))
|
||||
;; Take the tar bomb, and simply unpack it as a directory.
|
||||
(gexp->derivation name
|
||||
#~(begin
|
||||
(mkdir #$output)
|
||||
(setenv "PATH"
|
||||
(string-append #$gzip "/bin"))
|
||||
(chdir #$output)
|
||||
(zero? (system* (string-append #$tar "/bin/tar")
|
||||
"xf" #$drv))))))
|
||||
|
||||
|
||||
(define-public fastcap
|
||||
(package
|
||||
(name "fastcap")
|
||||
(version "2.0-18Sep92")
|
||||
(source (origin
|
||||
(method broken-tarball-fetch)
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(uri (string-append "http://www.rle.mit.edu/cpg/codes/"
|
||||
name "-" version ".tgz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0x37vfp6k0d2z3gnig0hbicvi0jp8v267xjnn3z8jdllpiaa6p3k"))
|
||||
(snippet
|
||||
;; Remove a non-free file.
|
||||
'(delete-file "doc/psfig.sty"))
|
||||
(modules '((guix build utils)
|
||||
(guix build download)
|
||||
(guix ftp-client)))
|
||||
(patches (list (search-patch "fastcap-mulSetup.patch")
|
||||
(search-patch "fastcap-mulGlobal.patch")))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("texlive" ,texlive)
|
||||
("ghostscript" ,ghostscript)))
|
||||
(arguments
|
||||
`(#:make-flags '("CC=gcc" "RM=rm" "SHELL=sh" "all")
|
||||
#:parallel-build? #f
|
||||
#:tests? #f ;; no tests-suite
|
||||
#:modules ((srfi srfi-1)
|
||||
,@%gnu-build-system-modules)
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'build 'make-doc
|
||||
(lambda _
|
||||
(zero? (system* "make" "CC=gcc" "RM=rm" "SHELL=sh"
|
||||
"manual"))))
|
||||
(add-before 'make-doc 'fix-doc
|
||||
(lambda _
|
||||
(substitute* "doc/Makefile" (("/bin/rm") (which "rm")))
|
||||
(substitute* (find-files "doc" "\\.tex")
|
||||
(("\\\\special\\{psfile=([^,]*),.*scale=([#0-9.]*).*\\}"
|
||||
all file scale)
|
||||
(string-append "\\includegraphics[scale=" scale "]{"
|
||||
file "}"))
|
||||
(("\\\\psfig\\{figure=([^,]*),.*width=([#0-9.]*in).*\\}"
|
||||
all file width)
|
||||
(string-append "\\includegraphics[width=" width "]{"
|
||||
file "}"))
|
||||
(("\\\\psfig\\{figure=([^,]*),.*height=([#0-9.]*in).*\\}"
|
||||
all file height)
|
||||
(string-append "\\includegraphics[height=" height "]{"
|
||||
file "}"))
|
||||
(("\\\\psfig\\{figure=([^,]*)\\}" all file)
|
||||
(string-append "\\includegraphics{" file "}")))
|
||||
(substitute* '("doc/mtt.tex" "doc/tcad.tex" "doc/ug.tex")
|
||||
(("^\\\\documentstyle\\[(.*)\\]\\{(.*)\\}"
|
||||
all options class)
|
||||
(string-append "\\documentclass[" options "]{"
|
||||
class "}\n"
|
||||
"\\usepackage{graphicx}\n"
|
||||
"\\usepackage{robinspace}"))
|
||||
(("\\\\setlength\\{\\\\footheight\\}\\{.*\\}" all)
|
||||
(string-append "%" all))
|
||||
(("\\\\setstretch\\{.*\\}" all)
|
||||
(string-append "%" all)))
|
||||
#t))
|
||||
(delete 'configure)
|
||||
(add-before 'install 'clean-bin
|
||||
(lambda _
|
||||
(delete-file (string-append (getcwd) "/bin/README"))
|
||||
#t))
|
||||
(add-before 'install 'make-pdf
|
||||
(lambda _
|
||||
(with-directory-excursion "doc"
|
||||
(and
|
||||
(every (lambda (file)
|
||||
(zero? (system* "dvips" file "-o")))
|
||||
(find-files "." "\\.dvi"))
|
||||
(every (lambda (file)
|
||||
(zero? (system* "ps2pdf" file)))
|
||||
'("mtt.ps" "ug.ps" "tcad.ps"))
|
||||
(zero? (system* "make" "clean"))))))
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(data (string-append out "/share"))
|
||||
(bin (string-append out "/bin"))
|
||||
(doc (string-append data "/doc/" ,name "-" ,version))
|
||||
(examples (string-append doc "/examples")))
|
||||
(with-directory-excursion "bin"
|
||||
(for-each (lambda (f)
|
||||
(install-file f bin))
|
||||
(find-files "." ".*")))
|
||||
(copy-recursively "doc" doc)
|
||||
(copy-recursively "examples" examples)
|
||||
#t))))))
|
||||
(home-page "http://www.rle.mit.edu/cpg/research_codes.htm")
|
||||
(synopsis "Multipole-accelerated capacitance extraction program")
|
||||
(description
|
||||
"Fastcap is a capacitance extraction program based on a
|
||||
multipole-accelerated algorithm.")
|
||||
(license (license:non-copyleft #f "See fastcap.c."))))
|
||||
|
||||
(define-public fasthenry
|
||||
(package
|
||||
(name "fasthenry")
|
||||
(version "3.0-12Nov96")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(uri (string-append
|
||||
"http://www.rle.mit.edu/cpg/codes/" name
|
||||
"-" version ".tar.z"))
|
||||
(sha256
|
||||
(base32 "1a06xyyd40zhknrkz17xppl2zd5ig4w9g1grc8qrs0zqqcl5hpzi"))
|
||||
(patches (list (search-patch "fasthenry-spAllocate.patch")
|
||||
(search-patch "fasthenry-spBuild.patch")
|
||||
(search-patch "fasthenry-spUtils.patch")
|
||||
(search-patch "fasthenry-spSolve.patch")
|
||||
(search-patch "fasthenry-spFactor.patch")))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:make-flags '("CC=gcc" "RM=rm" "SHELL=sh" "all")
|
||||
#:parallel-build? #f
|
||||
#:tests? #f ;; no tests-suite
|
||||
#:modules ((srfi srfi-1)
|
||||
,@%gnu-build-system-modules)
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(data (string-append out "/share"))
|
||||
(bin (string-append out "/bin"))
|
||||
(doc (string-append data "/doc/" ,name "-" ,version))
|
||||
(examples (string-append doc "/examples")))
|
||||
(with-directory-excursion "bin"
|
||||
(for-each (lambda (f)
|
||||
(install-file f bin))
|
||||
(find-files "." ".*")))
|
||||
(copy-recursively "doc" doc)
|
||||
(copy-recursively "examples" examples)
|
||||
#t))))))
|
||||
(home-page "http://www.rle.mit.edu/cpg/research_codes.htm")
|
||||
(synopsis "Multipole-accelerated inductance analysis program")
|
||||
(description
|
||||
"Fasthenry is an inductance extraction program based on a
|
||||
multipole-accelerated algorithm.")
|
||||
(license (license:non-copyleft #f "See induct.c."))))
|
||||
|
||||
(define-public gerbv
|
||||
(package
|
||||
(name "gerbv")
|
||||
(version "2.6.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/gerbv/gerbv/gerbv-"
|
||||
version "/gerbv-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0v6ry0mxi5qym4z0y0lpblxsw9dfjpgxs4c4v2ngg7yw4b3a59ks"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'configure 'autoconf
|
||||
(lambda _
|
||||
;; Build rules contain references to Russian translation, but the
|
||||
;; needed files are missing; see
|
||||
;; http://sourceforge.net/p/gerbv/bugs/174/
|
||||
(delete-file "po/LINGUAS")
|
||||
(substitute* "man/Makefile.am"
|
||||
(("PO_FILES= gerbv.ru.1.in.po") "")
|
||||
(("man_MANS = gerbv.1 gerbv.ru.1") "man_MANS = gerbv.1"))
|
||||
(zero? (system* "autoreconf" "-vfi")))))))
|
||||
(native-inputs
|
||||
`(("autoconf" ,autoconf)
|
||||
("automake" ,automake)
|
||||
("libtool" ,libtool)
|
||||
("gettext" ,gnu-gettext)
|
||||
("po4a" ,po4a)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
`(("cairo" ,cairo)
|
||||
("gtk" ,gtk+-2)
|
||||
("desktop-file-utils" ,desktop-file-utils)))
|
||||
(home-page "http://gerbv.geda-project.org/")
|
||||
(synopsis "Gerber file viewer")
|
||||
(description
|
||||
"Gerbv is a viewer for files in the Gerber format (RS-274X only), which
|
||||
is commonly used to represent printed circuit board (PCB) layouts. Gerbv lets
|
||||
you load several files on top of each other, do measurements on the displayed
|
||||
image, etc. Besides viewing Gerbers, you may also view Excellon drill files
|
||||
as well as pick-place files.")
|
||||
(license license:gpl2+)))
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2015 Tomáš Čech <sleep_walker@suse.cz>
|
||||
;;; Copyright © 2015 Daniel Pimentel <d4n1@member.fsf.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -50,14 +51,15 @@
|
||||
(define-public efl
|
||||
(package
|
||||
(name "efl")
|
||||
(version "1.14.2")
|
||||
(version "1.15.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://download.enlightenment.org/rel/libs/efl/efl-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32 "0kg51v63ljq1z4dj65aiyxaqhq54gkl4hx53ifwbci6ihammandr"))))
|
||||
(base32
|
||||
"1962wqx7gdnpzvnkbighyn4hj5vw8l4c1d7xl5zilqjlyhcqywyx"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
@@ -126,20 +128,21 @@
|
||||
for Enlightenment. Libraries covers data serialization, wide support for
|
||||
graphics rendering, UI layout and themes, interaction with OS, access to
|
||||
removable devices or support for multimedia.")
|
||||
(license (list license:bsd-2 license:lgpl2.1 license:zlib)))) ; different parts under different licenses
|
||||
;; Different parts are under different licenses.
|
||||
(license (list license:bsd-2 license:lgpl2.1 license:zlib))))
|
||||
|
||||
(define-public elementary
|
||||
(package
|
||||
(name "elementary")
|
||||
(version "1.14.2")
|
||||
(version "1.15.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
(string-append
|
||||
"https://download.enlightenment.org/rel/libs/elementary/elementary-"
|
||||
version ".tar.xz"))
|
||||
(string-append "https://download.enlightenment.org/rel/libs/"
|
||||
"elementary/elementary-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32 "1ck1jm9dfx2l72nklndqjfsxjqb0024b88naskld1dk9b8drs76b"))))
|
||||
(base32
|
||||
"0gqg98bglnl2jggdzxzrh9r7bv32i4sahspms0bihq8b45rk0g2j"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
@@ -156,7 +159,7 @@ full capabilities of EFL.")
|
||||
(define-public evas-generic-loaders
|
||||
(package
|
||||
(name "evas-generic-loaders")
|
||||
(version "1.14.0")
|
||||
(version "1.15.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
@@ -165,7 +168,8 @@ full capabilities of EFL.")
|
||||
"evas_generic_loaders/evas_generic_loaders-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32 "18b6xmbf81bly4mlwlzwr17g2m8dzznbhsdjk6pbb3nw4wn3y88l"))))
|
||||
(base32
|
||||
"0zzx06j20x580xqnnsxp7gb7rv279zcgvdxfbhs905af9m6rwlqy"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
@@ -187,15 +191,16 @@ files in Evas (EFL canvas library).")
|
||||
(define-public emotion-generic-players
|
||||
(package
|
||||
(name "emotion-generic-players")
|
||||
(version "1.14.0")
|
||||
(version "1.15.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
(string-append
|
||||
"https://download.enlightenment.org/rel/libs/emotion_generic_players/emotion_generic_players-"
|
||||
version ".tar.xz"))
|
||||
(string-append "https://download.enlightenment.org/rel/libs/"
|
||||
"emotion_generic_players/emotion_generic_players"
|
||||
"-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32 "0685jzag98ykknycfdqn70zif3fmcfi6m8k9yp6d79r1h8gc49n4"))))
|
||||
(base32
|
||||
"0pszwmcygxnv1sfx0m79md2jmi4sng8mdb1xcr6h2z5c8685wvcz"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
@@ -213,15 +218,15 @@ The only supported now is VLC.")
|
||||
(define-public terminology
|
||||
(package
|
||||
(name "terminology")
|
||||
(version "0.8.0")
|
||||
(version "0.9.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
(string-append
|
||||
"https://download.enlightenment.org/rel/apps/terminology/terminology-"
|
||||
version ".tar.gz"))
|
||||
(string-append "https://download.enlightenment.org/rel/apps/"
|
||||
"terminology/terminology-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32 "0a767ixackzmhb2awrhjy7q6vsivsd54wc434i617xiw095x843s"))))
|
||||
(base32
|
||||
"1kwv9vkhngdm5v38q93xpcykghnyawhjjcb5bgy0p89gpbk7mvpc"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
@@ -237,18 +242,43 @@ URL and local path detection, themes, popup based content viewer for non-text
|
||||
contents and more.")
|
||||
(license license:bsd-2)))
|
||||
|
||||
(define-public enlightenment
|
||||
(define-public rage
|
||||
(package
|
||||
(name "enlightenment")
|
||||
(version "0.19.5")
|
||||
(name "rage")
|
||||
(version "0.1.4")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
(string-append
|
||||
"https://download.enlightenment.org/rel/apps/enlightenment/enlightenment-"
|
||||
version ".tar.xz"))
|
||||
"https://download.enlightenment.org/rel/apps/rage/rage-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "0j66x7x76fbgqfw6fi77v8qy50slw3jnsq3vvs82rrfvniabm8wc"))))
|
||||
(base32 "10j3n8crk16jzqz2hn5djx6vms5f6x83qyiaphhqx94h9dgv2mgg"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
`(("efl" ,efl)
|
||||
("elementary" ,elementary)))
|
||||
(home-page "https://www.enlightenment.org/about-rage")
|
||||
(synopsis "Video and audio player based on EFL")
|
||||
(description
|
||||
"Rage is a video and audio player written with Enlightenment Foundation
|
||||
Libraries with some extra bells and whistles.")
|
||||
(license license:bsd-2)))
|
||||
|
||||
(define-public enlightenment
|
||||
(package
|
||||
(name "enlightenment")
|
||||
(version "0.19.12")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
(string-append "https://download.enlightenment.org/rel/apps/"
|
||||
name "/" name "-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"098bdx9qmv1yqqwfydrzs7fvbnhsf3vaib9pmqsyg4ihgqrkrwjm"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
(define-public feh
|
||||
(package
|
||||
(name "feh")
|
||||
(version "2.13")
|
||||
(version "2.14")
|
||||
(home-page "https://feh.finalrewind.org/")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
@@ -37,7 +37,7 @@
|
||||
name "-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"06fa9zh1zpi63l90kw3l9a0sfavf424j7ksi396ifg9669gx35gn"))))
|
||||
"0j5wxpqccnd0hl74z2vwv25n7qnik1n2mcm2jn0c0z7cjn4wsa9q"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:phases (alist-delete 'configure %standard-phases)
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2015 Steve Sprang <scs@stevesprang.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages figlet)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu))
|
||||
|
||||
(define-public figlet
|
||||
(package
|
||||
(name "figlet")
|
||||
(version "2.2.5")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "ftp://ftp.figlet.org/pub/figlet/program"
|
||||
"/unix/figlet-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "0za1ax15x7myjl8jz271ybly8ln9kb9zhm1gf6rdlxzhs07w925z"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases (delete 'configure))
|
||||
#:make-flags
|
||||
(list (string-append "prefix=" %output))))
|
||||
(home-page "http://www.figlet.org/")
|
||||
(synopsis "Make large letterforms out of ordinary screen characters")
|
||||
(description "FIGlet is a program for making large ASCII art letterforms
|
||||
out of ordinary screen characters.")
|
||||
(license license:bsd-3)))
|
||||
@@ -0,0 +1,82 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2015 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 finance)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build utils)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (gnu packages boost)
|
||||
#:use-module (gnu packages databases)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages protobuf)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages qt)
|
||||
#:use-module (gnu packages tls)
|
||||
#:use-module (gnu packages upnp))
|
||||
|
||||
(define-public bitcoin-core
|
||||
(package
|
||||
(name "bitcoin-core")
|
||||
(version "0.11.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
(string-append "https://bitcoin.org/bin/bitcoin-core-"
|
||||
version "/bitcoin-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"17yh6lq13xzzi5v2i48qaxiqm40x3hrj4gwyamkib9yzmmb1gfji"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)
|
||||
("python" ,python-wrapper) ; for the tests
|
||||
("util-linux" ,util-linux))) ; provides the hexdump command for tests
|
||||
(inputs
|
||||
`(("bdb" ,bdb)
|
||||
("boost" ,boost)
|
||||
("miniupnpc" ,miniupnpc)
|
||||
("openssl" ,openssl)
|
||||
("protobuf" ,protobuf)
|
||||
("qt" ,qt)))
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
(list
|
||||
;; We use a bdb version newer than 4.8.
|
||||
"--with-incompatible-bdb"
|
||||
;; Boost is not found unless specified manually.
|
||||
(string-append "--with-boost="
|
||||
(assoc-ref %build-inputs "boost")))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'check 'set-home
|
||||
(lambda _
|
||||
(setenv "HOME" (getenv "TMPDIR"))))))) ; Tests write to $HOME.
|
||||
(home-page "https://bitcoin.org/en/")
|
||||
(synopsis "Bitcoin peer-to-peer client")
|
||||
(description
|
||||
"Bitcoin is a digital currency that enables instant payments to anyone
|
||||
anywhere in the world. It uses peer-to-peer technology to operate without
|
||||
central authority: managing transactions and issuing money are carried out
|
||||
collectively by the network. Bitcoin Core is the reference implementation
|
||||
of the bitcoin protocol. This package provides the Bitcoin Core command
|
||||
line client and a client based on Qt.")
|
||||
(license license:expat)))
|
||||
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -29,7 +29,7 @@
|
||||
(define-public ath9k-htc-firmware
|
||||
(package
|
||||
(name "ath9k-htc-firmware")
|
||||
(version "1.3.2")
|
||||
(version "1.4.0")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -37,7 +37,7 @@
|
||||
(commit version)))
|
||||
(sha256
|
||||
(base32
|
||||
"0dgqfp4cbky79vzjrdy3j462l8figymzrk2v0jalmmz3lkxw88ww"))
|
||||
"16jbj8avg5jkgvq5lxm0hdxxn4c3zn7fx8b4nxllvr024apk9w23"))
|
||||
(patches (list (search-patch "ath9k-htc-firmware-objcopy.patch")))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
|
||||
@@ -28,14 +28,14 @@
|
||||
(define-public fish
|
||||
(package
|
||||
(name "fish")
|
||||
(version "2.1.2")
|
||||
(version "2.2.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://fishshell.com/files/"
|
||||
version "/fish-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1pgnz5lapm4qk48a13k9698jaswybzlbz2nyc621d852ldf0vhn6"))
|
||||
"0ympqz7llmf0hafxwglykplw6j5cz82yhlrw50lw4bnf2kykjqx7"))
|
||||
(modules '((guix build utils)))
|
||||
;; Don't try to install /etc/fish/config.fish.
|
||||
(snippet
|
||||
|
||||
+53
-2
@@ -1,6 +1,7 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2014 John Darrington <jmd@gnu.org>
|
||||
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
|
||||
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -18,15 +19,20 @@
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages fltk)
|
||||
#:use-module ((guix licenses) #:select (lgpl2.0))
|
||||
#:use-module ((guix licenses) #:select (lgpl2.0 lgpl2.0+))
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages image)
|
||||
#:use-module (gnu packages xorg)
|
||||
#:use-module (gnu packages gl)
|
||||
#:use-module (gnu packages gtk) ;for "cairo"
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu))
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system waf))
|
||||
|
||||
(define-public fltk
|
||||
(package
|
||||
@@ -83,3 +89,48 @@ emulation. FLTK is designed to be small and modular enough to be statically
|
||||
linked, but works fine as a shared library. FLTK also includes an excellent
|
||||
UI builder called FLUID that can be used to create applications in minutes.")
|
||||
(license lgpl2.0))) ; plus certain additional permissions
|
||||
|
||||
(define-public ntk
|
||||
(package
|
||||
(name "ntk")
|
||||
(version "1.3.0")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "git://git.tuxfamily.org/gitroot/non/fltk.git")
|
||||
(commit (string-append "v" version))))
|
||||
(sha256
|
||||
(base32
|
||||
"0ggrh6rihf676z1vfgpgcl6kpqwyh39ih0hskcgzklh7fphfik39"))
|
||||
(file-name (string-append name "-" version "-checkout"))))
|
||||
(build-system waf-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ;no "check" target
|
||||
#:python ,python-2
|
||||
#:configure-flags '("--enable-gl")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before
|
||||
'configure 'set-ldflags
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(setenv "LDFLAGS"
|
||||
(string-append "-Wl,-rpath="
|
||||
(assoc-ref outputs "out") "/lib")))))))
|
||||
(inputs
|
||||
`(("libjpeg" ,libjpeg)
|
||||
("glu" ,glu)))
|
||||
;; ntk.pc lists "x11" and "xft" in Requires.private, and "cairo" in
|
||||
;; Requires.
|
||||
(propagated-inputs
|
||||
`(("cairo" ,cairo)
|
||||
("libxft" ,libxft)
|
||||
("libx11" ,libx11)))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(home-page "http://non.tuxfamily.org/ntk/")
|
||||
(synopsis "Fork of FLTK with graphics rendering via Cairo")
|
||||
(description "The Non Tool Kit (NTK) is a fork of the Fast Light ToolKit
|
||||
library, adding improved graphics rendering via Cairo, a streamlined and
|
||||
enhanced widget set, and other features designed to improve the appearance and
|
||||
performance of the Non applications.")
|
||||
(license lgpl2.0+))) ; plus certain additional permissions
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
;;; Copyright © 2014 Joshua Grant <tadni@riseup.net>
|
||||
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
|
||||
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
|
||||
;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
|
||||
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -28,10 +30,90 @@
|
||||
#:use-module (guix build-system trivial)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages zip)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages xorg)
|
||||
#:use-module (gnu packages pkg-config))
|
||||
|
||||
(define-public font-inconsolata
|
||||
(package
|
||||
(name "font-inconsolata")
|
||||
(version "0.80")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri "http://www.levien.com/type/myfonts/Inconsolata.otf")
|
||||
(sha256
|
||||
(base32
|
||||
"06js6znbcf7swn8y3b8ki416bz96ay7d3yvddqnvi88lqhbfcq8m"))))
|
||||
(build-system trivial-build-system)
|
||||
(arguments
|
||||
`(#:modules ((guix build utils))
|
||||
#:builder (begin
|
||||
(use-modules (guix build utils))
|
||||
(let ((font-dir (string-append %output
|
||||
"/share/fonts/opentype"))
|
||||
(source (assoc-ref %build-inputs "source")))
|
||||
(mkdir-p font-dir)
|
||||
(copy-file source
|
||||
(string-append font-dir "/" "inconsolata.otf"))))))
|
||||
(native-inputs `(("source" ,source)))
|
||||
(home-page "http://levien.com/type/myfonts/inconsolata.html")
|
||||
(synopsis "Monospace font")
|
||||
(description "A monospace font, designed for code listings and the like,
|
||||
in print. With attention to detail for high resolution rendering.")
|
||||
(license license:silofl1.1)))
|
||||
|
||||
(define-public font-ubuntu
|
||||
(package
|
||||
(name "font-ubuntu")
|
||||
(version "0.80")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://font.ubuntu.com/download/ubuntu-font-family-"
|
||||
version ".zip"))
|
||||
(sha256
|
||||
(base32
|
||||
"0k4f548riq23gmw4zhn30qqkcpaj4g2ab5rbc3lflfxwkc4p0w8h"))))
|
||||
(build-system trivial-build-system)
|
||||
(arguments
|
||||
`(#:modules ((guix build utils))
|
||||
#:builder (begin
|
||||
(use-modules (guix build utils)
|
||||
(srfi srfi-26))
|
||||
|
||||
(let ((PATH (string-append (assoc-ref %build-inputs
|
||||
"unzip")
|
||||
"/bin"))
|
||||
(font-dir (string-append %output
|
||||
"/share/fonts/truetype"))
|
||||
(doc-dir (string-append %output "/share/doc/"
|
||||
,name "-" ,version)))
|
||||
(setenv "PATH" PATH)
|
||||
(system* "unzip" (assoc-ref %build-inputs "source"))
|
||||
|
||||
(mkdir-p font-dir)
|
||||
(mkdir-p doc-dir)
|
||||
(chdir (string-append "ubuntu-font-family-" ,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)
|
||||
("unzip" ,unzip)))
|
||||
(home-page "http://font.ubuntu.com/")
|
||||
(synopsis "The Ubuntu Font Family")
|
||||
(description "The Ubuntu Font Family is a unique, custom designed font
|
||||
that has a very distinctive look and feel. This package provides the
|
||||
TrueType (TTF) files.")
|
||||
(license
|
||||
(license:non-copyleft
|
||||
"http://font.ubuntu.com/ufl/ubuntu-font-licence-1.0.txt"
|
||||
"Ubuntu Font License v1.0"))))
|
||||
|
||||
(define-public font-dejavu
|
||||
(package
|
||||
(name "font-dejavu")
|
||||
@@ -405,3 +487,142 @@ code-points needed for zh_cn, zh_sg, zh_tw, zh_hk, zh_mo, ja (Japanese) and
|
||||
ko (Korean) locales for fontconfig.")
|
||||
;; GPLv2 with font embedding exception
|
||||
(license license:gpl2)))
|
||||
|
||||
(define-public font-tex-gyre
|
||||
(package
|
||||
(name "font-tex-gyre")
|
||||
(version "2.005")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://www.gust.org.pl/projects/e-foundry/"
|
||||
"tex-gyre/whole/tg-" version "otf.zip"))
|
||||
(sha256
|
||||
(base32
|
||||
"0kph9l3g7jb2bpmxdbdg5zl56wacmnvdvsdn7is1gc750sqvsn31"))))
|
||||
(build-system trivial-build-system)
|
||||
(arguments
|
||||
`(#:modules ((guix build utils))
|
||||
#:builder
|
||||
(begin
|
||||
(use-modules (guix build utils))
|
||||
|
||||
(let ((unzip (string-append (assoc-ref %build-inputs "unzip")
|
||||
"/bin/unzip"))
|
||||
(font-dir (string-append %output "/share/fonts/opentype")))
|
||||
(mkdir-p font-dir)
|
||||
(system* unzip
|
||||
(assoc-ref %build-inputs "source")
|
||||
"-d" font-dir)))))
|
||||
(native-inputs
|
||||
`(("unzip" ,unzip)))
|
||||
(home-page "http://www.gust.org.pl/projects/e-foundry/tex-gyre/")
|
||||
(synopsis "Remake of Ghostscript fonts")
|
||||
(description "The TeX Gyre collection of fonts is the result of an
|
||||
extensive remake and extension of the freely available base PostScript fonts
|
||||
distributed with Ghostscript version 4.00. The collection contains the
|
||||
following fonts in the OpenType format: Adventor, Bonum, Chorus, Cursor,
|
||||
Heros, Pagella, Schola, Termes.")
|
||||
(license license:gfl1.0)))
|
||||
|
||||
(define-public font-anonymous-pro
|
||||
(package
|
||||
(name "font-anonymous-pro")
|
||||
(version "1.002")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://www.marksimonson.com/assets/content/fonts/"
|
||||
"AnonymousPro-" version ".zip"))
|
||||
(sha256
|
||||
(base32
|
||||
"1asj6lykvxh46czbal7ymy2k861zlcdqpz8x3s5bbpqwlm3mhrl6"))))
|
||||
(build-system trivial-build-system)
|
||||
(arguments
|
||||
`(#:modules ((guix build utils))
|
||||
#:builder
|
||||
(begin
|
||||
(use-modules (guix build utils))
|
||||
(let ((unzip (string-append (assoc-ref %build-inputs "unzip")
|
||||
"/bin/unzip"))
|
||||
(font-dir (string-append %output "/share/fonts/truetype"))
|
||||
(doc-dir (string-append %output "/share/doc/" ,name)))
|
||||
(system* unzip (assoc-ref %build-inputs "source"))
|
||||
(mkdir-p font-dir)
|
||||
(mkdir-p doc-dir)
|
||||
(chdir (string-append "AnonymousPro-" ,version ".001"))
|
||||
(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
|
||||
`(("unzip" ,unzip)))
|
||||
(home-page "http://www.marksimonson.com/fonts/view/anonymous-pro")
|
||||
(synopsis "Fixed-width fonts designed with coding in mind")
|
||||
(description "Anonymous Pro is a family of four fixed-width fonts designed
|
||||
with coding in mind. Anonymous Pro features an international, Unicode-based
|
||||
character set, with support for most Western and Central European Latin-based
|
||||
languages, plus Greek and Cyrillic.")
|
||||
(license license:silofl1.1)))
|
||||
|
||||
(define-public font-gnu-unifont
|
||||
(package
|
||||
(name "font-gnu-unifont")
|
||||
(version "8.0.01")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"mirror://gnu/unifont/unifont-8.0.01/unifont-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"176bzc2y3i49xavrmbyyz5lkqp0qq3bkj7rjrl197kib873by82b"))))
|
||||
(build-system gnu-build-system)
|
||||
(outputs '("out" ; TrueType version
|
||||
"pcf" ; PCF (bitmap) version
|
||||
"psf" ; PSF (console) version
|
||||
"bin" ; Utilities to manipulate '.hex' format
|
||||
))
|
||||
(arguments
|
||||
'(#:parallel-build? #f ; parallel build fails
|
||||
#:tests? #f ; no check target
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace 'configure
|
||||
(lambda _
|
||||
(setenv "CC" "gcc")))
|
||||
(replace
|
||||
'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((ttf (string-append (assoc-ref outputs "out")
|
||||
"/share/fonts/truetype"))
|
||||
(pcf (string-append (assoc-ref outputs "pcf")
|
||||
"/share/fonts/misc"))
|
||||
(psf (string-append (assoc-ref outputs "psf")
|
||||
"/share/consolefonts"))
|
||||
(bin (assoc-ref outputs "bin")))
|
||||
(system* "make"
|
||||
(string-append "PREFIX=" bin)
|
||||
(string-append "TTFDEST=" ttf)
|
||||
(string-append "PCFDEST=" pcf)
|
||||
(string-append "CONSOLEDEST=" psf)
|
||||
"install")
|
||||
;; Move Texinfo file to the right place.
|
||||
(mkdir (string-append bin "/share/info"))
|
||||
(rename-file (string-append bin "/share/unifont/unifont.info.gz")
|
||||
(string-append bin "/share/info/unifont.info.gz"))
|
||||
#t))))))
|
||||
(inputs
|
||||
`(("perl" ,perl))) ; for utilities
|
||||
(synopsis
|
||||
"Large bitmap font covering Unicode's Basic Multilingual Plane")
|
||||
(description
|
||||
"GNU Unifont is a bitmap font covering essentially all of
|
||||
Unicode's Basic Multilingual Plane. The package also includes
|
||||
utilities to ease adding new glyphs to the font.")
|
||||
(home-page "http://unifoundry.com/unifont.html")
|
||||
(license license:gpl2+)))
|
||||
|
||||
+51
-32
@@ -34,6 +34,7 @@
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix svn-download)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system gnu))
|
||||
|
||||
@@ -70,14 +71,14 @@ anti-aliased glyph bitmap generation with 256 gray levels.")
|
||||
(define-public fontconfig
|
||||
(package
|
||||
(name "fontconfig")
|
||||
(version "2.11.92")
|
||||
(version "2.11.94")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://www.freedesktop.org/software/fontconfig/release/fontconfig-"
|
||||
version ".tar.bz2"))
|
||||
(sha256 (base32
|
||||
"18r45dcnaj93izwfr082qiwg8ka7ll6j0c9yf1slblm542d5pmd9"))))
|
||||
"1psrl4b4gi4wmbvwwh43lk491wsl8lgvqj146prlcha3vwjc0qyp"))))
|
||||
(build-system gnu-build-system)
|
||||
(propagated-inputs `(("expat" ,expat)
|
||||
("freetype" ,freetype)))
|
||||
@@ -85,13 +86,24 @@ anti-aliased glyph bitmap generation with 256 gray levels.")
|
||||
(native-inputs
|
||||
`(("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"))))
|
||||
`(#:configure-flags
|
||||
(list "--with-cache-dir=/var/cache/fontconfig"
|
||||
;; register gs-fonts as default fonts
|
||||
(string-append "--with-default-fonts="
|
||||
(assoc-ref %build-inputs "gs-fonts")
|
||||
"/share/fonts")
|
||||
;; register fonts from user profile
|
||||
"--with-add-fonts=~/.guix-profile/share/fonts"
|
||||
;; python is not actually needed
|
||||
"PYTHON=false")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace 'install
|
||||
(lambda _
|
||||
;; Don't try to create /var/cache/fontconfig.
|
||||
(zero? (system* "make" "install"
|
||||
"fc_cachedir=$(TMPDIR)"
|
||||
"RUN_FC_CACHE_TEST=false")))))))
|
||||
(synopsis "Library for configuring and customizing font access")
|
||||
(description
|
||||
"Fontconfig can discover new fonts when installed automatically;
|
||||
@@ -139,27 +151,33 @@ X11-system or any other graphical user interface.")
|
||||
(define-public teckit
|
||||
(package
|
||||
(name "teckit")
|
||||
(version "2.5.1")
|
||||
(version "2.5.4")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (list
|
||||
(string-append
|
||||
"http://scripts.sil.org/svn-view/teckit/TAGS/TECkit_"
|
||||
(string-map (lambda (x) (if (char=? x #\.) #\_ x)) version)
|
||||
".tar.gz")
|
||||
"http://pkgs.fedoraproject.org/repo/pkgs/teckit/TECkit_2_5_1.tar.gz/4913f71f0f42bfd9cf8f161688b35dea/TECkit_2_5_1.tar.gz"
|
||||
;; This used to be the canonical URL but it vanished.
|
||||
;; See <http://bugs.gnu.org/19600>.
|
||||
;; (string-append
|
||||
;; "http://scripts.sil.org/svn-view/teckit/TAGS/TECkit_"
|
||||
;; (string-map (lambda (x) (if (char=? x #\.) #\_ x)) version)
|
||||
;; ".tar.gz")
|
||||
))
|
||||
(sha256 (base32
|
||||
"0fjiwvic8mdxpkyccfp7zh26y9xnvkp0skqbyfkrjiacd191k82r"))
|
||||
(patches (list (search-patch "teckit-cstdio.patch")))))
|
||||
;; Downloaded tarballs vary with each download, so we use an
|
||||
;; svn snapshot. The 2.5.4 release seems to be made in r128,
|
||||
;; but r132 updates additional files to contain the correct
|
||||
;; version number (r129 to r131 do not concern TRUNK).
|
||||
(method svn-fetch)
|
||||
(uri (svn-reference
|
||||
(url "https://scripts.sil.org/svn-public/teckit/TRUNK")
|
||||
(revision 132)))
|
||||
(file-name (string-append name "-" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1xqkqgw30pb24snh46srmjs2j4zhz2dfi5pf7znia0k34mrpwivz"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("zlib" ,zlib)))
|
||||
(native-inputs
|
||||
`(("autoconf" ,autoconf)
|
||||
("automake" ,automake)
|
||||
("libtool" ,libtool)
|
||||
("perl" ,perl))) ; for the tests
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'autogen
|
||||
(lambda _
|
||||
(zero? (system* "sh" "autogen.sh")))))))
|
||||
(synopsis "Toolkit for encoding conversions")
|
||||
(description
|
||||
"TECkit is a low-level toolkit intended to be used by other applications
|
||||
@@ -185,7 +203,7 @@ applications should be.")
|
||||
(define-public graphite2
|
||||
(package
|
||||
(name "graphite2")
|
||||
(version "1.2.4")
|
||||
(version "1.3.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -194,12 +212,13 @@ applications should be.")
|
||||
version ".tgz"))
|
||||
(sha256
|
||||
(base32
|
||||
"00xhv1mp640fr3wmdzwn4yz0g56jd4r9fb7b02mc1g19h0bdbhsb"))))
|
||||
"0xvhmlyyxg2qmbwyl8k2f9w7mrbjyl59823pnjd8xmxpyl6976d5"))))
|
||||
(build-system cmake-build-system)
|
||||
(native-inputs
|
||||
`(("python" ,python-2) ; because of "import imap" in tests
|
||||
("python-fonttools" ,python2-fonttools)))
|
||||
(inputs
|
||||
`(("freetype" ,freetype)
|
||||
("perl" ,perl)
|
||||
("python" ,python-2))) ; because of "import imap" in tests
|
||||
`(("freetype" ,freetype)))
|
||||
(synopsis "Reimplementation of the SIL Graphite text processing engine")
|
||||
(description
|
||||
"Graphite2 is a reimplementation of the SIL Graphite text processing
|
||||
|
||||
+170
-59
@@ -41,9 +41,13 @@
|
||||
#:use-module (gnu packages xdisorg)
|
||||
#:use-module (gnu packages xorg)
|
||||
#:use-module (gnu packages boost)
|
||||
#:use-module (gnu packages m4)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages doxygen)
|
||||
#:use-module (gnu packages libffi))
|
||||
#:use-module (gnu packages libffi)
|
||||
#:use-module (gnu packages acl)
|
||||
#:use-module (gnu packages admin)
|
||||
#:use-module (gnu packages polkit))
|
||||
|
||||
(define-public xdg-utils
|
||||
(package
|
||||
@@ -71,14 +75,14 @@ freedesktop.org project.")
|
||||
(define-public libinput
|
||||
(package
|
||||
(name "libinput")
|
||||
(version "0.14.1")
|
||||
(version "0.21.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://freedesktop.org/software/libinput/"
|
||||
name "-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0r0v5jqbnwgndq6ns3ss3kv1438ny302m7bg1najcl1dpqp21v9b"))))
|
||||
"0l7mhdr50g11hxg2pz8ihsgzbm0810syj05d3555rzhda6g7mkkw"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
@@ -128,65 +132,58 @@ the freedesktop.org XDG Base Directory specification.")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public elogind
|
||||
(let ((commit "14405a9"))
|
||||
(package
|
||||
(name "elogind")
|
||||
(version (string-append "219." commit))
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "http://git.elephly.net/software/elogind.git")
|
||||
(commit commit)))
|
||||
(sha256
|
||||
(base32
|
||||
"1wz5lxj95qg64x2q5hf4zcb35hpxlw3wfswx6sb2srvsg50y3y72"))
|
||||
(file-name (string-append name "-checkout-" commit))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
(use-modules (guix build utils))
|
||||
(substitute* "Makefile.am"
|
||||
;; Avoid validation against DTD because the DTDs for
|
||||
;; both doctype 4.2 and 4.5 are needed.
|
||||
(("XSLTPROC_FLAGS = ") "XSLTPROC_FLAGS = --novalid"))))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
(list
|
||||
;; pam_elogind fails because of bus-error.c hackery
|
||||
"--disable-pam"
|
||||
(string-append "--with-rootprefix=" (assoc-ref %outputs "out")))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'autogen
|
||||
(lambda _
|
||||
(and (zero? (system* "intltoolize" "--force" "--automake"))
|
||||
(zero? (system* "autoreconf" "-vif"))))))))
|
||||
(native-inputs
|
||||
`(("intltool" ,intltool)
|
||||
("gettext" ,gnu-gettext)
|
||||
("docbook-xsl" ,docbook-xsl)
|
||||
("docbook-xml" ,docbook-xml)
|
||||
("xsltproc" ,libxslt)
|
||||
("libxml2" ,libxml2) ;for XML_CATALOG_FILES
|
||||
("pkg-config", pkg-config)
|
||||
("autoconf" ,autoconf)
|
||||
("automake" ,automake)
|
||||
("libtool" ,libtool)
|
||||
("gperf" ,gperf)))
|
||||
(inputs
|
||||
`(("linux-pam" ,linux-pam)
|
||||
("linux-libre-headers" ,linux-libre-headers)
|
||||
("libcap" ,libcap)
|
||||
("dbus" ,dbus)
|
||||
("eudev" ,eudev)))
|
||||
(home-page "https://github.com/andywingo/elogind")
|
||||
(synopsis "User, seat, and session management service")
|
||||
(description "Elogind is the systemd project's \"logind\" service,
|
||||
(package
|
||||
(name "elogind")
|
||||
(version "219.12")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://wingolog.org/pub/" name "/"
|
||||
name "-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"13qc4f0dl7ynnfp1y565z2k0jjizly5w3dqhiqkdk7v6jr4pksb7"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
(use-modules (guix build utils))
|
||||
(substitute* "Makefile.am"
|
||||
;; Avoid validation against DTD because the DTDs for
|
||||
;; both doctype 4.2 and 4.5 are needed.
|
||||
(("XSLTPROC_FLAGS = ") "XSLTPROC_FLAGS = --novalid"))))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
(list (string-append "--with-libcap="
|
||||
(assoc-ref %build-inputs "libcap"))
|
||||
(string-append "--with-udevrulesdir="
|
||||
(assoc-ref %outputs "out")
|
||||
"/lib/udev/rules.d"))
|
||||
#:make-flags '("PKTTYAGENT=/run/current-system/profile/bin/pkttyagent")))
|
||||
(native-inputs
|
||||
`(("intltool" ,intltool)
|
||||
("gettext" ,gnu-gettext)
|
||||
("docbook-xsl" ,docbook-xsl)
|
||||
("docbook-xml" ,docbook-xml)
|
||||
("xsltproc" ,libxslt)
|
||||
("m4" ,m4)
|
||||
("libxml2" ,libxml2) ;for XML_CATALOG_FILES
|
||||
("pkg-config", pkg-config)
|
||||
("gperf" ,gperf)))
|
||||
(inputs
|
||||
`(("linux-pam" ,linux-pam)
|
||||
("linux-libre-headers" ,linux-libre-headers)
|
||||
("libcap" ,libcap)
|
||||
("dmd" ,dmd) ;for 'halt' and 'reboot', invoked
|
||||
;when pressing the power button
|
||||
("dbus" ,dbus)
|
||||
("eudev" ,eudev)))
|
||||
(home-page "https://github.com/andywingo/elogind")
|
||||
(synopsis "User, seat, and session management service")
|
||||
(description "Elogind is the systemd project's \"logind\" service,
|
||||
extracted out as a separate project. Elogind integrates with PAM to provide
|
||||
the org.freedesktop.login1 interface over the system bus, allowing other parts
|
||||
of a the system to know what users are logged in, and where.")
|
||||
(license license:lgpl2.1+))))
|
||||
(license license:lgpl2.1+)))
|
||||
|
||||
(define-public python-pyxdg
|
||||
(package
|
||||
@@ -295,3 +292,117 @@ applications, X servers (rootless or fullscreen) or other display servers.")
|
||||
(description "Exempi is an implementation of the Extensible Metadata
|
||||
Platform (XMP), which enables embedding metadata in PDF and image formats.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public libatasmart
|
||||
(package
|
||||
(name "libatasmart")
|
||||
(version "0.19")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://0pointer.de/public/"
|
||||
name "-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"138gvgdwk6h4ljrjsr09pxk1nrki4b155hqdzyr8mlk3bwsfmw31"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
`(("udev" ,eudev)))
|
||||
(home-page "http://0pointer.de/blog/projects/being-smart.html")
|
||||
(synopsis "ATA S.M.A.R.T. reading and parsing library")
|
||||
(description
|
||||
"This library supports a subset of the ATA S.M.A.R.T. (Self-Monitoring,
|
||||
Analysis and Reporting Technology) functionality.")
|
||||
(license license:lgpl2.1+)))
|
||||
|
||||
(define-public udisks
|
||||
(package
|
||||
(name "udisks")
|
||||
(version "2.1.6")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://udisks.freedesktop.org/releases/"
|
||||
name "-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0spl155k0g2l2hvqf8xyjv08i68gfyhzpjva6cwlzxx0bz4gbify"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("glib:bin" ,glib "bin") ; for glib-mkenums
|
||||
("gobject-introspection" ,gobject-introspection)
|
||||
("intltool" ,intltool)
|
||||
("pkg-config" ,pkg-config)
|
||||
("xsltproc" ,libxslt)))
|
||||
(propagated-inputs
|
||||
`(("glib" ,glib))) ; required by udisks2.pc
|
||||
(inputs
|
||||
`(("acl" ,acl)
|
||||
("libatasmart" ,libatasmart)
|
||||
("libgudev" ,libgudev)
|
||||
("polkit" ,polkit)))
|
||||
(arguments
|
||||
`(#:tests? #f ; requiring system message dbus
|
||||
#:configure-flags
|
||||
(list "--disable-man"
|
||||
"--localstatedir=/var"
|
||||
(string-append "--with-udevdir=" %output "/lib/udev"))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before
|
||||
'configure 'fix-girdir
|
||||
(lambda _
|
||||
;; Install introspection data to its own output.
|
||||
(substitute* "udisks/Makefile.in"
|
||||
(("girdir = .*")
|
||||
"girdir = $(datadir)/gir-1.0\n")
|
||||
(("typelibsdir = .*")
|
||||
"typelibsdir = $(libdir)/girepository-1.0\n")))))))
|
||||
(home-page "http://www.freedesktop.org/wiki/Software/udisks/")
|
||||
(synopsis "Disk manager service")
|
||||
(description
|
||||
"UDisks provides interfaces to enumerate and perform operations on disks
|
||||
and storage devices. Any application (including unprivileged ones) can access
|
||||
the udisksd(8) daemon via the name org.freedesktop.UDisks2 on the system
|
||||
message bus.")
|
||||
;; The dynamic library are under LGPLv2+, others are GPLv2+.
|
||||
(license (list license:gpl2+ license:lgpl2.0+))))
|
||||
|
||||
(define-public accountsservice
|
||||
(package
|
||||
(name "accountsservice")
|
||||
(version "0.6.40")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://www.freedesktop.org/software/"
|
||||
name "/" name "-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0ayb3y3l25dmwxlh9g071h02mphjfbkvi2k5f635bayb01k7akzh"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f ; XXX: tests require DocBook 4.1.2
|
||||
#:configure-flags
|
||||
'("--localstatedir=/var")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before
|
||||
'configure 'pre-configure
|
||||
(lambda _
|
||||
;; Don't try to create /var/lib/AccoutsService.
|
||||
(substitute* "src/Makefile.in"
|
||||
(("\\$\\(MKDIR_P\\).*/lib/AccountsService.*") "true")))))))
|
||||
(native-inputs
|
||||
`(("glib:bin" ,glib "bin") ; for gdbus-codegen, etc.
|
||||
("gobject-introspection" ,gobject-introspection)
|
||||
("intltool" ,intltool)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
`(("polkit" ,polkit)))
|
||||
(home-page "http://www.freedesktop.org/wiki/Software/AccountsService/")
|
||||
(synopsis "D-Bus interface for user account query and manipulation")
|
||||
(description
|
||||
"The AccountService project provides a set of D-Bus interfaces for querying
|
||||
and manipulating user account information and an implementation of these
|
||||
interfaces, based on the useradd, usermod and userdel commands.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
@@ -27,14 +27,14 @@
|
||||
(define-public freeipmi
|
||||
(package
|
||||
(name "freeipmi")
|
||||
(version "1.4.9")
|
||||
(version "1.4.10")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/freeipmi/freeipmi-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0v2xfwik2mv6z8066raiypc4xymjvr8pb0mv3mc3g4ym4km132qp"))))
|
||||
"1l98l8g8lha85q1d288wr7dyx00x36smh9g5wza15n4wm35c9wqs"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("readline" ,readline) ("libgcrypt" ,libgcrypt)))
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2014 Tomáš Čech <sleep_walker@suse.cz>
|
||||
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2015 Julian Graham <joolean@gmail.com>
|
||||
;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -24,6 +27,13 @@
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages databases)
|
||||
#:use-module (gnu packages doxygen)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages gnunet)
|
||||
#:use-module (gnu packages guile)
|
||||
#:use-module (gnu packages multiprecision)
|
||||
#:use-module (gnu packages ncurses)
|
||||
#:use-module (gnu packages qt)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages zip)
|
||||
@@ -37,7 +47,8 @@
|
||||
#:use-module (gnu packages gnome)
|
||||
#:use-module (gnu packages gtk)
|
||||
#:use-module (gnu packages sdl)
|
||||
#:use-module (gnu packages pkg-config))
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages xiph))
|
||||
|
||||
(define-public bullet
|
||||
(package
|
||||
@@ -63,10 +74,53 @@
|
||||
is used in some video games and movies.")
|
||||
(license license:zlib)))
|
||||
|
||||
(define-public gzochi
|
||||
(package
|
||||
(name "gzochi")
|
||||
(version "0.9")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://savannah/gzochi/gzochi-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1nf8naqbc4hmhy99b8n70yswg9j71nh5mfpwwh6d8pdw5mp9b46a"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:phases (modify-phases %standard-phases
|
||||
(add-before 'configure 'remove-Werror
|
||||
(lambda _
|
||||
;; We can't build with '-Werror', notably
|
||||
;; because deprecated functions of
|
||||
;; libmicrohttpd are being used.
|
||||
(substitute* (find-files "." "^Makefile\\.in$")
|
||||
(("-Werror")
|
||||
""))
|
||||
#t)))))
|
||||
(native-inputs `(("pkgconfig" ,pkg-config)))
|
||||
(inputs `(("bdb" ,bdb)
|
||||
("glib" ,glib)
|
||||
("gmp" ,gmp)
|
||||
("guile" ,guile-2.0)
|
||||
("libmicrohttpd" ,libmicrohttpd)
|
||||
("ncurses" ,ncurses)
|
||||
("sdl" ,sdl)
|
||||
("zlib" ,zlib)))
|
||||
(home-page "http://www.nongnu.org/gzochi/")
|
||||
(synopsis "Scalable middleware for multiplayer games")
|
||||
(description
|
||||
"gzochi is a framework for developing massively multiplayer online games.
|
||||
A server container provides services to deployed games, which are written in
|
||||
Guile Scheme, that abstract and simplify some of the most challenging and
|
||||
error-prone aspects of online game development: Concurrency, data persistence,
|
||||
and network communications. A very thin client library can be embedded to
|
||||
provide connectivity for client applications written in any language.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public tiled
|
||||
(package
|
||||
(name "tiled")
|
||||
(version "0.11.0")
|
||||
(version "0.13.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://github.com/bjorn/tiled/archive/v"
|
||||
@@ -74,7 +128,7 @@ is used in some video games and movies.")
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"03a15vbzjfwc8dpifbjvd0gnr208mzmdkgs2nlc8zq6z0a4h4jqd"))))
|
||||
"057a5cna3vhznpl9hyql2sxz995aprv43r8wva89x4vdphxv04lm"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("qt" ,qt)
|
||||
("zlib" ,zlib)))
|
||||
@@ -101,23 +155,28 @@ clone.")
|
||||
(define-public sfml
|
||||
(package
|
||||
(name "sfml")
|
||||
(version "2.2")
|
||||
(version "2.3.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://mirror0.sfml-dev.org/files/SFML-"
|
||||
version "-sources.zip"))
|
||||
;; Do not fetch the archives from
|
||||
;; http://mirror0.sfml-dev.org/files/ because files there seem
|
||||
;; to be changed in place.
|
||||
(uri (string-append "https://github.com/SFML/SFML/archive/"
|
||||
version ".tar.gz"))
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1xhkvgyfbhqsjdmfbxvk729kdrzh7kdyagxa3bvpzi6z43mh1frd"))))
|
||||
"0k2fl5xk3ni2q8bsxl0551inx26ww3w6cp6hssvww0wfjdjcirsm"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f)) ; no tests
|
||||
(native-inputs
|
||||
`(("unzip" ,unzip)))
|
||||
(inputs
|
||||
`(("mesa" ,mesa)
|
||||
("glew" ,glew)
|
||||
("flac" ,flac)
|
||||
("libvorbis" ,libvorbis)
|
||||
("libx11" ,libx11)
|
||||
("xcb-util-image" ,xcb-util-image)
|
||||
("libxrandr" ,libxrandr)
|
||||
("eudev" ,eudev)
|
||||
("freetype" ,freetype)
|
||||
@@ -168,3 +227,36 @@ Originally created for use in video game prototypes, it can generate random
|
||||
sounds from presets such as \"explosion\" or \"powerup\".")
|
||||
(home-page "http://www.drpetter.se/project_sfxr.html")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public physfs
|
||||
(package
|
||||
(name "physfs")
|
||||
(version "2.0.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://icculus.org/physfs/downloads/physfs-"
|
||||
version ".tar.bz2"))
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0sbbyqzqhyf0g68fcvvv20n3928j0x6ik1njmhn1yigvq2bj11na"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f)) ; no check target
|
||||
(inputs
|
||||
`(("zlib" ,zlib)))
|
||||
(native-inputs
|
||||
`(("doxygen" ,doxygen)))
|
||||
(home-page "http://icculus.org/physfs")
|
||||
(synopsis "File system abstraction library")
|
||||
(description
|
||||
"PhysicsFS is a library to provide abstract access to various archives.
|
||||
It is intended for use in video games. For security, no file writing done
|
||||
through the PhysicsFS API can leave a defined @emph{write directory}. For
|
||||
file reading, a @emph{search path} with archives and directories is defined,
|
||||
and it becomes a single, transparent hierarchical file system. So archive
|
||||
files can be accessed in the same way as you access files directly on a disk,
|
||||
and it makes it easy to ship a new archive that will override a previous
|
||||
archive on a per-file basis.")
|
||||
(license license:zlib)))
|
||||
|
||||
+307
-46
@@ -1,15 +1,18 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 John Darrington <jmd@gnu.org>
|
||||
;;; Copyright © 2014 David Thompson <dthompson2@worcester.edu>
|
||||
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
|
||||
;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
|
||||
;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
|
||||
;;; Copyright © 2014 Sylvain Beucler <beuc@beuc.net>
|
||||
;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2014, 2015 Sou Bunnbu <iyzsong@gmail.com>
|
||||
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
|
||||
;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
|
||||
;;; Copyright © 2015 Christopher Allan Webber <cwebber@dustycloud.org>
|
||||
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
|
||||
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -31,11 +34,16 @@
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix svn-download)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages admin)
|
||||
#:use-module (gnu packages audio)
|
||||
#:use-module (gnu packages boost)
|
||||
#:use-module (gnu packages fribidi)
|
||||
#:use-module (gnu packages game-development)
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages gl)
|
||||
#:use-module (gnu packages glib)
|
||||
@@ -44,6 +52,8 @@
|
||||
#:use-module (gnu packages guile)
|
||||
#:use-module (gnu packages libcanberra)
|
||||
#:use-module (gnu packages libunwind)
|
||||
#:use-module (gnu packages haskell)
|
||||
#:use-module (gnu packages mp3)
|
||||
#:use-module (gnu packages image)
|
||||
#:use-module (gnu packages ncurses)
|
||||
#:use-module (gnu packages python)
|
||||
@@ -55,6 +65,7 @@
|
||||
#:use-module (gnu packages texinfo)
|
||||
#:use-module (gnu packages check)
|
||||
#:use-module (gnu packages fontutils)
|
||||
#:use-module (gnu packages gstreamer)
|
||||
#:use-module (gnu packages bash)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages qt)
|
||||
@@ -68,8 +79,10 @@
|
||||
#:use-module (gnu packages video)
|
||||
#:use-module (gnu packages xml)
|
||||
#:use-module (gnu packages tcl)
|
||||
#:use-module (gnu packages fribidi)
|
||||
#:use-module (guix build-system trivial)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system haskell)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system trivial))
|
||||
|
||||
@@ -153,43 +166,31 @@ scriptable with Guile.")
|
||||
'(#:modules ((ice-9 match)
|
||||
(guix build gnu-build-system)
|
||||
(guix build utils))
|
||||
#:phases (alist-cons-after
|
||||
'set-paths 'set-sdl-paths
|
||||
(lambda* (#:key inputs outputs (search-paths '()) #:allow-other-keys)
|
||||
(define input-directories
|
||||
(match inputs
|
||||
(((_ . dir) ...)
|
||||
dir)))
|
||||
;; This package does not use pkg-config, so modify CPATH
|
||||
;; variable to point to include/SDL for SDL header files.
|
||||
(set-path-environment-variable "CPATH"
|
||||
'("include/SDL")
|
||||
input-directories))
|
||||
(alist-cons-after
|
||||
'patch-source-shebangs 'patch-makefile
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
;; Replace /usr with package output directory.
|
||||
(for-each (lambda (file)
|
||||
(substitute* file
|
||||
(("/usr") (assoc-ref outputs "out"))))
|
||||
'("makefile" "src/pantallas.c" "src/comun.h")))
|
||||
(alist-cons-before
|
||||
'install 'make-install-dirs
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((prefix (assoc-ref outputs "out")))
|
||||
;; Create directories that the makefile assumes exist.
|
||||
(mkdir-p (string-append prefix "/bin"))
|
||||
(mkdir-p (string-append prefix "/share/applications"))
|
||||
(mkdir-p (string-append prefix "/share/pixmaps"))))
|
||||
;; No configure script.
|
||||
(alist-delete 'configure %standard-phases))))
|
||||
#:phases (modify-phases %standard-phases
|
||||
(add-after 'set-paths 'set-sdl-paths
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(setenv "CPATH"
|
||||
(string-append (assoc-ref inputs "sdl-union")
|
||||
"/include/SDL"))))
|
||||
(add-after 'patch-source-shebangs 'patch-makefile
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
;; Replace /usr with package output directory.
|
||||
(for-each (lambda (file)
|
||||
(substitute* file
|
||||
(("/usr") (assoc-ref outputs "out"))))
|
||||
'("makefile" "src/pantallas.c" "src/comun.h"))))
|
||||
(add-before 'install 'make-install-dirs
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((prefix (assoc-ref outputs "out")))
|
||||
;; Create directories that the makefile assumes exist.
|
||||
(mkdir-p (string-append prefix "/bin"))
|
||||
(mkdir-p (string-append prefix "/share/applications"))
|
||||
(mkdir-p (string-append prefix "/share/pixmaps")))))
|
||||
;; No configure script.
|
||||
(delete 'configure))
|
||||
#:tests? #f)) ;; No check target.
|
||||
(native-inputs `(("pkg-config" ,pkg-config)))
|
||||
(inputs `(("sdl" ,sdl)
|
||||
("sdl-gfx" ,sdl-gfx)
|
||||
("sdl-image" ,sdl-image)
|
||||
("sdl-mixer" ,sdl-mixer)
|
||||
("sdl-ttf" ,sdl-ttf)))
|
||||
(inputs `(("sdl-union" ,(sdl-union))))
|
||||
(home-page "http://code.google.com/p/abbaye-for-linux/")
|
||||
(synopsis "GNU/Linux port of the indie game \"l'Abbaye des Morts\"")
|
||||
(description "L'Abbaye des Morts is a 2D platform game set in 13th century
|
||||
@@ -302,7 +303,7 @@ asynchronously and at a user-defined speed.")
|
||||
(define-public chess
|
||||
(package
|
||||
(name "chess")
|
||||
(version "6.1.1")
|
||||
(version "6.2.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -310,7 +311,7 @@ asynchronously and at a user-defined speed.")
|
||||
".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1jckpg1qi1vjr3pqs0dnip3rmn0mgklx63xflrpqiv3cx2qlz8kn"))))
|
||||
"1a41ag03q66pwy3pjrmbxxjpzi9fcaiiaiywd7m9v25mxqac2xkp"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "http://www.gnu.org/software/chess")
|
||||
(synopsis "Full chess implementation")
|
||||
@@ -571,10 +572,63 @@ for common mesh file formats, and collision detection.")
|
||||
(home-page "http://irrlicht.sourceforge.net/")
|
||||
(license license:zlib)))
|
||||
|
||||
(define-public mars
|
||||
;; The latest release on SourceForge relies on an unreleased version of SFML
|
||||
;; with a different API, so we take the latest version from the official
|
||||
;; repository on Github.
|
||||
(let ((commit "c855d04409")
|
||||
(revision "1"))
|
||||
(package
|
||||
(name "mars")
|
||||
(version (string-append "0.7.5." revision "." commit ))
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/thelaui/M.A.R.S..git")
|
||||
(commit commit)))
|
||||
(file-name (string-append name "-" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1r4c5gap1z2zsv4yjd34qriqkxaq4lb4rykapyzkkdf4g36lc3nh"))
|
||||
(patches (list (search-patch "mars-sfml-2.3.patch")
|
||||
(search-patch "mars-install.patch")))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; There are no tests
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'fix-install-path
|
||||
(lambda _
|
||||
(substitute* "src/CMakeLists.txt"
|
||||
(("\\$\\{CMAKE_INSTALL_PREFIX\\}/games")
|
||||
"${CMAKE_INSTALL_PREFIX}/bin"))
|
||||
#t))
|
||||
(add-after 'unpack 'fix-data-path
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(substitute* "src/System/settings.cpp"
|
||||
(("C_dataPath = \"./data/\";")
|
||||
(string-append "C_dataPath = \""
|
||||
(assoc-ref outputs "out")
|
||||
"/share/games/marsshooter/\";")))
|
||||
#t)))))
|
||||
(inputs
|
||||
`(("mesa" ,mesa)
|
||||
("fribidi" ,fribidi)
|
||||
("taglib" ,taglib)
|
||||
("sfml" ,sfml)))
|
||||
(home-page "http://marsshooter.org")
|
||||
(synopsis "2D space shooter")
|
||||
(description
|
||||
"M.A.R.S. is a 2D space shooter with pretty visual effects and
|
||||
attractive physics. Players can battle each other or computer controlled
|
||||
enemies in different game modes such as space ball, death match, team death
|
||||
match, cannon keep, and grave-itation pit.")
|
||||
(license license:gpl3+))))
|
||||
|
||||
(define minetest-data
|
||||
(package
|
||||
(name "minetest-data")
|
||||
(version "0.4.12")
|
||||
(version "0.4.13")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@@ -583,7 +637,7 @@ for common mesh file formats, and collision detection.")
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0642vy6r6sv96mz6wbs9qvyr95vd69zj4fxiljdg9801javrmm9p"))))
|
||||
"04xnyfap75v3p818kpqb07xshqwqzpws5xjvw5m96qnd9x4725ld"))))
|
||||
(build-system trivial-build-system)
|
||||
(native-inputs
|
||||
`(("source" ,source)
|
||||
@@ -615,7 +669,7 @@ for common mesh file formats, and collision detection.")
|
||||
(define-public minetest
|
||||
(package
|
||||
(name "minetest")
|
||||
(version "0.4.12")
|
||||
(version "0.4.13")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@@ -624,7 +678,7 @@ for common mesh file formats, and collision detection.")
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1pqp8hfwg5wkimig8j5jrihzgjjgplxr24w5xisrxvx1hlvnczdk"))))
|
||||
"1xzrvsg0fpbj5p4pz6lls11m3ab4y2bnjlsm4gnw68x9006ffznp"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
'(#:configure-flags
|
||||
@@ -788,15 +842,15 @@ either by Infocom or created using the Inform compiler.")
|
||||
(define-public retroarch
|
||||
(package
|
||||
(name "retroarch")
|
||||
(version "1.0.0.3-beta")
|
||||
(version "1.2.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://github.com/libretro/RetroArch/archive/"
|
||||
(uri (string-append "https://github.com/libretro/RetroArch/archive/v"
|
||||
version ".tar.gz"))
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "1iqcrb076xiih20sk8n1w79xsp4fb8pj4vkmdc1xn562h56y4nxx"))))
|
||||
(base32 "1bxr8yhk3ad4df544qljsfjfhxa8zy1grq7rn1s02yfvdmgzf4qi"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f ; no tests
|
||||
@@ -951,3 +1005,210 @@ platform to platform to avoid falling, while the platforms drop at faster rates
|
||||
the higher you go. The game features multiplayer, unlimited FPS, smooth floor
|
||||
falling, themeable graphics and sounds, and replays.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public wesnoth
|
||||
(package
|
||||
(name "wesnoth")
|
||||
(version "1.12.4")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/wesnoth/"
|
||||
name "-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"19qyylylaljhk45lk2ja0xp7cx9iy4hx07l65zkg20a2v9h50lmz"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f ; no check target
|
||||
#:configure-flags
|
||||
;; XXX: Failed to compile with '-Werror=old-style-cast'.
|
||||
;; boost/mpl/assert.hpp:313:58: error:
|
||||
;; use of old-style cast [-Werror=old-style-cast]
|
||||
;; [...]
|
||||
;; cc1plus: all warnings being treated as errors
|
||||
'("-DENABLE_STRICT_COMPILATION=OFF")))
|
||||
(native-inputs
|
||||
`(("gettext" ,gnu-gettext)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
`(("boost" ,boost)
|
||||
("dbus" ,dbus)
|
||||
("fribidi" ,fribidi)
|
||||
("libvorbis" ,libvorbis)
|
||||
("pango" ,pango)
|
||||
("sdl-image" ,sdl-image)
|
||||
("sdl-mixer" ,sdl-mixer)
|
||||
("sdl-net" ,sdl-net)
|
||||
("sdl-ttf" ,sdl-ttf)))
|
||||
(home-page "http://www.wesnoth.org/")
|
||||
(synopsis "Turn-based strategy game")
|
||||
(description
|
||||
"The Battle for Wesnoth is a fantasy, turn based tactical strategy game,
|
||||
with several single player campaigns, and multiplayer games (both networked and
|
||||
local).
|
||||
|
||||
Battle for control on a range of maps, using variety of units which have
|
||||
advantages and disadvantages against different types of attacks. Units gain
|
||||
experience and advance levels, and are carried over from one scenario to the
|
||||
next campaign.")
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define-public dosbox
|
||||
(package
|
||||
(name "dosbox")
|
||||
(version "0.74.svn3947")
|
||||
(source (origin
|
||||
(method svn-fetch)
|
||||
(uri (svn-reference
|
||||
(url "http://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk/")
|
||||
(revision 3947)))
|
||||
(file-name (string-append name "-" version "-checkout"))
|
||||
;; Use SVN head, since the last release (2010) is incompatible
|
||||
;; with GCC 4.8+ (see
|
||||
;; <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=624976>).
|
||||
(sha256
|
||||
(base32
|
||||
"1p918j6090d1nkvgq7ifvmn506zrdmyi32y7p3ms40d5ssqjg8fj"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases (modify-phases %standard-phases
|
||||
(add-after
|
||||
'unpack 'autogen.sh
|
||||
(lambda _
|
||||
(zero? (system* "sh" "autogen.sh")))))))
|
||||
(native-inputs
|
||||
`(("autoconf" ,autoconf)
|
||||
("automake" ,automake)))
|
||||
(inputs
|
||||
`(("sdl" ,sdl)
|
||||
("libpng" ,libpng)
|
||||
("zlib" ,zlib)
|
||||
("alsa-lib" ,alsa-lib)
|
||||
("glu" ,glu)
|
||||
("mesa" ,mesa)))
|
||||
(home-page "http://www.dosbox.com")
|
||||
(synopsis "x86 emulator with CGA/EGA/VGA/etc. graphics and sound")
|
||||
(description "DOSBox is a DOS-emulator that uses the SDL library. DOSBox
|
||||
also emulates CPU:286/386 realmode/protected mode, Directory
|
||||
FileSystem/XMS/EMS, Tandy/Hercules/CGA/EGA/VGA/VESA graphics, a
|
||||
SoundBlaster/Gravis Ultra Sound card for excellent sound compatibility with
|
||||
older games.")
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define-public gamine
|
||||
(package
|
||||
(name "gamine")
|
||||
(version "1.4")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/gamine-game/"
|
||||
"gamine-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1iny959i1kl2ab6z5xi4s66mrvrwcarxyvjfp2k1sx532s8knk8h"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)
|
||||
("intltool" ,intltool)))
|
||||
(inputs
|
||||
`(("gstreamer" ,gstreamer)
|
||||
("gst-plugins-base" ,gst-plugins-base) ;playbin plugin
|
||||
("gst-plugins-good" ,gst-plugins-good) ;for wav playback
|
||||
("gtk+" ,gtk+)))
|
||||
(arguments
|
||||
`(#:tests? #f
|
||||
#:make-flags
|
||||
(let ((out (assoc-ref %outputs "out")))
|
||||
(list (string-append "PREFIX=" out)
|
||||
(string-append "SYSCONFDIR=" out "/etc")))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
(add-after
|
||||
'install 'wrap-gamine
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out"))
|
||||
(gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
|
||||
(wrap-program (string-append out "/bin/gamine")
|
||||
`("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))))
|
||||
#t)))))
|
||||
(home-page "http://gamine-game.sourceforge.net/")
|
||||
(synopsis "Mouse and keyboard discovery for children")
|
||||
(description
|
||||
"Gamine is a game designed for young children who are learning to use the
|
||||
mouse and keyboard. The child uses the mouse to draw colored dots and lines
|
||||
on the screen and keyboard to display letters.")
|
||||
;; Most files under gpl2+ or gpl3+, but eat.wav under gpl3
|
||||
(license license:gpl3)))
|
||||
|
||||
(define-public raincat
|
||||
(package
|
||||
(name "raincat")
|
||||
(version "1.1.1.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://hackage.haskell.org/package/Raincat/Raincat-"
|
||||
version
|
||||
".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1aalh68h6799mv4vyg30zpskl5jkn6x2j1jza7p4lrflyifxzar8"))))
|
||||
(build-system haskell-build-system)
|
||||
(inputs
|
||||
`(("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
|
||||
("ghc-mtl" ,ghc-mtl)
|
||||
("ghc-random" ,ghc-random)
|
||||
("ghc-glut" ,ghc-glut)
|
||||
("ghc-opengl" ,ghc-opengl)
|
||||
("ghc-sdl" ,ghc-sdl)
|
||||
("ghc-sdl-image" ,ghc-sdl-image)
|
||||
("ghc-sdl-mixer" ,ghc-sdl-mixer)))
|
||||
(home-page "http://raincat.bysusanlin.com/")
|
||||
(synopsis "Puzzle game with a cat in lead role")
|
||||
(description "Project Raincat is a game developed by Carnegie Mellon
|
||||
students through GCS during the Fall 2008 semester. Raincat features game
|
||||
play inspired from classics Lemmings and The Incredible Machine. The project
|
||||
proved to be an excellent learning experience for the programmers. Everything
|
||||
is programmed in Haskell.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public manaplus
|
||||
(package
|
||||
(name "manaplus")
|
||||
(version "1.5.9.26")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://repo.manaplus.org/manaplus/download/"
|
||||
version "/manaplus-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"070ms1cv7q88284pqh66lfhacckgv7m9s8z9009k2laypibx7vs6"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:configure-flags
|
||||
(list (string-append "CPPFLAGS=-I"
|
||||
(assoc-ref %build-inputs "sdl-union")
|
||||
"/include/SDL"))))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
`(("glu" ,glu)
|
||||
("curl" ,curl)
|
||||
("libxml2" ,libxml2)
|
||||
("mesa" ,mesa)
|
||||
("physfs" ,physfs)
|
||||
("sdl-union" ,(sdl-union))))
|
||||
(home-page "http://manaplus.org")
|
||||
(synopsis "Client for 'The Mana World' and similar games")
|
||||
(description
|
||||
"ManaPlus is a 2D MMORPG client for game servers. It is the only
|
||||
fully supported client for @uref{http://www.themanaworld.org, The mana
|
||||
world}, @uref{http://evolonline.org, Evol Online} and
|
||||
@uref{http://landoffire.org, Land of fire}.")
|
||||
;; "src/debug/*" and "src/sdl2gfx/*" are under Zlib.
|
||||
;; "data/themes/{golden-delicious,jewelry}/*" are under CC-BY-SA.
|
||||
;; The rest is under GPL2+.
|
||||
(license (list license:gpl2+ license:zlib license:cc-by-sa4.0))))
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user