diff options
| author | Ludovic Courtès <ludo@gnu.org> | 2016-07-20 11:42:02 +0200 |
|---|---|---|
| committer | Ludovic Courtès <ludo@gnu.org> | 2016-07-20 11:42:17 +0200 |
| commit | 7575655212ecfbcd1f04e429c8a7a41f8720d027 (patch) | |
| tree | 558982d3cf50ef6b19ef293850de1f485fde66a6 | |
| parent | 5d4c90ae02f1e0b42d575bba2d828d63aaf79be5 (diff) | |
| parent | 5f01078129f4eaa4760a14f22761cf357afb6738 (diff) | |
Merge branch 'master' into core-updates
160 files changed, 7031 insertions, 3550 deletions
diff --git a/.dir-locals.el b/.dir-locals.el index 0873c1d747b..572a35f828f 100644 --- a/.dir-locals.el +++ b/.dir-locals.el | |||
| @@ -41,6 +41,8 @@ | |||
| 41 | (eval . (put 'with-atomic-file-output 'scheme-indent-function 1)) | 41 | (eval . (put 'with-atomic-file-output 'scheme-indent-function 1)) |
| 42 | (eval . (put 'call-with-compressed-output-port 'scheme-indent-function 2)) | 42 | (eval . (put 'call-with-compressed-output-port 'scheme-indent-function 2)) |
| 43 | (eval . (put 'call-with-decompressed-port 'scheme-indent-function 2)) | 43 | (eval . (put 'call-with-decompressed-port 'scheme-indent-function 2)) |
| 44 | (eval . (put 'call-with-gzip-input-port 'scheme-indent-function 1)) | ||
| 45 | (eval . (put 'call-with-gzip-output-port 'scheme-indent-function 1)) | ||
| 44 | (eval . (put 'signature-case 'scheme-indent-function 1)) | 46 | (eval . (put 'signature-case 'scheme-indent-function 1)) |
| 45 | (eval . (put 'emacs-batch-eval 'scheme-indent-function 0)) | 47 | (eval . (put 'emacs-batch-eval 'scheme-indent-function 0)) |
| 46 | (eval . (put 'emacs-batch-edit-file 'scheme-indent-function 1)) | 48 | (eval . (put 'emacs-batch-edit-file 'scheme-indent-function 1)) |
| @@ -59,6 +61,7 @@ | |||
| 59 | (eval . (put 'run-with-store 'scheme-indent-function 1)) | 61 | (eval . (put 'run-with-store 'scheme-indent-function 1)) |
| 60 | (eval . (put 'run-with-state 'scheme-indent-function 1)) | 62 | (eval . (put 'run-with-state 'scheme-indent-function 1)) |
| 61 | (eval . (put 'wrap-program 'scheme-indent-function 1)) | 63 | (eval . (put 'wrap-program 'scheme-indent-function 1)) |
| 64 | (eval . (put 'with-imported-modules 'scheme-indent-function 1)) | ||
| 62 | 65 | ||
| 63 | (eval . (put 'call-with-container 'scheme-indent-function 1)) | 66 | (eval . (put 'call-with-container 'scheme-indent-function 1)) |
| 64 | (eval . (put 'container-excursion 'scheme-indent-function 1)) | 67 | (eval . (put 'container-excursion 'scheme-indent-function 1)) |
diff --git a/.gitignore b/.gitignore index 003412eeab3..6e892ca6875 100644 --- a/.gitignore +++ b/.gitignore | |||
| @@ -35,6 +35,7 @@ | |||
| 35 | /doc/guix.ky | 35 | /doc/guix.ky |
| 36 | /doc/guix.pg | 36 | /doc/guix.pg |
| 37 | /doc/guix.toc | 37 | /doc/guix.toc |
| 38 | /doc/guix.t2p | ||
| 38 | /doc/guix.tp | 39 | /doc/guix.tp |
| 39 | /doc/guix.vr | 40 | /doc/guix.vr |
| 40 | /doc/guix.vrs | 41 | /doc/guix.vrs |
| @@ -30,8 +30,9 @@ Ludovic Courtès <ludo@gnu.org> <ludovic.courtes@inria.fr> | |||
| 30 | Mathieu Lirzin <mthl@gnu.org> <mthl@openmailbox.org> | 30 | Mathieu Lirzin <mthl@gnu.org> <mthl@openmailbox.org> |
| 31 | Mathieu Lirzin <mthl@gnu.org> <mathieu.lirzin@openmailbox.org> | 31 | Mathieu Lirzin <mthl@gnu.org> <mathieu.lirzin@openmailbox.org> |
| 32 | Nikita Karetnikov <nikita@karetnikov.org> <nikita.karetnikov@gmail.com> | 32 | Nikita Karetnikov <nikita@karetnikov.org> <nikita.karetnikov@gmail.com> |
| 33 | Nils Gillmann <ng0@libertad.pw> <niasterisk@grrlz.net> | 33 | ng0 <ng0@we.make.ritual.n0.is> <niasterisk@grrlz.net> |
| 34 | Nils Gillmann <ng0@libertad.pw> <ng@niasterisk.space> | 34 | ng0 <ng0@we.make.ritual.n0.is> <ng@niasterisk.space> |
| 35 | ng0 <ng0@we.make.ritual.n0.is> <ng0@libertad.pw> | ||
| 35 | Pjotr Prins <pjotr.public01@thebird.nl> | 36 | Pjotr Prins <pjotr.public01@thebird.nl> |
| 36 | Pjotr Prins <pjotr.public01@thebird.nl> <pjotr.public12@thebird.nl> | 37 | Pjotr Prins <pjotr.public01@thebird.nl> <pjotr.public12@thebird.nl> |
| 37 | Raimon Grau <raimonster@gmail.com> <raimon@3scale.net> | 38 | Raimon Grau <raimonster@gmail.com> <raimon@3scale.net> |
| @@ -41,3 +42,4 @@ Ricardo Wurmus <rekado@elephly.net> <ricardo.wurmus@mdc-berlin.de> | |||
| 41 | Sou Bunnbu (宋文武) <iyzsong@gmail.com> | 42 | Sou Bunnbu (宋文武) <iyzsong@gmail.com> |
| 42 | Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> | 43 | Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> |
| 43 | Tomáš Čech <sleep_walker@gnu.org> <sleep_walker@suse.cz> | 44 | Tomáš Čech <sleep_walker@gnu.org> <sleep_walker@suse.cz> |
| 45 | Tobias Geerinckx-Rice <me@tobias.gr> <tobias.geerinckx.rice@gmail.com> \ No newline at end of file | ||
| @@ -35,6 +35,10 @@ upgrading GnuTLS or GLib.) We have a mailing list for commit notifications | |||
| 35 | (guix-commits@gnu.org), so people can notice. Before pushing your changes, | 35 | (guix-commits@gnu.org), so people can notice. Before pushing your changes, |
| 36 | make sure to run ‘git pull --rebase’. | 36 | make sure to run ‘git pull --rebase’. |
| 37 | 37 | ||
| 38 | All commits that are pushed to the central repository on Savannah should be | ||
| 39 | signed with a PGP key, and the public key should be uploaded to your user | ||
| 40 | account on Savannah. | ||
| 41 | |||
| 38 | For anything else, please post to guix-devel@gnu.org and leave time for a | 42 | For anything else, please post to guix-devel@gnu.org and leave time for a |
| 39 | review, without committing anything. If you didn’t receive any reply | 43 | review, without committing anything. If you didn’t receive any reply |
| 40 | after two weeks, and if you’re confident, it’s OK to commit. | 44 | after two weeks, and if you’re confident, it’s OK to commit. |
diff --git a/Makefile.am b/Makefile.am index b7792d07219..dc81d32b6c1 100644 --- a/Makefile.am +++ b/Makefile.am | |||
| @@ -57,6 +57,7 @@ MODULES = \ | |||
| 57 | guix/licenses.scm \ | 57 | guix/licenses.scm \ |
| 58 | guix/graph.scm \ | 58 | guix/graph.scm \ |
| 59 | guix/cve.scm \ | 59 | guix/cve.scm \ |
| 60 | guix/zlib.scm \ | ||
| 60 | guix/build-system.scm \ | 61 | guix/build-system.scm \ |
| 61 | guix/build-system/ant.scm \ | 62 | guix/build-system/ant.scm \ |
| 62 | guix/build-system/cmake.scm \ | 63 | guix/build-system/cmake.scm \ |
| @@ -252,6 +253,7 @@ SCM_TESTS = \ | |||
| 252 | tests/graph.scm \ | 253 | tests/graph.scm \ |
| 253 | tests/challenge.scm \ | 254 | tests/challenge.scm \ |
| 254 | tests/cve.scm \ | 255 | tests/cve.scm \ |
| 256 | tests/zlib.scm \ | ||
| 255 | tests/file-systems.scm \ | 257 | tests/file-systems.scm \ |
| 256 | tests/system.scm \ | 258 | tests/system.scm \ |
| 257 | tests/services.scm \ | 259 | tests/services.scm \ |
| @@ -14,6 +14,7 @@ infrastructure help: | |||
| 14 | Alexandru Cojocaru <xojoc@gmx.com> | 14 | Alexandru Cojocaru <xojoc@gmx.com> |
| 15 | Aleix Conchillo Flaqué <aconchillo@gmail.com> | 15 | Aleix Conchillo Flaqué <aconchillo@gmail.com> |
| 16 | Malcolm Cook <MEC@stowers.org> | 16 | Malcolm Cook <MEC@stowers.org> |
| 17 | Thomas Danckaert <thomas.danckaert@gmail.com> | ||
| 17 | Rafael Ferreira <rafael.f.f1@gmail.com> | 18 | Rafael Ferreira <rafael.f.f1@gmail.com> |
| 18 | Christian Grothoff <christian@grothoff.org> | 19 | Christian Grothoff <christian@grothoff.org> |
| 19 | Eric Hanchrow <eric.hanchrow@gmail.com> | 20 | Eric Hanchrow <eric.hanchrow@gmail.com> |
diff --git a/config-daemon.ac b/config-daemon.ac index 803eb536996..f66f31269df 100644 --- a/config-daemon.ac +++ b/config-daemon.ac | |||
| @@ -113,10 +113,10 @@ if test "x$guix_build_daemon" = "xyes"; then | |||
| 113 | dnl Determine the appropriate default list of substitute URLs. | 113 | dnl Determine the appropriate default list of substitute URLs. |
| 114 | GUILE_MODULE_AVAILABLE([have_gnutls], [(gnutls)]) | 114 | GUILE_MODULE_AVAILABLE([have_gnutls], [(gnutls)]) |
| 115 | if test "x$have_gnutls" = "xyes"; then | 115 | if test "x$have_gnutls" = "xyes"; then |
| 116 | guix_substitute_urls="https://mirror.hydra.gnu.org https://hydra.gnu.org" | 116 | guix_substitute_urls="https://mirror.hydra.gnu.org" |
| 117 | else | 117 | else |
| 118 | AC_MSG_WARN([GnuTLS is missing, substitutes will be downloaded in the clear]) | 118 | AC_MSG_WARN([GnuTLS is missing, substitutes will be downloaded in the clear]) |
| 119 | guix_substitute_urls="http://mirror.hydra.gnu.org http://hydra.gnu.org" | 119 | guix_substitute_urls="http://mirror.hydra.gnu.org" |
| 120 | fi | 120 | fi |
| 121 | AC_MSG_CHECKING([for default substitute URLs]) | 121 | AC_MSG_CHECKING([for default substitute URLs]) |
| 122 | AC_MSG_RESULT([$guix_substitute_urls]) | 122 | AC_MSG_RESULT([$guix_substitute_urls]) |
diff --git a/configure.ac b/configure.ac index 1f5c549aee6..20adf85f0b0 100644 --- a/configure.ac +++ b/configure.ac | |||
| @@ -189,6 +189,17 @@ AC_SUBST([LIBGCRYPT_LIBDIR]) | |||
| 189 | 189 | ||
| 190 | GUIX_ASSERT_LIBGCRYPT_USABLE | 190 | GUIX_ASSERT_LIBGCRYPT_USABLE |
| 191 | 191 | ||
| 192 | dnl Library name of zlib suitable for 'dynamic-link'. | ||
| 193 | GUIX_LIBZ_LIBDIR([libz_libdir]) | ||
| 194 | if test "x$libz_libdir" = "x"; then | ||
| 195 | LIBZ="libz" | ||
| 196 | else | ||
| 197 | LIBZ="$libz_libdir/libz" | ||
| 198 | fi | ||
| 199 | AC_MSG_CHECKING([for zlib's shared library name]) | ||
| 200 | AC_MSG_RESULT([$LIBZ]) | ||
| 201 | AC_SUBST([LIBZ]) | ||
| 202 | |||
| 192 | AC_CACHE_SAVE | 203 | AC_CACHE_SAVE |
| 193 | 204 | ||
| 194 | m4_include([config-daemon.ac]) | 205 | m4_include([config-daemon.ac]) |
diff --git a/doc/guix.texi b/doc/guix.texi index 7204f2e9392..318e6cb5d9d 100644 --- a/doc/guix.texi +++ b/doc/guix.texi | |||
| @@ -17,6 +17,7 @@ Copyright @copyright{} 2015, 2016 Mathieu Lirzin@* | |||
| 17 | Copyright @copyright{} 2014 Pierre-Antoine Rault@* | 17 | Copyright @copyright{} 2014 Pierre-Antoine Rault@* |
| 18 | Copyright @copyright{} 2015 Taylan Ulrich Bayırlı/Kammer@* | 18 | Copyright @copyright{} 2015 Taylan Ulrich Bayırlı/Kammer@* |
| 19 | Copyright @copyright{} 2015, 2016 Leo Famulari@* | 19 | Copyright @copyright{} 2015, 2016 Leo Famulari@* |
| 20 | Copyright @copyright{} 2015, 2016 Ricardo Wurmus@* | ||
| 20 | Copyright @copyright{} 2016 Ben Woodcroft@* | 21 | Copyright @copyright{} 2016 Ben Woodcroft@* |
| 21 | Copyright @copyright{} 2016 Chris Marusich@* | 22 | Copyright @copyright{} 2016 Chris Marusich@* |
| 22 | Copyright @copyright{} 2016 Efraim Flashner | 23 | Copyright @copyright{} 2016 Efraim Flashner |
| @@ -546,6 +547,10 @@ Installing | |||
| 546 | allow you to use the @command{guix import pypi} command (@pxref{Invoking | 547 | allow you to use the @command{guix import pypi} command (@pxref{Invoking |
| 547 | guix import}). It is of | 548 | guix import}). It is of |
| 548 | interest primarily for developers and not for casual users. | 549 | interest primarily for developers and not for casual users. |
| 550 | |||
| 551 | @item | ||
| 552 | When @url{http://zlib.net, zlib} is available, @command{guix publish} | ||
| 553 | can compress build byproducts (@pxref{Invoking guix publish}). | ||
| 549 | @end itemize | 554 | @end itemize |
| 550 | 555 | ||
| 551 | Unless @code{--disable-daemon} was passed to @command{configure}, the | 556 | Unless @code{--disable-daemon} was passed to @command{configure}, the |
| @@ -2669,6 +2674,7 @@ Examples include: | |||
| 2669 | download a file from the HTTP, HTTPS, or FTP URL specified in the | 2674 | download a file from the HTTP, HTTPS, or FTP URL specified in the |
| 2670 | @code{uri} field; | 2675 | @code{uri} field; |
| 2671 | 2676 | ||
| 2677 | @vindex git-fetch | ||
| 2672 | @item @var{git-fetch} from @code{(guix git-download)} | 2678 | @item @var{git-fetch} from @code{(guix git-download)} |
| 2673 | clone the Git version control repository, and check out the revision | 2679 | clone the Git version control repository, and check out the revision |
| 2674 | specified in the @code{uri} field as a @code{git-reference} object; a | 2680 | specified in the @code{uri} field as a @code{git-reference} object; a |
| @@ -2686,6 +2692,10 @@ A bytevector containing the SHA-256 hash of the source. Typically the | |||
| 2686 | @code{base32} form is used here to generate the bytevector from a | 2692 | @code{base32} form is used here to generate the bytevector from a |
| 2687 | base-32 string. | 2693 | base-32 string. |
| 2688 | 2694 | ||
| 2695 | You can obtain this information using @code{guix download} | ||
| 2696 | (@pxref{Invoking guix download}) or @code{guix hash} (@pxref{Invoking | ||
| 2697 | guix hash}). | ||
| 2698 | |||
| 2689 | @item @code{file-name} (default: @code{#f}) | 2699 | @item @code{file-name} (default: @code{#f}) |
| 2690 | The file name under which the source code should be saved. When this is | 2700 | The file name under which the source code should be saved. When this is |
| 2691 | @code{#f}, a sensible default value will be used in most cases. In case | 2701 | @code{#f}, a sensible default value will be used in most cases. In case |
| @@ -2697,8 +2707,9 @@ file name explicitly because the default is not very descriptive. | |||
| 2697 | A list of file names containing patches to be applied to the source. | 2707 | A list of file names containing patches to be applied to the source. |
| 2698 | 2708 | ||
| 2699 | @item @code{snippet} (default: @code{#f}) | 2709 | @item @code{snippet} (default: @code{#f}) |
| 2700 | A quoted piece of code that will be run in the source directory to make | 2710 | A G-expression (@pxref{G-Expressions}) or S-expression that will be run |
| 2701 | any modifications, which is sometimes more convenient than a patch. | 2711 | in the source directory. This is a convenient way to modify the source, |
| 2712 | sometimes more convenient than a patch. | ||
| 2702 | 2713 | ||
| 2703 | @item @code{patch-flags} (default: @code{'("-p1")}) | 2714 | @item @code{patch-flags} (default: @code{'("-p1")}) |
| 2704 | A list of command-line flags that should be passed to the @code{patch} | 2715 | A list of command-line flags that should be passed to the @code{patch} |
| @@ -2713,10 +2724,6 @@ such as GNU@tie{}Patch. | |||
| 2713 | A list of Guile modules that should be loaded during the patching | 2724 | A list of Guile modules that should be loaded during the patching |
| 2714 | process and while running the code in the @code{snippet} field. | 2725 | process and while running the code in the @code{snippet} field. |
| 2715 | 2726 | ||
| 2716 | @item @code{imported-modules} (default: @code{'()}) | ||
| 2717 | The list of Guile modules to import in the patch derivation, for use by | ||
| 2718 | the @code{snippet}. | ||
| 2719 | |||
| 2720 | @item @code{patch-guile} (default: @code{#f}) | 2727 | @item @code{patch-guile} (default: @code{#f}) |
| 2721 | The Guile package that should be used in the patching process. When | 2728 | The Guile package that should be used in the patching process. When |
| 2722 | this is @code{#f}, a sensible default is used. | 2729 | this is @code{#f}, a sensible default is used. |
| @@ -3697,6 +3704,30 @@ In the example above, the native build of @var{coreutils} is used, so | |||
| 3697 | that @command{ln} can actually run on the host; but then the | 3704 | that @command{ln} can actually run on the host; but then the |
| 3698 | cross-compiled build of @var{emacs} is referenced. | 3705 | cross-compiled build of @var{emacs} is referenced. |
| 3699 | 3706 | ||
| 3707 | @cindex imported modules, for gexps | ||
| 3708 | @findex with-imported-modules | ||
| 3709 | Another gexp feature is @dfn{imported modules}: sometimes you want to be | ||
| 3710 | able to use certain Guile modules from the ``host environment'' in the | ||
| 3711 | gexp, so those modules should be imported in the ``build environment''. | ||
| 3712 | The @code{with-imported-modules} form allows you to express that: | ||
| 3713 | |||
| 3714 | @example | ||
| 3715 | (let ((build (with-imported-modules '((guix build utils)) | ||
| 3716 | #~(begin | ||
| 3717 | (use-modules (guix build utils)) | ||
| 3718 | (mkdir-p (string-append #$output "/bin")))))) | ||
| 3719 | (gexp->derivation "empty-dir" | ||
| 3720 | #~(begin | ||
| 3721 | #$build | ||
| 3722 | (display "success!\n") | ||
| 3723 | #t))) | ||
| 3724 | @end example | ||
| 3725 | |||
| 3726 | @noindent | ||
| 3727 | In this example, the @code{(guix build utils)} module is automatically | ||
| 3728 | pulled into the isolated build environment of our gexp, such that | ||
| 3729 | @code{(use-modules (guix build utils))} works as expected. | ||
| 3730 | |||
| 3700 | The syntactic form to construct gexps is summarized below. | 3731 | The syntactic form to construct gexps is summarized below. |
| 3701 | 3732 | ||
| 3702 | @deffn {Scheme Syntax} #~@var{exp} | 3733 | @deffn {Scheme Syntax} #~@var{exp} |
| @@ -3756,6 +3787,16 @@ G-expressions created by @code{gexp} or @code{#~} are run-time objects | |||
| 3756 | of the @code{gexp?} type (see below.) | 3787 | of the @code{gexp?} type (see below.) |
| 3757 | @end deffn | 3788 | @end deffn |
| 3758 | 3789 | ||
| 3790 | @deffn {Scheme Syntax} with-imported-modules @var{modules} @var{body}@dots{} | ||
| 3791 | Mark the gexps defined in @var{body}@dots{} as requiring @var{modules} | ||
| 3792 | in their execution environment. @var{modules} must be a list of Guile | ||
| 3793 | module names, such as @code{'((guix build utils) (guix build gremlin))}. | ||
| 3794 | |||
| 3795 | This form has @emph{lexical} scope: it has an effect on the gexps | ||
| 3796 | directly defined in @var{body}@dots{}, but not on those defined, say, in | ||
| 3797 | procedures called from @var{body}@dots{}. | ||
| 3798 | @end deffn | ||
| 3799 | |||
| 3759 | @deffn {Scheme Procedure} gexp? @var{obj} | 3800 | @deffn {Scheme Procedure} gexp? @var{obj} |
| 3760 | Return @code{#t} if @var{obj} is a G-expression. | 3801 | Return @code{#t} if @var{obj} is a G-expression. |
| 3761 | @end deffn | 3802 | @end deffn |
| @@ -3781,7 +3822,9 @@ stored in a file called @var{script-name}. When @var{target} is true, | |||
| 3781 | it is used as the cross-compilation target triplet for packages referred | 3822 | it is used as the cross-compilation target triplet for packages referred |
| 3782 | to by @var{exp}. | 3823 | to by @var{exp}. |
| 3783 | 3824 | ||
| 3784 | Make @var{modules} available in the evaluation context of @var{exp}; | 3825 | @var{modules} is deprecated in favor of @code{with-imported-modules}. |
| 3826 | Its meaning is to | ||
| 3827 | make @var{modules} available in the evaluation context of @var{exp}; | ||
| 3785 | @var{modules} is a list of names of Guile modules searched in | 3828 | @var{modules} is a list of names of Guile modules searched in |
| 3786 | @var{module-path} to be copied in the store, compiled, and made available in | 3829 | @var{module-path} to be copied in the store, compiled, and made available in |
| 3787 | the load path during the execution of @var{exp}---e.g., @code{((guix | 3830 | the load path during the execution of @var{exp}---e.g., @code{((guix |
| @@ -3862,10 +3905,9 @@ This is the declarative counterpart of @code{text-file}. | |||
| 3862 | @end deffn | 3905 | @end deffn |
| 3863 | 3906 | ||
| 3864 | @deffn {Scheme Procedure} computed-file @var{name} @var{gexp} @ | 3907 | @deffn {Scheme Procedure} computed-file @var{name} @var{gexp} @ |
| 3865 | [#:modules '()] [#:options '(#:local-build? #t)] | 3908 | [#:options '(#:local-build? #t)] |
| 3866 | Return an object representing the store item @var{name}, a file or | 3909 | Return an object representing the store item @var{name}, a file or |
| 3867 | directory computed by @var{gexp}. @var{modules} specifies the set of | 3910 | directory computed by @var{gexp}. @var{options} |
| 3868 | modules visible in the execution context of @var{gexp}. @var{options} | ||
| 3869 | is a list of additional arguments to pass to @code{gexp->derivation}. | 3911 | is a list of additional arguments to pass to @code{gexp->derivation}. |
| 3870 | 3912 | ||
| 3871 | This is the declarative counterpart of @code{gexp->derivation}. | 3913 | This is the declarative counterpart of @code{gexp->derivation}. |
| @@ -3873,7 +3915,7 @@ This is the declarative counterpart of @code{gexp->derivation}. | |||
| 3873 | 3915 | ||
| 3874 | @deffn {Monadic Procedure} gexp->script @var{name} @var{exp} | 3916 | @deffn {Monadic Procedure} gexp->script @var{name} @var{exp} |
| 3875 | Return an executable script @var{name} that runs @var{exp} using | 3917 | Return an executable script @var{name} that runs @var{exp} using |
| 3876 | @var{guile} with @var{modules} in its search path. | 3918 | @var{guile}, with @var{exp}'s imported modules in its search path. |
| 3877 | 3919 | ||
| 3878 | The example below builds a script that simply invokes the @command{ls} | 3920 | The example below builds a script that simply invokes the @command{ls} |
| 3879 | command: | 3921 | command: |
| @@ -3899,16 +3941,20 @@ executable file @file{/gnu/store/@dots{}-list-files} along these lines: | |||
| 3899 | @end deffn | 3941 | @end deffn |
| 3900 | 3942 | ||
| 3901 | @deffn {Scheme Procedure} program-file @var{name} @var{exp} @ | 3943 | @deffn {Scheme Procedure} program-file @var{name} @var{exp} @ |
| 3902 | [#:modules '()] [#:guile #f] | 3944 | [#:guile #f] |
| 3903 | Return an object representing the executable store item @var{name} that | 3945 | Return an object representing the executable store item @var{name} that |
| 3904 | runs @var{gexp}. @var{guile} is the Guile package used to execute that | 3946 | runs @var{gexp}. @var{guile} is the Guile package used to execute that |
| 3905 | script, and @var{modules} is the list of modules visible to that script. | 3947 | script. |
| 3906 | 3948 | ||
| 3907 | This is the declarative counterpart of @code{gexp->script}. | 3949 | This is the declarative counterpart of @code{gexp->script}. |
| 3908 | @end deffn | 3950 | @end deffn |
| 3909 | 3951 | ||
| 3910 | @deffn {Monadic Procedure} gexp->file @var{name} @var{exp} | 3952 | @deffn {Monadic Procedure} gexp->file @var{name} @var{exp} @ |
| 3953 | [#:set-load-path? #t] | ||
| 3911 | Return a derivation that builds a file @var{name} containing @var{exp}. | 3954 | Return a derivation that builds a file @var{name} containing @var{exp}. |
| 3955 | When @var{set-load-path?} is true, emit code in the resulting file to | ||
| 3956 | set @code{%load-path} and @code{%load-compiled-path} to honor | ||
| 3957 | @var{exp}'s imported modules. | ||
| 3912 | 3958 | ||
| 3913 | The resulting file holds references to all the dependencies of @var{exp} | 3959 | The resulting file holds references to all the dependencies of @var{exp} |
| 3914 | or a subset thereof. | 3960 | or a subset thereof. |
| @@ -4533,6 +4579,17 @@ hash (@pxref{Invoking guix archive}). | |||
| 4533 | @c FIXME: Replace xref above with xref to an ``Archive'' section when | 4579 | @c FIXME: Replace xref above with xref to an ``Archive'' section when |
| 4534 | @c it exists. | 4580 | @c it exists. |
| 4535 | 4581 | ||
| 4582 | @vindex git-fetch | ||
| 4583 | As an example, here is how you would compute the hash of a Git checkout, | ||
| 4584 | which is useful when using the @code{git-fetch} method (@pxref{origin | ||
| 4585 | Reference}): | ||
| 4586 | |||
| 4587 | @example | ||
| 4588 | $ git clone http://example.org/foo.git | ||
| 4589 | $ cd foo | ||
| 4590 | $ rm -rf .git | ||
| 4591 | $ guix hash -r . | ||
| 4592 | @end example | ||
| 4536 | @end table | 4593 | @end table |
| 4537 | 4594 | ||
| 4538 | @node Invoking guix import | 4595 | @node Invoking guix import |
| @@ -5592,6 +5649,18 @@ accept connections from any interface. | |||
| 5592 | Change privileges to @var{user} as soon as possible---i.e., once the | 5649 | Change privileges to @var{user} as soon as possible---i.e., once the |
| 5593 | server socket is open and the signing key has been read. | 5650 | server socket is open and the signing key has been read. |
| 5594 | 5651 | ||
| 5652 | @item --compression[=@var{level}] | ||
| 5653 | @itemx -C [@var{level}] | ||
| 5654 | Compress data using the given @var{level}. When @var{level} is zero, | ||
| 5655 | disable compression. The range 1 to 9 corresponds to different gzip | ||
| 5656 | compression levels: 1 is the fastest, and 9 is the best (CPU-intensive). | ||
| 5657 | The default is 3. | ||
| 5658 | |||
| 5659 | Compression occurs on the fly and the compressed streams are not | ||
| 5660 | cached. Thus, to reduce load on the machine that runs @command{guix | ||
| 5661 | publish}, it may be a good idea to choose a low compression level, or to | ||
| 5662 | run @command{guix publish} behind a caching proxy. | ||
| 5663 | |||
| 5595 | @item --ttl=@var{ttl} | 5664 | @item --ttl=@var{ttl} |
| 5596 | Produce @code{Cache-Control} HTTP headers that advertise a time-to-live | 5665 | Produce @code{Cache-Control} HTTP headers that advertise a time-to-live |
| 5597 | (TTL) of @var{ttl}. @var{ttl} must denote a duration: @code{5d} means 5 | 5666 | (TTL) of @var{ttl}. @var{ttl} must denote a duration: @code{5d} means 5 |
| @@ -7494,6 +7563,41 @@ created by @command{guix archive --generate-key} (@pxref{Invoking guix | |||
| 7494 | archive}). If that is not the case, the service will fail to start. | 7563 | archive}). If that is not the case, the service will fail to start. |
| 7495 | @end deffn | 7564 | @end deffn |
| 7496 | 7565 | ||
| 7566 | @anchor{rngd-service} | ||
| 7567 | @deffn {Scheme Procedure} rngd-service [#:rng-tools @var{rng-tools}] @ | ||
| 7568 | [#:device "/dev/hwrng"] | ||
| 7569 | Return a service that runs the @command{rngd} program from @var{rng-tools} | ||
| 7570 | to add @var{device} to the kernel's entropy pool. The service will fail if | ||
| 7571 | @var{device} does not exist. | ||
| 7572 | @end deffn | ||
| 7573 | |||
| 7574 | @anchor{pam-limits-service} | ||
| 7575 | @cindex session limits | ||
| 7576 | @cindex ulimit | ||
| 7577 | @cindex priority | ||
| 7578 | @deffn {Scheme Procedure} pam-limits-service [#:limits @var{limits}] | ||
| 7579 | |||
| 7580 | Return a service that installs a configuration file for the | ||
| 7581 | @uref{http://linux-pam.org/Linux-PAM-html/sag-pam_limits.html, | ||
| 7582 | @code{pam_limits} module}. The procedure optionally takes a list of | ||
| 7583 | @code{pam-limits-entry} values, which can be used to specify | ||
| 7584 | @code{ulimit} limits and nice priority limits to user sessions. | ||
| 7585 | |||
| 7586 | The following limits definition sets two hard and soft limits for all | ||
| 7587 | login sessions of users in the @code{realtime} group: | ||
| 7588 | |||
| 7589 | @example | ||
| 7590 | (pam-limits-service | ||
| 7591 | (list | ||
| 7592 | (pam-limits-entry "@@realtime" 'both 'rtprio 99) | ||
| 7593 | (pam-limits-entry "@@realtime" 'both 'memlock 'unlimited))) | ||
| 7594 | @end example | ||
| 7595 | |||
| 7596 | The first entry increases the maximum realtime priority for | ||
| 7597 | non-privileged processes; the second entry lifts any restriction of the | ||
| 7598 | maximum address space that can be locked in memory. These settings are | ||
| 7599 | commonly used for real-time audio systems. | ||
| 7600 | @end deffn | ||
| 7497 | 7601 | ||
| 7498 | @node Scheduled Job Execution | 7602 | @node Scheduled Job Execution |
| 7499 | @subsubsection Scheduled Job Execution | 7603 | @subsubsection Scheduled Job Execution |
| @@ -7602,7 +7706,7 @@ Protocol (DHCP) client, on all the non-loopback network interfaces. | |||
| 7602 | @end deffn | 7706 | @end deffn |
| 7603 | 7707 | ||
| 7604 | @deffn {Scheme Procedure} static-networking-service @var{interface} @var{ip} @ | 7708 | @deffn {Scheme Procedure} static-networking-service @var{interface} @var{ip} @ |
| 7605 | [#:gateway #f] [#:name-services @code{'()}] | 7709 | [#:gateway #f] [#:name-servers @code{'()}] |
| 7606 | Return a service that starts @var{interface} with address @var{ip}. If | 7710 | Return a service that starts @var{interface} with address @var{ip}. If |
| 7607 | @var{gateway} is true, it must be a string specifying the default network | 7711 | @var{gateway} is true, it must be a string specifying the default network |
| 7608 | gateway. | 7712 | gateway. |
| @@ -7695,7 +7799,7 @@ In addition, @var{extra-settings} specifies a string to append to the | |||
| 7695 | configuration file. | 7799 | configuration file. |
| 7696 | @end deffn | 7800 | @end deffn |
| 7697 | 7801 | ||
| 7698 | Furthermore, @code{(gnu services ssh)} provides the following service. | 7802 | Furthermore, @code{(gnu services ssh)} provides the following services. |
| 7699 | 7803 | ||
| 7700 | @deffn {Scheme Procedure} lsh-service [#:host-key "/etc/lsh/host-key"] @ | 7804 | @deffn {Scheme Procedure} lsh-service [#:host-key "/etc/lsh/host-key"] @ |
| 7701 | [#:daemonic? #t] [#:interfaces '()] [#:port-number 22] @ | 7805 | [#:daemonic? #t] [#:interfaces '()] [#:port-number 22] @ |
| @@ -7733,6 +7837,47 @@ root. | |||
| 7733 | The other options should be self-descriptive. | 7837 | The other options should be self-descriptive. |
| 7734 | @end deffn | 7838 | @end deffn |
| 7735 | 7839 | ||
| 7840 | @deffn {Scheme Procedure} dropbear-service [@var{config}] | ||
| 7841 | Run the @uref{https://matt.ucc.asn.au/dropbear/dropbear.html,Dropbear SSH | ||
| 7842 | daemon} with the given @var{config}, a @code{<dropbear-configuration>} | ||
| 7843 | object. | ||
| 7844 | |||
| 7845 | For example, to specify a Dropbear service listening on port 1234, add | ||
| 7846 | this call to the operating system's @code{services} field: | ||
| 7847 | |||
| 7848 | @example | ||
| 7849 | (dropbear-service (dropbear-configuration | ||
| 7850 | (port-number 1234))) | ||
| 7851 | @end example | ||
| 7852 | @end deffn | ||
| 7853 | |||
| 7854 | @deftp {Data Type} dropbear-configuration | ||
| 7855 | This data type represents the configuration of a Dropbear SSH daemon. | ||
| 7856 | |||
| 7857 | @table @asis | ||
| 7858 | @item @code{dropbear} (default: @var{dropbear}) | ||
| 7859 | The Dropbear package to use. | ||
| 7860 | |||
| 7861 | @item @code{port-number} (default: 22) | ||
| 7862 | The TCP port where the daemon waits for incoming connections. | ||
| 7863 | |||
| 7864 | @item @code{syslog-output?} (default: @code{#t}) | ||
| 7865 | Whether to enable syslog output. | ||
| 7866 | |||
| 7867 | @item @code{pid-file} (default: @code{"/var/run/dropbear.pid"}) | ||
| 7868 | File name of the daemon's PID file. | ||
| 7869 | |||
| 7870 | @item @code{root-login?} (default: @code{#f}) | ||
| 7871 | Whether to allow @code{root} logins. | ||
| 7872 | |||
| 7873 | @item @code{allow-empty-passwords?} (default: @code{#f}) | ||
| 7874 | Whether to allow empty passwords. | ||
| 7875 | |||
| 7876 | @item @code{password-authentication?} (default: @code{#t}) | ||
| 7877 | Whether to enable password-based authentication. | ||
| 7878 | @end table | ||
| 7879 | @end deftp | ||
| 7880 | |||
| 7736 | @defvr {Scheme Variable} %facebook-host-aliases | 7881 | @defvr {Scheme Variable} %facebook-host-aliases |
| 7737 | This variable contains a string for use in @file{/etc/hosts} | 7882 | This variable contains a string for use in @file{/etc/hosts} |
| 7738 | (@pxref{Host Names,,, libc, The GNU C Library Reference Manual}). Each | 7883 | (@pxref{Host Names,,, libc, The GNU C Library Reference Manual}). Each |
| @@ -7767,7 +7912,7 @@ The @code{(gnu services avahi)} provides the following definition. | |||
| 7767 | @deffn {Scheme Procedure} avahi-service [#:avahi @var{avahi}] @ | 7912 | @deffn {Scheme Procedure} avahi-service [#:avahi @var{avahi}] @ |
| 7768 | [#:host-name #f] [#:publish? #t] [#:ipv4? #t] @ | 7913 | [#:host-name #f] [#:publish? #t] [#:ipv4? #t] @ |
| 7769 | [#:ipv6? #t] [#:wide-area? #f] @ | 7914 | [#:ipv6? #t] [#:wide-area? #f] @ |
| 7770 | [#:domains-to-browse '()] | 7915 | [#:domains-to-browse '()] [#:debug? #f] |
| 7771 | Return a service that runs @command{avahi-daemon}, a system-wide | 7916 | Return a service that runs @command{avahi-daemon}, a system-wide |
| 7772 | mDNS/DNS-SD responder that allows for service discovery and | 7917 | mDNS/DNS-SD responder that allows for service discovery and |
| 7773 | "zero-configuration" host name lookups (see @uref{http://avahi.org/}), and | 7918 | "zero-configuration" host name lookups (see @uref{http://avahi.org/}), and |
| @@ -9973,15 +10118,11 @@ program. That gives a lot of flexibility. The | |||
| 9973 | program to run in that initrd. | 10118 | program to run in that initrd. |
| 9974 | 10119 | ||
| 9975 | @deffn {Monadic Procedure} expression->initrd @var{exp} @ | 10120 | @deffn {Monadic Procedure} expression->initrd @var{exp} @ |
| 9976 | [#:guile %guile-static-stripped] [#:name "guile-initrd"] @ | 10121 | [#:guile %guile-static-stripped] [#:name "guile-initrd"] |
| 9977 | [#:modules '()] | ||
| 9978 | Return a derivation that builds a Linux initrd (a gzipped cpio archive) | 10122 | Return a derivation that builds a Linux initrd (a gzipped cpio archive) |
| 9979 | containing @var{guile} and that evaluates @var{exp}, a G-expression, | 10123 | containing @var{guile} and that evaluates @var{exp}, a G-expression, |
| 9980 | upon booting. All the derivations referenced by @var{exp} are | 10124 | upon booting. All the derivations referenced by @var{exp} are |
| 9981 | automatically copied to the initrd. | 10125 | automatically copied to the initrd. |
| 9982 | |||
| 9983 | @var{modules} is a list of Guile module names to be embedded in the | ||
| 9984 | initrd. | ||
| 9985 | @end deffn | 10126 | @end deffn |
| 9986 | 10127 | ||
| 9987 | @node GRUB Configuration | 10128 | @node GRUB Configuration |
| @@ -10805,10 +10946,6 @@ where @var{service-name} is one of the symbols in @var{provision} | |||
| 10805 | This is the list of modules that must be in scope when @code{start} and | 10946 | This is the list of modules that must be in scope when @code{start} and |
| 10806 | @code{stop} are evaluated. | 10947 | @code{stop} are evaluated. |
| 10807 | 10948 | ||
| 10808 | @item @code{imported-modules} (default: @var{%default-imported-modules}) | ||
| 10809 | This is the list of modules to import in the execution environment of | ||
| 10810 | the Shepherd. | ||
| 10811 | |||
| 10812 | @end table | 10949 | @end table |
| 10813 | @end deftp | 10950 | @end deftp |
| 10814 | 10951 | ||
diff --git a/emacs/guix-devel.el b/emacs/guix-devel.el index ee8371ce81e..b71670cdfba 100644 --- a/emacs/guix-devel.el +++ b/emacs/guix-devel.el | |||
| @@ -216,6 +216,7 @@ to find 'modify-phases' keywords." | |||
| 216 | "with-derivation-substitute" | 216 | "with-derivation-substitute" |
| 217 | "with-directory-excursion" | 217 | "with-directory-excursion" |
| 218 | "with-error-handling" | 218 | "with-error-handling" |
| 219 | "with-imported-modules" | ||
| 219 | "with-monad" | 220 | "with-monad" |
| 220 | "with-mutex" | 221 | "with-mutex" |
| 221 | "with-store")) | 222 | "with-store")) |
| @@ -306,6 +307,7 @@ Each rule should have a form (SYMBOL VALUE). See `put' for details." | |||
| 306 | (with-derivation-substitute 2) | 307 | (with-derivation-substitute 2) |
| 307 | (with-directory-excursion 1) | 308 | (with-directory-excursion 1) |
| 308 | (with-error-handling 0) | 309 | (with-error-handling 0) |
| 310 | (with-imported-modules 1) | ||
| 309 | (with-monad 1) | 311 | (with-monad 1) |
| 310 | (with-mutex 1) | 312 | (with-mutex 1) |
| 311 | (with-store 1) | 313 | (with-store 1) |
diff --git a/etc/guix-daemon.service.in b/etc/guix-daemon.service.in index fc7c811db62..ab0ce090c3e 100644 --- a/etc/guix-daemon.service.in +++ b/etc/guix-daemon.service.in | |||
| @@ -7,6 +7,7 @@ Description=Build daemon for GNU Guix | |||
| 7 | 7 | ||
| 8 | [Service] | 8 | [Service] |
| 9 | ExecStart=@bindir@/guix-daemon --build-users-group=guixbuild | 9 | ExecStart=@bindir@/guix-daemon --build-users-group=guixbuild |
| 10 | Environment=GUIX_LOCPATH=/root/.guix-profile/lib/locale | ||
| 10 | RemainAfterExit=yes | 11 | RemainAfterExit=yes |
| 11 | StandardOutput=syslog | 12 | StandardOutput=syslog |
| 12 | StandardError=syslog | 13 | StandardError=syslog |
diff --git a/gnu/local.mk b/gnu/local.mk index ce4cdf65c10..29e1e84ae03 100644 --- a/gnu/local.mk +++ b/gnu/local.mk | |||
| @@ -150,6 +150,7 @@ GNU_SYSTEM_MODULES = \ | |||
| 150 | %D%/packages/gnustep.scm \ | 150 | %D%/packages/gnustep.scm \ |
| 151 | %D%/packages/gnuzilla.scm \ | 151 | %D%/packages/gnuzilla.scm \ |
| 152 | %D%/packages/gnu-pw-mgr.scm \ | 152 | %D%/packages/gnu-pw-mgr.scm \ |
| 153 | %D%/packages/golang.scm \ | ||
| 153 | %D%/packages/gperf.scm \ | 154 | %D%/packages/gperf.scm \ |
| 154 | %D%/packages/gprolog.scm \ | 155 | %D%/packages/gprolog.scm \ |
| 155 | %D%/packages/gps.scm \ | 156 | %D%/packages/gps.scm \ |
| @@ -214,7 +215,6 @@ GNU_SYSTEM_MODULES = \ | |||
| 214 | %D%/packages/llvm.scm \ | 215 | %D%/packages/llvm.scm \ |
| 215 | %D%/packages/lout.scm \ | 216 | %D%/packages/lout.scm \ |
| 216 | %D%/packages/logging.scm \ | 217 | %D%/packages/logging.scm \ |
| 217 | %D%/packages/lsh.scm \ | ||
| 218 | %D%/packages/lsof.scm \ | 218 | %D%/packages/lsof.scm \ |
| 219 | %D%/packages/lua.scm \ | 219 | %D%/packages/lua.scm \ |
| 220 | %D%/packages/lxde.scm \ | 220 | %D%/packages/lxde.scm \ |
| @@ -441,7 +441,6 @@ dist_patch_DATA = \ | |||
| 441 | %D%/packages/patches/automake-test-gzip-warning.patch \ | 441 | %D%/packages/patches/automake-test-gzip-warning.patch \ |
| 442 | %D%/packages/patches/avahi-localstatedir.patch \ | 442 | %D%/packages/patches/avahi-localstatedir.patch \ |
| 443 | %D%/packages/patches/avidemux-install-to-lib.patch \ | 443 | %D%/packages/patches/avidemux-install-to-lib.patch \ |
| 444 | %D%/packages/patches/avrdude-fix-libusb.patch \ | ||
| 445 | %D%/packages/patches/awesome-reproducible-png.patch \ | 444 | %D%/packages/patches/awesome-reproducible-png.patch \ |
| 446 | %D%/packages/patches/bash-completion-directories.patch \ | 445 | %D%/packages/patches/bash-completion-directories.patch \ |
| 447 | %D%/packages/patches/beets-image-test-failure.patch \ | 446 | %D%/packages/patches/beets-image-test-failure.patch \ |
| @@ -454,6 +453,7 @@ dist_patch_DATA = \ | |||
| 454 | %D%/packages/patches/cdparanoia-fpic.patch \ | 453 | %D%/packages/patches/cdparanoia-fpic.patch \ |
| 455 | %D%/packages/patches/chmlib-inttypes.patch \ | 454 | %D%/packages/patches/chmlib-inttypes.patch \ |
| 456 | %D%/packages/patches/clang-libc-search-path.patch \ | 455 | %D%/packages/patches/clang-libc-search-path.patch \ |
| 456 | %D%/packages/patches/clang-3.8-libc-search-path.patch \ | ||
| 457 | %D%/packages/patches/clucene-pkgconfig.patch \ | 457 | %D%/packages/patches/clucene-pkgconfig.patch \ |
| 458 | %D%/packages/patches/cmake-fix-tests.patch \ | 458 | %D%/packages/patches/cmake-fix-tests.patch \ |
| 459 | %D%/packages/patches/cpio-gets-undeclared.patch \ | 459 | %D%/packages/patches/cpio-gets-undeclared.patch \ |
| @@ -511,10 +511,16 @@ dist_patch_DATA = \ | |||
| 511 | %D%/packages/patches/gcc-cross-environment-variables.patch \ | 511 | %D%/packages/patches/gcc-cross-environment-variables.patch \ |
| 512 | %D%/packages/patches/gcc-libvtv-runpath.patch \ | 512 | %D%/packages/patches/gcc-libvtv-runpath.patch \ |
| 513 | %D%/packages/patches/gcc-5.0-libvtv-runpath.patch \ | 513 | %D%/packages/patches/gcc-5.0-libvtv-runpath.patch \ |
| 514 | %D%/packages/patches/gd-CVE-2016-5766.patch \ | ||
| 515 | %D%/packages/patches/gd-CVE-2016-6128.patch \ | ||
| 516 | %D%/packages/patches/gd-CVE-2016-6132.patch \ | ||
| 517 | %D%/packages/patches/gd-CVE-2016-6214.patch \ | ||
| 518 | %D%/packages/patches/gd-fix-test-on-i686.patch \ | ||
| 514 | %D%/packages/patches/gegl-CVE-2012-4433.patch \ | 519 | %D%/packages/patches/gegl-CVE-2012-4433.patch \ |
| 515 | %D%/packages/patches/geoclue-config.patch \ | 520 | %D%/packages/patches/geoclue-config.patch \ |
| 516 | %D%/packages/patches/ghostscript-CVE-2015-3228.patch \ | 521 | %D%/packages/patches/ghostscript-CVE-2015-3228.patch \ |
| 517 | %D%/packages/patches/ghostscript-runpath.patch \ | 522 | %D%/packages/patches/ghostscript-runpath.patch \ |
| 523 | %D%/packages/patches/gimp-CVE-2016-4994.patch \ | ||
| 518 | %D%/packages/patches/glib-networking-ssl-cert-file.patch \ | 524 | %D%/packages/patches/glib-networking-ssl-cert-file.patch \ |
| 519 | %D%/packages/patches/glib-tests-timer.patch \ | 525 | %D%/packages/patches/glib-tests-timer.patch \ |
| 520 | %D%/packages/patches/glibc-bootstrap-system.patch \ | 526 | %D%/packages/patches/glibc-bootstrap-system.patch \ |
| @@ -590,6 +596,7 @@ dist_patch_DATA = \ | |||
| 590 | %D%/packages/patches/jasper-CVE-2016-2089.patch \ | 596 | %D%/packages/patches/jasper-CVE-2016-2089.patch \ |
| 591 | %D%/packages/patches/jasper-CVE-2016-2116.patch \ | 597 | %D%/packages/patches/jasper-CVE-2016-2116.patch \ |
| 592 | %D%/packages/patches/jbig2dec-ignore-testtest.patch \ | 598 | %D%/packages/patches/jbig2dec-ignore-testtest.patch \ |
| 599 | %D%/packages/patches/khmer-use-libraries.patch \ | ||
| 593 | %D%/packages/patches/kmod-module-directory.patch \ | 600 | %D%/packages/patches/kmod-module-directory.patch \ |
| 594 | %D%/packages/patches/ldc-disable-tests.patch \ | 601 | %D%/packages/patches/ldc-disable-tests.patch \ |
| 595 | %D%/packages/patches/lftp-dont-save-unknown-host-fingerprint.patch \ | 602 | %D%/packages/patches/lftp-dont-save-unknown-host-fingerprint.patch \ |
| @@ -603,7 +610,6 @@ dist_patch_DATA = \ | |||
| 603 | %D%/packages/patches/libdrm-symbol-check.patch \ | 610 | %D%/packages/patches/libdrm-symbol-check.patch \ |
| 604 | %D%/packages/patches/libevent-dns-tests.patch \ | 611 | %D%/packages/patches/libevent-dns-tests.patch \ |
| 605 | %D%/packages/patches/libextractor-ffmpeg-3.patch \ | 612 | %D%/packages/patches/libextractor-ffmpeg-3.patch \ |
| 606 | %D%/packages/patches/libmtp-devices.patch \ | ||
| 607 | %D%/packages/patches/liboop-mips64-deplibs-fix.patch \ | 613 | %D%/packages/patches/liboop-mips64-deplibs-fix.patch \ |
| 608 | %D%/packages/patches/libotr-test-auth-fix.patch \ | 614 | %D%/packages/patches/libotr-test-auth-fix.patch \ |
| 609 | %D%/packages/patches/liblxqt-include.patch \ | 615 | %D%/packages/patches/liblxqt-include.patch \ |
| @@ -673,7 +679,6 @@ dist_patch_DATA = \ | |||
| 673 | %D%/packages/patches/ocaml-CVE-2015-8869.patch \ | 679 | %D%/packages/patches/ocaml-CVE-2015-8869.patch \ |
| 674 | %D%/packages/patches/ocaml-findlib-make-install.patch \ | 680 | %D%/packages/patches/ocaml-findlib-make-install.patch \ |
| 675 | %D%/packages/patches/openexr-missing-samples.patch \ | 681 | %D%/packages/patches/openexr-missing-samples.patch \ |
| 676 | %D%/packages/patches/openimageio-boost-1.60.patch \ | ||
| 677 | %D%/packages/patches/openjpeg-CVE-2015-6581.patch \ | 682 | %D%/packages/patches/openjpeg-CVE-2015-6581.patch \ |
| 678 | %D%/packages/patches/openjpeg-use-after-free-fix.patch \ | 683 | %D%/packages/patches/openjpeg-use-after-free-fix.patch \ |
| 679 | %D%/packages/patches/openssh-CVE-2015-8325.patch \ | 684 | %D%/packages/patches/openssh-CVE-2015-8325.patch \ |
| @@ -729,6 +734,7 @@ dist_patch_DATA = \ | |||
| 729 | %D%/packages/patches/python-2.7-source-date-epoch.patch \ | 734 | %D%/packages/patches/python-2.7-source-date-epoch.patch \ |
| 730 | %D%/packages/patches/python-3-deterministic-build-info.patch \ | 735 | %D%/packages/patches/python-3-deterministic-build-info.patch \ |
| 731 | %D%/packages/patches/python-3-search-paths.patch \ | 736 | %D%/packages/patches/python-3-search-paths.patch \ |
| 737 | %D%/packages/patches/python-dendropy-exclude-failing-tests.patch \ | ||
| 732 | %D%/packages/patches/python-disable-ssl-test.patch \ | 738 | %D%/packages/patches/python-disable-ssl-test.patch \ |
| 733 | %D%/packages/patches/python-fix-tests.patch \ | 739 | %D%/packages/patches/python-fix-tests.patch \ |
| 734 | %D%/packages/patches/python-ipython-inputhook-ctype.patch \ | 740 | %D%/packages/patches/python-ipython-inputhook-ctype.patch \ |
| @@ -760,7 +766,6 @@ dist_patch_DATA = \ | |||
| 760 | %D%/packages/patches/slim-sigusr1.patch \ | 766 | %D%/packages/patches/slim-sigusr1.patch \ |
| 761 | %D%/packages/patches/slurm-configure-remove-nonfree-contribs.patch \ | 767 | %D%/packages/patches/slurm-configure-remove-nonfree-contribs.patch \ |
| 762 | %D%/packages/patches/soprano-find-clucene.patch \ | 768 | %D%/packages/patches/soprano-find-clucene.patch \ |
| 763 | %D%/packages/patches/sudo-CVE-2015-5602.patch \ | ||
| 764 | %D%/packages/patches/superlu-dist-scotchmetis.patch \ | 769 | %D%/packages/patches/superlu-dist-scotchmetis.patch \ |
| 765 | %D%/packages/patches/synfig-build-fix.patch \ | 770 | %D%/packages/patches/synfig-build-fix.patch \ |
| 766 | %D%/packages/patches/t1lib-CVE-2010-2642.patch \ | 771 | %D%/packages/patches/t1lib-CVE-2010-2642.patch \ |
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 415a35aab3e..1d08be9e139 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm | |||
| @@ -11,6 +11,7 @@ | |||
| 11 | ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> | 11 | ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> |
| 12 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | 12 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> |
| 13 | ;;; Copyright © 2016 Peter Feigl <peter.feigl@nexoid.at> | 13 | ;;; Copyright © 2016 Peter Feigl <peter.feigl@nexoid.at> |
| 14 | ;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net> | ||
| 14 | ;;; | 15 | ;;; |
| 15 | ;;; This file is part of GNU Guix. | 16 | ;;; This file is part of GNU Guix. |
| 16 | ;;; | 17 | ;;; |
| @@ -789,18 +790,17 @@ system administrator.") | |||
| 789 | (define-public sudo | 790 | (define-public sudo |
| 790 | (package | 791 | (package |
| 791 | (name "sudo") | 792 | (name "sudo") |
| 792 | (version "1.8.15") | 793 | (version "1.8.17p1") |
| 793 | (source (origin | 794 | (source (origin |
| 794 | (method url-fetch) | 795 | (method url-fetch) |
| 795 | (uri | 796 | (uri |
| 796 | (list (string-append "http://www.sudo.ws/sudo/dist/sudo-" | 797 | (list (string-append "https://www.sudo.ws/sudo/dist/sudo-" |
| 797 | version ".tar.gz") | 798 | version ".tar.gz") |
| 798 | (string-append "ftp://ftp.sudo.ws/pub/sudo/OLD/sudo-" | 799 | (string-append "ftp://ftp.sudo.ws/pub/sudo/OLD/sudo-" |
| 799 | version ".tar.gz"))) | 800 | version ".tar.gz"))) |
| 800 | (sha256 | 801 | (sha256 |
| 801 | (base32 | 802 | (base32 |
| 802 | "0263gi6i19fyzzc488n0qw3m518i39f6a7qmrfvahk9j10bkh5j3")) | 803 | "1k2mn65l1kmsxm8wh0gjxy496xhbpiimbpm6yv6kw6snzc3xg466")))) |
| 803 | (patches (search-patches "sudo-CVE-2015-5602.patch")))) | ||
| 804 | (build-system gnu-build-system) | 804 | (build-system gnu-build-system) |
| 805 | (arguments | 805 | (arguments |
| 806 | `(#:configure-flags | 806 | `(#:configure-flags |
| @@ -849,7 +849,7 @@ system administrator.") | |||
| 849 | `(("groff" ,groff) | 849 | `(("groff" ,groff) |
| 850 | ("linux-pam" ,linux-pam) | 850 | ("linux-pam" ,linux-pam) |
| 851 | ("coreutils" ,coreutils))) | 851 | ("coreutils" ,coreutils))) |
| 852 | (home-page "http://www.sudo.ws/") | 852 | (home-page "https://www.sudo.ws/") |
| 853 | (synopsis "Run commands as root") | 853 | (synopsis "Run commands as root") |
| 854 | (description | 854 | (description |
| 855 | "Sudo (su \"do\") allows a system administrator to delegate authority to | 855 | "Sudo (su \"do\") allows a system administrator to delegate authority to |
| @@ -1139,19 +1139,20 @@ characters can be replaced as well, as can UTF-8 characters.") | |||
| 1139 | (define-public testdisk | 1139 | (define-public testdisk |
| 1140 | (package | 1140 | (package |
| 1141 | (name "testdisk") | 1141 | (name "testdisk") |
| 1142 | (version "6.14") | 1142 | (version "7.0") |
| 1143 | (source (origin | 1143 | (source (origin |
| 1144 | (method url-fetch) | 1144 | (method url-fetch) |
| 1145 | (uri (string-append "http://www.cgsecurity.org/testdisk-" | 1145 | (uri (string-append "http://www.cgsecurity.org/testdisk-" |
| 1146 | version ".tar.bz2")) | 1146 | version ".tar.bz2")) |
| 1147 | (sha256 | 1147 | (sha256 |
| 1148 | (base32 | 1148 | (base32 |
| 1149 | "0v1jap83f5h99zv01v3qmqm160d36n4ysi0gyq7xzb3mqgmw75x5")))) | 1149 | "0ba4wfz2qrf60vwvb1qsq9l6j0pgg81qgf7fh22siaz649mkpfq0")))) |
| 1150 | (build-system gnu-build-system) | 1150 | (build-system gnu-build-system) |
| 1151 | (inputs | 1151 | (inputs |
| 1152 | `(;; ("ntfs" ,ntfs) | 1152 | `(("ntfs-3g" ,ntfs-3g) |
| 1153 | ("util-linux" ,util-linux) | 1153 | ("util-linux" ,util-linux) |
| 1154 | ("openssl" ,openssl) | 1154 | ("openssl" ,openssl) |
| 1155 | ;; FIXME: add reiserfs | ||
| 1155 | ("zlib" ,zlib) | 1156 | ("zlib" ,zlib) |
| 1156 | ("e2fsprogs" ,e2fsprogs) | 1157 | ("e2fsprogs" ,e2fsprogs) |
| 1157 | ("libjpeg" ,libjpeg) | 1158 | ("libjpeg" ,libjpeg) |
| @@ -1345,17 +1346,14 @@ of supported upstream metrics systems simultaneously.") | |||
| 1345 | (define-public ansible | 1346 | (define-public ansible |
| 1346 | (package | 1347 | (package |
| 1347 | (name "ansible") | 1348 | (name "ansible") |
| 1348 | (version "1.9.2") | 1349 | (version "2.1.0.0") |
| 1349 | (source | 1350 | (source |
| 1350 | (origin | 1351 | (origin |
| 1351 | (method url-fetch) | 1352 | (method url-fetch) |
| 1352 | (uri (string-append | 1353 | (uri (pypi-uri "ansible" version)) |
| 1353 | "https://pypi.python.org/packages/source/a/ansible/ansible-" | ||
| 1354 | version | ||
| 1355 | ".tar.gz")) | ||
| 1356 | (sha256 | 1354 | (sha256 |
| 1357 | (base32 | 1355 | (base32 |
| 1358 | "007fzgsqaahb0y4gjdxxmir9kcni7wph2z14jhqgpz88idrz8pn2")))) | 1356 | "1bfc2xiplpad6f2nwi48y0kps7xqnsll85dlz63cy8k5bysl6d20")))) |
| 1359 | (build-system python-build-system) | 1357 | (build-system python-build-system) |
| 1360 | (native-inputs | 1358 | (native-inputs |
| 1361 | `(("python2-setuptools" ,python2-setuptools) | 1359 | `(("python2-setuptools" ,python2-setuptools) |
| @@ -1708,3 +1706,34 @@ throughput (in the same interval).") | |||
| 1708 | "The Fuck tries to match a rule for a previous, mistyped command, creates | 1706 | "The Fuck tries to match a rule for a previous, mistyped command, creates |
| 1709 | a new command using the matched rule, and runs it.") | 1707 | a new command using the matched rule, and runs it.") |
| 1710 | (license license:x11))) | 1708 | (license license:x11))) |
| 1709 | |||
| 1710 | (define-public di | ||
| 1711 | (package | ||
| 1712 | (name "di") | ||
| 1713 | (version "4.42") | ||
| 1714 | (source | ||
| 1715 | (origin | ||
| 1716 | (method url-fetch) | ||
| 1717 | (uri (string-append "https://gentoo.com/di/di-" version ".tar.gz")) | ||
| 1718 | (sha256 | ||
| 1719 | (base32 "1i6m9zdnidn8268q1lz9fd8payk7s4pgwh5zlam9rr4dy6h6a67n")))) | ||
| 1720 | (build-system gnu-build-system) | ||
| 1721 | (arguments | ||
| 1722 | `(#:tests? #f ; Obscure test failures. | ||
| 1723 | #:phases | ||
| 1724 | (modify-phases %standard-phases | ||
| 1725 | (delete 'configure) | ||
| 1726 | (add-before 'build 'setup-environment | ||
| 1727 | (lambda* (#:key outputs #:allow-other-keys) | ||
| 1728 | (setenv "CC" "gcc") | ||
| 1729 | (setenv "prefix" (assoc-ref outputs "out")) | ||
| 1730 | #t))) | ||
| 1731 | #:make-flags (list "--environment-overrides"))) | ||
| 1732 | (home-page "https://www.gentoo.com/di/") | ||
| 1733 | (synopsis "Advanced df like disk information utility") | ||
| 1734 | (description | ||
| 1735 | "'di' is a disk information utility, displaying everything | ||
| 1736 | (and more) that your @code{df} command does. It features the ability to | ||
| 1737 | display your disk usage in whatever format you prefer. It is designed to be | ||
| 1738 | highly portable. Great for heterogenous networks.") | ||
| 1739 | (license license:zlib))) | ||
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm index b0ffd7009bc..92b4d4c27ed 100644 --- a/gnu/packages/algebra.scm +++ b/gnu/packages/algebra.scm | |||
| @@ -202,7 +202,7 @@ GP2C, the GP to C compiler, translates GP scripts to PARI programs.") | |||
| 202 | (define-public giac-xcas | 202 | (define-public giac-xcas |
| 203 | (package | 203 | (package |
| 204 | (name "giac-xcas") | 204 | (name "giac-xcas") |
| 205 | (version "1.2.2-59") | 205 | (version "1.2.2-75") |
| 206 | (source (origin | 206 | (source (origin |
| 207 | (method url-fetch) | 207 | (method url-fetch) |
| 208 | ;; "~parisse/giac" is not used because the maintainer regularly | 208 | ;; "~parisse/giac" is not used because the maintainer regularly |
| @@ -214,7 +214,7 @@ GP2C, the GP to C compiler, translates GP scripts to PARI programs.") | |||
| 214 | "source/giac_" version ".tar.gz")) | 214 | "source/giac_" version ".tar.gz")) |
| 215 | (sha256 | 215 | (sha256 |
| 216 | (base32 | 216 | (base32 |
| 217 | "02s774v2zg2ya43rm8s7bcwzrmp4wlmn8h2rlg4816zpfrjkrdn4")))) | 217 | "0vs111fkd900wkm7yypaxmplc8i8j63d9shc3fbdhddn7cdj70b1")))) |
| 218 | (build-system gnu-build-system) | 218 | (build-system gnu-build-system) |
| 219 | (arguments | 219 | (arguments |
| 220 | `(#:phases | 220 | `(#:phases |
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index eb36238b440..956ead4d5aa 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm | |||
| @@ -407,17 +407,14 @@ detection, and lossless compression.") | |||
| 407 | (define-public borg | 407 | (define-public borg |
| 408 | (package | 408 | (package |
| 409 | (name "borg") | 409 | (name "borg") |
| 410 | (version "1.0.3") | 410 | (version "1.0.6") |
| 411 | (source (origin | 411 | (source (origin |
| 412 | (method url-fetch) | 412 | (method url-fetch) |
| 413 | (uri (string-append | 413 | (uri (pypi-uri "borgbackup" version)) |
| 414 | "https://pypi.python.org/packages/" | ||
| 415 | "c9/c6/1efc338724b054d4d264dfeadfcba11cefa6c3c50f474cec91b8f0c21d3a" | ||
| 416 | "/borgbackup-" version ".tar.gz")) | ||
| 417 | 414 | ||
| 418 | (sha256 | 415 | (sha256 |
| 419 | (base32 | 416 | (base32 |
| 420 | "0kzr0xa00yjfxx27aipli67qg5ffj52yrnqhpf3sdy6k5wzwaybs")))) | 417 | "1dxn9p4xm0zd32xzzd9hs4a542db34clykrrnnv3hrdnc394895p")))) |
| 421 | (build-system python-build-system) | 418 | (build-system python-build-system) |
| 422 | (arguments | 419 | (arguments |
| 423 | `(#:phases | 420 | `(#:phases |
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index f5e72851938..1cbf85ff6cd 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm | |||
| @@ -27,6 +27,7 @@ | |||
| 27 | #:use-module (guix utils) | 27 | #:use-module (guix utils) |
| 28 | #:use-module (guix download) | 28 | #:use-module (guix download) |
| 29 | #:use-module (guix git-download) | 29 | #:use-module (guix git-download) |
| 30 | #:use-module (guix hg-download) | ||
| 30 | #:use-module (guix build-system ant) | 31 | #:use-module (guix build-system ant) |
| 31 | #:use-module (guix build-system gnu) | 32 | #:use-module (guix build-system gnu) |
| 32 | #:use-module (guix build-system cmake) | 33 | #:use-module (guix build-system cmake) |
| @@ -49,18 +50,23 @@ | |||
| 49 | #:use-module (gnu packages file) | 50 | #:use-module (gnu packages file) |
| 50 | #:use-module (gnu packages gawk) | 51 | #:use-module (gnu packages gawk) |
| 51 | #:use-module (gnu packages gcc) | 52 | #:use-module (gnu packages gcc) |
| 53 | #:use-module (gnu packages gd) | ||
| 54 | #:use-module (gnu packages image) | ||
| 52 | #:use-module (gnu packages java) | 55 | #:use-module (gnu packages java) |
| 53 | #:use-module (gnu packages linux) | 56 | #:use-module (gnu packages linux) |
| 57 | #:use-module (gnu packages logging) | ||
| 54 | #:use-module (gnu packages machine-learning) | 58 | #:use-module (gnu packages machine-learning) |
| 55 | #:use-module (gnu packages maths) | 59 | #:use-module (gnu packages maths) |
| 56 | #:use-module (gnu packages mpi) | 60 | #:use-module (gnu packages mpi) |
| 57 | #:use-module (gnu packages ncurses) | 61 | #:use-module (gnu packages ncurses) |
| 58 | #:use-module (gnu packages pcre) | 62 | #:use-module (gnu packages pcre) |
| 63 | #:use-module (gnu packages pdf) | ||
| 59 | #:use-module (gnu packages perl) | 64 | #:use-module (gnu packages perl) |
| 60 | #:use-module (gnu packages pkg-config) | 65 | #:use-module (gnu packages pkg-config) |
| 61 | #:use-module (gnu packages popt) | 66 | #:use-module (gnu packages popt) |
| 62 | #:use-module (gnu packages protobuf) | 67 | #:use-module (gnu packages protobuf) |
| 63 | #:use-module (gnu packages python) | 68 | #:use-module (gnu packages python) |
| 69 | #:use-module (gnu packages readline) | ||
| 64 | #:use-module (gnu packages ruby) | 70 | #:use-module (gnu packages ruby) |
| 65 | #:use-module (gnu packages statistics) | 71 | #:use-module (gnu packages statistics) |
| 66 | #:use-module (gnu packages tbb) | 72 | #:use-module (gnu packages tbb) |
| @@ -70,6 +76,7 @@ | |||
| 70 | #:use-module (gnu packages vim) | 76 | #:use-module (gnu packages vim) |
| 71 | #:use-module (gnu packages web) | 77 | #:use-module (gnu packages web) |
| 72 | #:use-module (gnu packages xml) | 78 | #:use-module (gnu packages xml) |
| 79 | #:use-module (gnu packages xorg) | ||
| 73 | #:use-module (gnu packages zip) | 80 | #:use-module (gnu packages zip) |
| 74 | #:use-module (srfi srfi-1)) | 81 | #:use-module (srfi srfi-1)) |
| 75 | 82 | ||
| @@ -215,7 +222,7 @@ computational cluster.") | |||
| 215 | (define-public bedtools | 222 | (define-public bedtools |
| 216 | (package | 223 | (package |
| 217 | (name "bedtools") | 224 | (name "bedtools") |
| 218 | (version "2.25.0") | 225 | (version "2.26.0") |
| 219 | (source (origin | 226 | (source (origin |
| 220 | (method url-fetch) | 227 | (method url-fetch) |
| 221 | (uri (string-append "https://github.com/arq5x/bedtools2/archive/v" | 228 | (uri (string-append "https://github.com/arq5x/bedtools2/archive/v" |
| @@ -223,7 +230,7 @@ computational cluster.") | |||
| 223 | (file-name (string-append name "-" version ".tar.gz")) | 230 | (file-name (string-append name "-" version ".tar.gz")) |
| 224 | (sha256 | 231 | (sha256 |
| 225 | (base32 | 232 | (base32 |
| 226 | "1ywcy3yfwzhl905b51l0ffjia55h75vv3mw5xkvib04pp6pj548m")))) | 233 | "0xvri5hnp2iim1cx6mcd5d9f102p5ql41x69rd6106x1c17pinqm")))) |
| 227 | (build-system gnu-build-system) | 234 | (build-system gnu-build-system) |
| 228 | (native-inputs `(("python" ,python-2))) | 235 | (native-inputs `(("python" ,python-2))) |
| 229 | (inputs `(("samtools" ,samtools) | 236 | (inputs `(("samtools" ,samtools) |
| @@ -251,6 +258,51 @@ intervals from multiple files in widely-used genomic file formats such as BAM, | |||
| 251 | BED, GFF/GTF, VCF.") | 258 | BED, GFF/GTF, VCF.") |
| 252 | (license license:gpl2))) | 259 | (license license:gpl2))) |
| 253 | 260 | ||
| 261 | ;; Later releases of bedtools produce files with more columns than | ||
| 262 | ;; what Ribotaper expects. | ||
| 263 | (define-public bedtools-2.18 | ||
| 264 | (package (inherit bedtools) | ||
| 265 | (name "bedtools") | ||
| 266 | (version "2.18.0") | ||
| 267 | (source (origin | ||
| 268 | (method url-fetch) | ||
| 269 | (uri (string-append "https://github.com/arq5x/bedtools2/" | ||
| 270 | "archive/v" version ".tar.gz")) | ||
| 271 | (file-name (string-append name "-" version ".tar.gz")) | ||
| 272 | (sha256 | ||
| 273 | (base32 | ||
| 274 | "05vrnr8yp7swfagshzpgqmzk1blnwnq8pq5pckzi1m26w98d63vf")))))) | ||
| 275 | |||
| 276 | (define-public ribotaper | ||
| 277 | (package | ||
| 278 | (name "ribotaper") | ||
| 279 | (version "1.3.1") | ||
| 280 | (source (origin | ||
| 281 | (method url-fetch) | ||
| 282 | (uri (string-append "https://ohlerlab.mdc-berlin.de/" | ||
| 283 | "files/RiboTaper/RiboTaper_Version_" | ||
| 284 | version ".tar.gz")) | ||
| 285 | (sha256 | ||
| 286 | (base32 | ||
| 287 | "0ykjbps1y3z3085q94npw8i9x5gldc6shy8vlc08v76zljsm07hv")))) | ||
| 288 | (build-system gnu-build-system) | ||
| 289 | (inputs | ||
| 290 | `(("bedtools" ,bedtools-2.18) | ||
| 291 | ("samtools" ,samtools-0.1) | ||
| 292 | ("r" ,r) | ||
| 293 | ("r-foreach" ,r-foreach) | ||
| 294 | ("r-xnomial" ,r-xnomial) | ||
| 295 | ("r-domc" ,r-domc) | ||
| 296 | ("r-multitaper" ,r-multitaper) | ||
| 297 | ("r-seqinr" ,r-seqinr))) | ||
| 298 | (home-page "https://ohlerlab.mdc-berlin.de/software/RiboTaper_126/") | ||
| 299 | (synopsis "Define translated ORFs using ribosome profiling data") | ||
| 300 | (description | ||
| 301 | "Ribotaper is a method for defining translated @dfn{open reading | ||
| 302 | frames} (ORFs) using ribosome profiling (ribo-seq) data. This package | ||
| 303 | provides the Ribotaper pipeline.") | ||
| 304 | (license license:gpl3+))) | ||
| 305 | |||
| 254 | (define-public bioawk | 306 | (define-public bioawk |
| 255 | (package | 307 | (package |
| 256 | (name "bioawk") | 308 | (name "bioawk") |
| @@ -421,7 +473,7 @@ into separate processes; and more.") | |||
| 421 | (define-public blast+ | 473 | (define-public blast+ |
| 422 | (package | 474 | (package |
| 423 | (name "blast+") | 475 | (name "blast+") |
| 424 | (version "2.2.31") | 476 | (version "2.4.0") |
| 425 | (source (origin | 477 | (source (origin |
| 426 | (method url-fetch) | 478 | (method url-fetch) |
| 427 | (uri (string-append | 479 | (uri (string-append |
| @@ -429,7 +481,7 @@ into separate processes; and more.") | |||
| 429 | version "/ncbi-blast-" version "+-src.tar.gz")) | 481 | version "/ncbi-blast-" version "+-src.tar.gz")) |
| 430 | (sha256 | 482 | (sha256 |
| 431 | (base32 | 483 | (base32 |
| 432 | "19gq6as4k1jrgsd26158ads6h7v4jca3h4r5dzg1y0m6ya50x5ph")) | 484 | "14n9jik6vhiwjd3m7bach4xj1pzfn0szbsbyfxybd9l9cc43b6mb")) |
| 433 | (modules '((guix build utils))) | 485 | (modules '((guix build utils))) |
| 434 | (snippet | 486 | (snippet |
| 435 | '(begin | 487 | '(begin |
| @@ -1439,6 +1491,40 @@ accessing bigWig files.") | |||
| 1439 | (native-inputs | 1491 | (native-inputs |
| 1440 | `(("python-setuptools" ,python2-setuptools)))))) | 1492 | `(("python-setuptools" ,python2-setuptools)))))) |
| 1441 | 1493 | ||
| 1494 | (define-public python-dendropy | ||
| 1495 | (package | ||
| 1496 | (name "python-dendropy") | ||
| 1497 | (version "4.1.0") | ||
| 1498 | (source | ||
| 1499 | (origin | ||
| 1500 | (method url-fetch) | ||
| 1501 | (uri (pypi-uri "DendroPy" version)) | ||
| 1502 | (sha256 | ||
| 1503 | (base32 | ||
| 1504 | "1jfz7gp18wph311w1yygbvjanb3n5mdqal439bb6myw41dwb5m63")) | ||
| 1505 | ;; There are two known test failures that will be fixed in the next | ||
| 1506 | ;; release after 4.1.0. | ||
| 1507 | ;; https://github.com/jeetsukumaran/DendroPy/issues/48 | ||
| 1508 | (patches (search-patches | ||
| 1509 | "python-dendropy-exclude-failing-tests.patch")))) | ||
| 1510 | (build-system python-build-system) | ||
| 1511 | (home-page "http://packages.python.org/DendroPy/") | ||
| 1512 | (synopsis "Library for phylogenetics and phylogenetic computing") | ||
| 1513 | (description | ||
| 1514 | "DendroPy is a library for phylogenetics and phylogenetic computing: reading, | ||
| 1515 | writing, simulation, processing and manipulation of phylogenetic | ||
| 1516 | trees (phylogenies) and characters.") | ||
| 1517 | (license license:bsd-3) | ||
| 1518 | (properties `((python2-variant . ,(delay python2-dendropy)))))) | ||
| 1519 | |||
| 1520 | (define-public python2-dendropy | ||
| 1521 | (let ((base (package-with-python2 (strip-python2-variant python-dendropy)))) | ||
| 1522 | (package | ||
| 1523 | (inherit base) | ||
| 1524 | (native-inputs `(("python2-setuptools" ,python2-setuptools) | ||
| 1525 | ,@(package-native-inputs base)))))) | ||
| 1526 | |||
| 1527 | |||
| 1442 | (define-public deeptools | 1528 | (define-public deeptools |
| 1443 | (package | 1529 | (package |
| 1444 | (name "deeptools") | 1530 | (name "deeptools") |
| @@ -1482,7 +1568,7 @@ identify enrichments with functional annotations of the genome.") | |||
| 1482 | (define-public diamond | 1568 | (define-public diamond |
| 1483 | (package | 1569 | (package |
| 1484 | (name "diamond") | 1570 | (name "diamond") |
| 1485 | (version "0.8.7") | 1571 | (version "0.8.15") |
| 1486 | (source (origin | 1572 | (source (origin |
| 1487 | (method url-fetch) | 1573 | (method url-fetch) |
| 1488 | (uri (string-append | 1574 | (uri (string-append |
| @@ -1491,7 +1577,7 @@ identify enrichments with functional annotations of the genome.") | |||
| 1491 | (file-name (string-append name "-" version ".tar.gz")) | 1577 | (file-name (string-append name "-" version ".tar.gz")) |
| 1492 | (sha256 | 1578 | (sha256 |
| 1493 | (base32 | 1579 | (base32 |
| 1494 | "15r7gcrqc4pv5d4kvv530zc3xnni92c74y63zrxzidriss7591yx")))) | 1580 | "14n0p28b4i5j8vvz1fl4xj1gxnpg98bj0kr3i90mhn7miwr4pkpw")))) |
| 1495 | (build-system cmake-build-system) | 1581 | (build-system cmake-build-system) |
| 1496 | (arguments | 1582 | (arguments |
| 1497 | '(#:tests? #f ; no "check" target | 1583 | '(#:tests? #f ; no "check" target |
| @@ -1517,6 +1603,75 @@ data and settings.") | |||
| 1517 | (license (license:non-copyleft "file://src/COPYING" | 1603 | (license (license:non-copyleft "file://src/COPYING" |
| 1518 | "See src/COPYING in the distribution.")))) | 1604 | "See src/COPYING in the distribution.")))) |
| 1519 | 1605 | ||
| 1606 | (define-public eigensoft | ||
| 1607 | (let ((revision "1") | ||
| 1608 | (commit "b14d1e202e21e532536ff8004f0419cd5e259dc7")) | ||
| 1609 | (package | ||
| 1610 | (name "eigensoft") | ||
| 1611 | (version (string-append "6.1.2-" | ||
| 1612 | revision "." | ||
| 1613 | (string-take commit 9))) | ||
| 1614 | (source | ||
| 1615 | (origin | ||
| 1616 | (method git-fetch) | ||
| 1617 | (uri (git-reference | ||
| 1618 | (url "https://github.com/DReichLab/EIG.git") | ||
| 1619 | (commit commit))) | ||
| 1620 | (file-name (string-append "eigensoft-" commit "-checkout")) | ||
| 1621 | (sha256 | ||
| 1622 | (base32 | ||
| 1623 | "0f5m6k2j5c16xc3xbywcs989xyc26ncy1zfzp9j9n55n9r4xcaiq")) | ||
| 1624 | (modules '((guix build utils))) | ||
| 1625 | ;; Remove pre-built binaries. | ||
| 1626 | (snippet '(begin | ||
| 1627 | (delete-file-recursively "bin") | ||
| 1628 | (mkdir "bin") | ||
| 1629 | #t)))) | ||
| 1630 | (build-system gnu-build-system) | ||
| 1631 | (arguments | ||
| 1632 | `(#:tests? #f ; There are no tests. | ||
| 1633 | #:make-flags '("CC=gcc") | ||
| 1634 | #:phases | ||
| 1635 | (modify-phases %standard-phases | ||
| 1636 | ;; There is no configure phase, but the Makefile is in a | ||
| 1637 | ;; sub-directory. | ||
| 1638 | (replace 'configure | ||
| 1639 | (lambda _ | ||
| 1640 | (chdir "src") | ||
| 1641 | ;; The link flags are incomplete. | ||
| 1642 | (substitute* "Makefile" | ||
| 1643 | (("-lgsl") "-lgsl -lm -llapack -llapacke -lpthread")) | ||
| 1644 | #t)) | ||
| 1645 | ;; The provided install target only copies executables to | ||
| 1646 | ;; the "bin" directory in the build root. | ||
| 1647 | (add-after 'install 'actually-install | ||
| 1648 | (lambda* (#:key outputs #:allow-other-keys) | ||
| 1649 | (let* ((out (assoc-ref outputs "out")) | ||
| 1650 | (bin (string-append out "/bin"))) | ||
| 1651 | (mkdir-p bin) | ||
| 1652 | (for-each (lambda (file) | ||
| 1653 | (install-file file bin)) | ||
| 1654 | (find-files "../bin" ".*")) | ||
| 1655 | #t)))))) | ||
| 1656 | (inputs | ||
| 1657 | `(("gsl" ,gsl) | ||
| 1658 | ("lapack" ,lapack) | ||
| 1659 | ("openblas" ,openblas) | ||
| 1660 | ("perl" ,perl) | ||
| 1661 | ("gfortran" ,gfortran "lib"))) | ||
| 1662 | (home-page "https://github.com/DReichLab/EIG") | ||
| 1663 | (synopsis "Tools for population genetics") | ||
| 1664 | (description "The EIGENSOFT package provides tools for population | ||
| 1665 | genetics and stratification correction. EIGENSOFT implements methods commonly | ||
| 1666 | used in population genetics analyses such as PCA, computation of Tracy-Widom | ||
| 1667 | statistics, and finding related individuals in structured populations. It | ||
| 1668 | comes with a built-in plotting script and supports multiple file formats and | ||
| 1669 | quantitative phenotypes.") | ||
| 1670 | ;; The license of the eigensoft tools is Expat, but since it's | ||
| 1671 | ;; linking with the GNU Scientific Library (GSL) the effective | ||
| 1672 | ;; license is the GPL. | ||
| 1673 | (license license:gpl3+)))) | ||
| 1674 | |||
| 1520 | (define-public edirect | 1675 | (define-public edirect |
| 1521 | (package | 1676 | (package |
| 1522 | (name "edirect") | 1677 | (name "edirect") |
| @@ -2170,7 +2325,7 @@ manipulating HTS data.") | |||
| 2170 | (define-public htslib | 2325 | (define-public htslib |
| 2171 | (package | 2326 | (package |
| 2172 | (name "htslib") | 2327 | (name "htslib") |
| 2173 | (version "1.2.1") | 2328 | (version "1.3.1") |
| 2174 | (source (origin | 2329 | (source (origin |
| 2175 | (method url-fetch) | 2330 | (method url-fetch) |
| 2176 | (uri (string-append | 2331 | (uri (string-append |
| @@ -2178,7 +2333,7 @@ manipulating HTS data.") | |||
| 2178 | version "/htslib-" version ".tar.bz2")) | 2333 | version "/htslib-" version ".tar.bz2")) |
| 2179 | (sha256 | 2334 | (sha256 |
| 2180 | (base32 | 2335 | (base32 |
| 2181 | "1c32ssscbnjwfw3dra140fq7riarp2x990qxybh34nr1p5r17nxx")))) | 2336 | "1rja282fwdc25ql6izkhdyh8ppw8x2fs0w0js78zgkmqjlikmma9")))) |
| 2182 | (build-system gnu-build-system) | 2337 | (build-system gnu-build-system) |
| 2183 | (arguments | 2338 | (arguments |
| 2184 | `(#:phases | 2339 | `(#:phases |
| @@ -2301,6 +2456,87 @@ command, or queried for specific k-mers with @code{jellyfish query}.") | |||
| 2301 | ;; files such as lib/jsoncpp.cpp are released under the Expat license. | 2456 | ;; files such as lib/jsoncpp.cpp are released under the Expat license. |
| 2302 | (license (list license:gpl3+ license:expat)))) | 2457 | (license (list license:gpl3+ license:expat)))) |
| 2303 | 2458 | ||
| 2459 | (define-public khmer | ||
| 2460 | (package | ||
| 2461 | (name "khmer") | ||
| 2462 | (version "2.0") | ||
| 2463 | (source | ||
| 2464 | (origin | ||
| 2465 | (method url-fetch) | ||
| 2466 | (uri (pypi-uri "khmer" version)) | ||
| 2467 | (sha256 | ||
| 2468 | (base32 | ||
| 2469 | "0wb05shqh77v00256qlm68vbbx3kl76fyzihszbz5nhanl4ni33a")) | ||
| 2470 | (patches (search-patches "khmer-use-libraries.patch")))) | ||
| 2471 | (build-system python-build-system) | ||
| 2472 | (arguments | ||
| 2473 | `(#:phases | ||
| 2474 | (modify-phases %standard-phases | ||
| 2475 | (add-after 'unpack 'set-paths | ||
| 2476 | (lambda* (#:key inputs outputs #:allow-other-keys) | ||
| 2477 | ;; Delete bundled libraries. | ||
| 2478 | (delete-file-recursively "third-party/zlib") | ||
| 2479 | (delete-file-recursively "third-party/bzip2") | ||
| 2480 | ;; Replace bundled seqan. | ||
| 2481 | (let* ((seqan-all "third-party/seqan") | ||
| 2482 | (seqan-include (string-append | ||
| 2483 | seqan-all "/core/include"))) | ||
| 2484 | (delete-file-recursively seqan-all) | ||
| 2485 | (copy-recursively (string-append (assoc-ref inputs "seqan") | ||
| 2486 | "/include/seqan") | ||
| 2487 | (string-append seqan-include "/seqan"))) | ||
| 2488 | ;; We do not replace the bundled MurmurHash as the canonical | ||
| 2489 | ;; repository for this code 'SMHasher' is unsuitable for | ||
| 2490 | ;; providing a library. See | ||
| 2491 | ;; https://lists.gnu.org/archive/html/guix-devel/2016-06/msg00977.html | ||
| 2492 | #t)) | ||
| 2493 | (add-after 'unpack 'set-cc | ||
| 2494 | (lambda _ | ||
| 2495 | (setenv "CC" "gcc") | ||
| 2496 | #t)) | ||
| 2497 | ;; It is simpler to test after installation. | ||
| 2498 | (delete 'check) | ||
| 2499 | (add-after 'install 'post-install-check | ||
| 2500 | (lambda* (#:key inputs outputs #:allow-other-keys) | ||
| 2501 | (let ((out (assoc-ref outputs "out"))) | ||
| 2502 | (setenv "PATH" | ||
| 2503 | (string-append | ||
| 2504 | (getenv "PATH") | ||
| 2505 | ":" | ||
| 2506 | (assoc-ref outputs "out") | ||
| 2507 | "/bin")) | ||
| 2508 | (setenv "PYTHONPATH" | ||
| 2509 | (string-append | ||
| 2510 | (getenv "PYTHONPATH") | ||
| 2511 | ":" | ||
| 2512 | out | ||
| 2513 | "/lib/python" | ||
| 2514 | (string-take (string-take-right | ||
| 2515 | (assoc-ref inputs "python") 5) 3) | ||
| 2516 | "/site-packages")) | ||
| 2517 | (with-directory-excursion "build" | ||
| 2518 | (zero? (system* "nosetests" "khmer" "--attr" | ||
| 2519 | "!known_failing"))))))))) | ||
| 2520 | (native-inputs | ||
| 2521 | `(("seqan" ,seqan) | ||
| 2522 | ("python-nose" ,python-nose))) | ||
| 2523 | (inputs | ||
| 2524 | `(("zlib" ,zlib) | ||
| 2525 | ("bzip2" ,bzip2) | ||
| 2526 | ("python-screed" ,python-screed) | ||
| 2527 | ("python-bz2file" ,python-bz2file))) | ||
| 2528 | (home-page "https://khmer.readthedocs.org/") | ||
| 2529 | (synopsis "K-mer counting, filtering and graph traversal library") | ||
| 2530 | (description "The khmer software is a set of command-line tools for | ||
| 2531 | working with DNA shotgun sequencing data from genomes, transcriptomes, | ||
| 2532 | metagenomes and single cells. Khmer can make de novo assemblies faster, and | ||
| 2533 | sometimes better. Khmer can also identify and fix problems with shotgun | ||
| 2534 | data.") | ||
| 2535 | ;; When building on i686, armhf and mips64el, we get the following error: | ||
| 2536 | ;; error: ['khmer', 'khmer.tests', 'oxli'] require 64-bit operating system | ||
| 2537 | (supported-systems '("x86_64-linux")) | ||
| 2538 | (license license:bsd-3))) | ||
| 2539 | |||
| 2304 | (define-public macs | 2540 | (define-public macs |
| 2305 | (package | 2541 | (package |
| 2306 | (name "macs") | 2542 | (name "macs") |
| @@ -2333,7 +2569,7 @@ sequencing tag position and orientation.") | |||
| 2333 | (define-public mafft | 2569 | (define-public mafft |
| 2334 | (package | 2570 | (package |
| 2335 | (name "mafft") | 2571 | (name "mafft") |
| 2336 | (version "7.267") | 2572 | (version "7.299") |
| 2337 | (source (origin | 2573 | (source (origin |
| 2338 | (method url-fetch) | 2574 | (method url-fetch) |
| 2339 | (uri (string-append | 2575 | (uri (string-append |
| @@ -2342,7 +2578,7 @@ sequencing tag position and orientation.") | |||
| 2342 | (file-name (string-append name "-" version ".tgz")) | 2578 | (file-name (string-append name "-" version ".tgz")) |
| 2343 | (sha256 | 2579 | (sha256 |
| 2344 | (base32 | 2580 | (base32 |
| 2345 | "1xl6xq1rfxkws0svrlhyqxhhwbv6r77jwblsdpcyiwzsscw6wlk0")))) | 2581 | "1pwwdy5a17ggx8h9v9y712ilswj27dc3d23r65l56jgjz67y5zc0")))) |
| 2346 | (build-system gnu-build-system) | 2582 | (build-system gnu-build-system) |
| 2347 | (arguments | 2583 | (arguments |
| 2348 | `(#:tests? #f ; no automated tests, though there are tests in the read me | 2584 | `(#:tests? #f ; no automated tests, though there are tests in the read me |
| @@ -2408,7 +2644,7 @@ sequences).") | |||
| 2408 | (define-public metabat | 2644 | (define-public metabat |
| 2409 | (package | 2645 | (package |
| 2410 | (name "metabat") | 2646 | (name "metabat") |
| 2411 | (version "0.26.1") | 2647 | (version "0.26.3") |
| 2412 | (source (origin | 2648 | (source (origin |
| 2413 | (method url-fetch) | 2649 | (method url-fetch) |
| 2414 | (uri (string-append | 2650 | (uri (string-append |
| @@ -2417,31 +2653,40 @@ sequences).") | |||
| 2417 | (file-name (string-append name "-" version ".tar.bz2")) | 2653 | (file-name (string-append name "-" version ".tar.bz2")) |
| 2418 | (sha256 | 2654 | (sha256 |
| 2419 | (base32 | 2655 | (base32 |
| 2420 | "0vgrhbaxg4dkxyax2kbigak7w0arhqvw0szwp6gd9wmyilc44kfa")))) | 2656 | "1vpfvgsn8wdsv1g7z73zxcncskx7dy7bw5msg1hhibk25ay11pyg")))) |
| 2421 | (build-system gnu-build-system) | 2657 | (build-system gnu-build-system) |
| 2422 | (arguments | 2658 | (arguments |
| 2423 | `(#:phases | 2659 | `(#:phases |
| 2424 | (modify-phases %standard-phases | 2660 | (modify-phases %standard-phases |
| 2425 | (add-after 'unpack 'fix-includes | 2661 | (add-after 'unpack 'fix-includes |
| 2426 | (lambda _ | 2662 | (lambda _ |
| 2427 | (substitute* "SConstruct" | 2663 | (substitute* "src/BamUtils.h" |
| 2428 | (("/include/bam/bam.h") | 2664 | (("^#include \"bam/bam\\.h\"") |
| 2429 | "/include/samtools/bam.h")) | 2665 | "#include \"samtools/bam.h\"") |
| 2430 | (substitute* "src/BamUtils.h" | 2666 | (("^#include \"bam/sam\\.h\"") |
| 2431 | (("^#include \"bam/bam\\.h\"") | 2667 | "#include \"samtools/sam.h\"")) |
| 2432 | "#include \"samtools/bam.h\"") | 2668 | (substitute* "src/KseqReader.h" |
| 2433 | (("^#include \"bam/sam\\.h\"") | 2669 | (("^#include \"bam/kseq\\.h\"") |
| 2434 | "#include \"samtools/sam.h\"")) | 2670 | "#include \"htslib/kseq.h\"")) |
| 2435 | (substitute* "src/KseqReader.h" | 2671 | #t)) |
| 2436 | (("^#include \"bam/kseq\\.h\"") | ||
| 2437 | "#include \"samtools/kseq.h\"")) | ||
| 2438 | #t)) | ||
| 2439 | (add-after 'unpack 'fix-scons | 2672 | (add-after 'unpack 'fix-scons |
| 2440 | (lambda _ | 2673 | (lambda* (#:key inputs #:allow-other-keys) |
| 2441 | (substitute* "SConstruct" ; Do not distribute README | 2674 | (substitute* "SConstruct" |
| 2442 | (("^env\\.Install\\(idir_prefix, 'README\\.md'\\)") | 2675 | (("^htslib_dir = 'samtools'") |
| 2443 | "")) | 2676 | (string-append "hitslib_dir = '" |
| 2444 | #t)) | 2677 | (assoc-ref inputs "htslib") |
| 2678 | "'")) | ||
| 2679 | (("^samtools_dir = 'samtools'") | ||
| 2680 | (string-append "samtools_dir = '" | ||
| 2681 | (assoc-ref inputs "htslib") | ||
| 2682 | "'")) | ||
| 2683 | (("^findStaticOrShared\\('bam', hts_lib") | ||
| 2684 | (string-append "findStaticOrShared('bam', '" | ||
| 2685 | (assoc-ref inputs "samtools") | ||
| 2686 | "/lib'")) | ||
| 2687 | ;; Do not distribute README. | ||
| 2688 | (("^env\\.Install\\(idir_prefix, 'README\\.md'\\)") "")) | ||
| 2689 | #t)) | ||
| 2445 | (delete 'configure) | 2690 | (delete 'configure) |
| 2446 | (replace 'build | 2691 | (replace 'build |
| 2447 | (lambda* (#:key inputs outputs #:allow-other-keys) | 2692 | (lambda* (#:key inputs outputs #:allow-other-keys) |
| @@ -2451,16 +2696,10 @@ sequences).") | |||
| 2451 | "PREFIX=" | 2696 | "PREFIX=" |
| 2452 | (assoc-ref outputs "out")) | 2697 | (assoc-ref outputs "out")) |
| 2453 | (string-append | 2698 | (string-append |
| 2454 | "HTSLIB_DIR=" | ||
| 2455 | (assoc-ref inputs "htslib")) | ||
| 2456 | (string-append | ||
| 2457 | "SAMTOOLS_DIR=" | ||
| 2458 | (assoc-ref inputs "samtools")) | ||
| 2459 | (string-append | ||
| 2460 | "BOOST_ROOT=" | 2699 | "BOOST_ROOT=" |
| 2461 | (assoc-ref inputs "boost")) | 2700 | (assoc-ref inputs "boost")) |
| 2462 | "install")))) | 2701 | "install")))) |
| 2463 | ;; check and install carried out during build phase | 2702 | ;; Check and install are carried out during build phase. |
| 2464 | (delete 'check) | 2703 | (delete 'check) |
| 2465 | (delete 'install)))) | 2704 | (delete 'install)))) |
| 2466 | (inputs | 2705 | (inputs |
| @@ -2919,6 +3158,75 @@ while RNA-seq specific modules evaluate sequencing saturation, mapped reads | |||
| 2919 | distribution, coverage uniformity, strand specificity, etc.") | 3158 | distribution, coverage uniformity, strand specificity, etc.") |
| 2920 | (license license:gpl3+))) | 3159 | (license license:gpl3+))) |
| 2921 | 3160 | ||
| 3161 | (define-public seek | ||
| 3162 | ;; There are no release tarballs. According to the installation | ||
| 3163 | ;; instructions at http://seek.princeton.edu/installation.jsp, the latest | ||
| 3164 | ;; stable release is identified by this changeset ID. | ||
| 3165 | (let ((changeset "2329130") | ||
| 3166 | (revision "1")) | ||
| 3167 | (package | ||
| 3168 | (name "seek") | ||
| 3169 | (version (string-append "0-" revision "." changeset)) | ||
| 3170 | (source (origin | ||
| 3171 | (method hg-fetch) | ||
| 3172 | (uri (hg-reference | ||
| 3173 | (url "https://bitbucket.org/libsleipnir/sleipnir") | ||
| 3174 | (changeset changeset))) | ||
| 3175 | (sha256 | ||
| 3176 | (base32 | ||
| 3177 | "0qrvilwh18dpbhkf92qvxbmay0j75ra3jg2wrhz67gf538zzphsx")))) | ||
| 3178 | (build-system gnu-build-system) | ||
| 3179 | (arguments | ||
| 3180 | `(#:modules ((srfi srfi-1) | ||
| 3181 | (guix build gnu-build-system) | ||
| 3182 | (guix build utils)) | ||
| 3183 | #:phases | ||
| 3184 | (let ((dirs '("SeekMiner" | ||
| 3185 | "SeekEvaluator" | ||
| 3186 | "SeekPrep" | ||
| 3187 | "Distancer" | ||
| 3188 | "Data2DB" | ||
| 3189 | "PCL2Bin"))) | ||
| 3190 | (modify-phases %standard-phases | ||
| 3191 | (add-before 'configure 'bootstrap | ||
| 3192 | (lambda _ | ||
| 3193 | (zero? (system* "bash" "gen_auto")))) | ||
| 3194 | (add-after 'build 'build-additional-tools | ||
| 3195 | (lambda* (#:key make-flags #:allow-other-keys) | ||
| 3196 | (every (lambda (dir) | ||
| 3197 | (with-directory-excursion (string-append "tools/" dir) | ||
| 3198 | (zero? (apply system* "make" make-flags)))) | ||
| 3199 | dirs))) | ||
| 3200 | (add-after 'install 'install-additional-tools | ||
| 3201 | (lambda* (#:key make-flags #:allow-other-keys) | ||
| 3202 | (fold (lambda (dir result) | ||
| 3203 | (with-directory-excursion (string-append "tools/" dir) | ||
| 3204 | (and result | ||
| 3205 | (zero? (apply system* | ||
| 3206 | `("make" ,@make-flags "install")))))) | ||
| 3207 | #t dirs))))))) | ||
| 3208 | (inputs | ||
| 3209 | `(("gsl" ,gsl) | ||
| 3210 | ("boost" ,boost) | ||
| 3211 | ("libsvm" ,libsvm) | ||
| 3212 | ("readline" ,readline) | ||
| 3213 | ("gengetopt" ,gengetopt) | ||
| 3214 | ("log4cpp" ,log4cpp))) | ||
| 3215 | (native-inputs | ||
| 3216 | `(("autoconf" ,autoconf) | ||
| 3217 | ("automake" ,automake) | ||
| 3218 | ("perl" ,perl))) | ||
| 3219 | (home-page "http://seek.princeton.edu") | ||
| 3220 | (synopsis "Gene co-expression search engine") | ||
| 3221 | (description | ||
| 3222 | "SEEK is a computational gene co-expression search engine. SEEK provides | ||
| 3223 | biologists with a way to navigate the massive human expression compendium that | ||
| 3224 | now contains thousands of expression datasets. SEEK returns a robust ranking | ||
| 3225 | of co-expressed genes in the biological area of interest defined by the user's | ||
| 3226 | query genes. It also prioritizes thousands of expression datasets according | ||
| 3227 | to the user's query of interest.") | ||
| 3228 | (license license:cc-by3.0)))) | ||
| 3229 | |||
| 2922 | (define-public samtools | 3230 | (define-public samtools |
| 2923 | (package | 3231 | (package |
| 2924 | (name "samtools") | 3232 | (name "samtools") |
| @@ -3359,6 +3667,44 @@ optimize the sequencing depth, or to screen multiple libraries to avoid low | |||
| 3359 | complexity samples.") | 3667 | complexity samples.") |
| 3360 | (license license:gpl3+))) | 3668 | (license license:gpl3+))) |
| 3361 | 3669 | ||
| 3670 | (define-public python-screed | ||
| 3671 | (package | ||
| 3672 | (name "python-screed") | ||
| 3673 | (version "0.9") | ||
| 3674 | (source | ||
| 3675 | (origin | ||
| 3676 | (method url-fetch) | ||
| 3677 | (uri (pypi-uri "screed" version)) | ||
| 3678 | (sha256 | ||
| 3679 | (base32 | ||
| 3680 | "18czszp9fkx3j6jr7y5kp6dfialscgddk05mw1zkhh2zhn0jd8i0")))) | ||
| 3681 | (build-system python-build-system) | ||
| 3682 | (arguments | ||
| 3683 | `(#:phases | ||
| 3684 | (modify-phases %standard-phases | ||
| 3685 | (replace 'check | ||
| 3686 | (lambda _ | ||
| 3687 | (setenv "PYTHONPATH" | ||
| 3688 | (string-append (getenv "PYTHONPATH") ":.")) | ||
| 3689 | (zero? (system* "nosetests" "--attr" "!known_failing"))))))) | ||
| 3690 | (native-inputs | ||
| 3691 | `(("python-nose" ,python-nose))) | ||
| 3692 | (inputs | ||
| 3693 | `(("python-bz2file" ,python-bz2file))) | ||
| 3694 | (home-page "http://github.com/dib-lab/screed/") | ||
| 3695 | (synopsis "Short read sequence database utilities") | ||
| 3696 | (description "Screed parses FASTA and FASTQ files and generates databases. | ||
| 3697 | Values such as sequence name, sequence description, sequence quality and the | ||
| 3698 | sequence itself can be retrieved from these databases.") | ||
| 3699 | (license license:bsd-3))) | ||
| 3700 | |||
| 3701 | (define-public python2-screed | ||
| 3702 | (let ((base (package-with-python2 (strip-python2-variant python-screed)))) | ||
| 3703 | (package | ||
| 3704 | (inherit base) | ||
| 3705 | (native-inputs `(("python2-setuptools" ,python2-setuptools) | ||
| 3706 | ,@(package-native-inputs base)))))) | ||
| 3707 | |||
| 3362 | (define-public sra-tools | 3708 | (define-public sra-tools |
| 3363 | (package | 3709 | (package |
| 3364 | (name "sra-tools") | 3710 | (name "sra-tools") |
| @@ -3600,7 +3946,7 @@ application of SortMeRNA is filtering rRNA from metatranscriptomic data.") | |||
| 3600 | (define-public star | 3946 | (define-public star |
| 3601 | (package | 3947 | (package |
| 3602 | (name "star") | 3948 | (name "star") |
| 3603 | (version "2.5.1b") | 3949 | (version "2.5.2a") |
| 3604 | (source (origin | 3950 | (source (origin |
| 3605 | (method url-fetch) | 3951 | (method url-fetch) |
| 3606 | (uri (string-append "https://github.com/alexdobin/STAR/archive/" | 3952 | (uri (string-append "https://github.com/alexdobin/STAR/archive/" |
| @@ -3608,7 +3954,7 @@ application of SortMeRNA is filtering rRNA from metatranscriptomic data.") | |||
| 3608 | (file-name (string-append name "-" version ".tar.gz")) | 3954 | (file-name (string-append name "-" version ".tar.gz")) |
| 3609 | (sha256 | 3955 | (sha256 |
| 3610 | (base32 | 3956 | (base32 |
| 3611 | "0wzcfhkg10apnh0y73xlarfa79xxwxdizicbdl11wb48awk44iq4")) | 3957 | "0xjlsm4p9flln111hv4xx7xy94c2nl53zvdvbk9winmiradjsdra")) |
| 3612 | (modules '((guix build utils))) | 3958 | (modules '((guix build utils))) |
| 3613 | (snippet | 3959 | (snippet |
| 3614 | '(begin | 3960 | '(begin |
| @@ -3665,6 +4011,8 @@ by seed clustering and stitching procedure. In addition to unbiased de novo | |||
| 3665 | detection of canonical junctions, STAR can discover non-canonical splices and | 4011 | detection of canonical junctions, STAR can discover non-canonical splices and |
| 3666 | chimeric (fusion) transcripts, and is also capable of mapping full-length RNA | 4012 | chimeric (fusion) transcripts, and is also capable of mapping full-length RNA |
| 3667 | sequences.") | 4013 | sequences.") |
| 4014 | ;; Only 64-bit systems are supported according to the README. | ||
| 4015 | (supported-systems '("x86_64-linux" "mips64el-linux")) | ||
| 3668 | ;; STAR is licensed under GPLv3 or later; htslib is MIT-licensed. | 4016 | ;; STAR is licensed under GPLv3 or later; htslib is MIT-licensed. |
| 3669 | (license license:gpl3+))) | 4017 | (license license:gpl3+))) |
| 3670 | 4018 | ||
| @@ -3869,7 +4217,7 @@ data types as well.") | |||
| 3869 | (define-public vsearch | 4217 | (define-public vsearch |
| 3870 | (package | 4218 | (package |
| 3871 | (name "vsearch") | 4219 | (name "vsearch") |
| 3872 | (version "2.0.0") | 4220 | (version "2.0.1") |
| 3873 | (source | 4221 | (source |
| 3874 | (origin | 4222 | (origin |
| 3875 | (method url-fetch) | 4223 | (method url-fetch) |
| @@ -3879,7 +4227,7 @@ data types as well.") | |||
| 3879 | (file-name (string-append name "-" version ".tar.gz")) | 4227 | (file-name (string-append name "-" version ".tar.gz")) |
| 3880 | (sha256 | 4228 | (sha256 |
| 3881 | (base32 | 4229 | (base32 |
| 3882 | "1sd57abgx077icqrbj36jq9q7pdpzc6dbics2pn1555kisq2jhfh")) | 4230 | "0q7szwbf7r29yxkhb415a8i51vj87kvl5ap7h09w7k9ycb2ywvzw")) |
| 3883 | (modules '((guix build utils))) | 4231 | (modules '((guix build utils))) |
| 3884 | (snippet | 4232 | (snippet |
| 3885 | '(begin | 4233 | '(begin |
| @@ -4191,6 +4539,30 @@ In addition, a few low-level concrete subclasses of general interest (e.g. | |||
| 4191 | S4Vectors package itself.") | 4539 | S4Vectors package itself.") |
| 4192 | (license license:artistic2.0))) | 4540 | (license license:artistic2.0))) |
| 4193 | 4541 | ||
| 4542 | (define-public r-seqinr | ||
| 4543 | (package | ||
| 4544 | (name "r-seqinr") | ||
| 4545 | (version "3.1-3") | ||
| 4546 | (source | ||
| 4547 | (origin | ||
| 4548 | (method url-fetch) | ||
| 4549 | (uri (cran-uri "seqinr" version)) | ||
| 4550 | (sha256 | ||
| 4551 | (base32 | ||
| 4552 | "0bbjfwbqg74wsamb3iz01g0ssdpdpg65gh00y9xlnpk4wb990n4n")))) | ||
| 4553 | (build-system r-build-system) | ||
| 4554 | (propagated-inputs | ||
| 4555 | `(("r-ade4" ,r-ade4))) | ||
| 4556 | (inputs | ||
| 4557 | `(("zlib" ,zlib))) | ||
| 4558 | (home-page "http://seqinr.r-forge.r-project.org/") | ||
| 4559 | (synopsis "Biological sequences retrieval and analysis") | ||
| 4560 | (description | ||
| 4561 | "This package provides tools for exploratory data analysis and data | ||
| 4562 | visualization of biological sequence (DNA and protein) data. It also includes | ||
| 4563 | utilities for sequence data management under the ACNUC system.") | ||
| 4564 | (license license:gpl2+))) | ||
| 4565 | |||
| 4194 | (define-public r-iranges | 4566 | (define-public r-iranges |
| 4195 | (package | 4567 | (package |
| 4196 | (name "r-iranges") | 4568 | (name "r-iranges") |
| @@ -4246,6 +4618,31 @@ translation between different chromosome sequence naming conventions (e.g., | |||
| 4246 | names in their natural, rather than lexicographic, order.") | 4618 | names in their natural, rather than lexicographic, order.") |
| 4247 | (license license:artistic2.0))) | 4619 | (license license:artistic2.0))) |
| 4248 | 4620 | ||
| 4621 | (define-public r-edger | ||
| 4622 | (package | ||
| 4623 | (name "r-edger") | ||
| 4624 | (version "3.14.0") | ||
| 4625 | (source (origin | ||
| 4626 | (method url-fetch) | ||
| 4627 | (uri (bioconductor-uri "edgeR" version)) | ||
| 4628 | (sha256 | ||
| 4629 | (base32 | ||
| 4630 | "14vrygy7rz5ngaap4kgkvr3j18y5l6m742n79h68plk6iqgmsskn")))) | ||
| 4631 | (properties `((upstream-name . "edgeR"))) | ||
| 4632 | (build-system r-build-system) | ||
| 4633 | (propagated-inputs | ||
| 4634 | `(("r-limma" ,r-limma))) | ||
| 4635 | (home-page "http://bioinf.wehi.edu.au/edgeR") | ||
| 4636 | (synopsis "EdgeR does empirical analysis of digital gene expression data") | ||
| 4637 | (description "This package can do differential expression analysis of | ||
| 4638 | RNA-seq expression profiles with biological replication. It implements a range | ||
| 4639 | of statistical methodology based on the negative binomial distributions, | ||
| 4640 | including empirical Bayes estimation, exact tests, generalized linear models | ||
| 4641 | and quasi-likelihood tests. It be applied to differential signal analysis of | ||
| 4642 | other types of genomic data that produce counts, including ChIP-seq, SAGE and | ||
| 4643 | CAGE.") | ||
| 4644 | (license license:gpl2+))) | ||
| 4645 | |||
| 4249 | (define-public r-variantannotation | 4646 | (define-public r-variantannotation |
| 4250 | (package | 4647 | (package |
| 4251 | (name "r-variantannotation") | 4648 | (name "r-variantannotation") |
| @@ -4278,6 +4675,25 @@ names in their natural, rather than lexicographic, order.") | |||
| 4278 | coding changes and predict coding outcomes.") | 4675 | coding changes and predict coding outcomes.") |
| 4279 | (license license:artistic2.0))) | 4676 | (license license:artistic2.0))) |
| 4280 | 4677 | ||
| 4678 | (define-public r-limma | ||
| 4679 | (package | ||
| 4680 | (name "r-limma") | ||
| 4681 | (version "3.28.14") | ||
| 4682 | (source (origin | ||
| 4683 | (method url-fetch) | ||
| 4684 | (uri (bioconductor-uri "limma" version)) | ||
| 4685 | (sha256 | ||
| 4686 | (base32 | ||
| 4687 | "1jgn66ajafhjlqpfcw2p85h6ah8mgmz66znmsw6pcapia7d34akw")))) | ||
| 4688 | (build-system r-build-system) | ||
| 4689 | (home-page "http://bioinf.wehi.edu.au/limma") | ||
| 4690 | (synopsis "Package for linear models for microarray and RNA-seq data") | ||
| 4691 | (description "This package can be used for the analysis of gene expression | ||
| 4692 | studies, especially the use of linear models for analysing designed experiments | ||
| 4693 | and the assessment of differential expression. The analysis methods apply to | ||
| 4694 | different technologies, including microarrays, RNA-seq, and quantitative PCR.") | ||
| 4695 | (license license:gpl2+))) | ||
| 4696 | |||
| 4281 | (define-public r-xvector | 4697 | (define-public r-xvector |
| 4282 | (package | 4698 | (package |
| 4283 | (name "r-xvector") | 4699 | (name "r-xvector") |
| @@ -5237,6 +5653,115 @@ two-dimensional genome scans.") | |||
| 5237 | libraries for systems that do not have these available via other means.") | 5653 | libraries for systems that do not have these available via other means.") |
| 5238 | (license license:artistic2.0))) | 5654 | (license license:artistic2.0))) |
| 5239 | 5655 | ||
| 5656 | (define-public emboss | ||
| 5657 | (package | ||
| 5658 | (name "emboss") | ||
| 5659 | (version "6.5.7") | ||
| 5660 | (source (origin | ||
| 5661 | (method url-fetch) | ||
| 5662 | (uri (string-append "ftp://emboss.open-bio.org/pub/EMBOSS/old/" | ||
| 5663 | (version-major+minor version) ".0/" | ||
| 5664 | "EMBOSS-" version ".tar.gz")) | ||
| 5665 | (sha256 | ||
| 5666 | (base32 | ||
| 5667 | "0vsmz96gc411yj2iyzdrsmg4l2n1nhgmp7vrgzlxx3xixv9xbf0q")))) | ||
| 5668 | (build-system gnu-build-system) | ||
| 5669 | (arguments | ||
| 5670 | `(#:configure-flags | ||
| 5671 | (list (string-append "--with-hpdf=" | ||
| 5672 | (assoc-ref %build-inputs "libharu"))) | ||
| 5673 | #:phases | ||
| 5674 | (modify-phases %standard-phases | ||
| 5675 | (add-after 'unpack 'fix-checks | ||
| 5676 | (lambda _ | ||
| 5677 | ;; The PNGDRIVER tests check for the presence of libgd, libpng | ||
| 5678 | ;; and zlib, but assume that they are all found at the same | ||
| 5679 | ;; prefix. | ||
| 5680 | (substitute* "configure.in" | ||
| 5681 | (("CHECK_PNGDRIVER") | ||
| 5682 | "LIBS=\"$LIBS -lgd -lpng -lz -lm\" | ||
| 5683 | AC_DEFINE([PLD_png], [1], [Define to 1 if PNG support is available]) | ||
| 5684 | AM_CONDITIONAL(AMPNG, true)")) | ||
| 5685 | #t)) | ||
| 5686 | (add-after 'unpack 'disable-update-check | ||
| 5687 | (lambda _ | ||
| 5688 | ;; At build time there is no connection to the Internet, so | ||
| 5689 | ;; looking for updates will not work. | ||
| 5690 | (substitute* "Makefile.am" | ||
| 5691 | (("\\$\\(bindir\\)/embossupdate") "")) | ||
| 5692 | #t)) | ||
| 5693 | (add-before 'configure 'autogen | ||
| 5694 | (lambda _ (zero? (system* "autoreconf" "-vif"))))))) | ||
| 5695 | (inputs | ||
| 5696 | `(("perl" ,perl) | ||
| 5697 | ("libpng" ,libpng) | ||
| 5698 | ("gd" ,gd) | ||
| 5699 | ("libx11" ,libx11) | ||
| 5700 | ("libharu" ,libharu) | ||
| 5701 | ("zlib" ,zlib))) | ||
| 5702 | (native-inputs | ||
| 5703 | `(("autoconf" ,autoconf) | ||
| 5704 | ("automake" ,automake) | ||
| 5705 | ("libtool" ,libtool) | ||
| 5706 | ("pkg-config" ,pkg-config))) | ||
| 5707 | (home-page "http://emboss.sourceforge.net") | ||
| 5708 | (synopsis "Molecular biology analysis suite") | ||
| 5709 | (description "EMBOSS is the \"European Molecular Biology Open Software | ||
| 5710 | Suite\". EMBOSS is an analysis package specially developed for the needs of | ||
| 5711 | the molecular biology (e.g. EMBnet) user community. The software | ||
| 5712 | automatically copes with data in a variety of formats and even allows | ||
| 5713 | transparent retrieval of sequence data from the web. It also provides a | ||
| 5714 | number of libraries for the development of software in the field of molecular | ||
| 5715 | biology. EMBOSS also integrates a range of currently available packages and | ||
| 5716 | tools for sequence analysis into a seamless whole.") | ||
| 5717 | (license license:gpl2+))) | ||
| 5718 | |||
| 5719 | (define-public bits | ||
| 5720 | (let ((revision "1") | ||
| 5721 | (commit "3cc4567896d9d6442923da944beb704750a08d2d")) | ||
| 5722 | (package | ||
| 5723 | (name "bits") | ||
| 5724 | ;; The version is 2.13.0 even though no release archives have been | ||
| 5725 | ;; published as yet. | ||
| 5726 | (version (string-append "2.13.0-" revision "." (string-take commit 9))) | ||
| 5727 | (source (origin | ||
| 5728 | (method git-fetch) | ||
| 5729 | (uri (git-reference | ||
| 5730 | (url "https://github.com/arq5x/bits.git") | ||
| 5731 | (commit commit))) | ||
| 5732 | (file-name (string-append name "-" version "-checkout")) | ||
| 5733 | (sha256 | ||
| 5734 | (base32 | ||
| 5735 | "17n2kffk4kmhivd8c98g2vr6y1s23vbg4sxlxs689wni66797hbs")))) | ||
| 5736 | (build-system gnu-build-system) | ||
| 5737 | (arguments | ||
| 5738 | `(#:tests? #f ;no tests included | ||
| 5739 | #:phases | ||
| 5740 | (modify-phases %standard-phases | ||
| 5741 | (delete 'configure) | ||
| 5742 | (add-after 'unpack 'remove-cuda | ||
| 5743 | (lambda _ | ||
| 5744 | (substitute* "Makefile" | ||
| 5745 | ((".*_cuda") "") | ||
| 5746 | (("(bits_test_intersections) \\\\" _ match) match)) | ||
| 5747 | #t)) | ||
| 5748 | (replace 'install | ||
| 5749 | (lambda* (#:key outputs #:allow-other-keys) | ||
| 5750 | (copy-recursively | ||
| 5751 | "bin" (string-append (assoc-ref outputs "out") "/bin")) | ||
| 5752 | #t))))) | ||
| 5753 | (inputs | ||
| 5754 | `(("gsl" ,gsl) | ||
| 5755 | ("zlib" ,zlib))) | ||
| 5756 | (home-page "https://github.com/arq5x/bits") | ||
| 5757 | (synopsis "Implementation of binary interval search algorithm") | ||
| 5758 | (description "This package provides an implementation of the | ||
| 5759 | BITS (Binary Interval Search) algorithm, an approach to interval set | ||
| 5760 | intersection. It is especially suited for the comparison of diverse genomic | ||
| 5761 | datasets and the exploration of large datasets of genome | ||
| 5762 | intervals (e.g. genes, sequence alignments).") | ||
| 5763 | (license license:gpl2)))) | ||
| 5764 | |||
| 5240 | (define-public piranha | 5765 | (define-public piranha |
| 5241 | ;; There is no release tarball for the latest version. The latest commit is | 5766 | ;; There is no release tarball for the latest version. The latest commit is |
| 5242 | ;; older than one year at the time of this writing. | 5767 | ;; older than one year at the time of this writing. |
| @@ -5372,3 +5897,32 @@ group or two ChIP groups run under different conditions.") | |||
| 5372 | (description "This program compares version strings. It intends to be a | 5897 | (description "This program compares version strings. It intends to be a |
| 5373 | replacement for strverscmp.") | 5898 | replacement for strverscmp.") |
| 5374 | (license license:gpl3+)))) | 5899 | (license license:gpl3+)))) |
| 5900 | |||
| 5901 | (define-public multiqc | ||
| 5902 | (package | ||
| 5903 | (name "multiqc") | ||
| 5904 | (version "0.6") | ||
| 5905 | (source | ||
| 5906 | (origin | ||
| 5907 | (method url-fetch) | ||
| 5908 | (uri (pypi-uri "multiqc" version)) | ||
| 5909 | (sha256 | ||
| 5910 | (base32 | ||
| 5911 | "0avw11h63ldpxy5pizc3wl1wa01ha7q10wb240nggsjz3jaqvyiy")))) | ||
| 5912 | (build-system python-build-system) | ||
| 5913 | (propagated-inputs | ||
| 5914 | `(("python-jinja2" ,python-jinja2) | ||
| 5915 | ("python-simplejson" ,python-simplejson) | ||
| 5916 | ("python-pyyaml" ,python-pyyaml) | ||
| 5917 | ("python-click" ,python-click) | ||
| 5918 | ("python-matplotlib" ,python-matplotlib) | ||
| 5919 | ("python-numpy" ,python-numpy))) | ||
| 5920 | (native-inputs | ||
| 5921 | `(("python-setuptools" ,python-setuptools))) | ||
| 5922 | (home-page "http://multiqc.info") | ||
| 5923 | (synopsis "Aggregate bioinformatics analysis reports") | ||
| 5924 | (description | ||
| 5925 | "MultiQC is a tool to aggregate bioinformatics results across many | ||
| 5926 | samples into a single report. It contains modules for a large number of | ||
| 5927 | common bioinformatics tools.") | ||
| 5928 | (license license:gpl3))) | ||
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm index 75e5519a774..f04dc951966 100644 --- a/gnu/packages/bittorrent.scm +++ b/gnu/packages/bittorrent.scm | |||
| @@ -207,7 +207,7 @@ interface, for the Transmission BitTorrent daemon.") | |||
| 207 | (define-public aria2 | 207 | (define-public aria2 |
| 208 | (package | 208 | (package |
| 209 | (name "aria2") | 209 | (name "aria2") |
| 210 | (version "1.24.0") | 210 | (version "1.25.0") |
| 211 | (source (origin | 211 | (source (origin |
| 212 | (method url-fetch) | 212 | (method url-fetch) |
| 213 | (uri (string-append "https://github.com/tatsuhiro-t/aria2/" | 213 | (uri (string-append "https://github.com/tatsuhiro-t/aria2/" |
| @@ -215,7 +215,7 @@ interface, for the Transmission BitTorrent daemon.") | |||
| 215 | name "-" version ".tar.xz")) | 215 | name "-" version ".tar.xz")) |
| 216 | (sha256 | 216 | (sha256 |
| 217 | (base32 | 217 | (base32 |
| 218 | "0dxzyy3x20vla4c4563zjqkl71djv731db6wn3h0gysgf399d91m")))) | 218 | "0d8drwc5m5ps4bw63iq2gng36gyc2vadzixbynk1dj6gfr6fp2gz")))) |
| 219 | (build-system gnu-build-system) | 219 | (build-system gnu-build-system) |
| 220 | (arguments | 220 | (arguments |
| 221 | `(#:configure-flags '("--enable-libaria2") | 221 | `(#:configure-flags '("--enable-libaria2") |
diff --git a/gnu/packages/busybox.scm b/gnu/packages/busybox.scm index e2d6cf8f9e9..ecbdd6f9398 100644 --- a/gnu/packages/busybox.scm +++ b/gnu/packages/busybox.scm | |||
| @@ -1,5 +1,6 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2014 John Darrington <jmd@gnu.org> | 2 | ;;; Copyright © 2014 John Darrington <jmd@gnu.org> |
| 3 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | ||
| 3 | ;;; | 4 | ;;; |
| 4 | ;;; This file is part of GNU Guix. | 5 | ;;; This file is part of GNU Guix. |
| 5 | ;;; | 6 | ;;; |
| @@ -29,49 +30,48 @@ | |||
| 29 | (define-public busybox | 30 | (define-public busybox |
| 30 | (package | 31 | (package |
| 31 | (name "busybox") | 32 | (name "busybox") |
| 32 | (version "1.22.1") | 33 | (version "1.25.0") |
| 33 | (source (origin | 34 | (source (origin |
| 34 | (method url-fetch) | 35 | (method url-fetch) |
| 35 | (uri (string-append | 36 | (uri (string-append |
| 36 | "http://www.busybox.net/downloads/" name "-" | 37 | "https://www.busybox.net/downloads/" name "-" |
| 37 | version ".tar.bz2")) | 38 | version ".tar.bz2")) |
| 38 | (sha256 | 39 | (sha256 |
| 39 | (base32 | 40 | (base32 |
| 40 | "12v7nri79v8gns3inmz4k24q7pcnwi00hybs0wddfkcy1afh42xf")))) | 41 | "1z52mh6prhd6v47qryz4rvng5r1z0am6masrnigq06zfhmlf03ss")))) |
| 41 | (build-system gnu-build-system) | 42 | (build-system gnu-build-system) |
| 42 | (arguments | 43 | (arguments |
| 43 | `(#:phases | 44 | `(#:phases |
| 44 | (alist-replace | 45 | (modify-phases %standard-phases |
| 45 | 'configure | 46 | (replace 'configure |
| 46 | (lambda _ (zero? (system* "make" "defconfig"))) | 47 | (lambda _ (zero? (system* "make" "defconfig")))) |
| 47 | (alist-replace | 48 | (replace 'check |
| 48 | 'check | 49 | (lambda _ |
| 49 | (lambda _ | ||
| 50 | (substitute* '("testsuite/du/du-s-works" | 50 | (substitute* '("testsuite/du/du-s-works" |
| 51 | "testsuite/du/du-works") | 51 | "testsuite/du/du-works") |
| 52 | (("/bin") "/etc")) ; there is no /bin but there is a /etc | 52 | (("/bin") "/etc")) ; there is no /bin but there is a /etc |
| 53 | 53 | ||
| 54 | ;; There is no /usr/bin or /bin - replace it with /gnu/store | 54 | ;; There is no /usr/bin or /bin - replace it with /gnu/store |
| 55 | (substitute* "testsuite/cpio.tests" | 55 | (substitute* "testsuite/cpio.tests" |
| 56 | (("/usr/bin") (%store-directory)) | 56 | (("/usr/bin") (%store-directory)) |
| 57 | (("usr") (car (filter (negate string-null?) | 57 | (("usr") (car (filter (negate string-null?) |
| 58 | (string-split (%store-directory) #\/))))) | 58 | (string-split (%store-directory) #\/))))) |
| 59 | 59 | ||
| 60 | (substitute* "testsuite/date/date-works-1" | 60 | (substitute* "testsuite/date/date-works-1" |
| 61 | (("/bin/date") (which "date"))) | 61 | (("/bin/date") (which "date"))) |
| 62 | 62 | ||
| 63 | ;; The pidof tests assume that pid 1 is called "init" but that is not | 63 | ;; The pidof tests assume that pid 1 is called "init" but that is not |
| 64 | ;; true in guix build environment | 64 | ;; true in guix build environment |
| 65 | (substitute* "testsuite/pidof.tests" | 65 | (substitute* "testsuite/pidof.tests" |
| 66 | (("-s init") "-s $(cat /proc/1/comm)")) | 66 | (("-s init") "-s $(cat /proc/1/comm)")) |
| 67 | 67 | ||
| 68 | (substitute* "testsuite/grep.tests" | 68 | (substitute* "testsuite/grep.tests" |
| 69 | ;; The subject of this test is buggy. It is known by upstream (fixed in git) | 69 | ;; The subject of this test is buggy. It is known by upstream (fixed in git) |
| 70 | ;; So mark it with SKIP_KNOWN_BUGS like the others. | 70 | ;; So mark it with SKIP_KNOWN_BUGS like the others. |
| 71 | ;; Presumably it wasn't known at the time of release ... | 71 | ;; Presumably it wasn't known at the time of release ... |
| 72 | ;; (It is strange that they release software which they know to have bugs) | 72 | ;; (It is strange that they release software which they know to have bugs) |
| 73 | (("testing \"grep -w \\^str doesn't match str not at the beginning\"") | 73 | (("testing \"grep -w \\^str doesn't match str not at the beginning\"") |
| 74 | "test x\"$SKIP_KNOWN_BUGS\" = x\"\" && testing \"grep -w ^str doesn't match str not at the beginning\"")) | 74 | "test x\"$SKIP_KNOWN_BUGS\" = x\"\" && testing \"grep -w ^str doesn't match str not at the beginning\"")) |
| 75 | 75 | ||
| 76 | ;; This test cannot possibly pass. | 76 | ;; This test cannot possibly pass. |
| 77 | ;; It is trying to test that "which ls" returns "/bin/ls" when PATH is not set. | 77 | ;; It is trying to test that "which ls" returns "/bin/ls" when PATH is not set. |
| @@ -83,24 +83,23 @@ | |||
| 83 | ;; "V=1" | 83 | ;; "V=1" |
| 84 | "SKIP_KNOWN_BUGS=1" | 84 | "SKIP_KNOWN_BUGS=1" |
| 85 | "SKIP_INTERNET_TESTS=1" | 85 | "SKIP_INTERNET_TESTS=1" |
| 86 | "check"))) | 86 | "check")))) |
| 87 | (alist-replace | 87 | (replace 'install |
| 88 | 'install | 88 | (lambda* (#:key outputs #:allow-other-keys) |
| 89 | (lambda* (#:key outputs #:allow-other-keys) | 89 | (let ((out (assoc-ref outputs "out"))) |
| 90 | (let ((out (assoc-ref outputs "out"))) | 90 | (zero? |
| 91 | (zero? | 91 | (system* "make" |
| 92 | (system* "make" | 92 | (string-append "CONFIG_PREFIX=" out) |
| 93 | (string-append "CONFIG_PREFIX=" out) | 93 | "install")))))))) |
| 94 | "install")))) | ||
| 95 | %standard-phases))))) | ||
| 96 | (native-inputs `(("perl" ,perl) ; needed to generate the man pages (pod2man) | 94 | (native-inputs `(("perl" ,perl) ; needed to generate the man pages (pod2man) |
| 97 | ;; The following are needed by the tests. | 95 | ;; The following are needed by the tests. |
| 98 | ("inetutils" ,inetutils) | 96 | ("inetutils" ,inetutils) |
| 97 | ("which" ,(@ (gnu packages base) which)) | ||
| 99 | ("zip" ,zip))) | 98 | ("zip" ,zip))) |
| 100 | (synopsis "Many common UNIX utilities in a single executable") | 99 | (synopsis "Many common UNIX utilities in a single executable") |
| 101 | (description "BusyBox combines tiny versions of many common UNIX utilities | 100 | (description "BusyBox combines tiny versions of many common UNIX utilities |
| 102 | into a single small executable. It provides a fairly complete environment for | 101 | into a single small executable. It provides a fairly complete environment for |
| 103 | any small or embedded system.") | 102 | any small or embedded system.") |
| 104 | (home-page "http://www.busybox.net") | 103 | (home-page "https://www.busybox.net") |
| 105 | ;; Some files are gplv2+ | 104 | ;; Some files are gplv2+ |
| 106 | (license gpl2))) | 105 | (license gpl2))) |
diff --git a/gnu/packages/ccache.scm b/gnu/packages/ccache.scm index d84ac80bbf7..01db7ae57d9 100644 --- a/gnu/packages/ccache.scm +++ b/gnu/packages/ccache.scm | |||
| @@ -1,5 +1,6 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2014, 2015, 2016 Eric Bavier <bavier@member.fsf.org> | 2 | ;;; Copyright © 2014, 2015, 2016 Eric Bavier <bavier@member.fsf.org> |
| 3 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | ||
| 3 | ;;; | 4 | ;;; |
| 4 | ;;; This file is part of GNU Guix. | 5 | ;;; This file is part of GNU Guix. |
| 5 | ;;; | 6 | ;;; |
| @@ -28,7 +29,7 @@ | |||
| 28 | (define-public ccache | 29 | (define-public ccache |
| 29 | (package | 30 | (package |
| 30 | (name "ccache") | 31 | (name "ccache") |
| 31 | (version "3.2.4") | 32 | (version "3.2.5") |
| 32 | (source | 33 | (source |
| 33 | (origin | 34 | (origin |
| 34 | (method url-fetch) | 35 | (method url-fetch) |
| @@ -36,16 +37,18 @@ | |||
| 36 | version ".tar.xz")) | 37 | version ".tar.xz")) |
| 37 | (sha256 | 38 | (sha256 |
| 38 | (base32 | 39 | (base32 |
| 39 | "0pga3hvd80f2p7mz88jmmbwzxh4vn5ihyjx5f6na8y2fclzsjg8w")))) | 40 | "11db1g109g0g5si0s50yd99ja5f8j4asxb081clvx78r9d9i2w0i")))) |
| 40 | (build-system gnu-build-system) | 41 | (build-system gnu-build-system) |
| 41 | (native-inputs `(("perl" ,perl))) ;for test.sh | 42 | (native-inputs `(("perl" ,perl) ;for test.sh |
| 43 | ("which" ,(@ (gnu packages base) which)))) | ||
| 42 | (inputs `(("zlib" ,zlib))) | 44 | (inputs `(("zlib" ,zlib))) |
| 43 | (arguments | 45 | (arguments |
| 44 | '(#:phases (alist-cons-before | 46 | '(#:phases (alist-cons-before |
| 45 | 'check 'setup-tests | 47 | 'check 'setup-tests |
| 46 | (lambda _ | 48 | (lambda _ |
| 47 | (substitute* '("test/test_hashutil.c" "test.sh") | 49 | (substitute* '("test/test_hashutil.c" "test.sh") |
| 48 | (("#!/bin/sh") (string-append "#!" (which "sh")))) | 50 | (("#!/bin/sh") (string-append "#!" (which "sh"))) |
| 51 | (("which") (which "which"))) | ||
| 49 | #t) | 52 | #t) |
| 50 | %standard-phases))) | 53 | %standard-phases))) |
| 51 | (home-page "https://ccache.samba.org/") | 54 | (home-page "https://ccache.samba.org/") |
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm index 70772bf1571..2dd84a2a176 100644 --- a/gnu/packages/cdrom.scm +++ b/gnu/packages/cdrom.scm | |||
| @@ -130,14 +130,14 @@ libcdio.") | |||
| 130 | (define-public xorriso | 130 | (define-public xorriso |
| 131 | (package | 131 | (package |
| 132 | (name "xorriso") | 132 | (name "xorriso") |
| 133 | (version "1.4.2") | 133 | (version "1.4.4") |
| 134 | (source (origin | 134 | (source (origin |
| 135 | (method url-fetch) | 135 | (method url-fetch) |
| 136 | (uri (string-append "mirror://gnu/xorriso/xorriso-" | 136 | (uri (string-append "mirror://gnu/xorriso/xorriso-" |
| 137 | version ".tar.gz")) | 137 | version ".tar.gz")) |
| 138 | (sha256 | 138 | (sha256 |
| 139 | (base32 | 139 | (base32 |
| 140 | "1cq4a0904lnz6nygbgarnlq49cz4qnfdyvz90s3nfk5as7gbwhr8")))) | 140 | "1izv8dvwacyh432vv1rm6lyjrq0v205kyakfra6iwa146c9m9fgr")))) |
| 141 | (build-system gnu-build-system) | 141 | (build-system gnu-build-system) |
| 142 | (inputs | 142 | (inputs |
| 143 | `(("acl" ,acl) | 143 | `(("acl" ,acl) |
| @@ -145,7 +145,7 @@ libcdio.") | |||
| 145 | ("bzip2" ,bzip2) | 145 | ("bzip2" ,bzip2) |
| 146 | ("zlib" ,zlib) | 146 | ("zlib" ,zlib) |
| 147 | ("libcdio" ,libcdio))) | 147 | ("libcdio" ,libcdio))) |
| 148 | (home-page "http://www.gnu.org/software/xorriso/") | 148 | (home-page "https://www.gnu.org/software/xorriso/") |
| 149 | (synopsis "Create, manipulate, burn ISO-9660 filesystems") | 149 | (synopsis "Create, manipulate, burn ISO-9660 filesystems") |
| 150 | (description | 150 | (description |
| 151 | "GNU Xorriso is a tool for copying files to and from ISO 9660 Rock | 151 | "GNU Xorriso is a tool for copying files to and from ISO 9660 Rock |
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index 47e0499f7f3..af3bba1f61f 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm | |||
| @@ -10,6 +10,7 @@ | |||
| 10 | ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> | 10 | ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> |
| 11 | ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> | 11 | ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> |
| 12 | ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org> | 12 | ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org> |
| 13 | ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr> | ||
| 13 | ;;; | 14 | ;;; |
| 14 | ;;; This file is part of GNU Guix. | 15 | ;;; This file is part of GNU Guix. |
| 15 | ;;; | 16 | ;;; |
| @@ -796,3 +797,39 @@ respectively, based on the reference implementation from Google.") | |||
| 796 | (description "Extracts files out of Microsoft Cabinet (.cab) archives") | 797 | (description "Extracts files out of Microsoft Cabinet (.cab) archives") |
| 797 | ;; Some source files specify gpl2+, lgpl2+, however COPYING is gpl3. | 798 | ;; Some source files specify gpl2+, lgpl2+, however COPYING is gpl3. |
| 798 | (license license:gpl3+))) | 799 | (license license:gpl3+))) |
| 800 | |||
| 801 | (define-public xdelta | ||
| 802 | (package | ||
| 803 | (name "xdelta") | ||
| 804 | (version "3.1.0") | ||
| 805 | (source | ||
| 806 | (origin | ||
| 807 | (method url-fetch) | ||
| 808 | (uri (string-append "https://github.com/jmacd/xdelta/archive/v" | ||
| 809 | version ".tar.gz")) | ||
| 810 | (sha256 | ||
| 811 | (base32 | ||
| 812 | "17g2pbbqy6h20qgdjq7ykib7kg5ajh8fwbsfgyjqg8pwg19wy5bm")) | ||
| 813 | (file-name (string-append name "-" version ".tar.gz")) | ||
| 814 | (snippet | ||
| 815 | ;; This file isn't freely distributable and has no effect on building. | ||
| 816 | '(delete-file "xdelta3/draft-korn-vcdiff.txt")))) | ||
| 817 | (build-system gnu-build-system) | ||
| 818 | (native-inputs | ||
| 819 | `(("autoconf" ,autoconf) | ||
| 820 | ("automake" ,automake))) | ||
| 821 | (arguments | ||
| 822 | `(#:phases | ||
| 823 | (modify-phases %standard-phases | ||
| 824 | (add-after 'unpack 'enter-build-directory | ||
| 825 | (lambda _ (chdir "xdelta3"))) | ||
| 826 | (add-before 'configure 'autoconf | ||
| 827 | (lambda _ (zero? (system* "autoreconf" "-vfi"))))))) | ||
| 828 | (home-page "http://xdelta.com") | ||
| 829 | (synopsis "Delta encoder for binary files") | ||
| 830 | (description "xdelta encodes only the differences between two binary files | ||
| 831 | using the VCDIFF algorithm and patch file format described in RFC 3284. It can | ||
| 832 | also be used to apply such patches. xdelta is similar to @command{diff} and | ||
| 833 | @command{patch}, but is not limited to plain text and does not generate | ||
| 834 | human-readable output.") | ||
| 835 | (license license:asl2.0))) | ||
diff --git a/gnu/packages/conkeror.scm b/gnu/packages/conkeror.scm index cfeb22e8c3d..d9722a1906f 100644 --- a/gnu/packages/conkeror.scm +++ b/gnu/packages/conkeror.scm | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com> | 2 | ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com> |
| 3 | ;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org> | 3 | ;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org> |
| 4 | ;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net> | ||
| 4 | ;;; | 5 | ;;; |
| 5 | ;;; This file is part of GNU Guix. | 6 | ;;; This file is part of GNU Guix. |
| 6 | ;;; | 7 | ;;; |
| @@ -28,16 +29,16 @@ | |||
| 28 | (define-public conkeror | 29 | (define-public conkeror |
| 29 | (package | 30 | (package |
| 30 | (name "conkeror") | 31 | (name "conkeror") |
| 31 | (version "1.0pre1.20150730") | 32 | (version "1.0.3") |
| 32 | (source (origin | 33 | (source (origin |
| 33 | (method url-fetch) | 34 | (method url-fetch) |
| 34 | (uri | 35 | (uri |
| 35 | (string-append "http://repo.or.cz/w/conkeror.git/snapshot/" | 36 | (string-append "http://repo.or.cz/conkeror.git/snapshot/" |
| 36 | "a1f7e879b129df5cf14ea4ce80a9c1407380ed58" | 37 | version ".tar.gz")) |
| 37 | ".tar.gz")) ; tag: debian-1.0--pre-1+git150730-1 | 38 | (file-name (string-append name "-" version ".tar.gz")) |
| 38 | (sha256 | 39 | (sha256 |
| 39 | (base32 | 40 | (base32 |
| 40 | "1q45hc30733gz3ca2ixvw0rzzcbi7rlay7gx7kvzjv17a030nyk0")))) | 41 | "0ybmincxw3msnrfpby9gnckbq2x94c7fra2m66zham54cjc7mav3")))) |
| 41 | (build-system gnu-build-system) | 42 | (build-system gnu-build-system) |
| 42 | (inputs `(("icecat" ,icecat))) | 43 | (inputs `(("icecat" ,icecat))) |
| 43 | (arguments | 44 | (arguments |
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm index f167f3320c8..7d61164b059 100644 --- a/gnu/packages/crypto.scm +++ b/gnu/packages/crypto.scm | |||
| @@ -3,6 +3,7 @@ | |||
| 3 | ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> | 3 | ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> |
| 4 | ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> | 4 | ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> |
| 5 | ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox> | 5 | ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox> |
| 6 | ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr> | ||
| 6 | ;;; | 7 | ;;; |
| 7 | ;;; This file is part of GNU Guix. | 8 | ;;; This file is part of GNU Guix. |
| 8 | ;;; | 9 | ;;; |
| @@ -22,14 +23,18 @@ | |||
| 22 | (define-module (gnu packages crypto) | 23 | (define-module (gnu packages crypto) |
| 23 | #:use-module (gnu packages) | 24 | #:use-module (gnu packages) |
| 24 | #:use-module (gnu packages autotools) | 25 | #:use-module (gnu packages autotools) |
| 26 | #:use-module (gnu packages boost) | ||
| 27 | #:use-module (gnu packages gettext) | ||
| 25 | #:use-module (gnu packages pkg-config) | 28 | #:use-module (gnu packages pkg-config) |
| 26 | #:use-module (gnu packages libbsd) | 29 | #:use-module (gnu packages libbsd) |
| 30 | #:use-module (gnu packages linux) | ||
| 27 | #:use-module (gnu packages nettle) | 31 | #:use-module (gnu packages nettle) |
| 28 | #:use-module (gnu packages password-utils) | 32 | #:use-module (gnu packages password-utils) |
| 33 | #:use-module (gnu packages perl) | ||
| 29 | #:use-module (gnu packages readline) | 34 | #:use-module (gnu packages readline) |
| 30 | #:use-module (gnu packages serialization) | 35 | #:use-module (gnu packages serialization) |
| 31 | #:use-module (gnu packages tls) | 36 | #:use-module (gnu packages tls) |
| 32 | #:use-module (guix licenses) | 37 | #:use-module ((guix licenses) #:prefix license:) |
| 33 | #:use-module (guix packages) | 38 | #:use-module (guix packages) |
| 34 | #:use-module (guix download) | 39 | #:use-module (guix download) |
| 35 | #:use-module (guix build-system gnu)) | 40 | #:use-module (guix build-system gnu)) |
| @@ -54,7 +59,7 @@ | |||
| 54 | (description | 59 | (description |
| 55 | "Sodium is a new easy-to-use high-speed software library for network | 60 | "Sodium is a new easy-to-use high-speed software library for network |
| 56 | communication, encryption, decryption, signatures, etc.") | 61 | communication, encryption, decryption, signatures, etc.") |
| 57 | (license isc) | 62 | (license license:isc) |
| 58 | (home-page "http://libsodium.org"))) | 63 | (home-page "http://libsodium.org"))) |
| 59 | 64 | ||
| 60 | (define-public signify | 65 | (define-public signify |
| @@ -91,10 +96,11 @@ OpenBSD tool of the same name.") | |||
| 91 | (home-page "https://github.com/aperezdc/signify") | 96 | (home-page "https://github.com/aperezdc/signify") |
| 92 | ;; This package includes third-party code that was originally released under | 97 | ;; This package includes third-party code that was originally released under |
| 93 | ;; various non-copyleft licenses. See the source files for clarification. | 98 | ;; various non-copyleft licenses. See the source files for clarification. |
| 94 | (license (list bsd-3 bsd-4 expat isc public-domain | 99 | (license (list license:bsd-3 license:bsd-4 license:expat license:isc |
| 95 | (non-copyleft "file://base64.c" | 100 | license:public-domain (license:non-copyleft |
| 96 | "See base64.c in the distribution for | 101 | "file://base64.c" |
| 97 | the license from IBM."))))) | 102 | "See base64.c in the distribution for |
| 103 | the license from IBM."))))) | ||
| 98 | 104 | ||
| 99 | 105 | ||
| 100 | (define-public opendht | 106 | (define-public opendht |
| @@ -146,4 +152,74 @@ OpenBSD tool of the same name.") | |||
| 146 | (description "OpenDHT is a Distributed Hash Table (DHT) library. It may | 152 | (description "OpenDHT is a Distributed Hash Table (DHT) library. It may |
| 147 | be used to manage peer-to-peer network connections as needed for real time | 153 | be used to manage peer-to-peer network connections as needed for real time |
| 148 | communication.") | 154 | communication.") |
| 149 | (license gpl3))) | 155 | (license license:gpl3))) |
| 156 | |||
| 157 | (define rlog | ||
| 158 | (package | ||
| 159 | (name "rlog") | ||
| 160 | (version "1.4") | ||
| 161 | (source | ||
| 162 | (origin | ||
| 163 | (method url-fetch) | ||
| 164 | (uri | ||
| 165 | (string-append "http://rlog.googlecode.com/files/rlog-" | ||
| 166 | version ".tar.gz")) | ||
| 167 | (sha256 | ||
| 168 | (base32 | ||
| 169 | "0y9zg0pd7vmnskwac1qdyzl282z7kb01nmn57lsg2mjdxgnywf59")))) | ||
| 170 | (build-system gnu-build-system) | ||
| 171 | (arguments | ||
| 172 | `(#:phases (modify-phases %standard-phases | ||
| 173 | (add-before 'configure 'patch-/bin/sh | ||
| 174 | (lambda _ | ||
| 175 | (substitute* "docs/Makefile.in" | ||
| 176 | (("/bin/sh") "sh"))))))) | ||
| 177 | (home-page "http://www.arg0.net/rlog") | ||
| 178 | (synopsis "Flexible message logging library for EncFS") | ||
| 179 | (description | ||
| 180 | "RLog provides message logging for EncFS. It is no longer maintained.") | ||
| 181 | (license license:lgpl2.1+))) | ||
| 182 | |||
| 183 | (define-public encfs | ||
| 184 | (package | ||
| 185 | (name "encfs") | ||
| 186 | (version "1.8.1") | ||
| 187 | (source | ||
| 188 | (origin | ||
| 189 | (method url-fetch) | ||
| 190 | (uri | ||
| 191 | (string-append "https://github.com/vgough/encfs/releases/download/v" | ||
| 192 | version "/encfs-" version ".tar.gz")) | ||
| 193 | (sha256 | ||
| 194 | (base32 | ||
| 195 | "1lfmcsk187qr6ahy8c8959p7jrk9d5rd9kcsx572850ca3zmf0la")))) | ||
| 196 | (build-system gnu-build-system) | ||
| 197 | (arguments | ||
| 198 | `(#:configure-flags '("--with-boost-serialization=boost_wserialization" | ||
| 199 | "--with-boost-filesystem=boost_filesystem") | ||
| 200 | #:phases (modify-phases %standard-phases | ||
| 201 | (add-before 'configure 'autoconf | ||
| 202 | (lambda _ | ||
| 203 | (zero? (system* "autoreconf" "-vfi"))))))) | ||
| 204 | (native-inputs | ||
| 205 | `(("autoconf" ,autoconf) | ||
| 206 | ("automake" ,automake) | ||
| 207 | ("gettext" ,gnu-gettext) | ||
| 208 | ("libtool" ,libtool) | ||
| 209 | ("perl" ,perl) | ||
| 210 | ("pkg-config" ,pkg-config))) | ||
| 211 | (inputs | ||
| 212 | `(("boost" ,boost) | ||
| 213 | ("fuse" ,fuse) | ||
| 214 | ("openssl" ,openssl) | ||
| 215 | ("rlog" ,rlog))) | ||
| 216 | (home-page "https://vgough.github.io/encfs") | ||
| 217 | (synopsis "Encrypted virtual file system") | ||
| 218 | (description | ||
| 219 | "EncFS creates a virtual encrypted file system in user-space. Each file | ||
| 220 | created under an EncFS mount point is stored as a separate encrypted file on | ||
| 221 | the underlying file system. Like most encrypted file systems, EncFS is meant | ||
| 222 | to provide security against off-line attacks, such as a drive falling into | ||
| 223 | the wrong hands.") | ||
| 224 | (license (list license:lgpl3+ ;encfs library | ||
| 225 | license:gpl3+)))) ;command-line tools | ||
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 4f2f211fb3f..fdee887af78 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> | 8 | ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> |
| 9 | ;;; Copyright © 2015 Leo Famulari <leo@famulari.name> | 9 | ;;; Copyright © 2015 Leo Famulari <leo@famulari.name> |
| 10 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | 10 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> |
| 11 | ;;; Copyright © 2016 Nils Gillmann <niasterisk@grrlz.net> | 11 | ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is> |
| 12 | ;;; Copyright © 2016 Roel Janssen <roel@gnu.org> | 12 | ;;; Copyright © 2016 Roel Janssen <roel@gnu.org> |
| 13 | ;;; | 13 | ;;; |
| 14 | ;;; This file is part of GNU Guix. | 14 | ;;; This file is part of GNU Guix. |
diff --git a/gnu/packages/datastructures.scm b/gnu/packages/datastructures.scm index 74b9fff4afe..b9e6061238e 100644 --- a/gnu/packages/datastructures.scm +++ b/gnu/packages/datastructures.scm | |||
| @@ -1,5 +1,6 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> | 2 | ;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> |
| 3 | ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr> | ||
| 3 | ;;; | 4 | ;;; |
| 4 | ;;; This file is part of GNU Guix. | 5 | ;;; This file is part of GNU Guix. |
| 5 | ;;; | 6 | ;;; |
| @@ -70,3 +71,24 @@ probing. This method is space-efficient -- there is no pointer overhead -- | |||
| 70 | and time-efficient for good hash functions.") | 71 | and time-efficient for good hash functions.") |
| 71 | (home-page "https://github.com/sparsehash/sparsehash") | 72 | (home-page "https://github.com/sparsehash/sparsehash") |
| 72 | (license license:bsd-3))) | 73 | (license license:bsd-3))) |
| 74 | |||
| 75 | (define-public ssdeep | ||
| 76 | (package | ||
| 77 | (name "ssdeep") | ||
| 78 | (version "2.13") | ||
| 79 | (source (origin | ||
| 80 | (method url-fetch) | ||
| 81 | (uri (string-append "mirror://sourceforge/ssdeep/" | ||
| 82 | name "-" version "/" | ||
| 83 | name "-" version ".tar.gz")) | ||
| 84 | (sha256 | ||
| 85 | (base32 | ||
| 86 | "1igqy0j7jrklb8fdlrm6ald4cyl1fda5ipfl8crzyl6bax2ajk3f")))) | ||
| 87 | (build-system gnu-build-system) | ||
| 88 | (home-page "http://ssdeep.sourceforge.net") | ||
| 89 | (synopsis "Context-triggered piecewise hashing algorithm") | ||
| 90 | (description "ssdeep computes and matches context triggered piecewise | ||
| 91 | hashes (CTPH), also called fuzzy checksums. It can identify similar files | ||
| 92 | that have sequences of identical bytes in the same order, even though bytes | ||
| 93 | in between these sequences may be different in both content and length.") | ||
| 94 | (license license:gpl2+))) | ||
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm index c60eacb15ef..54f23db01e2 100644 --- a/gnu/packages/disk.scm +++ b/gnu/packages/disk.scm | |||
| @@ -2,8 +2,9 @@ | |||
| 2 | ;;; Copyright © 2012, 2013 Nikita Karetnikov <nikita@karetnikov.org> | 2 | ;;; Copyright © 2012, 2013 Nikita Karetnikov <nikita@karetnikov.org> |
| 3 | ;;; Copyright © 2015 Mathieu Lirzin <mthl@gnu.org> | 3 | ;;; Copyright © 2015 Mathieu Lirzin <mthl@gnu.org> |
| 4 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> | 4 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> |
| 5 | ;;; Copyright © 2016 Tobias Geerinckx-Rice <tobias.geerinckx.rice@gmail.com> | 5 | ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr> |
| 6 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | 6 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> |
| 7 | ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> | ||
| 7 | ;;; | 8 | ;;; |
| 8 | ;;; This file is part of GNU Guix. | 9 | ;;; This file is part of GNU Guix. |
| 9 | ;;; | 10 | ;;; |
| @@ -25,9 +26,12 @@ | |||
| 25 | #:use-module (guix packages) | 26 | #:use-module (guix packages) |
| 26 | #:use-module (guix download) | 27 | #:use-module (guix download) |
| 27 | #:use-module (guix build-system gnu) | 28 | #:use-module (guix build-system gnu) |
| 29 | #:use-module (gnu packages) | ||
| 28 | #:use-module (gnu packages gettext) | 30 | #:use-module (gnu packages gettext) |
| 29 | #:use-module (gnu packages linux) | 31 | #:use-module (gnu packages linux) |
| 32 | #:use-module (gnu packages ncurses) | ||
| 30 | #:use-module (gnu packages perl) | 33 | #:use-module (gnu packages perl) |
| 34 | #:use-module (gnu packages popt) | ||
| 31 | #:use-module (gnu packages python) | 35 | #:use-module (gnu packages python) |
| 32 | #:use-module (gnu packages readline) | 36 | #:use-module (gnu packages readline) |
| 33 | #:use-module (gnu packages guile) | 37 | #:use-module (gnu packages guile) |
| @@ -97,6 +101,46 @@ fdisk. fdisk is used for the creation and manipulation of disk partition | |||
| 97 | tables, and it understands a variety of different formats.") | 101 | tables, and it understands a variety of different formats.") |
| 98 | (license gpl3+))) | 102 | (license gpl3+))) |
| 99 | 103 | ||
| 104 | (define-public gptfdisk | ||
| 105 | (package | ||
| 106 | (name "gptfdisk") | ||
| 107 | (version "1.0.1") | ||
| 108 | (source | ||
| 109 | (origin | ||
| 110 | (method url-fetch) | ||
| 111 | (uri (string-append "mirror://sourceforge/gptfdisk/gptfdisk/" | ||
| 112 | version "/" name "-" version ".tar.gz")) | ||
| 113 | (sha256 | ||
| 114 | (base32 | ||
| 115 | "1izazbyv5n2d81qdym77i8mg9m870hiydmq4d0s51npx5vp8lk46")))) | ||
| 116 | (build-system gnu-build-system) | ||
| 117 | (inputs | ||
| 118 | `(("gettext" ,gnu-gettext) | ||
| 119 | ("ncurses" ,ncurses) | ||
| 120 | ("popt" ,popt) | ||
| 121 | ("util-linux" ,util-linux))) ; libuuid | ||
| 122 | (arguments | ||
| 123 | `(#:test-target "test" | ||
| 124 | #:phases | ||
| 125 | (modify-phases %standard-phases | ||
| 126 | ;; no configure script | ||
| 127 | (delete 'configure) | ||
| 128 | ;; no install target | ||
| 129 | (replace 'install | ||
| 130 | (lambda* (#:key outputs #:allow-other-keys) | ||
| 131 | (let ((bin (string-append (assoc-ref outputs "out") "/bin"))) | ||
| 132 | (install-file "gdisk" bin) | ||
| 133 | (install-file "sgdisk" bin) | ||
| 134 | (install-file "cgdisk" bin) | ||
| 135 | (install-file "fixparts" bin))))))) | ||
| 136 | (home-page "http://www.rodsbooks.com/gdisk/") | ||
| 137 | (synopsis "Low-level GPT disk partitioning and formatting") | ||
| 138 | (description "GPT fdisk (aka gdisk) is a text-mode partitioning tool that | ||
| 139 | works on Globally Unique Identifier (GUID) Partition Table (GPT) disks, rather | ||
| 140 | than on the more common (through 2009) Master Boot Record (MBR) partition | ||
| 141 | tables.") | ||
| 142 | (license gpl2))) | ||
| 143 | |||
| 100 | (define-public ddrescue | 144 | (define-public ddrescue |
| 101 | (package | 145 | (package |
| 102 | (name "ddrescue") | 146 | (name "ddrescue") |
diff --git a/gnu/packages/documentation.scm b/gnu/packages/documentation.scm index 17a69e2c255..8302cc49cc9 100644 --- a/gnu/packages/documentation.scm +++ b/gnu/packages/documentation.scm | |||
| @@ -2,6 +2,7 @@ | |||
| 2 | ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org> | 2 | ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org> |
| 3 | ;;; Copyright © 2014, 2016 Andreas Enge <andreas@enge.fr> | 3 | ;;; Copyright © 2014, 2016 Andreas Enge <andreas@enge.fr> |
| 4 | ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org> | 4 | ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org> |
| 5 | ;;; Copyright © 2016 Roel Janssen <roel@gnu.org> | ||
| 5 | ;;; | 6 | ;;; |
| 6 | ;;; This file is part of GNU Guix. | 7 | ;;; This file is part of GNU Guix. |
| 7 | ;;; | 8 | ;;; |
| @@ -27,9 +28,11 @@ | |||
| 27 | #:use-module (gnu packages) | 28 | #:use-module (gnu packages) |
| 28 | #:use-module (gnu packages python) | 29 | #:use-module (gnu packages python) |
| 29 | #:use-module (gnu packages bison) | 30 | #:use-module (gnu packages bison) |
| 31 | #:use-module (gnu packages docbook) | ||
| 30 | #:use-module (gnu packages flex) | 32 | #:use-module (gnu packages flex) |
| 31 | #:use-module (gnu packages graphviz) | 33 | #:use-module (gnu packages graphviz) |
| 32 | #:use-module (gnu packages gettext) | 34 | #:use-module (gnu packages gettext) |
| 35 | #:use-module (gnu packages glib) | ||
| 33 | #:use-module (gnu packages perl) | 36 | #:use-module (gnu packages perl) |
| 34 | #:use-module (gnu packages xml) | 37 | #:use-module (gnu packages xml) |
| 35 | #:autoload (gnu packages zip) (unzip)) | 38 | #:autoload (gnu packages zip) (unzip)) |
| @@ -115,3 +118,38 @@ generate both TeX output for high-quality hardcopies or HTML output for online | |||
| 115 | brwosing. The documentation is extracted directly from the C/C++/IDL source | 118 | brwosing. The documentation is extracted directly from the C/C++/IDL source |
| 116 | or Java class files.") | 119 | or Java class files.") |
| 117 | (license gpl2+))) | 120 | (license gpl2+))) |
| 121 | |||
| 122 | (define-public scrollkeeper | ||
| 123 | (package | ||
| 124 | (name "scrollkeeper") | ||
| 125 | (version "0.3.14") | ||
| 126 | (source | ||
| 127 | (origin | ||
| 128 | (method url-fetch) | ||
| 129 | (uri (string-append "mirror://sourceforge/scrollkeeper/scrollkeeper-" | ||
| 130 | version ".tar.gz")) | ||
| 131 | (sha256 | ||
| 132 | (base32 "1bfxwxc1ngh11v36z899sz9qam366r050fhkyb5adv65lb1x62sa")))) | ||
| 133 | (build-system gnu-build-system) | ||
| 134 | (arguments | ||
| 135 | `(#:configure-flags | ||
| 136 | (list (string-append "--with-xml-catalog=" | ||
| 137 | (assoc-ref %build-inputs "docbook-xml") | ||
| 138 | "/xml/dtd/docbook/catalog.xml")))) | ||
| 139 | (inputs | ||
| 140 | `(("perl" ,perl) | ||
| 141 | ("libxml2" ,libxml2) | ||
| 142 | ("libxslt" ,libxslt) | ||
| 143 | ;; The configure script checks for either version 4.2 or 4.1.2. | ||
| 144 | ("docbook-xml" ,docbook-xml-4.2))) | ||
| 145 | (native-inputs | ||
| 146 | `(("intltool" ,intltool))) | ||
| 147 | (home-page "http://scrollkeeper.sourceforge.net/") | ||
| 148 | (synopsis "Open Documentation Cataloging Project") | ||
| 149 | (description "ScrollKeeper is a cataloging system for documentation on open | ||
| 150 | systems. It manages documentation metadata as specified by the Open Source | ||
| 151 | Metadata Framework and provides a simple API to allow help browsers to find, | ||
| 152 | sort, and search the document catalog. It will also be able to communicate | ||
| 153 | with catalog servers on the Net to search for documents which are not on the | ||
| 154 | local system.") | ||
| 155 | (license lgpl2.1+))) | ||
diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index f7e15584f38..69946b1e787 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm | |||
| @@ -61,7 +61,7 @@ | |||
| 61 | (define-public calibre | 61 | (define-public calibre |
| 62 | (package | 62 | (package |
| 63 | (name "calibre") | 63 | (name "calibre") |
| 64 | (version "2.58.0") | 64 | (version "2.62.0") |
| 65 | (source | 65 | (source |
| 66 | (origin | 66 | (origin |
| 67 | (method url-fetch) | 67 | (method url-fetch) |
| @@ -70,7 +70,7 @@ | |||
| 70 | version ".tar.xz")) | 70 | version ".tar.xz")) |
| 71 | (sha256 | 71 | (sha256 |
| 72 | (base32 | 72 | (base32 |
| 73 | "0npqvfjqj1vwa7nmnsyd4d30z40brydw275ldf1jankrp6dr9dyd")) | 73 | "15qskfsdg3fy9cpw1m3mccwgn45366yn7lci5kim0fdzpw9pnkna")) |
| 74 | ;; Remove non-free or doubtful code, see | 74 | ;; Remove non-free or doubtful code, see |
| 75 | ;; https://lists.gnu.org/archive/html/guix-devel/2015-02/msg00478.html | 75 | ;; https://lists.gnu.org/archive/html/guix-devel/2015-02/msg00478.html |
| 76 | (modules '((guix build utils))) | 76 | (modules '((guix build utils))) |
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 7b60722c101..926db42a467 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm | |||
| @@ -5,7 +5,6 @@ | |||
| 5 | ;;; Copyright © 2014, 2015, 2016 Alex Kost <alezost@gmail.com> | 5 | ;;; Copyright © 2014, 2015, 2016 Alex Kost <alezost@gmail.com> |
| 6 | ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch> | 6 | ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch> |
| 7 | ;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> | 7 | ;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> |
| 8 | ;;; Copyright © 2016 Nils Gillmann <niasterisk@grrlz.net> | ||
| 9 | ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com> | 8 | ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com> |
| 10 | ;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org> | 9 | ;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org> |
| 11 | ;;; Copyright © 2016 humanitiesNerd <catonano@gmail.com> | 10 | ;;; Copyright © 2016 humanitiesNerd <catonano@gmail.com> |
| @@ -47,6 +46,7 @@ | |||
| 47 | #:use-module (gnu packages gtk) | 46 | #:use-module (gnu packages gtk) |
| 48 | #:use-module (gnu packages gnome) | 47 | #:use-module (gnu packages gnome) |
| 49 | #:use-module (gnu packages ncurses) | 48 | #:use-module (gnu packages ncurses) |
| 49 | #:use-module (gnu packages tex) | ||
| 50 | #:use-module (gnu packages texinfo) | 50 | #:use-module (gnu packages texinfo) |
| 51 | #:use-module (gnu packages tls) | 51 | #:use-module (gnu packages tls) |
| 52 | #:use-module (gnu packages pkg-config) | 52 | #:use-module (gnu packages pkg-config) |
| @@ -68,6 +68,7 @@ | |||
| 68 | #:use-module (gnu packages perl) | 68 | #:use-module (gnu packages perl) |
| 69 | #:use-module (gnu packages pdf) | 69 | #:use-module (gnu packages pdf) |
| 70 | #:use-module (gnu packages scheme) | 70 | #:use-module (gnu packages scheme) |
| 71 | #:use-module (gnu packages statistics) | ||
| 71 | #:use-module (gnu packages xiph) | 72 | #:use-module (gnu packages xiph) |
| 72 | #:use-module (gnu packages mp3) | 73 | #:use-module (gnu packages mp3) |
| 73 | #:use-module (guix utils) | 74 | #:use-module (guix utils) |
| @@ -554,6 +555,31 @@ operations.") | |||
| 554 | support for Git-SVN.") | 555 | support for Git-SVN.") |
| 555 | (license license:gpl3+))) | 556 | (license license:gpl3+))) |
| 556 | 557 | ||
| 558 | (define-public emacs-magit-popup | ||
| 559 | (package | ||
| 560 | (name "emacs-magit-popup") | ||
| 561 | (version (package-version magit)) | ||
| 562 | (source (origin | ||
| 563 | (method url-fetch) | ||
| 564 | (uri (string-append | ||
| 565 | "https://raw.githubusercontent.com/magit/magit/" | ||
| 566 | version "/lisp/magit-popup.el")) | ||
| 567 | (file-name (string-append "magit-popup-" version ".el")) | ||
| 568 | (sha256 | ||
| 569 | (base32 | ||
| 570 | "144nl7j5mn86ccan6qxgg40bsxpkbc83vwnhd5y657gqki74972r")))) | ||
| 571 | (build-system emacs-build-system) | ||
| 572 | (propagated-inputs | ||
| 573 | `(("emacs-dash" ,emacs-dash))) | ||
| 574 | (home-page "https://github.com/magit/magit") | ||
| 575 | (synopsis "Define prefix-infix-suffix command combos") | ||
| 576 | (description | ||
| 577 | "This library implements a generic interface for toggling switches and | ||
| 578 | setting options and then invoking an Emacs command which does something with | ||
| 579 | these arguments. The prototypical use is for the command to call an external | ||
| 580 | process, passing on the arguments as command line arguments.") | ||
| 581 | (license license:gpl3+))) | ||
| 582 | |||
| 557 | (define-public haskell-mode | 583 | (define-public haskell-mode |
| 558 | (package | 584 | (package |
| 559 | (name "haskell-mode") | 585 | (name "haskell-mode") |
| @@ -664,7 +690,7 @@ the body are let-bound and this search is done at compile time.") | |||
| 664 | (define-public flycheck | 690 | (define-public flycheck |
| 665 | (package | 691 | (package |
| 666 | (name "emacs-flycheck") | 692 | (name "emacs-flycheck") |
| 667 | (version "0.23") | 693 | (version "28") |
| 668 | (source (origin | 694 | (source (origin |
| 669 | (method url-fetch) | 695 | (method url-fetch) |
| 670 | (uri (string-append | 696 | (uri (string-append |
| @@ -672,11 +698,12 @@ the body are let-bound and this search is done at compile time.") | |||
| 672 | version "/flycheck-" version ".tar")) | 698 | version "/flycheck-" version ".tar")) |
| 673 | (sha256 | 699 | (sha256 |
| 674 | (base32 | 700 | (base32 |
| 675 | "1n2cifzsl5dbv42l82bi3y1vk6q33msi8dd4bj7b9nvnl9jfjj5b")))) | 701 | "1yjxivk11d7w39zfhj2xr4h6xhwx1aj6yhyzd63rjrad7xpjfl86")))) |
| 676 | (build-system emacs-build-system) | 702 | (build-system emacs-build-system) |
| 677 | (propagated-inputs | 703 | (propagated-inputs |
| 678 | `(("emacs-dash" ,emacs-dash) | 704 | `(("emacs-dash" ,emacs-dash) |
| 679 | ("emacs-let-alist" ,let-alist))) | 705 | ("emacs-let-alist" ,let-alist) |
| 706 | ("emacs-seq" ,emacs-seq))) | ||
| 680 | (home-page "https://www.flycheck.org") | 707 | (home-page "https://www.flycheck.org") |
| 681 | (synopsis "On-the-fly syntax checking") | 708 | (synopsis "On-the-fly syntax checking") |
| 682 | (description | 709 | (description |
| @@ -821,7 +848,7 @@ provides an optional IDE-like error list.") | |||
| 821 | 848 | ||
| 822 | (define-public emms | 849 | (define-public emms |
| 823 | (package | 850 | (package |
| 824 | (name "emms") | 851 | (name "emacs-emms") |
| 825 | (version "4.1") | 852 | (version "4.1") |
| 826 | (source (origin | 853 | (source (origin |
| 827 | (method url-fetch) | 854 | (method url-fetch) |
| @@ -933,6 +960,29 @@ light user interface.") | |||
| 933 | (home-page "http://www.gnu.org/software/emms/") | 960 | (home-page "http://www.gnu.org/software/emms/") |
| 934 | (license license:gpl3+))) | 961 | (license license:gpl3+))) |
| 935 | 962 | ||
| 963 | (define-public emacs-emms-player-mpv | ||
| 964 | (package | ||
| 965 | (name "emacs-emms-player-mpv") | ||
| 966 | (version "0.0.8") | ||
| 967 | (source | ||
| 968 | (origin | ||
| 969 | (method url-fetch) | ||
| 970 | (uri (string-append "https://github.com/dochang/emms-player-mpv/archive/" | ||
| 971 | version ".tar.gz")) | ||
| 972 | (file-name (string-append name "-" version ".tar.gz")) | ||
| 973 | (sha256 | ||
| 974 | (base32 | ||
| 975 | "01wj410dpx25b3i8781i2j9c6nlvzvvphy9qgh7zfpmyz6a3wsm4")))) | ||
| 976 | (build-system emacs-build-system) | ||
| 977 | (propagated-inputs | ||
| 978 | `(("emms" ,emms))) | ||
| 979 | (home-page "https://github.com/dochang/emms-player-mpv/") | ||
| 980 | (synopsis "Mpv support for EMMS") | ||
| 981 | (description | ||
| 982 | "This package provides an EMMS player that uses mpv. It supports pause | ||
| 983 | and seeking.") | ||
| 984 | (license license:gpl3+))) | ||
| 985 | |||
| 936 | 986 | ||
| 937 | ;;; | 987 | ;;; |
| 938 | ;;; Miscellaneous. | 988 | ;;; Miscellaneous. |
| @@ -1225,6 +1275,317 @@ strings.") | |||
| 1225 | files and directories.") | 1275 | files and directories.") |
| 1226 | (license license:gpl3+))) | 1276 | (license license:gpl3+))) |
| 1227 | 1277 | ||
| 1278 | (define-public emacs-el-mock | ||
| 1279 | (package | ||
| 1280 | (name "emacs-el-mock") | ||
| 1281 | (version "1.25.1") | ||
| 1282 | (source | ||
| 1283 | (origin | ||
| 1284 | (method url-fetch) | ||
| 1285 | (uri (string-append "https://github.com/rejeep/el-mock.el/" | ||
| 1286 | "archive/v" version ".tar.gz")) | ||
| 1287 | (file-name (string-append name "-" version ".tar.gz")) | ||
| 1288 | (sha256 | ||
| 1289 | (base32 | ||
| 1290 | "16xw94n58xxn3zvgyj72bmzs0k5lkvswjmzs79ws9n7rzdivb38b")))) | ||
| 1291 | (build-system emacs-build-system) | ||
| 1292 | (home-page "http://github.com/rejeep/el-mock.el") | ||
| 1293 | (synopsis "Tiny mock and stub framework in Emacs Lisp") | ||
| 1294 | (description | ||
| 1295 | "Emacs Lisp Mock is a library for mocking and stubbing using readable | ||
| 1296 | syntax. Most commonly Emacs Lisp Mock is used in conjunction with Emacs Lisp | ||
| 1297 | Expectations, but it can be used in other contexts.") | ||
| 1298 | (license license:gpl3+))) | ||
| 1299 | |||
| 1300 | (define-public emacs-espuds | ||
| 1301 | (package | ||
| 1302 | (name "emacs-espuds") | ||
| 1303 | (version "0.3.3") | ||
| 1304 | (source | ||
| 1305 | (origin | ||
| 1306 | (method url-fetch) | ||
| 1307 | (uri (string-append "https://github.com/ecukes/espuds/" | ||
| 1308 | "archive/v" version ".tar.gz")) | ||
| 1309 | (file-name (string-append name "-" version ".tar.gz")) | ||
| 1310 | (sha256 | ||
| 1311 | (base32 | ||
| 1312 | "0xv551376pbmh735a3zjwc9z4qdx6ngj1vpq3xqjpn0a1rwjyn4k")))) | ||
| 1313 | (build-system emacs-build-system) | ||
| 1314 | (propagated-inputs | ||
| 1315 | `(("emacs-s" ,emacs-s) | ||
| 1316 | ("emacs-dash" ,emacs-dash) | ||
| 1317 | ("emacs-f" ,emacs-f))) | ||
| 1318 | (home-page "http://github.com/ecukes/espuds") | ||
| 1319 | (synopsis "Common step definitions for Ecukes") | ||
| 1320 | (description "Espuds is a collection of the most commonly used step | ||
| 1321 | definitions for testing with the Ecukes framework.") | ||
| 1322 | (license license:gpl3+))) | ||
| 1323 | |||
| 1324 | (define-public emacs-expand-region | ||
| 1325 | (package | ||
| 1326 | (name "emacs-expand-region") | ||
| 1327 | (version "0.10.0") | ||
| 1328 | (source | ||
| 1329 | (origin | ||
| 1330 | (method url-fetch) | ||
| 1331 | (uri (string-append "https://github.com/magnars/expand-region.el" | ||
| 1332 | "/archive/" version ".tar.gz")) | ||
| 1333 | (file-name (string-append name "-" version ".tar.gz")) | ||
| 1334 | (sha256 | ||
| 1335 | (base32 | ||
| 1336 | "1zfiaqyb3zqiyqjkpqsjw660j09805nqsg25q6ars2h8gs0rnvxb")))) | ||
| 1337 | (build-system emacs-build-system) | ||
| 1338 | (home-page "https://github.com/magnars/expand-region.el") | ||
| 1339 | (synopsis "Increase selected region by semantic units") | ||
| 1340 | (description | ||
| 1341 | "Expand region increases the selected region by semantic units. Just | ||
| 1342 | keep pressing the key until it selects what you want. There's also | ||
| 1343 | @code{er/contract-region} if you expand too far.") | ||
| 1344 | (license license:gpl3+))) | ||
| 1345 | |||
| 1346 | (define-public emacs-fill-column-indicator | ||
| 1347 | (package | ||
| 1348 | (name "emacs-fill-column-indicator") | ||
| 1349 | (version "1.81") | ||
| 1350 | (source | ||
| 1351 | (origin | ||
| 1352 | (method url-fetch) | ||
| 1353 | (uri (string-append "https://github.com/alpaker/Fill-Column-Indicator" | ||
| 1354 | "/archive/v" version ".tar.gz")) | ||
| 1355 | (file-name (string-append name "-" version ".tar.gz")) | ||
| 1356 | (sha256 | ||
| 1357 | (base32 | ||
| 1358 | "1xwyqbjbbicmvhlb85vg4j5snwy1vd7rfk89ws4viws5ljkhhyg8")))) | ||
| 1359 | (build-system emacs-build-system) | ||
| 1360 | (home-page "https://www.emacswiki.org/emacs/FillColumnIndicator") | ||
| 1361 | (synopsis "Graphically indicate the fill column") | ||
| 1362 | (description | ||
| 1363 | "Fill-column-indicator graphically indicates the location of the fill | ||
| 1364 | column by drawing a thin line down the length of the editing window.") | ||
| 1365 | (license license:gpl3+))) | ||
| 1366 | |||
| 1367 | (define-public emacs-znc | ||
| 1368 | (package | ||
| 1369 | (name "emacs-znc") | ||
| 1370 | (version "0.0.2") | ||
| 1371 | (source | ||
| 1372 | (origin | ||
| 1373 | (method url-fetch) | ||
| 1374 | (uri (string-append "https://marmalade-repo.org/packages/znc-" | ||
| 1375 | version ".el")) | ||
| 1376 | (sha256 | ||
| 1377 | (base32 | ||
| 1378 | "1d8lqvybgyazin5z0g1c4l3rg1vzrrvf0saqs53jr1zcdg0lianh")))) | ||
| 1379 | (build-system emacs-build-system) | ||
| 1380 | (home-page "https://github.com/sshirokov/ZNC.el") | ||
| 1381 | (synopsis "Make ERC and ZNC get along better") | ||
| 1382 | (description | ||
| 1383 | "This is a thin wrapper around @code{erc} that enables one to use the ZNC | ||
| 1384 | IRC bouncer with ERC.") | ||
| 1385 | (license license:expat))) | ||
| 1386 | |||
| 1387 | (define-public emacs-shut-up | ||
| 1388 | (package | ||
| 1389 | (name "emacs-shut-up") | ||
| 1390 | (version "0.3.2") | ||
| 1391 | (source | ||
| 1392 | (origin | ||
| 1393 | (method url-fetch) | ||
| 1394 | (uri (string-append "https://github.com/cask/shut-up/" | ||
| 1395 | "archive/v" version ".tar.gz")) | ||
| 1396 | (file-name (string-append name "-" version ".tar.gz")) | ||
| 1397 | (sha256 | ||
| 1398 | (base32 | ||
| 1399 | "09kzrjdkb569iviyg7ydwq44yh84m3f9hkl7jizfrlk0w4gz67d1")))) | ||
| 1400 | (build-system emacs-build-system) | ||
| 1401 | (home-page "https://github.com/cask/shut-up") | ||
| 1402 | (synopsis "Silence Emacs") | ||
| 1403 | (description "This package silences most output of Emacs when running an | ||
| 1404 | Emacs shell script.") | ||
| 1405 | (license license:expat))) | ||
| 1406 | |||
| 1407 | (define-public emacs-undercover | ||
| 1408 | (package | ||
| 1409 | (name "emacs-undercover") | ||
| 1410 | (version "0.6.0") | ||
| 1411 | (source | ||
| 1412 | (origin | ||
| 1413 | (method url-fetch) | ||
| 1414 | (uri (string-append "https://github.com/sviridov/undercover.el/" | ||
| 1415 | "archive/v" version ".tar.gz")) | ||
| 1416 | (file-name (string-append name "-" version ".tar.gz")) | ||
| 1417 | (sha256 | ||
| 1418 | (base32 | ||
| 1419 | "0f48fi0xnbsqs382rgh85m9mq1wdnr0yib7as9xhwzvq0hsr5m0a")))) | ||
| 1420 | (build-system emacs-build-system) | ||
| 1421 | (propagated-inputs | ||
| 1422 | `(("emacs-dash" ,emacs-dash) | ||
| 1423 | ("emacs-shut-up" ,emacs-shut-up))) | ||
| 1424 | (home-page "https://github.com/sviridov/undercover.el") | ||
| 1425 | (synopsis "Test coverage library for Emacs Lisp") | ||
| 1426 | (description | ||
| 1427 | "Undercover is a test coverage library for software written in Emacs | ||
| 1428 | Lisp.") | ||
| 1429 | (license license:expat))) | ||
| 1430 | |||
| 1431 | (define-public emacs-paren-face | ||
| 1432 | (package | ||
| 1433 | (name "emacs-paren-face") | ||
| 1434 | (version "1.0.0") | ||
| 1435 | (source | ||
| 1436 | (origin | ||
| 1437 | (method url-fetch) | ||
| 1438 | (uri (string-append "https://github.com/tarsius/paren-face/archive/" | ||
| 1439 | version ".tar.gz")) | ||
| 1440 | (file-name (string-append name "-" version ".tar.gz")) | ||
| 1441 | (sha256 | ||
| 1442 | (base32 | ||
| 1443 | "0y4qrhxa9332vsvr999jg7qj1ymnfgwpf591yi4a4jgg90pm7qnn")))) | ||
| 1444 | (build-system emacs-build-system) | ||
| 1445 | (home-page "http://github.com/tarsius/paren-face") | ||
| 1446 | (synopsis "Face for parentheses in lisp modes") | ||
| 1447 | (description | ||
| 1448 | "This library defines a face named @code{parenthesis} used just for | ||
| 1449 | parentheses. The intended purpose of this face is to make parentheses less | ||
| 1450 | visible in Lisp code by dimming them. Lispers probably don't need to be | ||
| 1451 | constantly made aware of the existence of the parentheses. Dimming them might | ||
| 1452 | be even more useful for people new to lisp who have not yet learned to | ||
| 1453 | subconsciously blend out the parentheses.") | ||
| 1454 | (license license:gpl3+))) | ||
| 1455 | |||
| 1456 | (define-public emacs-page-break-lines | ||
| 1457 | (package | ||
| 1458 | (name "emacs-page-break-lines") | ||
| 1459 | (version "0.11") | ||
| 1460 | (source | ||
| 1461 | (origin | ||
| 1462 | (method url-fetch) | ||
| 1463 | (uri (string-append "https://github.com/purcell/page-break-lines/" | ||
| 1464 | "archive/" version ".tar.gz")) | ||
| 1465 | (file-name (string-append name "-" version ".tar.gz")) | ||
| 1466 | (sha256 | ||
| 1467 | (base32 | ||
| 1468 | "1zzhziq5kbrm9rxk30kx2glz455fp1blqxg8cpcf6l8xl3w8z4pg")))) | ||
| 1469 | (build-system emacs-build-system) | ||
| 1470 | (home-page "https://github.com/purcell/page-break-lines") | ||
| 1471 | (synopsis "Display page breaks as tidy horizontal lines") | ||
| 1472 | (description | ||
| 1473 | "This library provides a global mode which displays form feed characters | ||
| 1474 | as horizontal rules.") | ||
| 1475 | (license license:gpl3+))) | ||
| 1476 | |||
| 1477 | (define-public emacs-simple-httpd | ||
| 1478 | (package | ||
| 1479 | (name "emacs-simple-httpd") | ||
| 1480 | (version "1.4.6") | ||
| 1481 | (source | ||
| 1482 | (origin | ||
| 1483 | (method url-fetch) | ||
| 1484 | (uri (string-append "https://github.com/skeeto/emacs-web-server/" | ||
| 1485 | "archive/" version ".tar.gz")) | ||
| 1486 | (file-name (string-append name "-" version ".tar.gz")) | ||
| 1487 | (sha256 | ||
| 1488 | (base32 | ||
| 1489 | "01r7h3imnj4qx1m53a2wjafvbylcyz5f9r2rg2cs7ky3chlg220r")))) | ||
| 1490 | (build-system emacs-build-system) | ||
| 1491 | (home-page "https://github.com/skeeto/emacs-http-server") | ||
| 1492 | (synopsis "HTTP server in pure Emacs Lisp") | ||
| 1493 | (description | ||
| 1494 | "This package provides a simple HTTP server written in Emacs Lisp to | ||
| 1495 | serve files and directory listings.") | ||
| 1496 | (license license:unlicense))) | ||
| 1497 | |||
| 1498 | (define-public emacs-skewer-mode | ||
| 1499 | (package | ||
| 1500 | (name "emacs-skewer-mode") | ||
| 1501 | (version "1.6.2") | ||
| 1502 | (source | ||
| 1503 | (origin | ||
| 1504 | (method url-fetch) | ||
| 1505 | (uri (string-append "https://github.com/skeeto/skewer-mode/archive/" | ||
| 1506 | version ".tar.gz")) | ||
| 1507 | (file-name (string-append name "-" version ".tar.gz")) | ||
| 1508 | (sha256 | ||
| 1509 | (base32 | ||
| 1510 | "07jpz374j0j964szy3zznrkyja2kpdl3xa87wh7349mzxivqxdx0")))) | ||
| 1511 | (build-system emacs-build-system) | ||
| 1512 | (propagated-inputs | ||
| 1513 | `(("emacs-simple-httpd" ,emacs-simple-httpd) | ||
| 1514 | ("emacs-js2-mode" ,emacs-js2-mode))) | ||
| 1515 | (home-page "https://github.com/skeeto/skewer-mode") | ||
| 1516 | (synopsis "Live web development in Emacs") | ||
| 1517 | (description | ||
| 1518 | "Skewer-mode provides live interaction with JavaScript, CSS, and HTML in | ||
| 1519 | a web browser. Expressions are sent on-the-fly from an editing buffer to be | ||
| 1520 | evaluated in the browser, just like Emacs does with an inferior Lisp process | ||
| 1521 | in Lisp modes.") | ||
| 1522 | (license license:unlicense))) | ||
| 1523 | |||
| 1524 | (define-public emacs-rich-minority | ||
| 1525 | (package | ||
| 1526 | (name "emacs-rich-minority") | ||
| 1527 | (version "1.0.1") | ||
| 1528 | (source | ||
| 1529 | (origin | ||
| 1530 | (method url-fetch) | ||
| 1531 | (uri (string-append "https://github.com/Malabarba/rich-minority/" | ||
| 1532 | "archive/" version ".tar.gz")) | ||
| 1533 | (file-name (string-append name "-" version ".tar.gz")) | ||
| 1534 | (sha256 | ||
| 1535 | (base32 | ||
| 1536 | "1l0cb0q7kyi88nwfqd542psnkgwnjklpzc5rx32gzd3lkwkrbr8v")))) | ||
| 1537 | (build-system emacs-build-system) | ||
| 1538 | (home-page "https://github.com/Malabarba/rich-minority") | ||
| 1539 | (synopsis "Clean-up and beautify the list of minor modes") | ||
| 1540 | (description | ||
| 1541 | "This Emacs package hides and/or highlights minor modes in the | ||
| 1542 | mode-line.") | ||
| 1543 | (license license:gpl2+))) | ||
| 1544 | |||
| 1545 | (define-public emacs-smart-mode-line | ||
| 1546 | (package | ||
| 1547 | (name "emacs-smart-mode-line") | ||
| 1548 | (version "2.10.1") | ||
| 1549 | (source | ||
| 1550 | (origin | ||
| 1551 | (method url-fetch) | ||
| 1552 | (uri (string-append "https://github.com/Malabarba/smart-mode-line/" | ||
| 1553 | "archive/" version ".tar.gz")) | ||
| 1554 | (file-name (string-append name "-" version ".tar.gz")) | ||
| 1555 | (sha256 | ||
| 1556 | (base32 | ||
| 1557 | "0i9wajabrrsjzwd842q0m2611kf0q31p9hg1pdj81177gynkw8l8")))) | ||
| 1558 | (build-system emacs-build-system) | ||
| 1559 | (propagated-inputs | ||
| 1560 | `(("emacs-rich-minority" ,emacs-rich-minority))) | ||
| 1561 | (home-page "http://github.com/Malabarba/smart-mode-line") | ||
| 1562 | (synopsis "Color-coded smart mode-line.") | ||
| 1563 | (description | ||
| 1564 | "Smart Mode Line is a mode-line theme for Emacs. It aims to be easy to | ||
| 1565 | read from small to large monitors by using colors, a prefix feature, and smart | ||
| 1566 | truncation.") | ||
| 1567 | (license license:gpl2+))) | ||
| 1568 | |||
| 1569 | (define-public emacs-shell-switcher | ||
| 1570 | (package | ||
| 1571 | (name "emacs-shell-switcher") | ||
| 1572 | (version "1.0.1") | ||
| 1573 | (source | ||
| 1574 | (origin | ||
| 1575 | (method url-fetch) | ||
| 1576 | (uri (string-append "https://github.com/DamienCassou/shell-switcher" | ||
| 1577 | "/archive/v" version ".tar.gz")) | ||
| 1578 | (file-name (string-append name "-" version ".tar.gz")) | ||
| 1579 | (sha256 | ||
| 1580 | (base32 | ||
| 1581 | "1c23mfkdqz2g9rixd9smm323vzlvhzz3ng34ambcqjfq309qb2nz")))) | ||
| 1582 | (build-system emacs-build-system) | ||
| 1583 | (home-page "https://github.com/DamienCassou/shell-switcher") | ||
| 1584 | (synopsis "Provide fast switching between shell buffers") | ||
| 1585 | (description | ||
| 1586 | "This package provides commands to quickly switch between shell buffers.") | ||
| 1587 | (license license:gpl3+))) | ||
| 1588 | |||
| 1228 | (define-public emacs-ob-ipython | 1589 | (define-public emacs-ob-ipython |
| 1229 | (package | 1590 | (package |
| 1230 | (name "emacs-ob-ipython") | 1591 | (name "emacs-ob-ipython") |
| @@ -1482,10 +1843,34 @@ identifiers in the MIT-Scheme documentation.") | |||
| 1482 | constants and units into an Emacs buffer.") | 1843 | constants and units into an Emacs buffer.") |
| 1483 | (license license:gpl2+))) | 1844 | (license license:gpl2+))) |
| 1484 | 1845 | ||
| 1846 | (define-public emacs-tagedit | ||
| 1847 | (package | ||
| 1848 | (name "emacs-tagedit") | ||
| 1849 | (version "1.4.0") | ||
| 1850 | (source | ||
| 1851 | (origin | ||
| 1852 | (method url-fetch) | ||
| 1853 | (uri (string-append "https://github.com/magnars/tagedit/" | ||
| 1854 | "archive/" version ".tar.gz")) | ||
| 1855 | (file-name (string-append name "-" version ".tar.gz")) | ||
| 1856 | (sha256 | ||
| 1857 | (base32 | ||
| 1858 | "1apfnann4qklfdsmdi7icjsj18x7gwx8d83iqr4z25clszz95xfq")))) | ||
| 1859 | (build-system emacs-build-system) | ||
| 1860 | (propagated-inputs | ||
| 1861 | `(("emacs-s" ,emacs-s) | ||
| 1862 | ("emacs-dash" ,emacs-dash))) | ||
| 1863 | (home-page "https://github.com/magnars/tagedit") | ||
| 1864 | (synopsis "Some paredit-like features for html-mode") | ||
| 1865 | (description | ||
| 1866 | "This package provides a collection of paredit-like functions for editing | ||
| 1867 | in @code{html-mode}.") | ||
| 1868 | (license license:gpl3+))) | ||
| 1869 | |||
| 1485 | (define-public emacs-slime | 1870 | (define-public emacs-slime |
| 1486 | (package | 1871 | (package |
| 1487 | (name "emacs-slime") | 1872 | (name "emacs-slime") |
| 1488 | (version "2.15") | 1873 | (version "2.18") |
| 1489 | (source | 1874 | (source |
| 1490 | (origin | 1875 | (origin |
| 1491 | (file-name (string-append name "-" version ".tar.gz")) | 1876 | (file-name (string-append name "-" version ".tar.gz")) |
| @@ -1495,7 +1880,7 @@ constants and units into an Emacs buffer.") | |||
| 1495 | version ".tar.gz")) | 1880 | version ".tar.gz")) |
| 1496 | (sha256 | 1881 | (sha256 |
| 1497 | (base32 | 1882 | (base32 |
| 1498 | "0l2z6l2xm78mhh0nczkrmzh2ddb1n911ij9xb6q40zwvx4f8blds")))) | 1883 | "146avwbwr6mw0nmgyihx8gkr0mv6al7a73igzxvysj62000cqvlj")))) |
| 1499 | (build-system emacs-build-system) | 1884 | (build-system emacs-build-system) |
| 1500 | (native-inputs | 1885 | (native-inputs |
| 1501 | `(("texinfo" ,texinfo))) | 1886 | `(("texinfo" ,texinfo))) |
| @@ -1680,6 +2065,30 @@ number.") | |||
| 1680 | It is built on top of the custom theme support in Emacs 24 or later.") | 2065 | It is built on top of the custom theme support in Emacs 24 or later.") |
| 1681 | (license license:gpl3+))) | 2066 | (license license:gpl3+))) |
| 1682 | 2067 | ||
| 2068 | (define-public emacs-solarized-theme | ||
| 2069 | (package | ||
| 2070 | (name "emacs-solarized-theme") | ||
| 2071 | (version "1.2.2") | ||
| 2072 | (source (origin | ||
| 2073 | (method url-fetch) | ||
| 2074 | (uri (string-append "https://github.com/bbatsov/solarized-emacs/" | ||
| 2075 | "archive/v" version ".tar.gz")) | ||
| 2076 | (file-name (string-append name "-" version ".tar.gz")) | ||
| 2077 | (sha256 | ||
| 2078 | (base32 | ||
| 2079 | "1ha3slc6d9wi9ilkhmwrzkvf308n6ph7b0k69pk369s9304awxzx")))) | ||
| 2080 | (build-system emacs-build-system) | ||
| 2081 | (propagated-inputs | ||
| 2082 | `(("emacs-dash" ,emacs-dash) | ||
| 2083 | ("emacs-f" ,emacs-f) | ||
| 2084 | ("emacs-s" ,emacs-s))) | ||
| 2085 | (home-page "http://github.com/bbatsov/solarized-emacs") | ||
| 2086 | (synopsis "Port of the Solarized theme for Emacs") | ||
| 2087 | (description | ||
| 2088 | "Solarized for Emacs is a port of the Solarized theme for Vim. This | ||
| 2089 | package provides a light and a dark variant.") | ||
| 2090 | (license license:gpl3+))) | ||
| 2091 | |||
| 1683 | (define-public emacs-smartparens | 2092 | (define-public emacs-smartparens |
| 1684 | (package | 2093 | (package |
| 1685 | (name "emacs-smartparens") | 2094 | (name "emacs-smartparens") |
| @@ -1709,6 +2118,55 @@ features found in other packages it also brings many improvements as | |||
| 1709 | well as completely new features.") | 2118 | well as completely new features.") |
| 1710 | (license license:gpl3+))) | 2119 | (license license:gpl3+))) |
| 1711 | 2120 | ||
| 2121 | (define-public emacs-hl-todo | ||
| 2122 | (package | ||
| 2123 | (name "emacs-hl-todo") | ||
| 2124 | (version "1.7.0") | ||
| 2125 | (source (origin | ||
| 2126 | (method url-fetch) | ||
| 2127 | (uri (string-append | ||
| 2128 | "https://raw.githubusercontent.com/tarsius/hl-todo/" | ||
| 2129 | version "/hl-todo.el")) | ||
| 2130 | (sha256 | ||
| 2131 | (base32 | ||
| 2132 | "18zydm43zajlglhgr0bhdkd4pln27amd063k2ql6p1mvyam3j8ia")))) | ||
| 2133 | (build-system emacs-build-system) | ||
| 2134 | (home-page "https://github.com/tarsius/hl-todo") | ||
| 2135 | (synopsis "Emacs mode to highlight TODO and similar keywords") | ||
| 2136 | (description | ||
| 2137 | "This package provides an Emacs mode to highlight TODO and similar | ||
| 2138 | keywords in comments and strings. This package also provides commands for | ||
| 2139 | moving to the next or previous keyword and to invoke @code{occur} with a | ||
| 2140 | regexp that matches all known keywords.") | ||
| 2141 | (license license:gpl3+))) | ||
| 2142 | |||
| 2143 | (define-public emacs-perspective | ||
| 2144 | (package | ||
| 2145 | (name "emacs-perspective") | ||
| 2146 | (version "1.12") | ||
| 2147 | (source | ||
| 2148 | (origin | ||
| 2149 | (method url-fetch) | ||
| 2150 | (uri (string-append "https://github.com/nex3/perspective-el/" | ||
| 2151 | "archive/" version ".tar.gz")) | ||
| 2152 | (file-name (string-append name "-" version ".tar.gz")) | ||
| 2153 | (sha256 | ||
| 2154 | (base32 | ||
| 2155 | "078ahh0kmhdylq5ib9c81c76kz1n02xwc83pm729d00i84ibviic")))) | ||
| 2156 | (build-system emacs-build-system) | ||
| 2157 | (home-page "http://github.com/nex3/perspective-el") | ||
| 2158 | (synopsis "Switch between named \"perspectives\"") | ||
| 2159 | (description | ||
| 2160 | "This package provides tagged workspaces in Emacs, similar to workspaces in | ||
| 2161 | windows managers such as Awesome and XMonad. @code{perspective.el} provides | ||
| 2162 | multiple workspaces (or \"perspectives\") for each Emacs frame. Each | ||
| 2163 | perspective is composed of a window configuration and a set of buffers. | ||
| 2164 | Switching to a perspective activates its window configuration, and when in a | ||
| 2165 | perspective only its buffers are available by default.") | ||
| 2166 | ;; This package is released under the same license as Emacs (GPLv3+) or | ||
| 2167 | ;; the Expat license. | ||
| 2168 | (license license:gpl3+))) | ||
| 2169 | |||
| 1712 | (define-public emacs-hydra | 2170 | (define-public emacs-hydra |
| 1713 | (package | 2171 | (package |
| 1714 | (name "emacs-hydra") | 2172 | (name "emacs-hydra") |
| @@ -2021,6 +2479,65 @@ Emacs default configuration in uncontroversial ways that nearly everyone can | |||
| 2021 | agree upon.") | 2479 | agree upon.") |
| 2022 | (license license:gpl3+))) | 2480 | (license license:gpl3+))) |
| 2023 | 2481 | ||
| 2482 | (define-public emacs-eprime | ||
| 2483 | (let ((commit "17a481af26496be91c07139a9bfc05cfe722506f")) | ||
| 2484 | (package | ||
| 2485 | (name "emacs-eprime") | ||
| 2486 | (version (string-append "20140513-" (string-take commit 7))) | ||
| 2487 | (source (origin | ||
| 2488 | (method url-fetch) | ||
| 2489 | (uri (string-append "https://raw.githubusercontent.com" | ||
| 2490 | "/AndrewHynes/eprime-mode/" | ||
| 2491 | commit "/eprime-mode.el")) | ||
| 2492 | (file-name (string-append "eprime-" version ".el")) | ||
| 2493 | (sha256 | ||
| 2494 | (base32 | ||
| 2495 | "0v68lggkyq7kbcr9zyi573m2g2x251xy3jadlaw8kx02l8krwq8d")))) | ||
| 2496 | (build-system emacs-build-system) | ||
| 2497 | (home-page "https://github.com/AndrewHynes/eprime-mode") | ||
| 2498 | (synopsis "E-prime checking mode for Emacs") | ||
| 2499 | (description "This package provides an E-prime checking mode for Emacs | ||
| 2500 | that highlights non-conforming text. The subset of the English language called | ||
| 2501 | E-Prime forbids the use of the \"to be\" form to strengthen your writing.") | ||
| 2502 | (license license:gpl3+)))) | ||
| 2503 | |||
| 2504 | (define-public emacs-ess | ||
| 2505 | (package | ||
| 2506 | (name "emacs-ess") | ||
| 2507 | (version "16.04") | ||
| 2508 | (source (origin | ||
| 2509 | (method url-fetch) | ||
| 2510 | (uri (string-append "http://ess.r-project.org/downloads/ess/ess-" | ||
| 2511 | version ".tgz")) | ||
| 2512 | (sha256 | ||
| 2513 | (base32 | ||
| 2514 | "0w7mbbajn377gdmvnd21mpyr368b2ia46gq6cb99y4y5rspf9pcg")))) | ||
| 2515 | (build-system gnu-build-system) | ||
| 2516 | (arguments | ||
| 2517 | `(#:tests? #f ; There is no test suite. | ||
| 2518 | #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) | ||
| 2519 | #:phases | ||
| 2520 | (modify-phases %standard-phases | ||
| 2521 | (delete 'configure) | ||
| 2522 | (add-before 'build 'more-shebang-patching | ||
| 2523 | (lambda* (#:key inputs #:allow-other-keys) | ||
| 2524 | (substitute* "Makeconf" | ||
| 2525 | (("SHELL = /bin/sh") | ||
| 2526 | (string-append "SHELL = " (which "sh"))))))))) | ||
| 2527 | (inputs | ||
| 2528 | `(("emacs" ,emacs-minimal) | ||
| 2529 | ("r" ,r))) | ||
| 2530 | (native-inputs | ||
| 2531 | `(("perl" ,perl) | ||
| 2532 | ("texinfo" ,texinfo) | ||
| 2533 | ("texlive" ,texlive))) | ||
| 2534 | (home-page "http://ess.r-project.org/") | ||
| 2535 | (synopsis "Emacs mode for statistical analysis programs") | ||
| 2536 | (description "Emacs Speaks Statistics (ESS) is an add-on package for GNU | ||
| 2537 | Emacs. It is designed to support editing of scripts and interaction with | ||
| 2538 | various statistical analysis programs such as R and OpenBUGS.") | ||
| 2539 | (license license:gpl2+))) | ||
| 2540 | |||
| 2024 | (define-public emacs-smex | 2541 | (define-public emacs-smex |
| 2025 | (package | 2542 | (package |
| 2026 | (name "emacs-smex") | 2543 | (name "emacs-smex") |
| @@ -2273,7 +2790,7 @@ Dust.js, React/JSX, Angularjs, ejs, etc.") | |||
| 2273 | (define-public emacs-helm | 2790 | (define-public emacs-helm |
| 2274 | (package | 2791 | (package |
| 2275 | (name "emacs-helm") | 2792 | (name "emacs-helm") |
| 2276 | (version "1.9.6") | 2793 | (version "1.9.8") |
| 2277 | (source (origin | 2794 | (source (origin |
| 2278 | (method url-fetch) | 2795 | (method url-fetch) |
| 2279 | (uri (string-append | 2796 | (uri (string-append |
| @@ -2282,7 +2799,7 @@ Dust.js, React/JSX, Angularjs, ejs, etc.") | |||
| 2282 | (file-name (string-append name "-" version ".tar.gz")) | 2799 | (file-name (string-append name "-" version ".tar.gz")) |
| 2283 | (sha256 | 2800 | (sha256 |
| 2284 | (base32 | 2801 | (base32 |
| 2285 | "0fc897rwf1fm2m7jrsikkgcyzhngfcysxfmzchpwzfj6v9sb5rl9")))) | 2802 | "019dpzr6l83k1fgxn40aqxjvrpz4dl5d9vi7fc5wjnifmxaqxia6")))) |
| 2286 | (build-system emacs-build-system) | 2803 | (build-system emacs-build-system) |
| 2287 | (propagated-inputs | 2804 | (propagated-inputs |
| 2288 | `(("emacs-async" ,emacs-async) | 2805 | `(("emacs-async" ,emacs-async) |
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm index 7b21c11ad35..b3e44311381 100644 --- a/gnu/packages/engineering.scm +++ b/gnu/packages/engineering.scm | |||
| @@ -58,7 +58,7 @@ | |||
| 58 | (define-public librecad | 58 | (define-public librecad |
| 59 | (package | 59 | (package |
| 60 | (name "librecad") | 60 | (name "librecad") |
| 61 | (version "2.0.11") | 61 | (version "2.1.1") |
| 62 | (source (origin | 62 | (source (origin |
| 63 | (method url-fetch) | 63 | (method url-fetch) |
| 64 | (uri (string-append | 64 | (uri (string-append |
| @@ -67,7 +67,7 @@ | |||
| 67 | (file-name (string-append name "-" version ".tar.gz")) | 67 | (file-name (string-append name "-" version ".tar.gz")) |
| 68 | (sha256 | 68 | (sha256 |
| 69 | (base32 | 69 | (base32 |
| 70 | "0jda23qspziph6fwgq1q3nmnllbgn9kwfpjylv1f0wa7c5l85gh5")))) | 70 | "132vv9pzbx64zmbnikyg06d4j47yzlmwi4mywxnd9gkaik4yd2kb")))) |
| 71 | (build-system gnu-build-system) | 71 | (build-system gnu-build-system) |
| 72 | (arguments | 72 | (arguments |
| 73 | '(#:phases | 73 | '(#:phases |
| @@ -108,26 +108,25 @@ plans and designs.") | |||
| 108 | (define-public geda-gaf | 108 | (define-public geda-gaf |
| 109 | (package | 109 | (package |
| 110 | (name "geda-gaf") | 110 | (name "geda-gaf") |
| 111 | (version "1.8.2") | 111 | (version "1.9.2") |
| 112 | (source (origin | 112 | (source (origin |
| 113 | (method url-fetch) | 113 | (method url-fetch) |
| 114 | (uri (string-append | 114 | (uri (string-append |
| 115 | "http://ftp.geda-project.org/geda-gaf/stable/v" | 115 | "http://ftp.geda-project.org/geda-gaf/unstable/v" |
| 116 | (version-major+minor version) "/" | 116 | (version-major+minor version) "/" |
| 117 | version "/geda-gaf-" version ".tar.gz")) | 117 | version "/geda-gaf-" version ".tar.gz")) |
| 118 | (sha256 | 118 | (sha256 |
| 119 | (base32 | 119 | (base32 |
| 120 | "08dpa506xk4gjbbi8vnxcb640wq4ihlgmhzlssl52nhvxwx7gx5v")))) | 120 | "14mk45pfz11v54q66gafw2l68n1p5ssvvjmdm8ffgc8x1w5ajfrz")))) |
| 121 | (build-system gnu-build-system) | 121 | (build-system gnu-build-system) |
| 122 | (arguments | 122 | (arguments |
| 123 | '(#:phases | 123 | '(#:phases |
| 124 | ;; tests require a writable HOME | 124 | (modify-phases %standard-phases |
| 125 | (alist-cons-before | 125 | ;; tests require a writable HOME |
| 126 | 'check 'set-home | 126 | (add-before 'check 'set-home |
| 127 | (lambda _ | 127 | (lambda _ |
| 128 | (setenv "HOME" (getenv "TMPDIR"))) | 128 | (setenv "HOME" (getenv "TMPDIR")) |
| 129 | %standard-phases | 129 | #t))) |
| 130 | ) | ||
| 131 | #:configure-flags | 130 | #:configure-flags |
| 132 | (let ((pcb (assoc-ref %build-inputs "pcb"))) | 131 | (let ((pcb (assoc-ref %build-inputs "pcb"))) |
| 133 | (list (string-append "--with-pcb-datadir=" pcb "/share") | 132 | (list (string-append "--with-pcb-datadir=" pcb "/share") |
| @@ -229,10 +228,6 @@ optimizer; and it can produce photorealistic and design review images.") | |||
| 229 | (snippet | 228 | (snippet |
| 230 | ;; Remove a non-free file. | 229 | ;; Remove a non-free file. |
| 231 | '(delete-file "doc/psfig.sty")) | 230 | '(delete-file "doc/psfig.sty")) |
| 232 | (modules '((guix build utils) | ||
| 233 | (guix build download) | ||
| 234 | (guix ftp-client))) | ||
| 235 | (imported-modules modules) | ||
| 236 | (patches (search-patches "fastcap-mulSetup.patch" | 231 | (patches (search-patches "fastcap-mulSetup.patch" |
| 237 | "fastcap-mulGlobal.patch")))) | 232 | "fastcap-mulGlobal.patch")))) |
| 238 | (build-system gnu-build-system) | 233 | (build-system gnu-build-system) |
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm index 2a606ebd7e8..a8187f8f85f 100644 --- a/gnu/packages/enlightenment.scm +++ b/gnu/packages/enlightenment.scm | |||
| @@ -47,7 +47,6 @@ | |||
| 47 | #:use-module (gnu packages pulseaudio) | 47 | #:use-module (gnu packages pulseaudio) |
| 48 | #:use-module (gnu packages python) | 48 | #:use-module (gnu packages python) |
| 49 | #:use-module (gnu packages tls) | 49 | #:use-module (gnu packages tls) |
| 50 | #:use-module (gnu packages valgrind) | ||
| 51 | #:use-module (gnu packages video) | 50 | #:use-module (gnu packages video) |
| 52 | #:use-module (gnu packages xorg)) | 51 | #:use-module (gnu packages xorg)) |
| 53 | 52 | ||
| @@ -93,7 +92,6 @@ | |||
| 93 | ("mesa" ,mesa) | 92 | ("mesa" ,mesa) |
| 94 | ("printproto" ,printproto) | 93 | ("printproto" ,printproto) |
| 95 | ("scrnsaverproto" ,scrnsaverproto) | 94 | ("scrnsaverproto" ,scrnsaverproto) |
| 96 | ("valgrind" ,valgrind) | ||
| 97 | ("xextproto" ,xextproto) | 95 | ("xextproto" ,xextproto) |
| 98 | ("xinput" ,xinput) | 96 | ("xinput" ,xinput) |
| 99 | ("xpr" ,xpr) | 97 | ("xpr" ,xpr) |
| @@ -118,12 +116,11 @@ | |||
| 118 | (arguments | 116 | (arguments |
| 119 | `(#:configure-flags '("--disable-silent-rules") | 117 | `(#:configure-flags '("--disable-silent-rules") |
| 120 | #:phases | 118 | #:phases |
| 121 | (alist-cons-before | 119 | (modify-phases %standard-phases |
| 122 | 'configure 'patch-config-files | 120 | (add-before 'configure 'patch-config-files |
| 123 | (lambda _ | 121 | (lambda _ |
| 124 | (substitute* "po/Makefile.in.in" | 122 | (substitute* "po/Makefile.in.in" |
| 125 | (("/bin/sh") (which "bash")))) | 123 | (("/bin/sh") (which "bash")))))))) |
| 126 | %standard-phases))) | ||
| 127 | (home-page "http://www.enlightenment.org") | 124 | (home-page "http://www.enlightenment.org") |
| 128 | (synopsis "Enlightenment Foundation Libraries") | 125 | (synopsis "Enlightenment Foundation Libraries") |
| 129 | (description | 126 | (description |
| @@ -273,7 +270,7 @@ Libraries with some extra bells and whistles.") | |||
| 273 | (define-public enlightenment | 270 | (define-public enlightenment |
| 274 | (package | 271 | (package |
| 275 | (name "enlightenment") | 272 | (name "enlightenment") |
| 276 | (version "0.20.9") | 273 | (version "0.21.0") |
| 277 | (source (origin | 274 | (source (origin |
| 278 | (method url-fetch) | 275 | (method url-fetch) |
| 279 | (uri | 276 | (uri |
| @@ -281,7 +278,7 @@ Libraries with some extra bells and whistles.") | |||
| 281 | name "/" name "-" version ".tar.xz")) | 278 | name "/" name "-" version ".tar.xz")) |
| 282 | (sha256 | 279 | (sha256 |
| 283 | (base32 | 280 | (base32 |
| 284 | "1gniy7i3mg3q9cgqf004lvnv397yncdr2b7w1gzj69bvv7a2lyfv")))) | 281 | "0p85dmk9ysbf9y7vlc92z7495mh9l860xj3s8pspy9mscv3dnwg9")))) |
| 285 | (build-system gnu-build-system) | 282 | (build-system gnu-build-system) |
| 286 | (arguments | 283 | (arguments |
| 287 | `(#:configure-flags '("--enable-mount-eeze"))) | 284 | `(#:configure-flags '("--enable-mount-eeze"))) |
diff --git a/gnu/packages/flashing-tools.scm b/gnu/packages/flashing-tools.scm index 0ab8bc57eef..e3f8d80c022 100644 --- a/gnu/packages/flashing-tools.scm +++ b/gnu/packages/flashing-tools.scm | |||
| @@ -90,12 +90,11 @@ programmer devices.") | |||
| 90 | version ".tar.gz")) | 90 | version ".tar.gz")) |
| 91 | (sha256 | 91 | (sha256 |
| 92 | (base32 | 92 | (base32 |
| 93 | "0frxg0q09nrm95z7ymzddx7ysl77ilfbdix1m81d9jjpiv5bm64y")) | 93 | "0frxg0q09nrm95z7ymzddx7ysl77ilfbdix1m81d9jjpiv5bm64y")))) |
| 94 | (patches (search-patches "avrdude-fix-libusb.patch")))) | ||
| 95 | (build-system gnu-build-system) | 94 | (build-system gnu-build-system) |
| 96 | (inputs | 95 | (inputs |
| 97 | `(("libelf" ,libelf) | 96 | `(("libelf" ,libelf) |
| 98 | ("libusb" ,libusb) | 97 | ("libusb" ,libusb-compat) |
| 99 | ("libftdi" ,libftdi))) | 98 | ("libftdi" ,libftdi))) |
| 100 | (native-inputs | 99 | (native-inputs |
| 101 | `(("bison" ,bison) | 100 | `(("bison" ,bison) |
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm index 4b8a2786102..3faeb2ebd83 100644 --- a/gnu/packages/fonts.scm +++ b/gnu/packages/fonts.scm | |||
| @@ -6,7 +6,8 @@ | |||
| 6 | ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> | 6 | ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> |
| 7 | ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr> | 7 | ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr> |
| 8 | ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> | 8 | ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> |
| 9 | ;;; Copyright © 2016 Nils Gillmann <niasterisk@grrlz.net> | 9 | ;;; Copyright © 2015, 2016 Leo Famulari <leo@famulari.name> |
| 10 | ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is> | ||
| 10 | ;;; Copyright © 2016 Jookia <166291@gmail.com> | 11 | ;;; Copyright © 2016 Jookia <166291@gmail.com> |
| 11 | ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org> | 12 | ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org> |
| 12 | ;;; Copyright © 2016 Dmitry Nikolaev <cameltheman@gmail.com> | 13 | ;;; Copyright © 2016 Dmitry Nikolaev <cameltheman@gmail.com> |
| @@ -599,15 +600,15 @@ languages, plus Greek and Cyrillic.") | |||
| 599 | (define-public font-gnu-unifont | 600 | (define-public font-gnu-unifont |
| 600 | (package | 601 | (package |
| 601 | (name "font-gnu-unifont") | 602 | (name "font-gnu-unifont") |
| 602 | (version "8.0.01") | 603 | (version "9.0.01") |
| 603 | (source (origin | 604 | (source (origin |
| 604 | (method url-fetch) | 605 | (method url-fetch) |
| 605 | (uri (string-append | 606 | (uri (string-append |
| 606 | "mirror://gnu/unifont/unifont-8.0.01/unifont-" | 607 | "mirror://gnu/unifont/unifont-" version "/unifont-" |
| 607 | version ".tar.gz")) | 608 | version ".tar.gz")) |
| 608 | (sha256 | 609 | (sha256 |
| 609 | (base32 | 610 | (base32 |
| 610 | "176bzc2y3i49xavrmbyyz5lkqp0qq3bkj7rjrl197kib873by82b")))) | 611 | "14z4lx6asa94i73m19lsdgzqjn9xzi8320h3dafvzq9ima94pm9b")))) |
| 611 | (build-system gnu-build-system) | 612 | (build-system gnu-build-system) |
| 612 | (outputs '("out" ; TrueType version | 613 | (outputs '("out" ; TrueType version |
| 613 | "pcf" ; PCF (bitmap) version | 614 | "pcf" ; PCF (bitmap) version |
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index 53bd757c1d8..458331d7035 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm | |||
| @@ -82,14 +82,14 @@ freedesktop.org project.") | |||
| 82 | (define-public libinput | 82 | (define-public libinput |
| 83 | (package | 83 | (package |
| 84 | (name "libinput") | 84 | (name "libinput") |
| 85 | (version "1.3.0") | 85 | (version "1.4.0") |
| 86 | (source (origin | 86 | (source (origin |
| 87 | (method url-fetch) | 87 | (method url-fetch) |
| 88 | (uri (string-append "https://freedesktop.org/software/libinput/" | 88 | (uri (string-append "https://freedesktop.org/software/libinput/" |
| 89 | name "-" version ".tar.xz")) | 89 | name "-" version ".tar.xz")) |
| 90 | (sha256 | 90 | (sha256 |
| 91 | (base32 | 91 | (base32 |
| 92 | "1sn1s1bz06fa49izqkqf519sjclsvhf42i6slzx1w5hx4vxpb2lr")))) | 92 | "085lcxy111j8r1lwyghsc6zrysqh0vg8xip5axxsdl8r8n3i1vvn")))) |
| 93 | (build-system gnu-build-system) | 93 | (build-system gnu-build-system) |
| 94 | (native-inputs | 94 | (native-inputs |
| 95 | `(("pkg-config" ,pkg-config))) | 95 | `(("pkg-config" ,pkg-config))) |
| @@ -99,7 +99,7 @@ freedesktop.org project.") | |||
| 99 | `(("libevdev" ,libevdev) | 99 | `(("libevdev" ,libevdev) |
| 100 | ("mtdev" ,mtdev) | 100 | ("mtdev" ,mtdev) |
| 101 | ("libwacom" ,libwacom))) | 101 | ("libwacom" ,libwacom))) |
| 102 | (home-page "http://www.freedesktop.org/wiki/Software/libinput/") | 102 | (home-page "https://www.freedesktop.org/wiki/Software/libinput/") |
| 103 | (synopsis "Input devices handling library") | 103 | (synopsis "Input devices handling library") |
| 104 | (description | 104 | (description |
| 105 | "Libinput is a library to handle input devices for display servers and | 105 | "Libinput is a library to handle input devices for display servers and |
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 6036ce3e199..731e243f465 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm | |||
| @@ -17,7 +17,7 @@ | |||
| 17 | ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> | 17 | ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> |
| 18 | ;;; Copyright © 2016 Rodger Fox <thylakoid@openmailbox.org> | 18 | ;;; Copyright © 2016 Rodger Fox <thylakoid@openmailbox.org> |
| 19 | ;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com> | 19 | ;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com> |
| 20 | ;;; Copyright © 2016 Nils Gillmann <niasterisk@grrlz.net> | 20 | ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is> |
| 21 | ;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org> | 21 | ;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org> |
| 22 | ;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> | 22 | ;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> |
| 23 | ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> | 23 | ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> |
| @@ -2493,3 +2493,39 @@ in strikes against the evil corporation.") | |||
| 2493 | license:cc-by-sa3.0 | 2493 | license:cc-by-sa3.0 |
| 2494 | license:cc0 | 2494 | license:cc0 |
| 2495 | license:public-domain)))) | 2495 | license:public-domain)))) |
| 2496 | |||
| 2497 | (define-public chromium-bsu | ||
| 2498 | (package | ||
| 2499 | (name "chromium-bsu") | ||
| 2500 | (version "0.9.15.1") | ||
| 2501 | (source (origin | ||
| 2502 | (method url-fetch) | ||
| 2503 | (uri (string-append "mirror://sourceforge/" name | ||
| 2504 | "/Chromium B.S.U. source code/" | ||
| 2505 | name "-" version ".tar.gz")) | ||
| 2506 | (sha256 | ||
| 2507 | (base32 | ||
| 2508 | "01c4mki0rpz6wrqbf18fj4vd7axln5v0xqm80cyksbv63g04s6w6")))) | ||
| 2509 | (build-system gnu-build-system) | ||
| 2510 | (arguments | ||
| 2511 | `(#:phases (modify-phases %standard-phases | ||
| 2512 | (add-after 'set-paths 'set-sdl-paths | ||
| 2513 | (lambda* (#:key inputs #:allow-other-keys) | ||
| 2514 | (setenv "CPATH" | ||
| 2515 | (string-append (assoc-ref inputs "sdl-union") | ||
| 2516 | "/include/SDL")) | ||
| 2517 | #t))))) | ||
| 2518 | (native-inputs `(("pkg-config" ,pkg-config))) | ||
| 2519 | (inputs `(("glu" ,glu) | ||
| 2520 | ("quesoglc" ,quesoglc) | ||
| 2521 | ("sdl-union" ,(sdl-union (list sdl sdl-image sdl-mixer))))) | ||
| 2522 | (home-page "http://chromium-bsu.sourceforge.net/") | ||
| 2523 | (synopsis "Fast-paced, arcade-style, top-scrolling space shooter") | ||
| 2524 | (description | ||
| 2525 | "In this game you are the captain of the cargo ship Chromium B.S.U. and | ||
| 2526 | are responsible for delivering supplies to the troops on the front line. Your | ||
| 2527 | ship has a small fleet of robotic fighters which you control from the relative | ||
| 2528 | safety of the Chromium vessel.") | ||
| 2529 | ;; Clarified Artistic License for everything but sound, which is covered | ||
| 2530 | ;; by the Expat License. | ||
| 2531 | (license (list license:clarified-artistic license:expat)))) | ||
diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm index 4d6b1a3c89d..3313ee68f22 100644 --- a/gnu/packages/gd.scm +++ b/gnu/packages/gd.scm | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2013, 2016 Ludovic Courtès <ludo@gnu.org> | 2 | ;;; Copyright © 2013, 2016 Ludovic Courtès <ludo@gnu.org> |
| 3 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> | 3 | ;;; Copyright © 2015, 2016 Mark H Weaver <mhw@netris.org> |
| 4 | ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org> | 4 | ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org> |
| 5 | ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> | 5 | ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> |
| 6 | ;;; | 6 | ;;; |
| @@ -40,16 +40,21 @@ | |||
| 40 | ;; Note: With libgd.org now pointing to github.com, genuine old | 40 | ;; Note: With libgd.org now pointing to github.com, genuine old |
| 41 | ;; tarballs are no longer available. Notably, versions 2.0.x are | 41 | ;; tarballs are no longer available. Notably, versions 2.0.x are |
| 42 | ;; missing. | 42 | ;; missing. |
| 43 | (version "2.2.1") | 43 | (version "2.2.2") |
| 44 | 44 | ||
| 45 | (source (origin | 45 | (source (origin |
| 46 | (method url-fetch) | 46 | (method url-fetch) |
| 47 | (uri (string-append | 47 | (uri (string-append |
| 48 | "https://github.com/libgd/libgd/releases/download/gd-" | 48 | "https://github.com/libgd/libgd/releases/download/gd-" |
| 49 | version "/libgd-" version ".tar.xz")) | 49 | version "/libgd-" version ".tar.xz")) |
| 50 | (patches (search-patches "gd-fix-test-on-i686.patch" | ||
| 51 | "gd-CVE-2016-5766.patch" | ||
| 52 | "gd-CVE-2016-6128.patch" | ||
| 53 | "gd-CVE-2016-6132.patch" | ||
| 54 | "gd-CVE-2016-6214.patch")) | ||
| 50 | (sha256 | 55 | (sha256 |
| 51 | (base32 | 56 | (base32 |
| 52 | "0xmrqka1ggqgml84xbmkw1y0r0lg7qn657v5b1my8pry92p651vh")))) | 57 | "1311g5mva2xlzqv3rjqjc4jjkn5lzls4skvr395h633zw1n7b7s8")))) |
| 53 | (build-system gnu-build-system) | 58 | (build-system gnu-build-system) |
| 54 | (native-inputs | 59 | (native-inputs |
| 55 | `(("pkg-config" ,pkg-config))) | 60 | `(("pkg-config" ,pkg-config))) |
diff --git a/gnu/packages/geeqie.scm b/gnu/packages/geeqie.scm index 7ea75aa3a0c..110fb68ea0e 100644 --- a/gnu/packages/geeqie.scm +++ b/gnu/packages/geeqie.scm | |||
| @@ -22,29 +22,33 @@ | |||
| 22 | #:use-module (guix download) | 22 | #:use-module (guix download) |
| 23 | #:use-module ((guix licenses) #:prefix l:) | 23 | #:use-module ((guix licenses) #:prefix l:) |
| 24 | #:use-module (guix build-system gnu) | 24 | #:use-module (guix build-system gnu) |
| 25 | #:use-module (gnu packages pkg-config) | 25 | #:use-module (gnu packages autotools) |
| 26 | #:use-module (gnu packages compression) | ||
| 27 | #:use-module (gnu packages ghostscript) | ||
| 26 | #:use-module (gnu packages glib) | 28 | #:use-module (gnu packages glib) |
| 27 | #:use-module (gnu packages gtk) | 29 | #:use-module (gnu packages gtk) |
| 28 | #:use-module (gnu packages image) | 30 | #:use-module (gnu packages image) |
| 29 | #:use-module (gnu packages ghostscript) | 31 | #:use-module (gnu packages pkg-config) |
| 30 | #:use-module (gnu packages compression) | ||
| 31 | #:use-module (gnu packages xml)) | 32 | #:use-module (gnu packages xml)) |
| 32 | 33 | ||
| 33 | (define-public exiv2 ; XXX: move elsewhere? | 34 | (define-public exiv2 ; XXX: move elsewhere? |
| 34 | (package | 35 | (package |
| 35 | (name "exiv2") | 36 | (name "exiv2") |
| 36 | (version "0.23") | 37 | (version "0.25") |
| 37 | (source (origin | 38 | (source (origin |
| 38 | (method url-fetch) | 39 | (method url-fetch) |
| 39 | (uri (string-append "http://www.exiv2.org/exiv2-" | 40 | (uri (string-append "http://www.exiv2.org/exiv2-" |
| 40 | version ".tar.gz")) | 41 | version ".tar.gz")) |
| 41 | (sha256 | 42 | (sha256 |
| 42 | (base32 | 43 | (base32 |
| 43 | "04bbg2cg6mgcyz435zamx37sp5zw44n2alb59ki1daz71f851yl1")))) | 44 | "197g6vgcpyf9p2cwn5p5hb1r714xsk1v4p96f5pv1z8mi9vzq2y8")))) |
| 44 | (build-system gnu-build-system) | 45 | (build-system gnu-build-system) |
| 45 | (arguments '(#:tests? #f)) ; no `check' target | 46 | (arguments '(#:tests? #f)) ; no `check' target |
| 46 | (propagated-inputs | 47 | (propagated-inputs |
| 47 | `(("expat" ,expat) ("zlib" ,zlib))) | 48 | `(("expat" ,expat) |
| 49 | ("zlib" ,zlib))) | ||
| 50 | (native-inputs | ||
| 51 | `(("intltool" ,intltool))) | ||
| 48 | (home-page "http://www.exiv2.org/") | 52 | (home-page "http://www.exiv2.org/") |
| 49 | (synopsis "Library and command-line utility to manage image metadata") | 53 | (synopsis "Library and command-line utility to manage image metadata") |
| 50 | (description | 54 | (description |
| @@ -61,16 +65,23 @@ and XMP metadata of images in various formats.") | |||
| 61 | (define-public geeqie | 65 | (define-public geeqie |
| 62 | (package | 66 | (package |
| 63 | (name "geeqie") | 67 | (name "geeqie") |
| 64 | (version "1.1") | 68 | (version "1.3") |
| 65 | (source (origin | 69 | (source (origin |
| 66 | (method url-fetch) | 70 | (method url-fetch) |
| 67 | (uri (string-append "https://github.com/BestImageViewer/geeqie/" | 71 | (uri (string-append "https://github.com/BestImageViewer/geeqie/" |
| 68 | "archive/" version ".tar.gz")) | 72 | "releases/download/v" version "/geeqie-" |
| 69 | (file-name (string-append name "-" version ".tar.gz")) | 73 | version ".tar.xz")) |
| 70 | (sha256 | 74 | (sha256 |
| 71 | (base32 | 75 | (base32 |
| 72 | "1kzy39z9505xkayyx7rjj2wda76xy3ch1s5z35zn8yli54ffhi2m")))) | 76 | "0gzc82sy66pbsmq7lnmq4y37zqad1zfwfls3ik3dmfm8s5nmcvsb")))) |
| 73 | (build-system gnu-build-system) | 77 | (build-system gnu-build-system) |
| 78 | (arguments | ||
| 79 | `(#:phases | ||
| 80 | (modify-phases %standard-phases | ||
| 81 | (add-after 'unpack 'autogen | ||
| 82 | (lambda _ | ||
| 83 | (setenv "NOCONFIGURE" "true") | ||
| 84 | (zero? (system* "sh" "autogen.sh"))))))) | ||
| 74 | (inputs | 85 | (inputs |
| 75 | `(;; ("libchamplain" ,libchamplain) | 86 | `(;; ("libchamplain" ,libchamplain) |
| 76 | ("lcms" ,lcms) | 87 | ("lcms" ,lcms) |
| @@ -78,7 +89,10 @@ and XMP metadata of images in various formats.") | |||
| 78 | ("libpng" ,libpng) | 89 | ("libpng" ,libpng) |
| 79 | ("gtk+" ,gtk+-2))) | 90 | ("gtk+" ,gtk+-2))) |
| 80 | (native-inputs | 91 | (native-inputs |
| 81 | `(("intltool" ,intltool) | 92 | `(("autoconf" ,autoconf) |
| 93 | ("automake" ,automake) | ||
| 94 | ("glib" ,glib "bin") ; glib-gettextize | ||
| 95 | ("intltool" ,intltool) | ||
| 82 | ("pkg-config" ,pkg-config))) | 96 | ("pkg-config" ,pkg-config))) |
| 83 | (home-page "http://www.geeqie.org/") | 97 | (home-page "http://www.geeqie.org/") |
| 84 | (synopsis "Lightweight GTK+ based image viewer") | 98 | (synopsis "Lightweight GTK+ based image viewer") |
diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm index 1cd779a9b08..d5c58e26ba2 100644 --- a/gnu/packages/gimp.scm +++ b/gnu/packages/gimp.scm | |||
| @@ -130,6 +130,7 @@ buffers.") | |||
| 130 | (uri (string-append "http://download.gimp.org/pub/gimp/v" | 130 | (uri (string-append "http://download.gimp.org/pub/gimp/v" |
| 131 | (version-major+minor version) | 131 | (version-major+minor version) |
| 132 | "/gimp-" version ".tar.bz2")) | 132 | "/gimp-" version ".tar.bz2")) |
| 133 | (patches (search-patches "gimp-CVE-2016-4994.patch")) | ||
| 133 | (sha256 | 134 | (sha256 |
| 134 | (base32 | 135 | (base32 |
| 135 | "1dsgazia9hmab8cw3iis7s69dvqyfj5wga7ds7w2q5mms1xqbqwm")))) | 136 | "1dsgazia9hmab8cw3iis7s69dvqyfj5wga7ds7w2q5mms1xqbqwm")))) |
diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index 907e3bf30a2..7fa79bbde37 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm | |||
| @@ -20,29 +20,29 @@ | |||
| 20 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | 20 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. |
| 21 | 21 | ||
| 22 | (define-module (gnu packages gl) | 22 | (define-module (gnu packages gl) |
| 23 | #:use-module (ice-9 match) | ||
| 24 | #:use-module (guix build utils) | ||
| 25 | #:use-module ((guix licenses) #:prefix l:) | ||
| 26 | #:use-module (guix packages) | ||
| 27 | #:use-module (guix download) | ||
| 28 | #:use-module (guix build-system gnu) | ||
| 29 | #:use-module (guix build-system cmake) | ||
| 30 | #:use-module (guix packages) | ||
| 31 | #:use-module (guix utils) | ||
| 32 | #:use-module (gnu packages autotools) | 23 | #:use-module (gnu packages autotools) |
| 33 | #:use-module (gnu packages bison) | 24 | #:use-module (gnu packages bison) |
| 34 | #:use-module (gnu packages flex) | 25 | #:use-module (gnu packages flex) |
| 35 | #:use-module (gnu packages pkg-config) | 26 | #:use-module (gnu packages fontutils) |
| 27 | #:use-module (gnu packages freedesktop) | ||
| 36 | #:use-module (gnu packages gettext) | 28 | #:use-module (gnu packages gettext) |
| 29 | #:use-module (gnu packages guile) | ||
| 37 | #:use-module (gnu packages linux) | 30 | #:use-module (gnu packages linux) |
| 31 | #:use-module (gnu packages pkg-config) | ||
| 38 | #:use-module (gnu packages python) | 32 | #:use-module (gnu packages python) |
| 39 | #:use-module (gnu packages xorg) | ||
| 40 | #:use-module (gnu packages xml) | ||
| 41 | #:use-module (gnu packages fontutils) | ||
| 42 | #:use-module (gnu packages guile) | ||
| 43 | #:use-module (gnu packages video) | 33 | #:use-module (gnu packages video) |
| 44 | #:use-module (gnu packages xdisorg) | 34 | #:use-module (gnu packages xdisorg) |
| 45 | #:use-module (gnu packages zip)) | 35 | #:use-module (gnu packages xml) |
| 36 | #:use-module (gnu packages xorg) | ||
| 37 | #:use-module (gnu packages zip) | ||
| 38 | #:use-module (guix download) | ||
| 39 | #:use-module (guix build utils) | ||
| 40 | #:use-module (guix build-system gnu) | ||
| 41 | #:use-module (guix build-system cmake) | ||
| 42 | #:use-module ((guix licenses) #:prefix license:) | ||
| 43 | #:use-module (guix packages) | ||
| 44 | #:use-module (guix utils) | ||
| 45 | #:use-module (ice-9 match)) | ||
| 46 | 46 | ||
| 47 | (define-public glu | 47 | (define-public glu |
| 48 | (package | 48 | (package |
| @@ -71,7 +71,7 @@ matrices for creating perspective and orthographic projections, | |||
| 71 | positioning a camera, and selection/picking, Rendering of disk, | 71 | positioning a camera, and selection/picking, Rendering of disk, |
| 72 | cylinder, and sphere primitives, Interpreting OpenGL error values | 72 | cylinder, and sphere primitives, Interpreting OpenGL error values |
| 73 | as ASCII text.") | 73 | as ASCII text.") |
| 74 | (license (l:x11-style "http://directory.fsf.org/wiki/License:SGIFreeBv2")))) | 74 | (license (license:x11-style "http://directory.fsf.org/wiki/License:SGIFreeBv2")))) |
| 75 | 75 | ||
| 76 | (define-public freeglut | 76 | (define-public freeglut |
| 77 | (package | 77 | (package |
| @@ -112,7 +112,7 @@ GLUT (and hence freeglut) allows the user to create and manage windows | |||
| 112 | containing OpenGL contexts on a wide range of platforms and also read | 112 | containing OpenGL contexts on a wide range of platforms and also read |
| 113 | the mouse, keyboard and joystick functions. Freeglut is released under | 113 | the mouse, keyboard and joystick functions. Freeglut is released under |
| 114 | the X-Consortium license.") | 114 | the X-Consortium license.") |
| 115 | (license l:x11))) | 115 | (license license:x11))) |
| 116 | 116 | ||
| 117 | (define-public ftgl | 117 | (define-public ftgl |
| 118 | (package | 118 | (package |
| @@ -138,7 +138,7 @@ the X-Consortium license.") | |||
| 138 | "FTGL is a font rendering library for OpenGL applications. Supported | 138 | "FTGL is a font rendering library for OpenGL applications. Supported |
| 139 | rendering modes are: Bitmaps, Anti-aliased pixmaps, Texture maps, Outlines, | 139 | rendering modes are: Bitmaps, Anti-aliased pixmaps, Texture maps, Outlines, |
| 140 | Polygon meshes, and Extruded polygon meshes.") | 140 | Polygon meshes, and Extruded polygon meshes.") |
| 141 | (license l:x11))) | 141 | (license license:x11))) |
| 142 | 142 | ||
| 143 | (define-public s2tc | 143 | (define-public s2tc |
| 144 | (package | 144 | (package |
| @@ -170,7 +170,7 @@ Polygon meshes, and Extruded polygon meshes.") | |||
| 170 | (description | 170 | (description |
| 171 | "S2TC is a patent-free implementation of S3 Texture Compression (S3TC, | 171 | "S2TC is a patent-free implementation of S3 Texture Compression (S3TC, |
| 172 | also known as DXTn or DXTC) for Mesa.") | 172 | also known as DXTn or DXTC) for Mesa.") |
| 173 | (license l:expat))) | 173 | (license license:expat))) |
| 174 | 174 | ||
| 175 | ;;; Mesa needs LibVA headers to build its Gallium-based VA API implementation; | 175 | ;;; Mesa needs LibVA headers to build its Gallium-based VA API implementation; |
| 176 | ;;; LibVA itself depends on Mesa. We use the following to solve the circular | 176 | ;;; LibVA itself depends on Mesa. We use the following to solve the circular |
| @@ -287,7 +287,7 @@ also known as DXTn or DXTC) for Mesa.") | |||
| 287 | a system for rendering interactive 3D graphics. A variety of device drivers | 287 | a system for rendering interactive 3D graphics. A variety of device drivers |
| 288 | allows Mesa to be used in many different environments ranging from software | 288 | allows Mesa to be used in many different environments ranging from software |
| 289 | emulation to complete hardware acceleration for modern GPUs.") | 289 | emulation to complete hardware acceleration for modern GPUs.") |
| 290 | (license l:x11))) | 290 | (license license:x11))) |
| 291 | 291 | ||
| 292 | (define-public mesa-headers | 292 | (define-public mesa-headers |
| 293 | (package | 293 | (package |
| @@ -317,12 +317,12 @@ emulation to complete hardware acceleration for modern GPUs.") | |||
| 317 | (method url-fetch) | 317 | (method url-fetch) |
| 318 | (uri (string-append "ftp://ftp.freedesktop.org/pub/mesa/demos/" version | 318 | (uri (string-append "ftp://ftp.freedesktop.org/pub/mesa/demos/" version |
| 319 | "/mesa-demos-" version ".tar.bz2")) | 319 | "/mesa-demos-" version ".tar.bz2")) |
| 320 | (sha256 (base32 "14msj0prbl3ljwd24yaqv9pz1xzicdmqgg616xxlppbdh6syrgz4")))) | 320 | (sha256 (base32 "1vqb7s5m3fcg2csbiz45mha1pys2xx6rhw94fcyvapqdpm5iawy1")))) |
| 321 | 321 | ||
| 322 | (define-public mesa-utils | 322 | (define-public mesa-utils |
| 323 | (package | 323 | (package |
| 324 | (name "mesa-utils") | 324 | (name "mesa-utils") |
| 325 | (version "8.2.0") | 325 | (version "8.3.0") |
| 326 | (source (mesa-demos-source version)) | 326 | (source (mesa-demos-source version)) |
| 327 | (build-system gnu-build-system) | 327 | (build-system gnu-build-system) |
| 328 | (inputs | 328 | (inputs |
| @@ -332,12 +332,7 @@ emulation to complete hardware acceleration for modern GPUs.") | |||
| 332 | (native-inputs | 332 | (native-inputs |
| 333 | `(("pkg-config" ,pkg-config))) | 333 | `(("pkg-config" ,pkg-config))) |
| 334 | (arguments | 334 | (arguments |
| 335 | '(;; XXX: fails to build against latest mesa: | 335 | '(#:phases |
| 336 | ;; eglut.c: error: 'EGL_SCREEN_BIT_MESA' undeclared | ||
| 337 | ;; | ||
| 338 | ;; <https://bugs.freedesktop.org/show_bug.cgi?id=91643> | ||
| 339 | #:configure-flags '("--disable-egl") | ||
| 340 | #:phases | ||
| 341 | (modify-phases %standard-phases | 336 | (modify-phases %standard-phases |
| 342 | (replace | 337 | (replace |
| 343 | 'install | 338 | 'install |
| @@ -355,7 +350,7 @@ emulation to complete hardware acceleration for modern GPUs.") | |||
| 355 | "The mesa-utils package contains several utility tools for Mesa: glxdemo, | 350 | "The mesa-utils package contains several utility tools for Mesa: glxdemo, |
| 356 | glxgears, glxheads, and glxinfo.") | 351 | glxgears, glxheads, and glxinfo.") |
| 357 | ;; glxdemo is public domain; others expat. | 352 | ;; glxdemo is public domain; others expat. |
| 358 | (license (list l:expat l:public-domain)))) | 353 | (license (list license:expat license:public-domain)))) |
| 359 | 354 | ||
| 360 | (define-public glew | 355 | (define-public glew |
| 361 | (package | 356 | (package |
| @@ -399,7 +394,7 @@ glxgears, glxheads, and glxinfo.") | |||
| 399 | loading library. GLEW provides efficient run-time mechanisms for determining | 394 | loading library. GLEW provides efficient run-time mechanisms for determining |
| 400 | which OpenGL extensions are supported on the target platform. OpenGL core and | 395 | which OpenGL extensions are supported on the target platform. OpenGL core and |
| 401 | extension functionality is exposed in a single header file.") | 396 | extension functionality is exposed in a single header file.") |
| 402 | (license l:bsd-3))) | 397 | (license license:bsd-3))) |
| 403 | 398 | ||
| 404 | (define-public guile-opengl | 399 | (define-public guile-opengl |
| 405 | (package | 400 | (package |
| @@ -445,7 +440,7 @@ extension functionality is exposed in a single header file.") | |||
| 445 | (description | 440 | (description |
| 446 | "Guile-OpenGL is a library for Guile that provides bindings to the | 441 | "Guile-OpenGL is a library for Guile that provides bindings to the |
| 447 | OpenGL graphics API.") | 442 | OpenGL graphics API.") |
| 448 | (license l:lgpl3+))) | 443 | (license license:lgpl3+))) |
| 449 | 444 | ||
| 450 | (define-public libepoxy | 445 | (define-public libepoxy |
| 451 | (package | 446 | (package |
| @@ -502,7 +497,7 @@ OpenGL graphics API.") | |||
| 502 | (synopsis "A library for handling OpenGL function pointer management") | 497 | (synopsis "A library for handling OpenGL function pointer management") |
| 503 | (description | 498 | (description |
| 504 | "A library for handling OpenGL function pointer management.") | 499 | "A library for handling OpenGL function pointer management.") |
| 505 | (license l:x11))) | 500 | (license license:x11))) |
| 506 | 501 | ||
| 507 | (define-public soil | 502 | (define-public soil |
| 508 | (package | 503 | (package |
| @@ -544,4 +539,4 @@ OpenGL graphics API.") | |||
| 544 | (description | 539 | (description |
| 545 | "SOIL is a tiny C library used primarily for uploading textures into | 540 | "SOIL is a tiny C library used primarily for uploading textures into |
| 546 | OpenGL.") | 541 | OpenGL.") |
| 547 | (license l:public-domain))) | 542 | (license license:public-domain))) |
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm index c4e2a37955b..f052eab40cb 100644 --- a/gnu/packages/gnunet.scm +++ b/gnu/packages/gnunet.scm | |||
| @@ -3,7 +3,6 @@ | |||
| 3 | ;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in> | 3 | ;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in> |
| 4 | ;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org> | 4 | ;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org> |
| 5 | ;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il> | 5 | ;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il> |
| 6 | ;;; Copyright © 2016 Ni* Gillmann <ng@niasterisk.space> | ||
| 7 | ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> | 6 | ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> |
| 8 | ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org> | 7 | ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org> |
| 9 | ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is> | 8 | ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is> |
| @@ -154,13 +153,16 @@ and support for SSL3 and TLS.") | |||
| 154 | (define-public gnurl | 153 | (define-public gnurl |
| 155 | (package | 154 | (package |
| 156 | (name "gnurl") | 155 | (name "gnurl") |
| 157 | (version "7.45.0") | 156 | (version "7.48.0") |
| 158 | (source (origin | 157 | (source (origin |
| 159 | (method url-fetch) | 158 | (method url-fetch) |
| 160 | (uri (string-append "https://gnunet.org/sites/default/files/gnurl-" | 159 | (uri (let ((version-with-underscores |
| 161 | version ".tar.bz2")) | 160 | (string-join (string-split version #\.) "_"))) |
| 161 | (string-append "https://gnunet.org/sites/default/files/" | ||
| 162 | name "-" version-with-underscores ".tar.bz2"))) | ||
| 162 | (sha256 | 163 | (sha256 |
| 163 | (base32 "0hd8w4wyjwagd4k6vm6srphqbmysz08rcwf8z7f4b2d6d2yrn3mm")))) | 164 | (base32 |
| 165 | "14gch4rdibrc8qs4mijsczxvl45dsclf234g17dk6c8nc2s4bm0a")))) | ||
| 164 | (build-system gnu-build-system) | 166 | (build-system gnu-build-system) |
| 165 | (inputs `(("gnutls" ,gnutls) | 167 | (inputs `(("gnutls" ,gnutls) |
| 166 | ("libidn" ,libidn) | 168 | ("libidn" ,libidn) |
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index 2ef241036a9..2b4ce718668 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm | |||
| @@ -60,7 +60,7 @@ | |||
| 60 | (base32 | 60 | (base32 |
| 61 | "0ywxwswizmkyciy480kzczxn6nhbgzf3z8my4nk43nvv67k4x87j")))) | 61 | "0ywxwswizmkyciy480kzczxn6nhbgzf3z8my4nk43nvv67k4x87j")))) |
| 62 | (build-system gnu-build-system) | 62 | (build-system gnu-build-system) |
| 63 | (home-page "http://gnupg.org") | 63 | (home-page "https://gnupg.org") |
| 64 | (synopsis "Library of error values for GnuPG components") | 64 | (synopsis "Library of error values for GnuPG components") |
| 65 | (description | 65 | (description |
| 66 | "Libgpg-error is a small library that defines common error values | 66 | "Libgpg-error is a small library that defines common error values |
| @@ -96,7 +96,7 @@ Daemon and possibly more in the future.") | |||
| 96 | (list (string-append "--with-gpg-error-prefix=" | 96 | (list (string-append "--with-gpg-error-prefix=" |
| 97 | (assoc-ref %build-inputs "libgpg-error-host"))))) | 97 | (assoc-ref %build-inputs "libgpg-error-host"))))) |
| 98 | (outputs '("out" "debug")) | 98 | (outputs '("out" "debug")) |
| 99 | (home-page "http://gnupg.org/") | 99 | (home-page "https://gnupg.org/") |
| 100 | (synopsis "Cryptographic function library") | 100 | (synopsis "Cryptographic function library") |
| 101 | (description | 101 | (description |
| 102 | "Libgcrypt is a general-purpose cryptographic library. It provides the | 102 | "Libgcrypt is a general-purpose cryptographic library. It provides the |
| @@ -122,7 +122,7 @@ generation.") | |||
| 122 | (define-public libassuan | 122 | (define-public libassuan |
| 123 | (package | 123 | (package |
| 124 | (name "libassuan") | 124 | (name "libassuan") |
| 125 | (version "2.4.2") | 125 | (version "2.4.3") |
| 126 | (source | 126 | (source |
| 127 | (origin | 127 | (origin |
| 128 | (method url-fetch) | 128 | (method url-fetch) |
| @@ -130,11 +130,11 @@ generation.") | |||
| 130 | version ".tar.bz2")) | 130 | version ".tar.bz2")) |
| 131 | (sha256 | 131 | (sha256 |
| 132 | (base32 | 132 | (base32 |
| 133 | "086bbcdnvs48qq5g4iac7dpk76j0q3jrp16mchdvyx0b720xq1mv")))) | 133 | "0w9bmasln4z8mn16s1is55a06w3nv8jbyal496z5jvr5vcxkm112")))) |
| 134 | (build-system gnu-build-system) | 134 | (build-system gnu-build-system) |
| 135 | (propagated-inputs | 135 | (propagated-inputs |
| 136 | `(("libgpg-error" ,libgpg-error) ("pth" ,pth))) | 136 | `(("libgpg-error" ,libgpg-error) ("pth" ,pth))) |
| 137 | (home-page "http://gnupg.org") | 137 | (home-page "https://gnupg.org") |
| 138 | (synopsis | 138 | (synopsis |
| 139 | "IPC library used by GnuPG and related software") | 139 | "IPC library used by GnuPG and related software") |
| 140 | (description | 140 | (description |
| @@ -171,7 +171,7 @@ provided.") | |||
| 171 | '()) | 171 | '()) |
| 172 | (string-append "--with-gpg-error-prefix=" | 172 | (string-append "--with-gpg-error-prefix=" |
| 173 | (assoc-ref %build-inputs "libgpg-error"))))) | 173 | (assoc-ref %build-inputs "libgpg-error"))))) |
| 174 | (home-page "http://www.gnupg.org") | 174 | (home-page "https://www.gnupg.org") |
| 175 | (synopsis "CMS and X.509 access library") | 175 | (synopsis "CMS and X.509 access library") |
| 176 | (description | 176 | (description |
| 177 | "KSBA (pronounced Kasbah) is a library to make X.509 certificates | 177 | "KSBA (pronounced Kasbah) is a library to make X.509 certificates |
| @@ -195,7 +195,7 @@ specifications are building blocks of S/MIME and TLS.") | |||
| 195 | (base32 | 195 | (base32 |
| 196 | "12n0nvhw4fzwp0k7gjv3rc6pdml0qiinbbfiz4ilg6pl5kdxvnvd")))) | 196 | "12n0nvhw4fzwp0k7gjv3rc6pdml0qiinbbfiz4ilg6pl5kdxvnvd")))) |
| 197 | (build-system gnu-build-system) | 197 | (build-system gnu-build-system) |
| 198 | (home-page "http://www.gnupg.org") | 198 | (home-page "https://www.gnupg.org") |
| 199 | (synopsis "Non-preemptive thread library") | 199 | (synopsis "Non-preemptive thread library") |
| 200 | (description | 200 | (description |
| 201 | "Npth is a library to provide the GNU Pth API and thus a non-preemptive | 201 | "Npth is a library to provide the GNU Pth API and thus a non-preemptive |
| @@ -242,7 +242,7 @@ compatible to GNU Pth.") | |||
| 242 | (substitute* "tests/openpgp/defs.inc" | 242 | (substitute* "tests/openpgp/defs.inc" |
| 243 | (("/bin/pwd") (which "pwd")))) | 243 | (("/bin/pwd") (which "pwd")))) |
| 244 | %standard-phases))) | 244 | %standard-phases))) |
| 245 | (home-page "http://gnupg.org/") | 245 | (home-page "https://gnupg.org/") |
| 246 | (synopsis "GNU Privacy Guard") | 246 | (synopsis "GNU Privacy Guard") |
| 247 | (description | 247 | (description |
| 248 | "The GNU Privacy Guard is a complete implementation of the OpenPGP | 248 | "The GNU Privacy Guard is a complete implementation of the OpenPGP |
| @@ -332,7 +332,7 @@ libskba (working with X.509 certificates and CMS data).") | |||
| 332 | `(("gnupg" ,gnupg-2.0) | 332 | `(("gnupg" ,gnupg-2.0) |
| 333 | ("libassuan" ,libassuan))) | 333 | ("libassuan" ,libassuan))) |
| 334 | (arguments '(#:make-flags '("GPG=gpg2"))) | 334 | (arguments '(#:make-flags '("GPG=gpg2"))) |
| 335 | (home-page "http://www.gnupg.org/related_software/gpgme/") | 335 | (home-page "https://www.gnupg.org/related_software/gpgme/") |
| 336 | (synopsis "Library providing simplified access to GnuPG functionality") | 336 | (synopsis "Library providing simplified access to GnuPG functionality") |
| 337 | (description | 337 | (description |
| 338 | "GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG | 338 | "GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG |
| @@ -418,7 +418,7 @@ decrypt messages using the OpenPGP format by making use of GPGME.") | |||
| 418 | "test_gnupg.py" "--no-doctests"))))))) | 418 | "test_gnupg.py" "--no-doctests"))))))) |
| 419 | (native-inputs | 419 | (native-inputs |
| 420 | `(("gnupg" ,gnupg-1))) | 420 | `(("gnupg" ,gnupg-1))) |
| 421 | (home-page "http://packages.python.org/python-gnupg/index.html") | 421 | (home-page "https://packages.python.org/python-gnupg/index.html") |
| 422 | (synopsis "Wrapper for the GNU Privacy Guard") | 422 | (synopsis "Wrapper for the GNU Privacy Guard") |
| 423 | (description | 423 | (description |
| 424 | "This module allows easy access to GnuPG’s key management, encryption | 424 | "This module allows easy access to GnuPG’s key management, encryption |
| @@ -466,7 +466,7 @@ to the process. | |||
| 466 | pius-keyring-mgr and pius-party-worksheet help organisers of | 466 | pius-keyring-mgr and pius-party-worksheet help organisers of |
| 467 | PGP keysigning parties.") | 467 | PGP keysigning parties.") |
| 468 | (license license:gpl2) | 468 | (license license:gpl2) |
| 469 | (home-page "http://www.phildev.net/pius/index.shtml"))) | 469 | (home-page "https://www.phildev.net/pius/index.shtml"))) |
| 470 | 470 | ||
| 471 | (define-public signing-party | 471 | (define-public signing-party |
| 472 | (package | 472 | (package |
| @@ -566,7 +566,7 @@ including tools for signing keys, keyring analysis, and party preparation. | |||
| 566 | ;; and caff and gpgsigs: bsd-3, see | 566 | ;; and caff and gpgsigs: bsd-3, see |
| 567 | ;; http://packages.debian.org/changelogs/pool/main/s/signing-party/current/copyright | 567 | ;; http://packages.debian.org/changelogs/pool/main/s/signing-party/current/copyright |
| 568 | (license license:gpl2) | 568 | (license license:gpl2) |
| 569 | (home-page "http://pgp-tools.alioth.debian.org/"))) | 569 | (home-page "https://pgp-tools.alioth.debian.org/"))) |
| 570 | 570 | ||
| 571 | (define-public pinentry-tty | 571 | (define-public pinentry-tty |
| 572 | (package | 572 | (package |
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm new file mode 100644 index 00000000000..cc1b66f0ae9 --- /dev/null +++ b/gnu/packages/golang.scm | |||
| @@ -0,0 +1,185 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | ||
| 2 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | ||
| 3 | ;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com> | ||
| 4 | ;;; Copyright © 2016 Andy Wingo <wingo@igalia.com> | ||
| 5 | ;;; | ||
| 6 | ;;; This file is an addendum GNU Guix. | ||
| 7 | ;;; | ||
| 8 | ;;; GNU Guix is free software; you can redistribute it and/or modify it | ||
| 9 | ;;; under the terms of the GNU General Public License as published by | ||
| 10 | ;;; the Free Software Foundation; either version 3 of the License, or (at | ||
| 11 | ;;; your option) any later version. | ||
| 12 | ;;; | ||
| 13 | ;;; GNU Guix is distributed in the hope that it will be useful, but | ||
| 14 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 15 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 16 | ;;; GNU General Public License for more details. | ||
| 17 | ;;; | ||
| 18 | ;;; You should have received a copy of the GNU General Public License | ||
| 19 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | ||
| 20 | |||
| 21 | (define-module (gnu packages golang) | ||
| 22 | #:use-module ((guix licenses) #:prefix license:) | ||
| 23 | #:use-module (guix utils) | ||
| 24 | #:use-module (guix download) | ||
| 25 | #:use-module (guix packages) | ||
| 26 | #:use-module (guix build-system gnu) | ||
| 27 | #:use-module (gnu packages admin) | ||
| 28 | #:use-module (gnu packages gcc) | ||
| 29 | #:use-module (gnu packages base) | ||
| 30 | #:use-module (gnu packages perl) | ||
| 31 | #:use-module (gnu packages pkg-config) | ||
| 32 | #:use-module (gnu packages pcre) | ||
| 33 | #:use-module (ice-9 match) | ||
| 34 | #:use-module (srfi srfi-1)) | ||
| 35 | |||
| 36 | ;; According to https://golang.org/doc/install/gccgo, gccgo-4.8.2 includes a | ||
| 37 | ;; complete go-1.1.2 implementation, gccgo-4.9 includes a complete go-1.2 | ||
| 38 | ;; implementation, and gccgo-5 a complete implementation of go-1.4. Ultimately | ||
| 39 | ;; we hope to build go-1.5+ with a bootstrap process using gccgo-5. As of | ||
| 40 | ;; go-1.5, go cannot be bootstrapped without go-1.4, so we need to use go-1.4 or | ||
| 41 | ;; gccgo-5. Mips is not officially supported, but it should work if it is | ||
| 42 | ;; bootstrapped. | ||
| 43 | |||
| 44 | (define-public go-1.4 | ||
| 45 | (package | ||
| 46 | (name "go") | ||
| 47 | (version "1.4.3") | ||
| 48 | (source (origin | ||
| 49 | (method url-fetch) | ||
| 50 | (uri (string-append "https://storage.googleapis.com/golang/" | ||
| 51 | name version ".src.tar.gz")) | ||
| 52 | (sha256 | ||
| 53 | (base32 | ||
| 54 | "0na9yqilzpvq0bjndbibfp07wr796gf252y471cip10bbdqgqiwr")))) | ||
| 55 | (build-system gnu-build-system) | ||
| 56 | (outputs '("out" | ||
| 57 | "doc" | ||
| 58 | "tests")) | ||
| 59 | (arguments | ||
| 60 | `(#:modules ((ice-9 match) | ||
| 61 | (guix build gnu-build-system) | ||
| 62 | (guix build utils)) | ||
| 63 | #:tests? #f ; Tests are run by the all.bash script. | ||
| 64 | #:phases | ||
| 65 | (modify-phases %standard-phases | ||
| 66 | (delete 'configure) | ||
| 67 | (add-after 'patch-generated-file-shebangs 'chdir | ||
| 68 | (lambda _ | ||
| 69 | (chdir "src"))) | ||
| 70 | (add-before 'build 'prebuild | ||
| 71 | (lambda* (#:key inputs outputs #:allow-other-keys) | ||
| 72 | (let* ((gcclib (string-append (assoc-ref inputs "gcc:lib") "/lib")) | ||
| 73 | (ld (string-append (assoc-ref inputs "libc") "/lib")) | ||
| 74 | (loader (car (find-files ld "^ld-linux.+"))) | ||
| 75 | (net-base (assoc-ref inputs "net-base")) | ||
| 76 | (tzdata-path | ||
| 77 | (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo")) | ||
| 78 | (output (assoc-ref outputs "out"))) | ||
| 79 | |||
| 80 | ;; Removing net/ tests, which fail when attempting to access | ||
| 81 | ;; network resources not present in the build container. | ||
| 82 | (for-each delete-file | ||
| 83 | '("net/multicast_test.go" "net/parse_test.go" | ||
| 84 | "net/port_test.go")) | ||
| 85 | |||
| 86 | ;; Add libgcc to the RUNPATH. | ||
| 87 | (substitute* "cmd/go/build.go" | ||
| 88 | (("cgoldflags := \\[\\]string\\{\\}") | ||
| 89 | (string-append "cgoldflags := []string{" | ||
| 90 | "\"-rpath=" gcclib "\"}")) | ||
| 91 | (("ldflags := buildLdflags") | ||
| 92 | (string-append | ||
| 93 | "ldflags := buildLdflags\n" | ||
| 94 | "ldflags = append(ldflags, \"-r\")\n" | ||
| 95 | "ldflags = append(ldflags, \"" gcclib "\")\n"))) | ||
| 96 | |||
| 97 | (substitute* "os/os_test.go" | ||
| 98 | (("/usr/bin") (getcwd)) | ||
| 99 | (("/bin/pwd") (which "pwd"))) | ||
| 100 | |||
| 101 | ;; Disable failing tests: these tests attempt to access | ||
| 102 | ;; commands or network resources which are neither available or | ||
| 103 | ;; necessary for the build to succeed. | ||
| 104 | (for-each | ||
| 105 | (match-lambda | ||
| 106 | ((file regex) | ||
| 107 | (substitute* file | ||
| 108 | ((regex all before test_name) | ||
| 109 | (string-append before "Disabled" test_name))))) | ||
| 110 | '(("net/net_test.go" "(.+)(TestShutdownUnix.+)") | ||
| 111 | ("net/dial_test.go" "(.+)(TestDialTimeout.+)") | ||
| 112 | ("os/os_test.go" "(.+)(TestHostname.+)") | ||
| 113 | ("time/format_test.go" "(.+)(TestParseInSydney.+)") | ||
| 114 | ("os/exec/exec_test.go" "(.+)(TestEcho.+)") | ||
| 115 | ("os/exec/exec_test.go" "(.+)(TestCommandRelativeName.+)") | ||
| 116 | ("os/exec/exec_test.go" "(.+)(TestCatStdin.+)") | ||
| 117 | ("os/exec/exec_test.go" "(.+)(TestCatGoodAndBadFile.+)") | ||
| 118 | ("os/exec/exec_test.go" "(.+)(TestExitStatus.+)") | ||
| 119 | ("os/exec/exec_test.go" "(.+)(TestPipes.+)") | ||
| 120 | ("os/exec/exec_test.go" "(.+)(TestStdinClose.+)") | ||
| 121 | ("syscall/syscall_unix_test.go" "(.+)(TestPassFD\\(.+)") | ||
| 122 | ("os/exec/exec_test.go" "(.+)(TestExtraFiles.+)"))) | ||
| 123 | |||
| 124 | (substitute* "net/lookup_unix.go" | ||
| 125 | (("/etc/protocols") (string-append net-base "/etc/protocols"))) | ||
| 126 | (substitute* "time/zoneinfo_unix.go" | ||
| 127 | (("/usr/share/zoneinfo/") tzdata-path)) | ||
| 128 | (substitute* (find-files "cmd" "asm.c") | ||
| 129 | (("/lib/ld-linux.*\\.so\\.[0-9]") loader)) | ||
| 130 | #t))) | ||
| 131 | |||
| 132 | (replace 'build | ||
| 133 | (lambda* (#:key inputs outputs #:allow-other-keys) | ||
| 134 | ;; FIXME: Some of the .a files are not bit-reproducible. | ||
| 135 | (let* ((output (assoc-ref outputs "out"))) | ||
| 136 | (setenv "CC" (which "gcc")) | ||
| 137 | (setenv "GOOS" "linux") | ||
| 138 | (setenv "GOROOT" (dirname (getcwd))) | ||
| 139 | (setenv "GOROOT_FINAL" output) | ||
| 140 | (setenv "CGO_ENABLED" "1") | ||
| 141 | (zero? (system* "sh" "all.bash"))))) | ||
| 142 | |||
| 143 | (replace 'install | ||
| 144 | (lambda* (#:key outputs inputs #:allow-other-keys) | ||
| 145 | (let* ((output (assoc-ref outputs "out")) | ||
| 146 | (doc_out (assoc-ref outputs "doc")) | ||
| 147 | (bash (string-append (assoc-ref inputs "bash") "bin/bash")) | ||
| 148 | (docs (string-append doc_out "/share/doc/" ,name "-" ,version)) | ||
| 149 | (tests (string-append | ||
| 150 | (assoc-ref outputs "tests") "/share/" ,name "-" ,version))) | ||
| 151 | (mkdir-p tests) | ||
| 152 | (copy-recursively "../test" (string-append tests "/test")) | ||
| 153 | (delete-file-recursively "../test") | ||
| 154 | (mkdir-p docs) | ||
| 155 | (copy-recursively "../api" (string-append docs "/api")) | ||
| 156 | (delete-file-recursively "../api") | ||
| 157 | (copy-recursively "../doc" (string-append docs "/doc")) | ||
| 158 | (delete-file-recursively "../doc") | ||
| 159 | |||
| 160 | (for-each (lambda (file) | ||
| 161 | (let ((file (string-append "../" file))) | ||
| 162 | (install-file file docs) | ||
| 163 | (delete-file file))) | ||
| 164 | '("README" "CONTRIBUTORS" "AUTHORS" "PATENTS" | ||
| 165 | "LICENSE" "VERSION" "robots.txt")) | ||
| 166 | (copy-recursively "../" output) | ||
| 167 | #t)))))) | ||
| 168 | (inputs | ||
| 169 | `(("tzdata" ,tzdata) | ||
| 170 | ("pcre" ,pcre) | ||
| 171 | ("gcc:lib" ,gcc "lib"))) | ||
| 172 | (native-inputs | ||
| 173 | `(("pkg-config" ,%pkg-config) | ||
| 174 | ("which" ,which) | ||
| 175 | ("net-base" ,net-base) | ||
| 176 | ("perl" ,perl))) | ||
| 177 | |||
| 178 | (home-page "https://golang.org/") | ||
| 179 | (synopsis "Compiler and libraries for Go, a statically-typed language") | ||
| 180 | (description "Go, also commonly referred to as golang, is an imperative | ||
| 181 | programming language. Designed primarily for systems programming, it is a | ||
| 182 | compiled, statically typed language in the tradition of C and C++, with | ||
| 183 | garbage collection, various safety features and in the style of communicating | ||
| 184 | sequential processes (CSP) concurrent programming features added.") | ||
| 185 | (license license:bsd-3))) | ||
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm index ca99cd0302d..f6298ce394f 100644 --- a/gnu/packages/graphics.scm +++ b/gnu/packages/graphics.scm | |||
| @@ -3,6 +3,7 @@ | |||
| 3 | ;;; Copyright © 2015 Tomáš Čech <sleep_walker@gnu.org> | 3 | ;;; Copyright © 2015 Tomáš Čech <sleep_walker@gnu.org> |
| 4 | ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> | 4 | ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> |
| 5 | ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> | 5 | ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> |
| 6 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | ||
| 6 | ;;; | 7 | ;;; |
| 7 | ;;; This file is part of GNU Guix. | 8 | ;;; This file is part of GNU Guix. |
| 8 | ;;; | 9 | ;;; |
| @@ -139,15 +140,15 @@ application can be customized via its API for Python scripting.") | |||
| 139 | (define-public cgal | 140 | (define-public cgal |
| 140 | (package | 141 | (package |
| 141 | (name "cgal") | 142 | (name "cgal") |
| 142 | (version "4.6.3") | 143 | (version "4.8.1") |
| 143 | (source (origin | 144 | (source (origin |
| 144 | (method url-fetch) | 145 | (method url-fetch) |
| 145 | (uri (string-append | 146 | (uri (string-append |
| 146 | "http://gforge.inria.fr/frs/download.php/file/" | 147 | "https://github.com/CGAL/cgal/releases/download/releases/" |
| 147 | "35139/CGAL-4.6.3.tar.xz")) | 148 | "CGAL-" version "/CGAL-" version ".tar.xz")) |
| 148 | (sha256 | 149 | (sha256 |
| 149 | (base32 | 150 | (base32 |
| 150 | "08gwjjh0qz3fakj1y2nsl2qvb0qv5lc7k1pxwjkagh37hxxh4f73")))) | 151 | "1c41yzl2jg3d6zx5k0iccwqwibp950q7dr7z7pp4xi9wlph3c87s")))) |
| 151 | (build-system cmake-build-system) | 152 | (build-system cmake-build-system) |
| 152 | (arguments | 153 | (arguments |
| 153 | '(;; "RelWithDebInfo" is not supported. | 154 | '(;; "RelWithDebInfo" is not supported. |
| @@ -211,9 +212,17 @@ exception-handling library.") | |||
| 211 | "0ca2j526n4wlamrxb85y2jrgcv0gf21b3a19rr0gh4rjqkv1581n")) | 212 | "0ca2j526n4wlamrxb85y2jrgcv0gf21b3a19rr0gh4rjqkv1581n")) |
| 212 | (modules '((guix build utils))) | 213 | (modules '((guix build utils))) |
| 213 | (snippet | 214 | (snippet |
| 214 | '(substitute* (find-files "." "tmpDir\\.h") | 215 | '(begin |
| 215 | (("\"/var/tmp/\"") | 216 | (substitute* (find-files "." "tmpDir\\.h") |
| 216 | "\"/tmp/\""))) | 217 | (("\"/var/tmp/\"") |
| 218 | "\"/tmp/\"")) | ||
| 219 | |||
| 220 | ;; Install 'ImfStdIO.h'. Reported at | ||
| 221 | ;; <https://lists.nongnu.org/archive/html/openexr-devel/2016-06/msg00001.html> | ||
| 222 | ;; and <https://github.com/openexr/openexr/pull/184>. | ||
| 223 | (substitute* "IlmImf/Makefile.in" | ||
| 224 | (("ImfIO\\.h") | ||
| 225 | "ImfIO.h ImfStdIO.h")))) | ||
| 217 | (patches (search-patches "openexr-missing-samples.patch")))) | 226 | (patches (search-patches "openexr-missing-samples.patch")))) |
| 218 | (build-system gnu-build-system) | 227 | (build-system gnu-build-system) |
| 219 | (arguments | 228 | (arguments |
| @@ -246,7 +255,7 @@ storage of the \"EXR\" file format for storing 16-bit floating-point images.") | |||
| 246 | (define-public openimageio | 255 | (define-public openimageio |
| 247 | (package | 256 | (package |
| 248 | (name "openimageio") | 257 | (name "openimageio") |
| 249 | (version "1.5.18") | 258 | (version "1.6.15") |
| 250 | (source (origin | 259 | (source (origin |
| 251 | (method url-fetch) | 260 | (method url-fetch) |
| 252 | (uri (string-append "https://github.com/OpenImageIO/oiio/" | 261 | (uri (string-append "https://github.com/OpenImageIO/oiio/" |
| @@ -254,8 +263,7 @@ storage of the \"EXR\" file format for storing 16-bit floating-point images.") | |||
| 254 | (file-name (string-append name "-" version ".tar.gz")) | 263 | (file-name (string-append name "-" version ".tar.gz")) |
| 255 | (sha256 | 264 | (sha256 |
| 256 | (base32 | 265 | (base32 |
| 257 | "0mn7cz19mn8dcrhkq15h25gl20ammr1wz0j2j3c2vxs6ph7zn8jy")) | 266 | "144crq0205d0w5aq4iglh2rhzf54a8rv3pksy6d533b75w5d7rq7")))) |
| 258 | (patches (search-patches "openimageio-boost-1.60.patch")))) | ||
| 259 | (build-system cmake-build-system) | 267 | (build-system cmake-build-system) |
| 260 | ;; FIXME: To run all tests successfully, test image sets from multiple | 268 | ;; FIXME: To run all tests successfully, test image sets from multiple |
| 261 | ;; third party sources have to be present. For details see | 269 | ;; third party sources have to be present. For details see |
diff --git a/gnu/packages/grub.scm b/gnu/packages/grub.scm index 31b270c0d8a..01f2a8454dd 100644 --- a/gnu/packages/grub.scm +++ b/gnu/packages/grub.scm | |||
| @@ -2,6 +2,7 @@ | |||
| 2 | ;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> | 2 | ;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> |
| 3 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> | 3 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> |
| 4 | ;;; Copyright © 2015 Leo Famulari <leo@famulari.name> | 4 | ;;; Copyright © 2015 Leo Famulari <leo@famulari.name> |
| 5 | ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> | ||
| 5 | ;;; | 6 | ;;; |
| 6 | ;;; This file is part of GNU Guix. | 7 | ;;; This file is part of GNU Guix. |
| 7 | ;;; | 8 | ;;; |
| @@ -76,20 +77,21 @@ | |||
| 76 | (define-public grub | 77 | (define-public grub |
| 77 | (package | 78 | (package |
| 78 | (name "grub") | 79 | (name "grub") |
| 79 | (version "2.00") | 80 | (version "2.02beta3") |
| 80 | (source (origin | 81 | (source (origin |
| 81 | (method url-fetch) | 82 | (method url-fetch) |
| 82 | (uri (string-append "mirror://gnu/grub/grub-" | 83 | (uri (string-append |
| 83 | version ".tar.xz")) | 84 | "ftp://alpha.gnu.org/gnu/grub/grub-" |
| 85 | "2.02~beta3" | ||
| 86 | ".tar.xz")) | ||
| 87 | (file-name (string-append name "-" version ".tar.xz")) | ||
| 84 | (sha256 | 88 | (sha256 |
| 85 | (base32 | 89 | (base32 |
| 86 | "0n64hpmsccvicagvr0c6v0kgp2yw0kgnd3jvsyd26cnwgs7c6kkq")) | 90 | "18ddwnw0vxs7zigvah0g6a5z5vvlz0p8fjglxv1h59sjbrakvv1h")))) |
| 87 | (patches (search-patches "grub-gets-undeclared.patch" | ||
| 88 | "grub-freetype.patch" | ||
| 89 | "grub-CVE-2015-8370.patch")))) | ||
| 90 | (build-system gnu-build-system) | 91 | (build-system gnu-build-system) |
| 91 | (arguments | 92 | (arguments |
| 92 | '(#:configure-flags '("--disable-werror") | 93 | '(;; Two warnings: suggest braces, signed/unsigned comparison. |
| 94 | #:configure-flags '("--disable-werror") | ||
| 93 | #:phases (modify-phases %standard-phases | 95 | #:phases (modify-phases %standard-phases |
| 94 | (add-after | 96 | (add-after |
| 95 | 'unpack 'patch-stuff | 97 | 'unpack 'patch-stuff |
| @@ -100,6 +102,13 @@ | |||
| 100 | ;; Make the font visible. | 102 | ;; Make the font visible. |
| 101 | (copy-file (assoc-ref inputs "unifont") "unifont.bdf.gz") | 103 | (copy-file (assoc-ref inputs "unifont") "unifont.bdf.gz") |
| 102 | (system* "gunzip" "unifont.bdf.gz") | 104 | (system* "gunzip" "unifont.bdf.gz") |
| 105 | |||
| 106 | ;; We hit an assertion failure in | ||
| 107 | ;; grub-core/tests/video_checksum.c, as reported at | ||
| 108 | ;; <https://lists.gnu.org/archive/html/grub-devel/2016-07/msg00026.html>. | ||
| 109 | ;; Disable this test for now. | ||
| 110 | (substitute* "tests/grub_func_test.in" | ||
| 111 | (("set -e") "exit 77\nset -e")) | ||
| 103 | #t))))) | 112 | #t))))) |
| 104 | (inputs | 113 | (inputs |
| 105 | `(;; ("lvm2" ,lvm2) | 114 | `(;; ("lvm2" ,lvm2) |
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm index f9e677bca48..a39a3b434db 100644 --- a/gnu/packages/gstreamer.scm +++ b/gnu/packages/gstreamer.scm | |||
| @@ -97,7 +97,7 @@ arrays of data.") | |||
| 97 | (define-public gstreamer | 97 | (define-public gstreamer |
| 98 | (package | 98 | (package |
| 99 | (name "gstreamer") | 99 | (name "gstreamer") |
| 100 | (version "1.8.0") | 100 | (version "1.8.2") |
| 101 | (source | 101 | (source |
| 102 | (origin | 102 | (origin |
| 103 | (method url-fetch) | 103 | (method url-fetch) |
| @@ -106,7 +106,7 @@ arrays of data.") | |||
| 106 | version ".tar.xz")) | 106 | version ".tar.xz")) |
| 107 | (sha256 | 107 | (sha256 |
| 108 | (base32 | 108 | (base32 |
| 109 | "1p5y9bbrhywng0prmpxv29p6jsz6vd039d49bnc98p9b45532yll")))) | 109 | "0hc3j684nx209p10ampvnkza3gna2yiryr7jyx701ciakh3vxglx")))) |
| 110 | (build-system gnu-build-system) | 110 | (build-system gnu-build-system) |
| 111 | (outputs '("out" "doc")) | 111 | (outputs '("out" "doc")) |
| 112 | (arguments | 112 | (arguments |
| @@ -145,7 +145,7 @@ This package provides the core library and elements.") | |||
| 145 | (define-public gst-plugins-base | 145 | (define-public gst-plugins-base |
| 146 | (package | 146 | (package |
| 147 | (name "gst-plugins-base") | 147 | (name "gst-plugins-base") |
| 148 | (version "1.8.0") | 148 | (version "1.8.2") |
| 149 | (source | 149 | (source |
| 150 | (origin | 150 | (origin |
| 151 | (method url-fetch) | 151 | (method url-fetch) |
| @@ -153,7 +153,7 @@ This package provides the core library and elements.") | |||
| 153 | name "-" version ".tar.xz")) | 153 | name "-" version ".tar.xz")) |
| 154 | (sha256 | 154 | (sha256 |
| 155 | (base32 | 155 | (base32 |
| 156 | "08hmg7fp519wim1fm04r7f2q2020ssdninawqsbrqjsvs70srh5b")))) | 156 | "13fk751vvfrfhbm4ip28vxyvlsm4b4y0bc0pvf7fqp8azg40jwcx")))) |
| 157 | (build-system gnu-build-system) | 157 | (build-system gnu-build-system) |
| 158 | (outputs '("out" "doc")) | 158 | (outputs '("out" "doc")) |
| 159 | (propagated-inputs | 159 | (propagated-inputs |
| @@ -198,7 +198,7 @@ for the GStreamer multimedia library.") | |||
| 198 | (define-public gst-plugins-good | 198 | (define-public gst-plugins-good |
| 199 | (package | 199 | (package |
| 200 | (name "gst-plugins-good") | 200 | (name "gst-plugins-good") |
| 201 | (version "1.8.0") | 201 | (version "1.8.2") |
| 202 | (source | 202 | (source |
| 203 | (origin | 203 | (origin |
| 204 | (method url-fetch) | 204 | (method url-fetch) |
| @@ -207,7 +207,7 @@ for the GStreamer multimedia library.") | |||
| 207 | name "-" version ".tar.xz")) | 207 | name "-" version ".tar.xz")) |
| 208 | (sha256 | 208 | (sha256 |
| 209 | (base32 | 209 | (base32 |
| 210 | "0kczdvqxvl8kxiy2d7czv16jp73hv9k3nykh47ckihnv8x6i6362")))) | 210 | "0i1rlbbx3m6ykvcdyaidsd8wa2b7nq2qmcvbrsg00yivi88ljxcd")))) |
| 211 | (build-system gnu-build-system) | 211 | (build-system gnu-build-system) |
| 212 | (inputs | 212 | (inputs |
| 213 | `(("aalib" ,aalib) | 213 | `(("aalib" ,aalib) |
| @@ -336,7 +336,7 @@ par compared to the rest.") | |||
| 336 | (define-public gst-plugins-ugly | 336 | (define-public gst-plugins-ugly |
| 337 | (package | 337 | (package |
| 338 | (name "gst-plugins-ugly") | 338 | (name "gst-plugins-ugly") |
| 339 | (version "1.8.0") | 339 | (version "1.8.2") |
| 340 | (source | 340 | (source |
| 341 | (origin | 341 | (origin |
| 342 | (method url-fetch) | 342 | (method url-fetch) |
| @@ -344,7 +344,7 @@ par compared to the rest.") | |||
| 344 | name "/" name "-" version ".tar.xz")) | 344 | name "/" name "-" version ".tar.xz")) |
| 345 | (sha256 | 345 | (sha256 |
| 346 | (base32 | 346 | (base32 |
| 347 | "137b6kqykh5nwbmiv28nn1pc1d2x2rb2xxg382pc9pa9gpxpyrak")))) | 347 | "1b58s7z430cbbaw8mgy87kslbpmj3xmm66wsr7bddhcgm6i36nww")))) |
| 348 | (build-system gnu-build-system) | 348 | (build-system gnu-build-system) |
| 349 | (inputs | 349 | (inputs |
| 350 | `(("gst-plugins-base" ,gst-plugins-base) | 350 | `(("gst-plugins-base" ,gst-plugins-base) |
| @@ -374,7 +374,7 @@ distribution problems in some jurisdictions, e.g. due to patent threats.") | |||
| 374 | (define-public gst-libav | 374 | (define-public gst-libav |
| 375 | (package | 375 | (package |
| 376 | (name "gst-libav") | 376 | (name "gst-libav") |
| 377 | (version "1.8.0") | 377 | (version "1.8.2") |
| 378 | (source (origin | 378 | (source (origin |
| 379 | (method url-fetch) | 379 | (method url-fetch) |
| 380 | (uri (string-append | 380 | (uri (string-append |
| @@ -382,7 +382,7 @@ distribution problems in some jurisdictions, e.g. due to patent threats.") | |||
| 382 | name "-" version ".tar.xz")) | 382 | name "-" version ".tar.xz")) |
| 383 | (sha256 | 383 | (sha256 |
| 384 | (base32 | 384 | (base32 |
| 385 | "0719njp8aarhvn038pijq6dmsnli0zlg146hyfs3rsdffs4f472s")))) | 385 | "0yk8pxg3xi26ndj7pliqdfphy0jmqsq4dmdzy31gbd9rgficgwxm")))) |
| 386 | (build-system gnu-build-system) | 386 | (build-system gnu-build-system) |
| 387 | (arguments | 387 | (arguments |
| 388 | '(#:configure-flags '("--with-system-libav") | 388 | '(#:configure-flags '("--with-system-libav") |
| @@ -411,7 +411,7 @@ compression formats through the use of the libav library.") | |||
| 411 | (define-public python-gst | 411 | (define-public python-gst |
| 412 | (package | 412 | (package |
| 413 | (name "python-gst") | 413 | (name "python-gst") |
| 414 | (version "1.8.0") | 414 | (version "1.8.2") |
| 415 | (source (origin | 415 | (source (origin |
| 416 | (method url-fetch) | 416 | (method url-fetch) |
| 417 | (uri (string-append | 417 | (uri (string-append |
| @@ -419,7 +419,7 @@ compression formats through the use of the libav library.") | |||
| 419 | "gst-python-" version ".tar.xz")) | 419 | "gst-python-" version ".tar.xz")) |
| 420 | (sha256 | 420 | (sha256 |
| 421 | (base32 | 421 | (base32 |
| 422 | "1spn49x7yaj69df6mxh9wwcs0y3abswkfpk84njs71lzqlbzyiff")))) | 422 | "15sdfa6lq5pswvi09vk51cs30yf8wr2rlm9myhb4q0c2jhiial2g")))) |
| 423 | (build-system gnu-build-system) | 423 | (build-system gnu-build-system) |
| 424 | (arguments | 424 | (arguments |
| 425 | ;; XXX: Factorize python-sitedir with python-build-system. | 425 | ;; XXX: Factorize python-sitedir with python-build-system. |
diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm index 4497150db75..038ca00c792 100644 --- a/gnu/packages/imagemagick.scm +++ b/gnu/packages/imagemagick.scm | |||
| @@ -41,14 +41,14 @@ | |||
| 41 | (define-public imagemagick | 41 | (define-public imagemagick |
| 42 | (package | 42 | (package |
| 43 | (name "imagemagick") | 43 | (name "imagemagick") |
| 44 | (version "6.9.4-10") | 44 | (version "6.9.5-0") |
| 45 | (source (origin | 45 | (source (origin |
| 46 | (method url-fetch) | 46 | (method url-fetch) |
| 47 | (uri (string-append "mirror://imagemagick/ImageMagick-" | 47 | (uri (string-append "mirror://imagemagick/ImageMagick-" |
| 48 | version ".tar.xz")) | 48 | version ".tar.xz")) |
| 49 | (sha256 | 49 | (sha256 |
| 50 | (base32 | 50 | (base32 |
| 51 | "0bbac9zdjl2g8x127jx5jisih9r49980w7ar6m8xj3nyh3m83jd2")))) | 51 | "1d1hmmnks071zfkpv971b3q56qlml0wv1xlw8yvq6cnybc2cwc3q")))) |
| 52 | (build-system gnu-build-system) | 52 | (build-system gnu-build-system) |
| 53 | (arguments | 53 | (arguments |
| 54 | `(#:configure-flags '("--with-frozenpaths") | 54 | `(#:configure-flags '("--with-frozenpaths") |
diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm index def16c939c7..03f014aa4e2 100644 --- a/gnu/packages/irc.scm +++ b/gnu/packages/irc.scm | |||
| @@ -72,14 +72,16 @@ | |||
| 72 | "-DUSE_QT5=ON" ; default is qt4 | 72 | "-DUSE_QT5=ON" ; default is qt4 |
| 73 | "-DWITH_KDE=OFF" ; no to integration | 73 | "-DWITH_KDE=OFF" ; no to integration |
| 74 | "-DWITH_OXYGEN=ON" ; on=embed icons | 74 | "-DWITH_OXYGEN=ON" ; on=embed icons |
| 75 | "-DWITH_WEBKIT=ON") ; wants qtwebkit, in qt5 | 75 | "-DWITH_WEBKIT=OFF") ; qtwebkit isn't packaged |
| 76 | #:tests? #f)) ; no test target | 76 | #:tests? #f)) ; no test target |
| 77 | (native-inputs `(("pkg-config" ,pkg-config))) | 77 | (native-inputs `(("pkg-config" ,pkg-config))) |
| 78 | (inputs | 78 | (inputs |
| 79 | `(("extra-cmake-modules" ,extra-cmake-modules) | 79 | `(("extra-cmake-modules" ,extra-cmake-modules) |
| 80 | ("oxygen-icons" ,oxygen-icons) | 80 | ("oxygen-icons" ,oxygen-icons) |
| 81 | ("qca" ,qca) | 81 | ("qca" ,qca) |
| 82 | ("qt", qt) | 82 | ("qtbase", qtbase) |
| 83 | ("qttools" ,qttools) | ||
| 84 | ("qtscript" ,qtscript) | ||
| 83 | ("snorenotify" ,snorenotify) | 85 | ("snorenotify" ,snorenotify) |
| 84 | ("zlib" ,zlib))) | 86 | ("zlib" ,zlib))) |
| 85 | (home-page "http://quassel-irc.org/") | 87 | (home-page "http://quassel-irc.org/") |
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm index 1cda5d89c8c..e3cefb43307 100644 --- a/gnu/packages/julia.scm +++ b/gnu/packages/julia.scm | |||
| @@ -1,5 +1,6 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> | 2 | ;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> |
| 3 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | ||
| 3 | ;;; | 4 | ;;; |
| 4 | ;;; This file is part of GNU Guix. | 5 | ;;; This file is part of GNU Guix. |
| 5 | ;;; | 6 | ;;; |
| @@ -26,6 +27,7 @@ | |||
| 26 | #:use-module (gnu packages) | 27 | #:use-module (gnu packages) |
| 27 | #:use-module (gnu packages algebra) | 28 | #:use-module (gnu packages algebra) |
| 28 | #:use-module (gnu packages base) | 29 | #:use-module (gnu packages base) |
| 30 | #:use-module (gnu packages compression) | ||
| 29 | #:use-module (gnu packages elf) | 31 | #:use-module (gnu packages elf) |
| 30 | #:use-module (gnu packages gcc) | 32 | #:use-module (gnu packages gcc) |
| 31 | #:use-module (gnu packages llvm) | 33 | #:use-module (gnu packages llvm) |
| @@ -262,6 +264,7 @@ | |||
| 262 | ("mpfr" ,mpfr) | 264 | ("mpfr" ,mpfr) |
| 263 | ("wget" ,wget) | 265 | ("wget" ,wget) |
| 264 | ("which" ,which) | 266 | ("which" ,which) |
| 267 | ("zlib" ,zlib) | ||
| 265 | ("gmp" ,gmp) | 268 | ("gmp" ,gmp) |
| 266 | ;; FIXME: The following inputs are downloaded from upstream to allow us | 269 | ;; FIXME: The following inputs are downloaded from upstream to allow us |
| 267 | ;; to use the lightweight Julia release tarball. Ideally, these inputs | 270 | ;; to use the lightweight Julia release tarball. Ideally, these inputs |
diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm index b74a6051ea0..34a5046d20f 100644 --- a/gnu/packages/kde.scm +++ b/gnu/packages/kde.scm | |||
| @@ -44,7 +44,7 @@ | |||
| 44 | `(("pkg-config" ,pkg-config))) | 44 | `(("pkg-config" ,pkg-config))) |
| 45 | (inputs | 45 | (inputs |
| 46 | `(("openssl" ,openssl) | 46 | `(("openssl" ,openssl) |
| 47 | ("qt" ,qt))) | 47 | ("qtbase" ,qtbase))) |
| 48 | (home-page "http://delta.affinix.com/qca/") | 48 | (home-page "http://delta.affinix.com/qca/") |
| 49 | (synopsis "Libraries for the Qt Cryptographic Architecture") | 49 | (synopsis "Libraries for the Qt Cryptographic Architecture") |
| 50 | (description "The Qt Cryptographic Architecture (QCA) provides a | 50 | (description "The Qt Cryptographic Architecture (QCA) provides a |
| @@ -70,7 +70,8 @@ cards.") | |||
| 70 | `(#:tests? #f)) ; both tests fail, require display | 70 | `(#:tests? #f)) ; both tests fail, require display |
| 71 | (inputs | 71 | (inputs |
| 72 | `(("extra-cmake-modules" ,extra-cmake-modules) | 72 | `(("extra-cmake-modules" ,extra-cmake-modules) |
| 73 | ("qt" ,qt))) | 73 | ("qtbase" ,qtbase) |
| 74 | ("qttools" ,qttools))) | ||
| 74 | (home-page "https://techbase.kde.org/Projects/Snorenotify") | 75 | (home-page "https://techbase.kde.org/Projects/Snorenotify") |
| 75 | (synopsis "Qt notification framework") | 76 | (synopsis "Qt notification framework") |
| 76 | (description "Snorenotify is a multi platform Qt notification framework. | 77 | (description "Snorenotify is a multi platform Qt notification framework. |
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index 60a6d7df736..18606f96a11 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm | |||
| @@ -94,14 +94,14 @@ their dependencies automatically upon calculation.") | |||
| 94 | (define-public orcus | 94 | (define-public orcus |
| 95 | (package | 95 | (package |
| 96 | (name "orcus") | 96 | (name "orcus") |
| 97 | (version "0.7.1") | 97 | (version "0.9.2") |
| 98 | (source | 98 | (source |
| 99 | (origin | 99 | (origin |
| 100 | (method url-fetch) | 100 | (method url-fetch) |
| 101 | (uri (string-append "http://kohei.us/files/" name "/src/lib" | 101 | (uri (string-append "http://kohei.us/files/" name "/src/lib" |
| 102 | name "-" version ".tar.xz")) | 102 | name "-" version ".tar.xz")) |
| 103 | (sha256 (base32 | 103 | (sha256 (base32 |
| 104 | "0hva4qalg3dk6n1118ncr5fy8cqnj2f7fwldw7aa04124rj6p104")))) | 104 | "170racjz7s7yxza722hxsqc12788w57qnp6x6j2692pzp3qzjjfx")))) |
| 105 | (build-system gnu-build-system) | 105 | (build-system gnu-build-system) |
| 106 | (native-inputs | 106 | (native-inputs |
| 107 | `(("pkg-config" ,pkg-config))) | 107 | `(("pkg-config" ,pkg-config))) |
| @@ -709,7 +709,7 @@ and to return information on pronunciations, meanings and synonyms.") | |||
| 709 | (define-public libreoffice | 709 | (define-public libreoffice |
| 710 | (package | 710 | (package |
| 711 | (name "libreoffice") | 711 | (name "libreoffice") |
| 712 | (version "5.0.5.2") | 712 | (version "5.1.4.2") |
| 713 | (source | 713 | (source |
| 714 | (origin | 714 | (origin |
| 715 | (method url-fetch) | 715 | (method url-fetch) |
| @@ -718,7 +718,7 @@ and to return information on pronunciations, meanings and synonyms.") | |||
| 718 | "http://download.documentfoundation.org/libreoffice/src/" | 718 | "http://download.documentfoundation.org/libreoffice/src/" |
| 719 | (version-prefix version 3) "/libreoffice-" version ".tar.xz")) | 719 | (version-prefix version 3) "/libreoffice-" version ".tar.xz")) |
| 720 | (sha256 (base32 | 720 | (sha256 (base32 |
| 721 | "120vcxpxzs0za76fyfry281ysv6d1ianb37d1yq8py8chkdjkrqy")))) | 721 | "11c30y9gvsy5h3nh9pnciq57gi99plrmr6qp8hhdk2l5xmwlmrfa")))) |
| 722 | (build-system gnu-build-system) | 722 | (build-system gnu-build-system) |
| 723 | (native-inputs | 723 | (native-inputs |
| 724 | `(;; autoreconf is run by the LibreOffice build system, since after | 724 | `(;; autoreconf is run by the LibreOffice build system, since after |
| @@ -730,7 +730,7 @@ and to return information on pronunciations, meanings and synonyms.") | |||
| 730 | ("cppunit" ,cppunit) | 730 | ("cppunit" ,cppunit) |
| 731 | ("flex" ,flex) | 731 | ("flex" ,flex) |
| 732 | ("pkg-config" ,pkg-config) | 732 | ("pkg-config" ,pkg-config) |
| 733 | ("python" ,python) | 733 | ("python" ,python-wrapper) |
| 734 | ("which" ,which))) | 734 | ("which" ,which))) |
| 735 | (inputs | 735 | (inputs |
| 736 | `(("bluez" ,bluez) | 736 | `(("bluez" ,bluez) |
| @@ -851,6 +851,8 @@ and to return information on pronunciations, meanings and synonyms.") | |||
| 851 | "--disable-coinmp" | 851 | "--disable-coinmp" |
| 852 | "--disable-firebird-sdbc" ; embedded firebird | 852 | "--disable-firebird-sdbc" ; embedded firebird |
| 853 | "--disable-gltf" | 853 | "--disable-gltf" |
| 854 | "--without-doxygen" | ||
| 855 | "--disable-gtk3" | ||
| 854 | "--disable-liblangtag"))) | 856 | "--disable-liblangtag"))) |
| 855 | (home-page "https://www.libreoffice.org/") | 857 | (home-page "https://www.libreoffice.org/") |
| 856 | (synopsis "Office suite") | 858 | (synopsis "Office suite") |
diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm index 1e72442c734..1f659c7594f 100644 --- a/gnu/packages/libusb.scm +++ b/gnu/packages/libusb.scm | |||
| @@ -92,14 +92,14 @@ version of libusb to run with newer libusb.") | |||
| 92 | (define-public python-pyusb | 92 | (define-public python-pyusb |
| 93 | (package | 93 | (package |
| 94 | (name "python-pyusb") | 94 | (name "python-pyusb") |
| 95 | (version "1.0.0rc1") | 95 | (version "1.0.0") |
| 96 | (source | 96 | (source |
| 97 | (origin | 97 | (origin |
| 98 | (method url-fetch) | 98 | (method url-fetch) |
| 99 | (uri (pypi-uri "pyusb" version)) | 99 | (uri (pypi-uri "PyUSB" version)) |
| 100 | (sha256 | 100 | (sha256 |
| 101 | (base32 | 101 | (base32 |
| 102 | "07cjq11qhngzjd746k7688s6y2x7lpj669fxqfsiy985rg0jsn7j")))) | 102 | "0s2k4z06fapd5vp1gnrlf8a9sjpc03p9974lzw5k6ky39akzyd2v")))) |
| 103 | (build-system python-build-system) | 103 | (build-system python-build-system) |
| 104 | (arguments | 104 | (arguments |
| 105 | `(#:tests? #f ;no tests | 105 | `(#:tests? #f ;no tests |
| @@ -135,15 +135,14 @@ version of libusb to run with newer libusb.") | |||
| 135 | (define-public libmtp | 135 | (define-public libmtp |
| 136 | (package | 136 | (package |
| 137 | (name "libmtp") | 137 | (name "libmtp") |
| 138 | (version "1.1.9") | 138 | (version "1.1.11") |
| 139 | (source (origin | 139 | (source (origin |
| 140 | (method url-fetch) | 140 | (method url-fetch) |
| 141 | (uri (string-append "mirror://sourceforge/libmtp/" version | 141 | (uri (string-append "mirror://sourceforge/libmtp/" version |
| 142 | "/libmtp-" version ".tar.gz")) | 142 | "/libmtp-" version ".tar.gz")) |
| 143 | (sha256 | 143 | (sha256 |
| 144 | (base32 | 144 | (base32 |
| 145 | "12dinqic0ljnhrwx3rc61jc7q24ybr0mckc2ya5kh1s1np0d7w93")) | 145 | "1sc768q2cixwanlwrz95mp389iaadl4s95486caavxx4g7znvn8m")))) |
| 146 | (patches (search-patches "libmtp-devices.patch")))) | ||
| 147 | (build-system gnu-build-system) | 146 | (build-system gnu-build-system) |
| 148 | (native-inputs | 147 | (native-inputs |
| 149 | `(("pkg-config" ,pkg-config))) | 148 | `(("pkg-config" ,pkg-config))) |
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index bfb6580cbfc..5ce6007b40d 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm | |||
| @@ -7,12 +7,13 @@ | |||
| 7 | ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> | 7 | ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> |
| 8 | ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> | 8 | ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> |
| 9 | ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org> | 9 | ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org> |
| 10 | ;;; Copyright © 2016 Tobias Geerinckx-Rice <tobias.geerinckx.rice@gmail.com> | 10 | ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr> |
| 11 | ;;; Copyright © 2016 Alex Kost <alezost@gmail.com> | 11 | ;;; Copyright © 2016 Alex Kost <alezost@gmail.com> |
| 12 | ;;; Copyright © 2016 Raymond Nicholson <rain1@openmailbox.org> | 12 | ;;; Copyright © 2016 Raymond Nicholson <rain1@openmailbox.org> |
| 13 | ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org> | 13 | ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org> |
| 14 | ;;; Copyright © 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr> | 14 | ;;; Copyright © 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr> |
| 15 | ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> | 15 | ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> |
| 16 | ;;; Copyright © 2016 David Craven <david@craven.ch> | ||
| 16 | ;;; | 17 | ;;; |
| 17 | ;;; This file is part of GNU Guix. | 18 | ;;; This file is part of GNU Guix. |
| 18 | ;;; | 19 | ;;; |
| @@ -30,49 +31,49 @@ | |||
| 30 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | 31 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. |
| 31 | 32 | ||
| 32 | (define-module (gnu packages linux) | 33 | (define-module (gnu packages linux) |
| 33 | #:use-module ((guix licenses) #:prefix license:) | ||
| 34 | #:use-module (gnu packages) | 34 | #:use-module (gnu packages) |
| 35 | #:use-module (gnu packages admin) | ||
| 36 | #:use-module (gnu packages algebra) | ||
| 37 | #:use-module (gnu packages attr) | ||
| 38 | #:use-module (gnu packages autotools) | ||
| 39 | #:use-module (gnu packages base) | ||
| 40 | #:use-module (gnu packages bison) | ||
| 41 | #:use-module (gnu packages calendar) | ||
| 42 | #:use-module (gnu packages check) | ||
| 35 | #:use-module (gnu packages compression) | 43 | #:use-module (gnu packages compression) |
| 36 | #:use-module (gnu packages gcc) | 44 | #:use-module (gnu packages databases) |
| 45 | #:use-module (gnu packages docbook) | ||
| 46 | #:use-module (gnu packages documentation) | ||
| 47 | #:use-module (gnu packages elf) | ||
| 37 | #:use-module (gnu packages flex) | 48 | #:use-module (gnu packages flex) |
| 38 | #:use-module (gnu packages bison) | 49 | #:use-module (gnu packages freedesktop) |
| 39 | #:use-module (gnu packages admin) | 50 | #:use-module (gnu packages gcc) |
| 51 | #:use-module (gnu packages gettext) | ||
| 52 | #:use-module (gnu packages glib) | ||
| 40 | #:use-module (gnu packages gperf) | 53 | #:use-module (gnu packages gperf) |
| 54 | #:use-module (gnu packages gtk) | ||
| 41 | #:use-module (gnu packages libusb) | 55 | #:use-module (gnu packages libusb) |
| 56 | #:use-module (gnu packages maths) | ||
| 42 | #:use-module (gnu packages ncurses) | 57 | #:use-module (gnu packages ncurses) |
| 43 | #:use-module (gnu packages pciutils) | ||
| 44 | #:use-module (gnu packages databases) | ||
| 45 | #:use-module (gnu packages perl) | 58 | #:use-module (gnu packages perl) |
| 59 | #:use-module (gnu packages pciutils) | ||
| 46 | #:use-module (gnu packages pkg-config) | 60 | #:use-module (gnu packages pkg-config) |
| 61 | #:use-module (gnu packages pulseaudio) | ||
| 47 | #:use-module (gnu packages python) | 62 | #:use-module (gnu packages python) |
| 63 | #:use-module (gnu packages readline) | ||
| 64 | #:use-module (gnu packages rrdtool) | ||
| 48 | #:use-module (gnu packages slang) | 65 | #:use-module (gnu packages slang) |
| 49 | #:use-module (gnu packages algebra) | ||
| 50 | #:use-module (gnu packages gettext) | ||
| 51 | #:use-module (gnu packages glib) | ||
| 52 | #:use-module (gnu packages pulseaudio) | ||
| 53 | #:use-module (gnu packages attr) | ||
| 54 | #:use-module (gnu packages xml) | ||
| 55 | #:use-module (gnu packages autotools) | ||
| 56 | #:use-module (gnu packages texinfo) | 66 | #:use-module (gnu packages texinfo) |
| 57 | #:use-module (gnu packages check) | ||
| 58 | #:use-module (gnu packages maths) | ||
| 59 | #:use-module (gnu packages base) | ||
| 60 | #:use-module (gnu packages rrdtool) | ||
| 61 | #:use-module (gnu packages elf) | ||
| 62 | #:use-module (gnu packages gtk) | ||
| 63 | #:use-module (gnu packages docbook) | ||
| 64 | #:use-module (gnu packages documentation) | ||
| 65 | #:use-module (gnu packages readline) | ||
| 66 | #:use-module (gnu packages calendar) | ||
| 67 | #:use-module (gnu packages tls) | 67 | #:use-module (gnu packages tls) |
| 68 | #:use-module (gnu packages freedesktop) | 68 | #:use-module (gnu packages xml) |
| 69 | #:use-module (guix packages) | ||
| 70 | #:use-module (guix download) | ||
| 71 | #:use-module (guix utils) | ||
| 72 | #:use-module (guix build-system gnu) | ||
| 73 | #:use-module (guix build-system cmake) | 69 | #:use-module (guix build-system cmake) |
| 70 | #:use-module (guix build-system gnu) | ||
| 74 | #:use-module (guix build-system python) | 71 | #:use-module (guix build-system python) |
| 75 | #:use-module (guix build-system trivial) | 72 | #:use-module (guix build-system trivial) |
| 73 | #:use-module (guix download) | ||
| 74 | #:use-module ((guix licenses) #:prefix license:) | ||
| 75 | #:use-module (guix packages) | ||
| 76 | #:use-module (guix utils) | ||
| 76 | #:use-module (srfi srfi-1) | 77 | #:use-module (srfi srfi-1) |
| 77 | #:use-module (srfi srfi-2) | 78 | #:use-module (srfi srfi-2) |
| 78 | #:use-module (srfi srfi-26) | 79 | #:use-module (srfi srfi-26) |
| @@ -225,7 +226,7 @@ for SYSTEM and optionally VARIANT, or #f if there is no such configuration." | |||
| 225 | (search-path %load-path file))) | 226 | (search-path %load-path file))) |
| 226 | 227 | ||
| 227 | (define-public linux-libre | 228 | (define-public linux-libre |
| 228 | (let* ((version "4.6.3") | 229 | (let* ((version "4.6.4") |
| 229 | (build-phase | 230 | (build-phase |
| 230 | '(lambda* (#:key system inputs #:allow-other-keys #:rest args) | 231 | '(lambda* (#:key system inputs #:allow-other-keys #:rest args) |
| 231 | ;; Avoid introducing timestamps | 232 | ;; Avoid introducing timestamps |
| @@ -303,7 +304,7 @@ for SYSTEM and optionally VARIANT, or #f if there is no such configuration." | |||
| 303 | (uri (linux-libre-urls version)) | 304 | (uri (linux-libre-urls version)) |
| 304 | (sha256 | 305 | (sha256 |
| 305 | (base32 | 306 | (base32 |
| 306 | "1ajhdk9jq0pfxlhvzwarbxc23418yqav1v0z0mnfs575y5lq2gmp")))) | 307 | "1294qw4agax0cnbhh0dk33jz358smhflllg77zv0rd8w9g433xiz")))) |
| 307 | (build-system gnu-build-system) | 308 | (build-system gnu-build-system) |
| 308 | (supported-systems '("x86_64-linux" "i686-linux")) | 309 | (supported-systems '("x86_64-linux" "i686-linux")) |
| 309 | (native-inputs `(("perl" ,perl) | 310 | (native-inputs `(("perl" ,perl) |
| @@ -340,13 +341,13 @@ It has been modified to remove all non-free binary blobs.") | |||
| 340 | (define-public linux-libre-4.4 | 341 | (define-public linux-libre-4.4 |
| 341 | (package | 342 | (package |
| 342 | (inherit linux-libre) | 343 | (inherit linux-libre) |
| 343 | (version "4.4.14") | 344 | (version "4.4.15") |
| 344 | (source (origin | 345 | (source (origin |
| 345 | (method url-fetch) | 346 | (method url-fetch) |
| 346 | (uri (linux-libre-urls version)) | 347 | (uri (linux-libre-urls version)) |
| 347 | (sha256 | 348 | (sha256 |
| 348 | (base32 | 349 | (base32 |
| 349 | "1yfmzrjrkj8mn2dfd7p98w13afchrkpz26gwfcm2fhsmla16n1my")))) | 350 | "0n3lz4xnciif9v3y769q1pjs9321gvl6a2wr10r40sl1ixlk3ipz")))) |
| 350 | (native-inputs | 351 | (native-inputs |
| 351 | (let ((conf (kernel-config (or (%current-target-system) | 352 | (let ((conf (kernel-config (or (%current-target-system) |
| 352 | (%current-system)) | 353 | (%current-system)) |
| @@ -1433,17 +1434,15 @@ UnionFS-FUSE additionally supports copy-on-write.") | |||
| 1433 | (define-public sshfs-fuse | 1434 | (define-public sshfs-fuse |
| 1434 | (package | 1435 | (package |
| 1435 | (name "sshfs-fuse") | 1436 | (name "sshfs-fuse") |
| 1436 | (version "2.5") | 1437 | (version "2.8") |
| 1437 | (source (origin | 1438 | (source (origin |
| 1438 | (method url-fetch) | 1439 | (method url-fetch) |
| 1439 | (uri (let ((version-with-underscores | 1440 | (uri (string-append "https://github.com/libfuse/sshfs/releases/" |
| 1440 | (string-join (string-split version #\.) "_"))) | 1441 | "download/sshfs_" version |
| 1441 | (string-append "https://github.com/libfuse/sshfs/releases/" | 1442 | "/sshfs-" version ".tar.gz")) |
| 1442 | "download/sshfs_" version-with-underscores | ||
| 1443 | "/sshfs-fuse-" version ".tar.gz"))) | ||
| 1444 | (sha256 | 1443 | (sha256 |
| 1445 | (base32 | 1444 | (base32 |
| 1446 | "0gp6qr33l2p0964j0kds0dfmvyyf5lpgsn11daf0n5fhwm9185z9")))) | 1445 | "08mdd4rs7yys7hmyig6i08qlid76p17xlvrh64k7wsrfs1s92s3z")))) |
| 1447 | (build-system gnu-build-system) | 1446 | (build-system gnu-build-system) |
| 1448 | (inputs | 1447 | (inputs |
| 1449 | `(("fuse" ,fuse) | 1448 | `(("fuse" ,fuse) |
| @@ -1876,9 +1875,14 @@ country-specific regulations for the wireless spectrum.") | |||
| 1876 | (version "3.3.5") | 1875 | (version "3.3.5") |
| 1877 | (source (origin | 1876 | (source (origin |
| 1878 | (method url-fetch) | 1877 | (method url-fetch) |
| 1879 | (uri (string-append | 1878 | (uri (list (string-append |
| 1880 | "ftp://ftp.netroedge.com/pub/lm-sensors/lm_sensors-" | 1879 | "ftp://ftp.netroedge.com/pub/lm-sensors/" |
| 1881 | version ".tar.bz2")) | 1880 | "lm_sensors-" version ".tar.bz2") |
| 1881 | (string-append | ||
| 1882 | "http://pkgs.fedoraproject.org/repo/pkgs/" | ||
| 1883 | "lm_sensors/lm_sensors-3.3.5.tar.bz2/" | ||
| 1884 | "da506dedceb41822e64865f6ba34828a/" | ||
| 1885 | "lm_sensors-3.3.5.tar.bz2"))) | ||
| 1882 | (sha256 | 1886 | (sha256 |
| 1883 | (base32 | 1887 | (base32 |
| 1884 | "1ksgrynxgrq590nb2fwxrl1gwzisjkqlyg3ljfd1al0ibrk6mbjx")) | 1888 | "1ksgrynxgrq590nb2fwxrl1gwzisjkqlyg3ljfd1al0ibrk6mbjx")) |
| @@ -2754,3 +2758,63 @@ from userspace.") | |||
| 2754 | commonly found on Microsoft Windows. It is implemented as a FUSE file system. | 2758 | commonly found on Microsoft Windows. It is implemented as a FUSE file system. |
| 2755 | The package provides additional NTFS tools.") | 2759 | The package provides additional NTFS tools.") |
| 2756 | (license license:gpl2+))) | 2760 | (license license:gpl2+))) |
| 2761 | |||
| 2762 | (define-public rng-tools | ||
| 2763 | (package | ||
| 2764 | (name "rng-tools") | ||
| 2765 | (version "5") | ||
| 2766 | (source (origin | ||
| 2767 | (method url-fetch) | ||
| 2768 | (uri (string-append | ||
| 2769 | "http://downloads.sourceforge.net/sourceforge/gkernel/" | ||
| 2770 | "rng-tools-" version ".tar.gz")) | ||
| 2771 | (sha256 | ||
| 2772 | (base32 | ||
| 2773 | "13h7lc8wl9khhvkr0i3bl5j9bapf8anhqis1lcnwxg1vc2v058b0")))) | ||
| 2774 | (build-system gnu-build-system) | ||
| 2775 | (synopsis "Random number generator daemon") | ||
| 2776 | (description | ||
| 2777 | "Monitor a hardware random number generator, and supply entropy | ||
| 2778 | from that to the system kernel's @file{/dev/random} machinery.") | ||
| 2779 | (home-page "http://sourceforge.net/projects/gkernel") | ||
| 2780 | ;; The source package is offered under the GPL2+, but the files | ||
| 2781 | ;; 'rngd_rdrand.c' and 'rdrand_asm.S' are only available under the GPL2. | ||
| 2782 | (license (list license:gpl2 license:gpl2+)))) | ||
| 2783 | |||
| 2784 | (define-public cpupower | ||
| 2785 | (package | ||
| 2786 | (name "cpupower") | ||
| 2787 | (version (package-version linux-libre)) | ||
| 2788 | (source (package-source linux-libre)) | ||
| 2789 | (build-system gnu-build-system) | ||
| 2790 | (arguments | ||
| 2791 | '(#:phases (modify-phases %standard-phases | ||
| 2792 | (add-after 'unpack 'enter-subdirectory | ||
| 2793 | (lambda _ | ||
| 2794 | (chdir "tools/power/cpupower"))) | ||
| 2795 | (delete 'configure) | ||
| 2796 | (add-before 'build 'fix-makefiles | ||
| 2797 | (lambda _ | ||
| 2798 | (substitute* "Makefile" | ||
| 2799 | (("/usr/") "/") | ||
| 2800 | (("/bin/(install|pwd)" _ command) command)) | ||
| 2801 | (substitute* "bench/Makefile" | ||
| 2802 | (("\\$\\(CC\\) -o") "$(CC) $(LDFLAGS) -o"))))) | ||
| 2803 | #:make-flags (let ((out (assoc-ref %outputs "out"))) | ||
| 2804 | (list (string-append "DESTDIR=" out) | ||
| 2805 | (string-append "LDFLAGS=-Wl,-rpath=" out "/lib") | ||
| 2806 | "docdir=/share/doc/cpupower" | ||
| 2807 | "confdir=$(docdir)/examples" | ||
| 2808 | ;; The Makefile recommends the following changes | ||
| 2809 | "DEBUG=false" | ||
| 2810 | "PACKAGE_BUGREPORT=bug-guix@gnu.org")) | ||
| 2811 | #:tests? #f)) ;no tests | ||
| 2812 | (native-inputs `(("gettext" ,gnu-gettext))) | ||
| 2813 | (inputs `(("pciutils" ,pciutils))) | ||
| 2814 | (home-page (package-home-page linux-libre)) | ||
| 2815 | (synopsis "CPU frequency and voltage scaling tools for Linux") | ||
| 2816 | (description | ||
| 2817 | "cpupower is a set of user-space tools that use the cpufreq feature of the | ||
| 2818 | Linux kernel to retrieve and control processor features related to power saving, | ||
| 2819 | such as frequency and voltage scaling.") | ||
| 2820 | (license license:gpl2))) | ||
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm index e349907f14a..22f542ccc57 100644 --- a/gnu/packages/lisp.scm +++ b/gnu/packages/lisp.scm | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> | 3 | ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> |
| 4 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> | 4 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> |
| 5 | ;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch> | 5 | ;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch> |
| 6 | ;;; Copyright © 2016 Nils Gillmann <niasterisk@grrlz.net> | 6 | ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is> |
| 7 | ;;; | 7 | ;;; |
| 8 | ;;; This file is part of GNU Guix. | 8 | ;;; This file is part of GNU Guix. |
| 9 | ;;; | 9 | ;;; |
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index 3bf019fa835..c380eba122a 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm | |||
| @@ -1,7 +1,8 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> | 2 | ;;; Copyright © 2014, 2016 Eric Bavier <bavier@member.fsf.org> |
| 3 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> | 3 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> |
| 4 | ;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org> | 4 | ;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org> |
| 5 | ;;; Copyright © 2016 Dennis Mungai <dmngaie@gmail.com> | ||
| 5 | ;;; | 6 | ;;; |
| 6 | ;;; This file is part of GNU Guix. | 7 | ;;; This file is part of GNU Guix. |
| 7 | ;;; | 8 | ;;; |
| @@ -20,7 +21,7 @@ | |||
| 20 | 21 | ||
| 21 | (define-module (gnu packages llvm) | 22 | (define-module (gnu packages llvm) |
| 22 | #:use-module (guix packages) | 23 | #:use-module (guix packages) |
| 23 | #:use-module (guix licenses) | 24 | #:use-module ((guix licenses) #:prefix license:) |
| 24 | #:use-module (guix download) | 25 | #:use-module (guix download) |
| 25 | #:use-module (guix utils) | 26 | #:use-module (guix utils) |
| 26 | #:use-module (guix build-system gnu) | 27 | #:use-module (guix build-system gnu) |
| @@ -28,6 +29,8 @@ | |||
| 28 | #:use-module (gnu packages) | 29 | #:use-module (gnu packages) |
| 29 | #:use-module (gnu packages gcc) | 30 | #:use-module (gnu packages gcc) |
| 30 | #:use-module (gnu packages bootstrap) ;glibc-dynamic-linker | 31 | #:use-module (gnu packages bootstrap) ;glibc-dynamic-linker |
| 32 | #:use-module (gnu packages compression) | ||
| 33 | #:use-module (gnu packages libffi) | ||
| 31 | #:use-module (gnu packages perl) | 34 | #:use-module (gnu packages perl) |
| 32 | #:use-module (gnu packages python) | 35 | #:use-module (gnu packages python) |
| 33 | #:use-module (gnu packages xml)) | 36 | #:use-module (gnu packages xml)) |
| @@ -35,7 +38,7 @@ | |||
| 35 | (define-public llvm | 38 | (define-public llvm |
| 36 | (package | 39 | (package |
| 37 | (name "llvm") | 40 | (name "llvm") |
| 38 | (version "3.6.2") | 41 | (version "3.8.1") |
| 39 | (source | 42 | (source |
| 40 | (origin | 43 | (origin |
| 41 | (method url-fetch) | 44 | (method url-fetch) |
| @@ -43,14 +46,21 @@ | |||
| 43 | version "/llvm-" version ".src.tar.xz")) | 46 | version "/llvm-" version ".src.tar.xz")) |
| 44 | (sha256 | 47 | (sha256 |
| 45 | (base32 | 48 | (base32 |
| 46 | "153vcvj8gvgwakzr4j0kndc0b7wn91c2g1vy2vg24s6spxcc23gn")))) | 49 | "1ybmnid4pw2hxn12ax5qa5kl1ldfns0njg8533y3mzslvd5cx0kf")))) |
| 47 | (build-system cmake-build-system) | 50 | (build-system cmake-build-system) |
| 48 | (native-inputs | 51 | (native-inputs |
| 49 | `(("python" ,python-wrapper) | 52 | `(("python" ,python-2) ;bytes->str conversion in clang>=3.7 needs python-2 |
| 50 | ("perl" ,perl))) | 53 | ("perl" ,perl))) |
| 54 | (inputs | ||
| 55 | `(("libffi" ,libffi) | ||
| 56 | ("zlib" ,zlib))) | ||
| 51 | (arguments | 57 | (arguments |
| 52 | `(#:configure-flags '("-DCMAKE_SKIP_BUILD_RPATH=FALSE" | 58 | `(#:configure-flags '("-DCMAKE_SKIP_BUILD_RPATH=FALSE" |
| 53 | "-DCMAKE_BUILD_WITH_INSTALL_RPATH=FALSE"))) | 59 | "-DCMAKE_BUILD_WITH_INSTALL_RPATH=FALSE" |
| 60 | "-DLLVM_ENABLE_FFI:BOOL=TRUE") | ||
| 61 | |||
| 62 | ;; Don't use '-g' during the build, to save space. | ||
| 63 | #:build-type "Release")) | ||
| 54 | (home-page "http://www.llvm.org") | 64 | (home-page "http://www.llvm.org") |
| 55 | (synopsis "Optimizing compiler infrastructure") | 65 | (synopsis "Optimizing compiler infrastructure") |
| 56 | (description | 66 | (description |
| @@ -60,7 +70,7 @@ languages. It currently supports compilation of C and C++ programs, using | |||
| 60 | front-ends derived from GCC 4.0.1. A new front-end for the C family of | 70 | front-ends derived from GCC 4.0.1. A new front-end for the C family of |
| 61 | languages is in development. The compiler infrastructure includes mirror sets | 71 | languages is in development. The compiler infrastructure includes mirror sets |
| 62 | of programming tools as well as libraries with equivalent functionality.") | 72 | of programming tools as well as libraries with equivalent functionality.") |
| 63 | (license ncsa))) | 73 | (license license:ncsa))) |
| 64 | 74 | ||
| 65 | (define (clang-runtime-from-llvm llvm hash) | 75 | (define (clang-runtime-from-llvm llvm hash) |
| 66 | (package | 76 | (package |
| @@ -78,8 +88,8 @@ of programming tools as well as libraries with equivalent functionality.") | |||
| 78 | `(("llvm" ,llvm))) | 88 | `(("llvm" ,llvm))) |
| 79 | (arguments | 89 | (arguments |
| 80 | `(;; Don't use '-g' during the build to save space. | 90 | `(;; Don't use '-g' during the build to save space. |
| 81 | #:build-type "Release")) | 91 | #:build-type "Release" |
| 82 | 92 | #:tests? #f)) ; Tests require gtest | |
| 83 | (home-page "http://compiler-rt.llvm.org") | 93 | (home-page "http://compiler-rt.llvm.org") |
| 84 | (synopsis "Runtime library for Clang/LLVM") | 94 | (synopsis "Runtime library for Clang/LLVM") |
| 85 | (description | 95 | (description |
| @@ -87,12 +97,13 @@ of programming tools as well as libraries with equivalent functionality.") | |||
| 87 | functions for C and C++ programs. It also provides header files that allow C | 97 | functions for C and C++ programs. It also provides header files that allow C |
| 88 | and C++ source code to interface with the \"sanitization\" passes of the clang | 98 | and C++ source code to interface with the \"sanitization\" passes of the clang |
| 89 | compiler. In LLVM this library is called \"compiler-rt\".") | 99 | compiler. In LLVM this library is called \"compiler-rt\".") |
| 90 | (license ncsa) | 100 | (license license:ncsa) |
| 91 | 101 | ||
| 92 | ;; <http://compiler-rt.llvm.org/> doesn't list MIPS as supported. | 102 | ;; <http://compiler-rt.llvm.org/> doesn't list MIPS as supported. |
| 93 | (supported-systems (delete "mips64el-linux" %supported-systems)))) | 103 | (supported-systems (delete "mips64el-linux" %supported-systems)))) |
| 94 | 104 | ||
| 95 | (define (clang-from-llvm llvm clang-runtime hash) | 105 | (define* (clang-from-llvm llvm clang-runtime hash |
| 106 | #:key (patches '("clang-libc-search-path.patch"))) | ||
| 96 | (package | 107 | (package |
| 97 | (name "clang") | 108 | (name "clang") |
| 98 | (version (package-version llvm)) | 109 | (version (package-version llvm)) |
| @@ -102,7 +113,7 @@ compiler. In LLVM this library is called \"compiler-rt\".") | |||
| 102 | (uri (string-append "http://llvm.org/releases/" | 113 | (uri (string-append "http://llvm.org/releases/" |
| 103 | version "/cfe-" version ".src.tar.xz")) | 114 | version "/cfe-" version ".src.tar.xz")) |
| 104 | (sha256 (base32 hash)) | 115 | (sha256 (base32 hash)) |
| 105 | (patches (search-patches "clang-libc-search-path.patch")))) | 116 | (patches (map search-patch patches)))) |
| 106 | ;; Using cmake allows us to treat llvm as an external library. There | 117 | ;; Using cmake allows us to treat llvm as an external library. There |
| 107 | ;; doesn't seem to be any way to do this with clang's autotools-based | 118 | ;; doesn't seem to be any way to do this with clang's autotools-based |
| 108 | ;; build system. | 119 | ;; build system. |
| @@ -170,20 +181,63 @@ compiler. In LLVM this library is called \"compiler-rt\".") | |||
| 170 | Objective-C++ programming languages. It uses LLVM as its back end. The Clang | 181 | Objective-C++ programming languages. It uses LLVM as its back end. The Clang |
| 171 | project includes the Clang front end, the Clang static analyzer, and several | 182 | project includes the Clang front end, the Clang static analyzer, and several |
| 172 | code analysis tools.") | 183 | code analysis tools.") |
| 173 | (license ncsa))) | 184 | (license license:ncsa))) |
| 174 | 185 | ||
| 175 | (define-public clang-runtime | 186 | (define-public clang-runtime |
| 176 | (clang-runtime-from-llvm | 187 | (clang-runtime-from-llvm |
| 177 | llvm | 188 | llvm |
| 178 | "11qx8d3pbfqjaj2x207pvlvzihbs1z2xbw4crpz7aid6h1yz6bqg")) | 189 | "0p0y85c7izndbpg2l816z7z7558axq11d5pwkm4h11sdw7d13w0d")) |
| 179 | 190 | ||
| 180 | (define-public clang | 191 | (define-public clang |
| 181 | (clang-from-llvm llvm clang-runtime | 192 | (clang-from-llvm llvm clang-runtime |
| 193 | "1prc72xmkgx8wrzmrr337776676nhsp1qd3mw2bvb22bzdnq7lsc" | ||
| 194 | #:patches '("clang-3.8-libc-search-path.patch"))) | ||
| 195 | |||
| 196 | (define-public llvm-3.7 | ||
| 197 | (package (inherit llvm) | ||
| 198 | (version "3.7.1") | ||
| 199 | (source | ||
| 200 | (origin | ||
| 201 | (method url-fetch) | ||
| 202 | (uri (string-append "http://llvm.org/releases/" | ||
| 203 | version "/llvm-" version ".src.tar.xz")) | ||
| 204 | (sha256 | ||
| 205 | (base32 | ||
| 206 | "1masakdp9g2dan1yrazg7md5am2vacbkb3nahb3dchpc1knr8xxy")))))) | ||
| 207 | |||
| 208 | (define-public clang-runtime-3.7 | ||
| 209 | (clang-runtime-from-llvm | ||
| 210 | llvm-3.7 | ||
| 211 | "10c1mz2q4bdq9bqfgr3dirc6hz1h3sq8573srd5q5lr7m7j6jiwx")) | ||
| 212 | |||
| 213 | (define-public clang-3.7 | ||
| 214 | (clang-from-llvm llvm-3.7 clang-runtime-3.7 | ||
| 215 | "0x065d0w9b51xvdjxwfzjxng0gzpbx45fgiaxpap45ragi61dqjn")) | ||
| 216 | |||
| 217 | (define-public llvm-3.6 | ||
| 218 | (package (inherit llvm) | ||
| 219 | (version "3.6.2") | ||
| 220 | (source | ||
| 221 | (origin | ||
| 222 | (method url-fetch) | ||
| 223 | (uri (string-append "http://llvm.org/releases/" | ||
| 224 | version "/llvm-" version ".src.tar.xz")) | ||
| 225 | (sha256 | ||
| 226 | (base32 | ||
| 227 | "153vcvj8gvgwakzr4j0kndc0b7wn91c2g1vy2vg24s6spxcc23gn")))))) | ||
| 228 | |||
| 229 | (define-public clang-runtime-3.6 | ||
| 230 | (clang-runtime-from-llvm | ||
| 231 | llvm-3.6 | ||
| 232 | "11qx8d3pbfqjaj2x207pvlvzihbs1z2xbw4crpz7aid6h1yz6bqg")) | ||
| 233 | |||
| 234 | (define-public clang-3.6 | ||
| 235 | (clang-from-llvm llvm-3.6 clang-runtime-3.6 | ||
| 182 | "1wwr8s6lzr324hv4s1k6na4j5zv6n9kdhi14s4kb9b13d93814df")) | 236 | "1wwr8s6lzr324hv4s1k6na4j5zv6n9kdhi14s4kb9b13d93814df")) |
| 183 | 237 | ||
| 184 | (define-public llvm-3.5 | 238 | (define-public llvm-3.5 |
| 185 | (package (inherit llvm) | 239 | (package (inherit llvm) |
| 186 | (version "3.5.0") | 240 | (version "3.5.2") |
| 187 | (source | 241 | (source |
| 188 | (origin | 242 | (origin |
| 189 | (method url-fetch) | 243 | (method url-fetch) |
| @@ -191,13 +245,13 @@ code analysis tools.") | |||
| 191 | version "/llvm-" version ".src.tar.xz")) | 245 | version "/llvm-" version ".src.tar.xz")) |
| 192 | (sha256 | 246 | (sha256 |
| 193 | (base32 | 247 | (base32 |
| 194 | "00swb43mzlvda8306arlg2jw7g6k3acwfccgf1k4c2pgd3rrkq98")))))) | 248 | "0xf5q17kkxsrm2gsi93h4pwlv663kji73r2g4asb97klsmb626a4")))))) |
| 195 | 249 | ||
| 196 | (define-public clang-runtime-3.5 | 250 | (define-public clang-runtime-3.5 |
| 197 | (clang-runtime-from-llvm | 251 | (clang-runtime-from-llvm |
| 198 | llvm-3.5 | 252 | llvm-3.5 |
| 199 | "0dl1kbrhz96djsxqr61iw5h788s7ncfpfb7aayixky1bhdaydcx4")) | 253 | "1hsdnzzdr5kglz6fnv3lcsjs222zjsy14y8ax9dy6zqysanplbal")) |
| 200 | 254 | ||
| 201 | (define-public clang-3.5 | 255 | (define-public clang-3.5 |
| 202 | (clang-from-llvm llvm-3.5 clang-runtime-3.5 | 256 | (clang-from-llvm llvm-3.5 clang-runtime-3.5 |
| 203 | "12yv3jwdjcbkrx7zjm8wh4jrvb59v8fdw4mnmz3zc1jb00p9k07w")) | 257 | "0846h8vn3zlc00jkmvrmy88gc6ql6014c02l4jv78fpvfigmgssg")) |
diff --git a/gnu/packages/logging.scm b/gnu/packages/logging.scm index 68af09e08c3..c40d6ebbaf7 100644 --- a/gnu/packages/logging.scm +++ b/gnu/packages/logging.scm | |||
| @@ -1,5 +1,6 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> | 2 | ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> |
| 3 | ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> | ||
| 3 | ;;; | 4 | ;;; |
| 4 | ;;; This file is part of GNU Guix. | 5 | ;;; This file is part of GNU Guix. |
| 5 | ;;; | 6 | ;;; |
| @@ -21,8 +22,10 @@ | |||
| 21 | #:use-module (guix packages) | 22 | #:use-module (guix packages) |
| 22 | #:use-module (guix utils) | 23 | #:use-module (guix utils) |
| 23 | #:use-module (guix download) | 24 | #:use-module (guix download) |
| 25 | #:use-module (guix git-download) | ||
| 24 | #:use-module (guix build-system gnu) | 26 | #:use-module (guix build-system gnu) |
| 25 | #:use-module (gnu packages)) | 27 | #:use-module (gnu packages perl) |
| 28 | #:use-module (gnu packages autotools)) | ||
| 26 | 29 | ||
| 27 | (define-public log4cpp | 30 | (define-public log4cpp |
| 28 | (package | 31 | (package |
| @@ -45,3 +48,43 @@ IDSA and other destinations. It is modeled after the Log4j Java library, | |||
| 45 | staying as close to their API as is reasonable.") | 48 | staying as close to their API as is reasonable.") |
| 46 | (home-page "http://log4cpp.sourceforge.net/") | 49 | (home-page "http://log4cpp.sourceforge.net/") |
| 47 | (license license:lgpl2.1+))) | 50 | (license license:lgpl2.1+))) |
| 51 | |||
| 52 | (define-public glog | ||
| 53 | (package | ||
| 54 | (name "glog") | ||
| 55 | (version "0.3.4") | ||
| 56 | (home-page "https://github.com/google/glog") | ||
| 57 | (source (origin | ||
| 58 | (method git-fetch) | ||
| 59 | (uri (git-reference | ||
| 60 | (url home-page) | ||
| 61 | (commit (string-append "v" version)))) | ||
| 62 | (sha256 | ||
| 63 | (base32 | ||
| 64 | "0ym5g15m7c8kjfr2c3zq6bz08ghin2d1r1nb6v2vnkfh1vn945x1")) | ||
| 65 | (file-name (string-append name "-" version "-checkout")))) | ||
| 66 | (build-system gnu-build-system) | ||
| 67 | (native-inputs | ||
| 68 | `(("perl" ,perl) ;for tests | ||
| 69 | ("autoconf" ,(autoconf-wrapper)) | ||
| 70 | ("automake" ,automake) | ||
| 71 | ("libtool" ,libtool))) | ||
| 72 | (arguments | ||
| 73 | '(#:phases (modify-phases %standard-phases | ||
| 74 | (add-before 'configure 'add-automake-files | ||
| 75 | (lambda _ | ||
| 76 | ;; The 'test-driver' file is a dangling symlink to | ||
| 77 | ;; /usr/share/automake; replace it. We can't just run | ||
| 78 | ;; 'automake -ac' because it complains about version | ||
| 79 | ;; mismatch, so run the whole thing. | ||
| 80 | (delete-file "test-driver") | ||
| 81 | (delete-file "configure") ;it's read-only | ||
| 82 | (zero? (system* "autoreconf" "-vfi"))))))) | ||
| 83 | (synopsis "C++ logging library") | ||
| 84 | (description | ||
| 85 | "Google glog is a library that implements application-level logging. | ||
| 86 | This library provides logging APIs based on C++-style streams and various | ||
| 87 | helper macros. You can log a message by simply streaming things to log at a | ||
| 88 | particular severity level. It allows logging to be controlled from the | ||
| 89 | command line.") | ||
| 90 | (license license:bsd-3))) | ||
diff --git a/gnu/packages/lsh.scm b/gnu/packages/lsh.scm deleted file mode 100644 index 2ea1591354b..00000000000 --- a/gnu/packages/lsh.scm +++ /dev/null | |||
| @@ -1,159 +0,0 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | ||
| 2 | ;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> | ||
| 3 | ;;; | ||
| 4 | ;;; This file is part of GNU Guix. | ||
| 5 | ;;; | ||
| 6 | ;;; GNU Guix is free software; you can redistribute it and/or modify it | ||
| 7 | ;;; under the terms of the GNU General Public License as published by | ||
| 8 | ;;; the Free Software Foundation; either version 3 of the License, or (at | ||
| 9 | ;;; your option) any later version. | ||
| 10 | ;;; | ||
| 11 | ;;; GNU Guix is distributed in the hope that it will be useful, but | ||
| 12 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 13 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 14 | ;;; GNU General Public License for more details. | ||
| 15 | ;;; | ||
| 16 | ;;; You should have received a copy of the GNU General Public License | ||
| 17 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | ||
| 18 | |||
| 19 | (define-module (gnu packages lsh) | ||
| 20 | #:use-module ((guix licenses) #:prefix license:) | ||
| 21 | #:use-module (guix packages) | ||
| 22 | #:use-module (guix download) | ||
| 23 | #:use-module (guix build-system gnu) | ||
| 24 | #:use-module (gnu packages) | ||
| 25 | #:use-module (gnu packages m4) | ||
| 26 | #:use-module (gnu packages linux) | ||
| 27 | #:use-module (gnu packages nettle) | ||
| 28 | #:use-module (gnu packages compression) | ||
| 29 | #:use-module (gnu packages multiprecision) | ||
| 30 | #:use-module (gnu packages readline) | ||
| 31 | #:use-module (gnu packages gperf) | ||
| 32 | #:use-module (gnu packages guile) | ||
| 33 | #:use-module (gnu packages xorg)) | ||
| 34 | |||
| 35 | (define-public liboop | ||
| 36 | (package | ||
| 37 | (name "liboop") | ||
| 38 | (version "1.0") | ||
| 39 | (source | ||
| 40 | (origin | ||
| 41 | (method url-fetch) | ||
| 42 | (uri (string-append "http://download.ofb.net/liboop/liboop-" | ||
| 43 | version ".tar.gz")) | ||
| 44 | (sha256 | ||
| 45 | (base32 | ||
| 46 | "0z6rlalhvfca64jpvksppc9bdhs7jwhiw4y35g5ibvh91xp3rn1l")) | ||
| 47 | (patches (search-patches "liboop-mips64-deplibs-fix.patch")))) | ||
| 48 | (build-system gnu-build-system) | ||
| 49 | (home-page "http://www.lysator.liu.se/liboop/") | ||
| 50 | (synopsis "Event loop library") | ||
| 51 | (description "Liboop is a low-level event loop management library for | ||
| 52 | POSIX-based operating systems. It supports the development of modular, | ||
| 53 | multiplexed applications which may respond to events from several sources. It | ||
| 54 | replaces the \"select() loop\" and allows the registration of event handlers | ||
| 55 | for file and network I/O, timers and signals. Since processes use these | ||
| 56 | mechanisms for almost all external communication, liboop can be used as the | ||
| 57 | basis for almost any application.") | ||
| 58 | (license license:lgpl2.1+))) | ||
| 59 | |||
| 60 | (define-public lsh | ||
| 61 | (package | ||
| 62 | (name "lsh") | ||
| 63 | (version "2.1") | ||
| 64 | (source (origin | ||
| 65 | (method url-fetch) | ||
| 66 | (uri (string-append "mirror://gnu/lsh/lsh-" | ||
| 67 | version ".tar.gz")) | ||
| 68 | (sha256 | ||
| 69 | (base32 | ||
| 70 | "1qqjy9zfzgny0rkb27c8c7dfsylvb6n0ld8h3an2r83pmaqr9gwb")) | ||
| 71 | (modules '((guix build utils))) | ||
| 72 | (snippet | ||
| 73 | '(begin | ||
| 74 | (substitute* "src/testsuite/functions.sh" | ||
| 75 | (("localhost") | ||
| 76 | ;; Avoid host name lookups since they don't work in | ||
| 77 | ;; chroot builds. | ||
| 78 | "127.0.0.1") | ||
| 79 | (("set -e") | ||
| 80 | ;; Make tests more verbose. | ||
| 81 | "set -e\nset -x")) | ||
| 82 | |||
| 83 | (substitute* (find-files "src/testsuite" "-test$") | ||
| 84 | (("localhost") "127.0.0.1")) | ||
| 85 | |||
| 86 | (substitute* "src/testsuite/login-auth-test" | ||
| 87 | (("/bin/cat") "cat")))))) | ||
| 88 | (build-system gnu-build-system) | ||
| 89 | (native-inputs | ||
| 90 | `(("m4" ,m4) | ||
| 91 | ("guile" ,guile-2.0) | ||
| 92 | ("gperf" ,gperf) | ||
| 93 | ("psmisc" ,psmisc))) ; for `killall' | ||
| 94 | (inputs | ||
| 95 | `(("nettle" ,nettle-2) | ||
| 96 | ("linux-pam" ,linux-pam) | ||
| 97 | |||
| 98 | ;; 'rl.c' uses the 'CPPFunction' type, which is no longer in | ||
| 99 | ;; Readline 6.3. | ||
| 100 | ("readline" ,readline-6.2) | ||
| 101 | |||
| 102 | ("liboop" ,liboop) | ||
| 103 | ("zlib" ,zlib) | ||
| 104 | ("gmp" ,gmp) | ||
| 105 | |||
| 106 | ;; The server (lshd) invokes xauth when X11 forwarding is requested. | ||
| 107 | ;; This adds 24 MiB (or 27%) to the closure of lsh. | ||
| 108 | ("xauth" ,xauth))) | ||
| 109 | (arguments | ||
| 110 | '(;; Skip the `configure' test that checks whether /dev/ptmx & | ||
| 111 | ;; co. work as expected, because it relies on impurities (for | ||
| 112 | ;; instance, /dev/pts may be unavailable in chroots.) | ||
| 113 | #:configure-flags '("lsh_cv_sys_unix98_ptys=yes") | ||
| 114 | |||
| 115 | ;; FIXME: Tests won't run in a chroot, presumably because | ||
| 116 | ;; /etc/profile is missing, and thus clients get an empty $PATH | ||
| 117 | ;; and nothing works. | ||
| 118 | #:tests? #f | ||
| 119 | |||
| 120 | #:phases | ||
| 121 | (modify-phases %standard-phases | ||
| 122 | (add-before 'configure 'pre-configure | ||
| 123 | (lambda* (#:key inputs #:allow-other-keys) | ||
| 124 | (let* ((nettle (assoc-ref inputs "nettle")) | ||
| 125 | (sexp-conv (string-append nettle "/bin/sexp-conv"))) | ||
| 126 | ;; Make sure 'lsh' and 'lshd' pick 'sexp-conv' in the right place | ||
| 127 | ;; by default. | ||
| 128 | (substitute* "src/environ.h.in" | ||
| 129 | (("^#define PATH_SEXP_CONV.*") | ||
| 130 | (string-append "#define PATH_SEXP_CONV \"" | ||
| 131 | sexp-conv "\"\n"))) | ||
| 132 | |||
| 133 | ;; Same for the 'lsh-authorize' script. | ||
| 134 | (substitute* "src/lsh-authorize" | ||
| 135 | (("=sexp-conv") | ||
| 136 | (string-append "=" sexp-conv))) | ||
| 137 | |||
| 138 | ;; Tell lshd where 'xauth' lives. Another option would be to | ||
| 139 | ;; hardcode "/run/current-system/profile/bin/xauth", thereby | ||
| 140 | ;; reducing the closure size, but that wouldn't work on foreign | ||
| 141 | ;; distros. | ||
| 142 | (with-fluids ((%default-port-encoding "ISO-8859-1")) | ||
| 143 | (substitute* "src/server_x11.c" | ||
| 144 | (("define XAUTH_PROGRAM.*") | ||
| 145 | (string-append "define XAUTH_PROGRAM \"" | ||
| 146 | (assoc-ref inputs "xauth") | ||
| 147 | "/bin/xauth\"\n"))))) | ||
| 148 | |||
| 149 | ;; Tests rely on $USER being set. | ||
| 150 | (setenv "USER" "guix")))))) | ||
| 151 | (home-page "http://www.lysator.liu.se/~nisse/lsh/") | ||
| 152 | (synopsis "GNU implementation of the Secure Shell (ssh) protocols") | ||
| 153 | (description | ||
| 154 | "GNU lsh is a free implementation of the SSH version 2 protocol. It is | ||
| 155 | used to create a secure line of communication between two computers, | ||
| 156 | providing shell access to the server system from the client. It provides | ||
| 157 | both the server daemon and the client application, as well as tools for | ||
| 158 | manipulating key files.") | ||
| 159 | (license license:gpl2+))) | ||
diff --git a/gnu/packages/lxde.scm b/gnu/packages/lxde.scm index 7ce31ad36a8..c00400ca703 100644 --- a/gnu/packages/lxde.scm +++ b/gnu/packages/lxde.scm | |||
| @@ -1,5 +1,6 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org> | 2 | ;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org> |
| 3 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | ||
| 3 | ;;; | 4 | ;;; |
| 4 | ;;; This file is part of GNU Guix. | 5 | ;;; This file is part of GNU Guix. |
| 5 | ;;; | 6 | ;;; |
| @@ -71,14 +72,14 @@ libFM file management library."))) | |||
| 71 | (define-public lxappearance | 72 | (define-public lxappearance |
| 72 | (package | 73 | (package |
| 73 | (name "lxappearance") | 74 | (name "lxappearance") |
| 74 | (version "0.6.1") | 75 | (version "0.6.2") |
| 75 | (source (origin | 76 | (source (origin |
| 76 | (method url-fetch) | 77 | (method url-fetch) |
| 77 | (uri (string-append "mirror://sourceforge/project/lxde/" | 78 | (uri (string-append "mirror://sourceforge/project/lxde/" |
| 78 | "LXAppearance/" name "-" version ".tar.xz")) | 79 | "LXAppearance/" name "-" version ".tar.xz")) |
| 79 | (sha256 | 80 | (sha256 |
| 80 | (base32 | 81 | (base32 |
| 81 | "1phnv1b2jdj2vlibjyc9z01izcf3k5zxj8glsaf0i3vh77zqmqq9")))) | 82 | "07r0xbi6504zjnbpan7zrn7gi4j0kbsqqfpj8v2x94gr05p16qj4")))) |
| 82 | (build-system gnu-build-system) | 83 | (build-system gnu-build-system) |
| 83 | (inputs `(("gtk+" ,gtk+-2))) | 84 | (inputs `(("gtk+" ,gtk+-2))) |
| 84 | (native-inputs `(("intltool" ,intltool) | 85 | (native-inputs `(("intltool" ,intltool) |
| @@ -92,7 +93,7 @@ able to change themes, icons, and fonts used by GTK+ applications.") | |||
| 92 | (define-public lxrandr | 93 | (define-public lxrandr |
| 93 | (package | 94 | (package |
| 94 | (name "lxrandr") | 95 | (name "lxrandr") |
| 95 | (version "0.3.0") | 96 | (version "0.3.1") |
| 96 | (source (origin | 97 | (source (origin |
| 97 | (method url-fetch) | 98 | (method url-fetch) |
| 98 | (uri (string-append "mirror://sourceforge/project/lxde/LXRandR" | 99 | (uri (string-append "mirror://sourceforge/project/lxde/LXRandR" |
| @@ -101,7 +102,7 @@ able to change themes, icons, and fonts used by GTK+ applications.") | |||
| 101 | name "-" version ".tar.xz")) | 102 | name "-" version ".tar.xz")) |
| 102 | (sha256 | 103 | (sha256 |
| 103 | (base32 | 104 | (base32 |
| 104 | "0xkbqv66hisbxkvnf7y5kwqbhrq26f49wd7w6ylhnjlccpnylg8q")))) | 105 | "0khqi42paqg82jllb2kza4arf3fafzgq90fhyr3rw3d9hn23763d")))) |
| 105 | (build-system gnu-build-system) | 106 | (build-system gnu-build-system) |
| 106 | (inputs `(("gtk+" ,gtk+-2))) | 107 | (inputs `(("gtk+" ,gtk+-2))) |
| 107 | (native-inputs `(("intltool" ,intltool) | 108 | (native-inputs `(("intltool" ,intltool) |
| @@ -118,7 +119,7 @@ or external monitor.") | |||
| 118 | (define-public lxtask | 119 | (define-public lxtask |
| 119 | (package | 120 | (package |
| 120 | (name "lxtask") | 121 | (name "lxtask") |
| 121 | (version "0.1.6") | 122 | (version "0.1.7") |
| 122 | (source (origin | 123 | (source (origin |
| 123 | (method url-fetch) | 124 | (method url-fetch) |
| 124 | (uri (string-append "mirror://sourceforge/project/lxde/LXTask" | 125 | (uri (string-append "mirror://sourceforge/project/lxde/LXTask" |
| @@ -127,7 +128,7 @@ or external monitor.") | |||
| 127 | name "-" version ".tar.xz")) | 128 | name "-" version ".tar.xz")) |
| 128 | (sha256 | 129 | (sha256 |
| 129 | (base32 | 130 | (base32 |
| 130 | "0ia3i430lpwgl2kch6sl1za8qf96wc4fkcv91yhdzgnzafcnm3gp")))) | 131 | "1zihhvzsg9bl6k0gv7jwx6cgsi3rmcagvnmshc1h0mjq2immmdph")))) |
| 131 | (build-system gnu-build-system) | 132 | (build-system gnu-build-system) |
| 132 | (inputs `(("gtk+" ,gtk+-2))) | 133 | (inputs `(("gtk+" ,gtk+-2))) |
| 133 | (native-inputs `(("intltool" ,intltool) | 134 | (native-inputs `(("intltool" ,intltool) |
| @@ -167,7 +168,7 @@ performance, all instances of the terminal are sharing a single process.") | |||
| 167 | (define-public menu-cache | 168 | (define-public menu-cache |
| 168 | (package | 169 | (package |
| 169 | (name "menu-cache") | 170 | (name "menu-cache") |
| 170 | (version "1.0.0") | 171 | (version "1.0.1") |
| 171 | (source (origin | 172 | (source (origin |
| 172 | (method url-fetch) | 173 | (method url-fetch) |
| 173 | (uri (string-append "mirror://sourceforge/project/lxde/" name "/" | 174 | (uri (string-append "mirror://sourceforge/project/lxde/" name "/" |
| @@ -175,7 +176,7 @@ performance, all instances of the terminal are sharing a single process.") | |||
| 175 | name "-" version ".tar.xz")) | 176 | name "-" version ".tar.xz")) |
| 176 | (sha256 | 177 | (sha256 |
| 177 | (base32 | 178 | (base32 |
| 178 | "1bws84fiwk3anp30hcr0lw1xw5cgp44x5ik2yv2ijcgxpcvz8zgz")))) | 179 | "0ngxvwfj9drabqi3lyzgpi0d0za6431sy2ijb010filrj54jdiqa")))) |
| 179 | (build-system gnu-build-system) | 180 | (build-system gnu-build-system) |
| 180 | (inputs `(("glib" ,glib) | 181 | (inputs `(("glib" ,glib) |
| 181 | ("libfm" ,libfm-extra))) | 182 | ("libfm" ,libfm-extra))) |
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 5ce7ed42544..a36fd5ff707 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> | 14 | ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> |
| 15 | ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org> | 15 | ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org> |
| 16 | ;;; Copyright © 2016 Alex Kost <alezost@gmail.com> | 16 | ;;; Copyright © 2016 Alex Kost <alezost@gmail.com> |
| 17 | ;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com> | ||
| 17 | ;;; | 18 | ;;; |
| 18 | ;;; This file is part of GNU Guix. | 19 | ;;; This file is part of GNU Guix. |
| 19 | ;;; | 20 | ;;; |
| @@ -397,6 +398,40 @@ messages you need; in addition, it allows you to view messages, extract | |||
| 397 | attachments, create new maildirs, and so on.") | 398 | attachments, create new maildirs, and so on.") |
| 398 | (license gpl3+))) | 399 | (license gpl3+))) |
| 399 | 400 | ||
| 401 | (define-public alot | ||
| 402 | (package | ||
| 403 | (name "alot") | ||
| 404 | (version "0.3.7") | ||
| 405 | (source (origin | ||
| 406 | (method url-fetch) | ||
| 407 | ; v0.3.7 not on PyPi yet, so use github instead | ||
| 408 | (uri (string-append "https://github.com/pazz/alot/archive/" | ||
| 409 | version ".tar.gz")) | ||
| 410 | (file-name (string-append "alot-" version ".tar.gz")) | ||
| 411 | (sha256 | ||
| 412 | (base32 | ||
| 413 | "09md9llg38r6xby8l0y0zf8nhlh91cr4xs0r15b294hhp8hl2bgx")))) | ||
| 414 | (build-system python-build-system) | ||
| 415 | (arguments | ||
| 416 | `(#:tests? #f ; no tests | ||
| 417 | ; python 3 is unsupported, more info: | ||
| 418 | ; https://github.com/pazz/alot/blob/0.3.7/docs/source/faq.rst | ||
| 419 | #:python ,python-2)) | ||
| 420 | (inputs | ||
| 421 | `(("python2-magic" ,python2-magic) | ||
| 422 | ("python2-configobj" ,python2-configobj) | ||
| 423 | ("python2-twisted" ,python2-twisted) | ||
| 424 | ("python2-urwid" ,python2-urwid) | ||
| 425 | ("python2-urwidtrees" ,python2-urwidtrees) | ||
| 426 | ("python2-pygpgme" ,python2-pygpgme) | ||
| 427 | ("python2-notmuch" ,python2-notmuch))) | ||
| 428 | (home-page "https://github.com/pazz/alot") | ||
| 429 | (synopsis "Commandline MUA using notmuch") | ||
| 430 | (description | ||
| 431 | "Alot is an experimental terminal mail user agent (MUA) based on | ||
| 432 | @code{notmuch} mail. It is written in Python using the @code{urwid} toolkit.") | ||
| 433 | (license gpl3+))) | ||
| 434 | |||
| 400 | (define-public notmuch | 435 | (define-public notmuch |
| 401 | (package | 436 | (package |
| 402 | (name "notmuch") | 437 | (name "notmuch") |
| @@ -519,7 +554,7 @@ and search library.") | |||
| 519 | (define-public getmail | 554 | (define-public getmail |
| 520 | (package | 555 | (package |
| 521 | (name "getmail") | 556 | (name "getmail") |
| 522 | (version "4.48.0") | 557 | (version "4.49.0") |
| 523 | (source | 558 | (source |
| 524 | (origin | 559 | (origin |
| 525 | (method url-fetch) | 560 | (method url-fetch) |
| @@ -527,7 +562,7 @@ and search library.") | |||
| 527 | name "-" version ".tar.gz")) | 562 | name "-" version ".tar.gz")) |
| 528 | (sha256 | 563 | (sha256 |
| 529 | (base32 | 564 | (base32 |
| 530 | "0k5rm5kag14izng2ajcagvli9sns5mzvkyfa65ri4xymxs91wi29")))) | 565 | "1m0yzxd05fklwbmjj1n2q4sx397c1j5qi9a0r5fv3h8pplz4lv0w")))) |
| 531 | (build-system python-build-system) | 566 | (build-system python-build-system) |
| 532 | (arguments | 567 | (arguments |
| 533 | `(#:tests? #f ; no tests | 568 | `(#:tests? #f ; no tests |
| @@ -546,14 +581,14 @@ useful features.") | |||
| 546 | (define-public libetpan | 581 | (define-public libetpan |
| 547 | (package | 582 | (package |
| 548 | (name "libetpan") | 583 | (name "libetpan") |
| 549 | (version "1.6") | 584 | (version "1.7.2") |
| 550 | (source (origin | 585 | (source (origin |
| 551 | (method url-fetch) | 586 | (method url-fetch) |
| 552 | (uri (string-append "https://github.com/dinhviethoa/" name | 587 | (uri (string-append "https://github.com/dinhviethoa/" name |
| 553 | "/archive/" version ".tar.gz")) | 588 | "/archive/" version ".tar.gz")) |
| 554 | (file-name (string-append name "-" version ".tar.gz")) | 589 | (file-name (string-append name "-" version ".tar.gz")) |
| 555 | (sha256 | 590 | (sha256 |
| 556 | (base32 "05qyqx2c1ppb1jnrs3m52i60f9xlxfxdmb9dnwg4vqjv8kwv2qkr")))) | 591 | (base32 "081ixgj3skglq9i7v0jb835lmfx21zi4i5b7997igwr0lj174y9j")))) |
| 557 | (build-system gnu-build-system) | 592 | (build-system gnu-build-system) |
| 558 | (native-inputs `(("autoconf" ,(autoconf-wrapper)) | 593 | (native-inputs `(("autoconf" ,(autoconf-wrapper)) |
| 559 | ("automake" ,automake) | 594 | ("automake" ,automake) |
| @@ -566,7 +601,8 @@ useful features.") | |||
| 566 | ("openssl" ,openssl))) | 601 | ("openssl" ,openssl))) |
| 567 | (inputs | 602 | (inputs |
| 568 | `(("curl" ,curl) | 603 | `(("curl" ,curl) |
| 569 | ("expat" ,expat))) | 604 | ("expat" ,expat) |
| 605 | ("zlib" ,zlib))) | ||
| 570 | (arguments | 606 | (arguments |
| 571 | '(#:phases (alist-cons-after | 607 | '(#:phases (alist-cons-after |
| 572 | 'unpack 'autogen | 608 | 'unpack 'autogen |
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm index ab5e770b522..9ffbba9de99 100644 --- a/gnu/packages/man.scm +++ b/gnu/packages/man.scm | |||
| @@ -58,14 +58,14 @@ a flexible and convenient way.") | |||
| 58 | (define-public man-db | 58 | (define-public man-db |
| 59 | (package | 59 | (package |
| 60 | (name "man-db") | 60 | (name "man-db") |
| 61 | (version "2.7.1") | 61 | (version "2.7.5") |
| 62 | (source (origin | 62 | (source (origin |
| 63 | (method url-fetch) | 63 | (method url-fetch) |
| 64 | (uri (string-append "mirror://savannah/man-db/man-db-" | 64 | (uri (string-append "mirror://savannah/man-db/man-db-" |
| 65 | version ".tar.xz")) | 65 | version ".tar.xz")) |
| 66 | (sha256 | 66 | (sha256 |
| 67 | (base32 | 67 | (base32 |
| 68 | "03ly0hbpgjnag576rgccanaisn7f6422q5qxrj64vyzslc2651y4")))) | 68 | "056a3il7agfazac12yggcg4gf412yq34k065im0cpfxbcw6xskaw")))) |
| 69 | (build-system gnu-build-system) | 69 | (build-system gnu-build-system) |
| 70 | (arguments | 70 | (arguments |
| 71 | '(#:phases | 71 | '(#:phases |
| @@ -129,7 +129,7 @@ the traditional flat-text whatis databases.") | |||
| 129 | (define-public man-pages | 129 | (define-public man-pages |
| 130 | (package | 130 | (package |
| 131 | (name "man-pages") | 131 | (name "man-pages") |
| 132 | (version "4.04") | 132 | (version "4.06") |
| 133 | (source (origin | 133 | (source (origin |
| 134 | (method url-fetch) | 134 | (method url-fetch) |
| 135 | (uri | 135 | (uri |
| @@ -142,7 +142,7 @@ the traditional flat-text whatis databases.") | |||
| 142 | "man-pages-" version ".tar.xz"))) | 142 | "man-pages-" version ".tar.xz"))) |
| 143 | (sha256 | 143 | (sha256 |
| 144 | (base32 | 144 | (base32 |
| 145 | "0v8zxq4scfixy3pjpw9ankvv5v8frv62khv4xm1jpkswyq6rbqcg")))) | 145 | "0vv056k9yyf05dqal9m2pq3pv9c8lnp7i5rjxvcnic6aq7vyrafb")))) |
| 146 | (build-system gnu-build-system) | 146 | (build-system gnu-build-system) |
| 147 | (arguments | 147 | (arguments |
| 148 | '(#:phases (alist-delete 'configure %standard-phases) | 148 | '(#:phases (alist-delete 'configure %standard-phases) |
| @@ -168,7 +168,7 @@ Linux kernel and C library interfaces employed by user-space programs.") | |||
| 168 | (define-public help2man | 168 | (define-public help2man |
| 169 | (package | 169 | (package |
| 170 | (name "help2man") | 170 | (name "help2man") |
| 171 | (version "1.47.3") | 171 | (version "1.47.4") |
| 172 | (source | 172 | (source |
| 173 | (origin | 173 | (origin |
| 174 | (method url-fetch) | 174 | (method url-fetch) |
| @@ -176,7 +176,7 @@ Linux kernel and C library interfaces employed by user-space programs.") | |||
| 176 | version ".tar.xz")) | 176 | version ".tar.xz")) |
| 177 | (sha256 | 177 | (sha256 |
| 178 | (base32 | 178 | (base32 |
| 179 | "0miqq77ssk5rgsc9xlv7k5n2wk2c5wv2m1kh4zhbwrggfmjaycn2")))) | 179 | "0lvp4306f5nq08f3snffs5pp1zwv8l35z6f5g0dds51zs6bzdv6l")))) |
| 180 | (build-system gnu-build-system) | 180 | (build-system gnu-build-system) |
| 181 | (arguments `(;; There's no `check' target. | 181 | (arguments `(;; There's no `check' target. |
| 182 | #:tests? #f)) | 182 | #:tests? #f)) |
diff --git a/gnu/packages/markdown.scm b/gnu/packages/markdown.scm index a20eef68189..dab3d4eab13 100644 --- a/gnu/packages/markdown.scm +++ b/gnu/packages/markdown.scm | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org> | 2 | ;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org> |
| 3 | ;;; Copyright © 2015 David Thompson <davet@gnu.org> | 3 | ;;; Copyright © 2015 David Thompson <davet@gnu.org> |
| 4 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | ||
| 4 | ;;; | 5 | ;;; |
| 5 | ;;; This file is part of GNU Guix. | 6 | ;;; This file is part of GNU Guix. |
| 6 | ;;; | 7 | ;;; |
| @@ -31,7 +32,7 @@ | |||
| 31 | (define-public hoedown | 32 | (define-public hoedown |
| 32 | (package | 33 | (package |
| 33 | (name "hoedown") | 34 | (name "hoedown") |
| 34 | (version "3.0.3") | 35 | (version "3.0.7") |
| 35 | (source (origin | 36 | (source (origin |
| 36 | (method url-fetch) | 37 | (method url-fetch) |
| 37 | (uri (string-append "https://github.com/hoedown/hoedown/archive/" | 38 | (uri (string-append "https://github.com/hoedown/hoedown/archive/" |
| @@ -39,7 +40,7 @@ | |||
| 39 | (file-name (string-append name "-" version ".tar.gz")) | 40 | (file-name (string-append name "-" version ".tar.gz")) |
| 40 | (sha256 | 41 | (sha256 |
| 41 | (base32 | 42 | (base32 |
| 42 | "0mmmkfayqgh6k39kbi3pq68mg03x35aiygy3zypxzvwx9y8b53ky")))) | 43 | "0859dc2xjasd6kgkshi8mb20kbyw5sql1ln0hw3bfaf33qdh5dh1")))) |
| 43 | (build-system gnu-build-system) | 44 | (build-system gnu-build-system) |
| 44 | (arguments | 45 | (arguments |
| 45 | '(#:make-flags (list "CC=gcc" (string-append "PREFIX=" %output)) | 46 | '(#:make-flags (list "CC=gcc" (string-append "PREFIX=" %output)) |
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 3b860a957f1..b8ec213d8b1 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm | |||
| @@ -63,6 +63,7 @@ | |||
| 63 | #:use-module (gnu packages image) | 63 | #:use-module (gnu packages image) |
| 64 | #:use-module (gnu packages less) | 64 | #:use-module (gnu packages less) |
| 65 | #:use-module (gnu packages lisp) | 65 | #:use-module (gnu packages lisp) |
| 66 | #:use-module (gnu packages logging) | ||
| 66 | #:use-module (gnu packages gnome) | 67 | #:use-module (gnu packages gnome) |
| 67 | #:use-module (gnu packages guile) | 68 | #:use-module (gnu packages guile) |
| 68 | #:use-module (gnu packages xorg) | 69 | #:use-module (gnu packages xorg) |
| @@ -333,7 +334,8 @@ large scale eigenvalue problems.") | |||
| 333 | (inputs `(("fortran" ,gfortran) | 334 | (inputs `(("fortran" ,gfortran) |
| 334 | ("python" ,python-2))) | 335 | ("python" ,python-2))) |
| 335 | (arguments | 336 | (arguments |
| 336 | `(#:configure-flags '("-DBUILD_SHARED_LIBS:BOOL=YES") | 337 | `(#:configure-flags '("-DBUILD_SHARED_LIBS:BOOL=YES" |
| 338 | "-DLAPACKE=ON") | ||
| 337 | #:phases (alist-cons-before | 339 | #:phases (alist-cons-before |
| 338 | 'check 'patch-python | 340 | 'check 'patch-python |
| 339 | (lambda* (#:key inputs #:allow-other-keys) | 341 | (lambda* (#:key inputs #:allow-other-keys) |
| @@ -644,10 +646,7 @@ interfaces.") | |||
| 644 | (build-system cmake-build-system) | 646 | (build-system cmake-build-system) |
| 645 | (arguments | 647 | (arguments |
| 646 | ;; TODO: Build HTML user documentation and install separately. | 648 | ;; TODO: Build HTML user documentation and install separately. |
| 647 | ;; XXX: Use the embedded "miniglog" as a replacement for | 649 | '(#:configure-flags '("-DBUILD_EXAMPLES=OFF" |
| 648 | ;; <https://github.com/google/glog>. TODO: Use Glog when it's available. | ||
| 649 | '(#:configure-flags '("-DMINIGLOG=ON" | ||
| 650 | "-DBUILD_EXAMPLES=OFF" | ||
| 651 | "-DBUILD_SHARED_LIBS=ON") | 650 | "-DBUILD_SHARED_LIBS=ON") |
| 652 | 651 | ||
| 653 | #:phases (modify-phases %standard-phases | 652 | #:phases (modify-phases %standard-phases |
| @@ -660,6 +659,8 @@ interfaces.") | |||
| 660 | #t))))) | 659 | #t))))) |
| 661 | (native-inputs | 660 | (native-inputs |
| 662 | `(("pkg-config" ,pkg-config))) | 661 | `(("pkg-config" ,pkg-config))) |
| 662 | (propagated-inputs | ||
| 663 | `(("glog" ,glog))) ;for #include <glog/glog.h> | ||
| 663 | (inputs | 664 | (inputs |
| 664 | `(("eigen" ,eigen) | 665 | `(("eigen" ,eigen) |
| 665 | ("blas" ,openblas) | 666 | ("blas" ,openblas) |
| @@ -1874,7 +1875,7 @@ constant parts of it.") | |||
| 1874 | (define-public openlibm | 1875 | (define-public openlibm |
| 1875 | (package | 1876 | (package |
| 1876 | (name "openlibm") | 1877 | (name "openlibm") |
| 1877 | (version "0.4.1") | 1878 | (version "0.5.1") |
| 1878 | (source | 1879 | (source |
| 1879 | (origin | 1880 | (origin |
| 1880 | (method url-fetch) | 1881 | (method url-fetch) |
| @@ -1883,7 +1884,7 @@ constant parts of it.") | |||
| 1883 | (file-name (string-append name "-" version ".tar.gz")) | 1884 | (file-name (string-append name "-" version ".tar.gz")) |
| 1884 | (sha256 | 1885 | (sha256 |
| 1885 | (base32 | 1886 | (base32 |
| 1886 | "0cwqqqlblj3kzp9aq1wnpfs1fl0qd1wp1xzm5shb09w06i4rh9nn")))) | 1887 | "11czx2z7nh6dfpz45s3xl7v38hw36jxzxfvny454bk3if14pfakq")))) |
| 1887 | (build-system gnu-build-system) | 1888 | (build-system gnu-build-system) |
| 1888 | (arguments | 1889 | (arguments |
| 1889 | `(#:make-flags | 1890 | `(#:make-flags |
| @@ -1911,7 +1912,7 @@ environments.") | |||
| 1911 | (define-public openspecfun | 1912 | (define-public openspecfun |
| 1912 | (package | 1913 | (package |
| 1913 | (name "openspecfun") | 1914 | (name "openspecfun") |
| 1914 | (version "0.4") | 1915 | (version "0.5.2") |
| 1915 | (source | 1916 | (source |
| 1916 | (origin | 1917 | (origin |
| 1917 | (method url-fetch) | 1918 | (method url-fetch) |
| @@ -1920,7 +1921,7 @@ environments.") | |||
| 1920 | (file-name (string-append name "-" version ".tar.gz")) | 1921 | (file-name (string-append name "-" version ".tar.gz")) |
| 1921 | (sha256 | 1922 | (sha256 |
| 1922 | (base32 | 1923 | (base32 |
| 1923 | "0nsa3jjmlhcqkw5ba5ypbn3n0c8b6lc22zzlxnmxkxi9shhdx65z")))) | 1924 | "1y5b2h6f2k72536kym3vzy3li3bhpd23x463g7hdmjdi3cncavz1")))) |
| 1924 | (build-system gnu-build-system) | 1925 | (build-system gnu-build-system) |
| 1925 | (arguments | 1926 | (arguments |
| 1926 | '(#:tests? #f ;no "check" target | 1927 | '(#:tests? #f ;no "check" target |
| @@ -2119,14 +2120,13 @@ Optimization occurs at build time. For this reason, the library is built on | |||
| 2119 | the machine where it is installed, without resorting to pre-built substitutes. | 2120 | the machine where it is installed, without resorting to pre-built substitutes. |
| 2120 | 2121 | ||
| 2121 | Before building the library, CPU throttling should be disabled. This can be | 2122 | Before building the library, CPU throttling should be disabled. This can be |
| 2122 | done in the BIOS, or, on GNU/Linux, with the following commands: | 2123 | done in the BIOS, or, on GNU/Linux, with the following command: |
| 2123 | 2124 | ||
| 2124 | cpufreq-selector -g performance -c 0 | 2125 | @example |
| 2125 | ... | 2126 | # cpupower --governor performance |
| 2126 | cpufreq-selector -g performance -c N-1 | 2127 | @end example |
| 2127 | 2128 | ||
| 2128 | where N is the number of cores of your CPU. Failure to do so will result in a | 2129 | Failure to do so will result in a library with poor performance.") |
| 2129 | library with poor performance.") | ||
| 2130 | (license license:bsd-3))) | 2130 | (license license:bsd-3))) |
| 2131 | 2131 | ||
| 2132 | (define-public glm | 2132 | (define-public glm |
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index 215fa19bb86..de9ac179bb6 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm | |||
| @@ -257,7 +257,7 @@ supports IPv6, SSL-protected connections as well as PAM for authentication.") | |||
| 257 | (define-public pidgin | 257 | (define-public pidgin |
| 258 | (package | 258 | (package |
| 259 | (name "pidgin") | 259 | (name "pidgin") |
| 260 | (version "2.10.11") | 260 | (version "2.11.0") |
| 261 | (source | 261 | (source |
| 262 | (origin | 262 | (origin |
| 263 | (method url-fetch) | 263 | (method url-fetch) |
| @@ -265,7 +265,7 @@ supports IPv6, SSL-protected connections as well as PAM for authentication.") | |||
| 265 | version "/" name "-" version ".tar.bz2")) | 265 | version "/" name "-" version ".tar.bz2")) |
| 266 | (sha256 | 266 | (sha256 |
| 267 | (base32 | 267 | (base32 |
| 268 | "01s0q30qrjlzj7kkz6f8lvrwsdd55a9yjh2xjjwyyxzw849j3bpj")) | 268 | "0crkggjj6y07v1kdwil9vw532b0vrs6p33nmlvdkpnl60m2169pp")) |
| 269 | (patches (search-patches "pidgin-add-search-path.patch")))) | 269 | (patches (search-patches "pidgin-add-search-path.patch")))) |
| 270 | (build-system glib-or-gtk-build-system) | 270 | (build-system glib-or-gtk-build-system) |
| 271 | (native-inputs | 271 | (native-inputs |
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm index 3162cf18b85..da7c1ccb372 100644 --- a/gnu/packages/mpd.scm +++ b/gnu/packages/mpd.scm | |||
| @@ -71,7 +71,7 @@ interfacing MPD in the C, C++ & Objective C languages.") | |||
| 71 | (define-public mpd | 71 | (define-public mpd |
| 72 | (package | 72 | (package |
| 73 | (name "mpd") | 73 | (name "mpd") |
| 74 | (version "0.19.14") | 74 | (version "0.19.17") |
| 75 | (source (origin | 75 | (source (origin |
| 76 | (method url-fetch) | 76 | (method url-fetch) |
| 77 | (uri | 77 | (uri |
| @@ -80,7 +80,7 @@ interfacing MPD in the C, C++ & Objective C languages.") | |||
| 80 | "/mpd-" version ".tar.xz")) | 80 | "/mpd-" version ".tar.xz")) |
| 81 | (sha256 | 81 | (sha256 |
| 82 | (base32 | 82 | (base32 |
| 83 | "1rwr1qb9an1qylddf35xwdasyfkxghd00c29saj04l1f2c2kilig")))) | 83 | "1xxjkwbs0d1bdcsykhmw6l1lybpyp2l7b2bw58y1j70w5fnwhzj8")))) |
| 84 | (build-system gnu-build-system) | 84 | (build-system gnu-build-system) |
| 85 | (inputs `(("ao" ,ao) | 85 | (inputs `(("ao" ,ao) |
| 86 | ("alsa-lib" ,alsa-lib) | 86 | ("alsa-lib" ,alsa-lib) |
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index dfc21cc95fe..91ba4be97b7 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm | |||
| @@ -6,6 +6,7 @@ | |||
| 6 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | 6 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> |
| 7 | ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> | 7 | ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> |
| 8 | ;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> | 8 | ;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> |
| 9 | ;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net> | ||
| 9 | ;;; | 10 | ;;; |
| 10 | ;;; This file is part of GNU Guix. | 11 | ;;; This file is part of GNU Guix. |
| 11 | ;;; | 12 | ;;; |
| @@ -715,6 +716,49 @@ Editor. It is compatible with Power Tab Editor 1.7 and Guitar Pro.") | |||
| 715 | oscillators and stereo effects.") | 716 | oscillators and stereo effects.") |
| 716 | (license license:gpl2+))) | 717 | (license license:gpl2+))) |
| 717 | 718 | ||
| 719 | (define-public amsynth | ||
| 720 | (package | ||
| 721 | (name "amsynth") | ||
| 722 | (version "1.6.4") | ||
| 723 | (source | ||
| 724 | (origin | ||
| 725 | (method url-fetch) | ||
| 726 | (uri (string-append "https://github.com/amsynth/amsynth/releases/" | ||
| 727 | "download/release-" version | ||
| 728 | "/amsynth-" version ".tar.bz2")) | ||
| 729 | (sha256 | ||
| 730 | (base32 | ||
| 731 | "07dp9dl38g9krjqxxh89l2z42z08yzrl57cx95b1l67xnxwjp5k3")))) | ||
| 732 | (build-system gnu-build-system) | ||
| 733 | (arguments | ||
| 734 | `(#:phases | ||
| 735 | (modify-phases %standard-phases | ||
| 736 | (add-before 'configure 'set-flags | ||
| 737 | (lambda _ | ||
| 738 | ;; Compile with C++11, required by gtkmm. | ||
| 739 | (setenv "CXXFLAGS" "-std=c++11") | ||
| 740 | #t))))) | ||
| 741 | (inputs | ||
| 742 | `(("alsa-lib" ,alsa-lib) | ||
| 743 | ("jack" ,jack-1) | ||
| 744 | ("lv2" ,lv2) | ||
| 745 | ("libsndfile" ,libsndfile) | ||
| 746 | ("gtk+" ,gtk+-2) | ||
| 747 | ("gtkmm" ,gtkmm-2))) | ||
| 748 | (native-inputs | ||
| 749 | `(("pkg-config" ,pkg-config))) | ||
| 750 | (home-page "http://amsynth.github.io") | ||
| 751 | (synopsis "Analog modeling synthesizer") | ||
| 752 | (description | ||
| 753 | "amsynth is an easy-to-use software synthesizer with a classic | ||
| 754 | subtractive synthesizer topology. Its features include: dual | ||
| 755 | oscillators (sine, saw, square, noise) with hard sync; 12 and 24 dB/oct | ||
| 756 | resonant filters (low-pass, high-pass, band-pass, notch); mono, poly, legato | ||
| 757 | keyboard modes; dual ADSR envelope generators for filter and amplitude; LFO | ||
| 758 | which can modulate the oscillators, filter, and amplitude; distortion and | ||
| 759 | reverb effects.") | ||
| 760 | (license license:gpl2+))) | ||
| 761 | |||
| 718 | (define-public setbfree | 762 | (define-public setbfree |
| 719 | (package | 763 | (package |
| 720 | (name "setbfree") | 764 | (name "setbfree") |
| @@ -1594,3 +1638,30 @@ for improved Amiga ProTracker 2/3 compatibility.") | |||
| 1594 | formats, including most audio formats recognized by FFMpeg.") | 1638 | formats, including most audio formats recognized by FFMpeg.") |
| 1595 | (home-page "http://moc.daper.net") | 1639 | (home-page "http://moc.daper.net") |
| 1596 | (license license:gpl2+))) | 1640 | (license license:gpl2+))) |
| 1641 | |||
| 1642 | (define-public midicsv | ||
| 1643 | (package | ||
| 1644 | (name "midicsv") | ||
| 1645 | (version "1.1") | ||
| 1646 | (source (origin | ||
| 1647 | (method url-fetch) | ||
| 1648 | (uri (string-append "http://www.fourmilab.ch/webtools/midicsv/" | ||
| 1649 | name "-" version ".tar.gz")) | ||
| 1650 | (sha256 | ||
| 1651 | (base32 | ||
| 1652 | "1vvhk2nf9ilfw0wchmxy8l13hbw9cnpz079nsx5srsy4nnd78nkw")))) | ||
| 1653 | (build-system gnu-build-system) | ||
| 1654 | (arguments | ||
| 1655 | `(#:phases (modify-phases %standard-phases (delete 'configure)) | ||
| 1656 | #:make-flags (list "CC=gcc" (string-append "INSTALL_DEST=" %output)))) | ||
| 1657 | (synopsis "Convert MIDI files to and from CSV") | ||
| 1658 | (description | ||
| 1659 | "Midicsv reads a standard MIDI file and decodes it into a comma-separated | ||
| 1660 | value file (CSV), which preserves all the information in the MIDI file. The | ||
| 1661 | ASCII CSV file may be loaded into a spreadsheet or database application, or | ||
| 1662 | processed by a program to transform the MIDI data (for example, to key | ||
| 1663 | transpose a composition or extract a track from a multi-track sequence). A | ||
| 1664 | CSV file in the format created by midicsv may be converted back into a | ||
| 1665 | standard MIDI file with the csvmidi program.") | ||
| 1666 | (home-page "http://www.fourmilab.ch/webtools/midicsv/") | ||
| 1667 | (license license:public-domain))) | ||
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 72c601102ce..9e4f7bb010f 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> | 4 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> |
| 5 | ;;; Copyright © 2015 Stefan Reichör <stefan@xsteve.at> | 5 | ;;; Copyright © 2015 Stefan Reichör <stefan@xsteve.at> |
| 6 | ;;; Copyright © 2016 Raimon Grau <raimonster@gmail.com> | 6 | ;;; Copyright © 2016 Raimon Grau <raimonster@gmail.com> |
| 7 | ;;; Copyright © 2016 Tobias Geerinckx-Rice <tobias.geerinckx.rice@gmail.com> | 7 | ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr> |
| 8 | ;;; Copyright 2016 John Darrington <jmd@gnu.org> | 8 | ;;; Copyright 2016 John Darrington <jmd@gnu.org> |
| 9 | ;;; Copyright © 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr> | 9 | ;;; Copyright © 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr> |
| 10 | ;;; | 10 | ;;; |
diff --git a/gnu/packages/ninja.scm b/gnu/packages/ninja.scm index cfcc6d5a519..8f18eb35605 100644 --- a/gnu/packages/ninja.scm +++ b/gnu/packages/ninja.scm | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> | 2 | ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> |
| 3 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> | 3 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> |
| 4 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | ||
| 4 | ;;; | 5 | ;;; |
| 5 | ;;; This file is part of GNU Guix. | 6 | ;;; This file is part of GNU Guix. |
| 6 | ;;; | 7 | ;;; |
| @@ -28,7 +29,7 @@ | |||
| 28 | (define-public ninja | 29 | (define-public ninja |
| 29 | (package | 30 | (package |
| 30 | (name "ninja") | 31 | (name "ninja") |
| 31 | (version "1.5.3") | 32 | (version "1.7.1") |
| 32 | (source (origin | 33 | (source (origin |
| 33 | (method url-fetch) | 34 | (method url-fetch) |
| 34 | (uri (string-append "https://github.com/martine/ninja/" | 35 | (uri (string-append "https://github.com/martine/ninja/" |
| @@ -36,7 +37,7 @@ | |||
| 36 | (file-name (string-append name "-" version ".tar.gz")) | 37 | (file-name (string-append name "-" version ".tar.gz")) |
| 37 | (sha256 | 38 | (sha256 |
| 38 | (base32 | 39 | (base32 |
| 39 | "1h3yfwcfl61v493vna6jia2fizh8rpig7qw2504cvkr6gid3p5bw")) | 40 | "06dy2dc1aafm61ynw9gzig88la3km9dsh53bxf4mnw7l7kjisn2i")) |
| 40 | (patches (search-patches "ninja-zero-mtime.patch" | 41 | (patches (search-patches "ninja-zero-mtime.patch" |
| 41 | "ninja-tests.patch")))) | 42 | "ninja-tests.patch")))) |
| 42 | (build-system gnu-build-system) | 43 | (build-system gnu-build-system) |
| @@ -69,7 +70,7 @@ | |||
| 69 | (install-file "ninja" bin) | 70 | (install-file "ninja" bin) |
| 70 | (install-file "doc/manual.asciidoc" doc) | 71 | (install-file "doc/manual.asciidoc" doc) |
| 71 | #t)))))) | 72 | #t)))))) |
| 72 | (home-page "http://martine.github.io/ninja/") | 73 | (home-page "https://ninja-build.org/") |
| 73 | (synopsis "Small build system") | 74 | (synopsis "Small build system") |
| 74 | (description | 75 | (description |
| 75 | "Ninja is a small build system with a focus on speed. It differs from | 76 | "Ninja is a small build system with a focus on speed. It differs from |
diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm index 2f269d08b17..887ef930ffc 100644 --- a/gnu/packages/node.scm +++ b/gnu/packages/node.scm | |||
| @@ -2,6 +2,7 @@ | |||
| 2 | ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com> | 2 | ;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com> |
| 3 | ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> | 3 | ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> |
| 4 | ;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org> | 4 | ;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org> |
| 5 | ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> | ||
| 5 | ;;; | 6 | ;;; |
| 6 | ;;; This file is part of GNU Guix. | 7 | ;;; This file is part of GNU Guix. |
| 7 | ;;; | 8 | ;;; |
| @@ -99,7 +100,23 @@ | |||
| 99 | (zero? (apply system* | 100 | (zero? (apply system* |
| 100 | (string-append (assoc-ref inputs "python") | 101 | (string-append (assoc-ref inputs "python") |
| 101 | "/bin/python") | 102 | "/bin/python") |
| 102 | "configure" flags)))))))) | 103 | "configure" flags))))) |
| 104 | (replace 'patch-shebangs | ||
| 105 | (lambda* (#:key outputs #:allow-other-keys #:rest all) | ||
| 106 | ;; Work around <http://bugs.gnu.org/23723>. | ||
| 107 | (let* ((patch (assoc-ref %standard-phases 'patch-shebangs)) | ||
| 108 | (npm (string-append (assoc-ref outputs "out") | ||
| 109 | "/bin/npm")) | ||
| 110 | (target (readlink npm))) | ||
| 111 | (and (apply patch all) | ||
| 112 | (with-directory-excursion (dirname npm) | ||
| 113 | ;; Turn NPM into a symlink to TARGET again, which 'npm' | ||
| 114 | ;; relies on for the resolution of relative file names | ||
| 115 | ;; in JS files. | ||
| 116 | (delete-file target) | ||
| 117 | (rename-file npm target) | ||
| 118 | (symlink target npm) | ||
| 119 | #t)))))))) | ||
| 103 | (native-inputs | 120 | (native-inputs |
| 104 | `(("python" ,python-2) | 121 | `(("python" ,python-2) |
| 105 | ("perl" ,perl) | 122 | ("perl" ,perl) |
diff --git a/gnu/packages/openstack.scm b/gnu/packages/openstack.scm index 780fb7f2525..a316af96662 100644 --- a/gnu/packages/openstack.scm +++ b/gnu/packages/openstack.scm | |||
| @@ -529,14 +529,14 @@ in transmittable and storable formats, such as JSON and MessagePack.") | |||
| 529 | (define-public python-oslosphinx | 529 | (define-public python-oslosphinx |
| 530 | (package | 530 | (package |
| 531 | (name "python-oslosphinx") | 531 | (name "python-oslosphinx") |
| 532 | (version "4.2.0") | 532 | (version "4.3.0") |
| 533 | (source | 533 | (source |
| 534 | (origin | 534 | (origin |
| 535 | (method url-fetch) | 535 | (method url-fetch) |
| 536 | (uri (pypi-uri "oslosphinx" version)) | 536 | (uri (pypi-uri "oslosphinx" version)) |
| 537 | (sha256 | 537 | (sha256 |
| 538 | (base32 | 538 | (base32 |
| 539 | "178svff46pmynpsnw06gpxk0w13p1gwkqbsvyxphblxv9wl09ksz")))) | 539 | "0cz8ym4i1n4rgljlqhyhfkpgdmid7nkb909k8r8nk186m9cmpla2")))) |
| 540 | (build-system python-build-system) | 540 | (build-system python-build-system) |
| 541 | (propagated-inputs | 541 | (propagated-inputs |
| 542 | `(("python-requests" ,python-requests))) | 542 | `(("python-requests" ,python-requests))) |
diff --git a/gnu/packages/owncloud.scm b/gnu/packages/owncloud.scm index 4969d31c01f..f755df4f0b8 100644 --- a/gnu/packages/owncloud.scm +++ b/gnu/packages/owncloud.scm | |||
| @@ -34,14 +34,27 @@ | |||
| 34 | (define-public owncloud-client | 34 | (define-public owncloud-client |
| 35 | (package | 35 | (package |
| 36 | (name "owncloud-client") | 36 | (name "owncloud-client") |
| 37 | (version "2.2.1") | 37 | (version "2.2.2") |
| 38 | (source | 38 | (source |
| 39 | (origin | 39 | (origin |
| 40 | (method url-fetch) | 40 | (method url-fetch) |
| 41 | (uri (string-append "https://download.owncloud.com/desktop/stable/" | 41 | (uri (string-append "https://download.owncloud.com/desktop/stable/" |
| 42 | "owncloudclient-" version ".tar.xz")) | 42 | "owncloudclient-" version ".tar.xz")) |
| 43 | (sha256 | 43 | (sha256 |
| 44 | (base32 "1wis62jk4y4mbr25y39y6af57pi6vp2mbryazmvn6zgnygf69m3h")))) | 44 | (base32 "0m0pxv12w72qqgxim9fh8w3bgkgnhpjyay8ldll3nnzq1jmhk09n")) |
| 45 | (modules '((guix build utils))) | ||
| 46 | (snippet | ||
| 47 | '(begin | ||
| 48 | ;; only allows bundled libcrashreporter-qt | ||
| 49 | (delete-file-recursively "src/3rdparty/libcrashreporter-qt") | ||
| 50 | ;; we already package qtkeychain and sqlite | ||
| 51 | (delete-file-recursively "src/3rdparty/qtkeychain") | ||
| 52 | (delete-file-recursively "src/3rdparty/sqlite3") | ||
| 53 | ;; qjson is packaged, qprogessindicator, qlockedfile, qtokenizer and | ||
| 54 | ;; qtsingleapplication have not yet been packaged, but all are | ||
| 55 | ;; explicitly used from the 3rdparty folder during build. | ||
| 56 | ;; We can also remove the macgoodies folder | ||
| 57 | (delete-file-recursively "src/3rdparty/qtmacgoodies"))))) | ||
| 45 | (build-system cmake-build-system) | 58 | (build-system cmake-build-system) |
| 46 | (arguments | 59 | (arguments |
| 47 | `(#:phases | 60 | `(#:phases |
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index f3a1cda149d..cd58fde2495 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm | |||
| @@ -192,7 +192,8 @@ | |||
| 192 | (propagated-inputs | 192 | (propagated-inputs |
| 193 | `(("gnutls" ,gnutls) ;for 'guix download' & co. | 193 | `(("gnutls" ,gnutls) ;for 'guix download' & co. |
| 194 | ("guile-json" ,guile-json) | 194 | ("guile-json" ,guile-json) |
| 195 | ("geiser" ,geiser))) ;for guix.el | 195 | ("geiser" ,geiser) ;for guix.el |
| 196 | ("emacs-magit-popup" ,emacs-magit-popup))) ;for "M-x guix" command | ||
| 196 | 197 | ||
| 197 | (home-page "http://www.gnu.org/software/guix") | 198 | (home-page "http://www.gnu.org/software/guix") |
| 198 | (synopsis "Functional package manager for installed software packages and versions") | 199 | (synopsis "Functional package manager for installed software packages and versions") |
| @@ -474,13 +475,13 @@ transactions from C or Python.") | |||
| 474 | (define-public diffoscope | 475 | (define-public diffoscope |
| 475 | (package | 476 | (package |
| 476 | (name "diffoscope") | 477 | (name "diffoscope") |
| 477 | (version "51") | 478 | (version "54") |
| 478 | (source (origin | 479 | (source (origin |
| 479 | (method url-fetch) | 480 | (method url-fetch) |
| 480 | (uri (pypi-uri name version)) | 481 | (uri (pypi-uri name version)) |
| 481 | (sha256 | 482 | (sha256 |
| 482 | (base32 | 483 | (base32 |
| 483 | "18rn6rrwh586228vnaf1nq0wayh19zbvfc0qmnbys6ln2pv2v007")))) | 484 | "1dv46ywzcll3mlqgvr48mq7rncizfvsic62c6dd2kdhynb22087n")))) |
| 484 | (build-system python-build-system) | 485 | (build-system python-build-system) |
| 485 | (arguments | 486 | (arguments |
| 486 | `(#:phases (modify-phases %standard-phases | 487 | `(#:phases (modify-phases %standard-phases |
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm index d1f49abed39..766167d6e9b 100644 --- a/gnu/packages/parallel.scm +++ b/gnu/packages/parallel.scm | |||
| @@ -44,7 +44,7 @@ | |||
| 44 | (define-public parallel | 44 | (define-public parallel |
| 45 | (package | 45 | (package |
| 46 | (name "parallel") | 46 | (name "parallel") |
| 47 | (version "20160522") | 47 | (version "20160622") |
| 48 | (source | 48 | (source |
| 49 | (origin | 49 | (origin |
| 50 | (method url-fetch) | 50 | (method url-fetch) |
| @@ -52,7 +52,7 @@ | |||
| 52 | version ".tar.bz2")) | 52 | version ".tar.bz2")) |
| 53 | (sha256 | 53 | (sha256 |
| 54 | (base32 | 54 | (base32 |
| 55 | "03r07ksxw5xx946x9s26ivifgldr8bc9bz6da4wfrd0dx4546xyy")))) | 55 | "1axng9bwapmb0vrrv67pp787gv7r5g02zyrfwnrhpxhi8zmm1jmg")))) |
| 56 | (build-system gnu-build-system) | 56 | (build-system gnu-build-system) |
| 57 | (inputs `(("perl" ,perl))) | 57 | (inputs `(("perl" ,perl))) |
| 58 | (home-page "http://www.gnu.org/software/parallel/") | 58 | (home-page "http://www.gnu.org/software/parallel/") |
diff --git a/gnu/packages/patches/avrdude-fix-libusb.patch b/gnu/packages/patches/avrdude-fix-libusb.patch deleted file mode 100644 index 13d0eca91ca..00000000000 --- a/gnu/packages/patches/avrdude-fix-libusb.patch +++ /dev/null | |||
| @@ -1,256 +0,0 @@ | |||
| 1 | Avrdude cannot build with our version of libusb. This patch fixes that. | ||
| 2 | See http://savannah.nongnu.org/bugs/?41854 | ||
| 3 | |||
| 4 | diff --git a/dfu.c b/dfu.c | ||
| 5 | index 7d349bc..0f80440 100644 | ||
| 6 | --- a/dfu.c | ||
| 7 | +++ b/dfu.c | ||
| 8 | @@ -36,13 +36,14 @@ | ||
| 9 | |||
| 10 | #ifndef HAVE_LIBUSB | ||
| 11 | |||
| 12 | -int dfu_open(struct dfu_dev *dfu, char *port_name) { | ||
| 13 | +struct dfu_dev * dfu_open(char *port_spec) { | ||
| 14 | fprintf(stderr, "%s: Error: No USB support in this compile of avrdude\n", | ||
| 15 | progname); | ||
| 16 | - return -1; | ||
| 17 | + return NULL; | ||
| 18 | } | ||
| 19 | |||
| 20 | -int dfu_init(struct dfu_dev *dfu, unsigned short usb_pid) { | ||
| 21 | +int dfu_init(struct dfu_dev *dfu, | ||
| 22 | + unsigned short vid, unsigned short pid) { | ||
| 23 | return -1; | ||
| 24 | } | ||
| 25 | |||
| 26 | diff --git a/flip1.c b/flip1.c | ||
| 27 | index b891d80..0959996 100644 | ||
| 28 | --- a/flip1.c | ||
| 29 | +++ b/flip1.c | ||
| 30 | @@ -164,6 +164,8 @@ static void flip1_setup(PROGRAMMER * pgm); | ||
| 31 | static void flip1_teardown(PROGRAMMER * pgm); | ||
| 32 | |||
| 33 | /* INTERNAL PROGRAMMER FUNCTION PROTOTYPES */ | ||
| 34 | +#ifdef HAVE_LIBUSB | ||
| 35 | +// The internal ones are made conditional, as they're not defined further down #ifndef HAVE_LIBUSB | ||
| 36 | |||
| 37 | static void flip1_show_info(struct flip1 *flip1); | ||
| 38 | |||
| 39 | @@ -177,6 +179,8 @@ static const char * flip1_mem_unit_str(enum flip1_mem_unit mem_unit); | ||
| 40 | static int flip1_set_mem_page(struct dfu_dev *dfu, unsigned short page_addr); | ||
| 41 | static enum flip1_mem_unit flip1_mem_unit(const char *name); | ||
| 42 | |||
| 43 | +#endif /* HAVE_LIBUSB */ | ||
| 44 | + | ||
| 45 | /* THE INITPGM FUNCTION DEFINITIONS */ | ||
| 46 | |||
| 47 | void flip1_initpgm(PROGRAMMER *pgm) | ||
| 48 | @@ -201,6 +205,7 @@ void flip1_initpgm(PROGRAMMER *pgm) | ||
| 49 | pgm->teardown = flip1_teardown; | ||
| 50 | } | ||
| 51 | |||
| 52 | +#ifdef HAVE_LIBUSB | ||
| 53 | /* EXPORTED PROGRAMMER FUNCTION DEFINITIONS */ | ||
| 54 | |||
| 55 | int flip1_open(PROGRAMMER *pgm, char *port_spec) | ||
| 56 | @@ -876,3 +881,82 @@ enum flip1_mem_unit flip1_mem_unit(const char *name) { | ||
| 57 | return FLIP1_MEM_UNIT_EEPROM; | ||
| 58 | return FLIP1_MEM_UNIT_UNKNOWN; | ||
| 59 | } | ||
| 60 | +#else /* HAVE_LIBUSB */ | ||
| 61 | +// Dummy functions | ||
| 62 | +int flip1_open(PROGRAMMER *pgm, char *port_spec) | ||
| 63 | +{ | ||
| 64 | + fprintf(stderr, "%s: Error: No USB support in this compile of avrdude\n", | ||
| 65 | + progname); | ||
| 66 | + return NULL; | ||
| 67 | +} | ||
| 68 | + | ||
| 69 | +int flip1_initialize(PROGRAMMER* pgm, AVRPART *part) | ||
| 70 | +{ | ||
| 71 | + return -1; | ||
| 72 | +} | ||
| 73 | + | ||
| 74 | +void flip1_close(PROGRAMMER* pgm) | ||
| 75 | +{ | ||
| 76 | +} | ||
| 77 | + | ||
| 78 | +void flip1_enable(PROGRAMMER* pgm) | ||
| 79 | +{ | ||
| 80 | +} | ||
| 81 | + | ||
| 82 | +void flip1_disable(PROGRAMMER* pgm) | ||
| 83 | +{ | ||
| 84 | +} | ||
| 85 | + | ||
| 86 | +void flip1_display(PROGRAMMER* pgm, const char *prefix) | ||
| 87 | +{ | ||
| 88 | +} | ||
| 89 | + | ||
| 90 | +int flip1_program_enable(PROGRAMMER* pgm, AVRPART *part) | ||
| 91 | +{ | ||
| 92 | + return -1; | ||
| 93 | +} | ||
| 94 | + | ||
| 95 | +int flip1_chip_erase(PROGRAMMER* pgm, AVRPART *part) | ||
| 96 | +{ | ||
| 97 | + return -1; | ||
| 98 | +} | ||
| 99 | + | ||
| 100 | +int flip1_read_byte(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem, | ||
| 101 | + unsigned long addr, unsigned char *value) | ||
| 102 | +{ | ||
| 103 | + return -1; | ||
| 104 | +} | ||
| 105 | + | ||
| 106 | +int flip1_write_byte(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem, | ||
| 107 | + unsigned long addr, unsigned char value) | ||
| 108 | +{ | ||
| 109 | + return -1; | ||
| 110 | +} | ||
| 111 | + | ||
| 112 | +int flip1_paged_load(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem, | ||
| 113 | + unsigned int page_size, unsigned int addr, unsigned int n_bytes) | ||
| 114 | +{ | ||
| 115 | + return -1; | ||
| 116 | +} | ||
| 117 | + | ||
| 118 | +int flip1_paged_write(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem, | ||
| 119 | + unsigned int page_size, unsigned int addr, unsigned int n_bytes) | ||
| 120 | +{ | ||
| 121 | + return -1; | ||
| 122 | +} | ||
| 123 | + | ||
| 124 | +int flip1_read_sig_bytes(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem) | ||
| 125 | +{ | ||
| 126 | + return -1; | ||
| 127 | +} | ||
| 128 | + | ||
| 129 | +void flip1_setup(PROGRAMMER * pgm) | ||
| 130 | +{ | ||
| 131 | +} | ||
| 132 | + | ||
| 133 | +void flip1_teardown(PROGRAMMER * pgm) | ||
| 134 | +{ | ||
| 135 | +} | ||
| 136 | + | ||
| 137 | + | ||
| 138 | +#endif /* HAVE_LIBUSB */ | ||
| 139 | \ No newline at end of file | ||
| 140 | |||
| 141 | diff --git a/flip2.c b/flip2.c | ||
| 142 | index ed8e996..16c4bf8 100644 | ||
| 143 | --- a/flip2.c | ||
| 144 | +++ b/flip2.c | ||
| 145 | @@ -151,6 +151,8 @@ static void flip2_setup(PROGRAMMER * pgm); | ||
| 146 | static void flip2_teardown(PROGRAMMER * pgm); | ||
| 147 | |||
| 148 | /* INTERNAL PROGRAMMER FUNCTION PROTOTYPES */ | ||
| 149 | +#ifdef HAVE_LIBUSB | ||
| 150 | +// The internal ones are made conditional, as they're not defined further down #ifndef HAVE_LIBUSB | ||
| 151 | |||
| 152 | static void flip2_show_info(struct flip2 *flip2); | ||
| 153 | |||
| 154 | @@ -171,6 +173,8 @@ static const char * flip2_status_str(const struct dfu_status *status); | ||
| 155 | static const char * flip2_mem_unit_str(enum flip2_mem_unit mem_unit); | ||
| 156 | static enum flip2_mem_unit flip2_mem_unit(const char *name); | ||
| 157 | |||
| 158 | +#endif /* HAVE_LIBUSB */ | ||
| 159 | + | ||
| 160 | /* THE INITPGM FUNCTION DEFINITIONS */ | ||
| 161 | |||
| 162 | void flip2_initpgm(PROGRAMMER *pgm) | ||
| 163 | @@ -195,6 +199,7 @@ void flip2_initpgm(PROGRAMMER *pgm) | ||
| 164 | pgm->teardown = flip2_teardown; | ||
| 165 | } | ||
| 166 | |||
| 167 | +#ifdef HAVE_LIBUSB | ||
| 168 | /* EXPORTED PROGRAMMER FUNCTION DEFINITIONS */ | ||
| 169 | |||
| 170 | int flip2_open(PROGRAMMER *pgm, char *port_spec) | ||
| 171 | @@ -922,3 +927,85 @@ enum flip2_mem_unit flip2_mem_unit(const char *name) { | ||
| 172 | return FLIP2_MEM_UNIT_SIGNATURE; | ||
| 173 | return FLIP2_MEM_UNIT_UNKNOWN; | ||
| 174 | } | ||
| 175 | + | ||
| 176 | +#else /* HAVE_LIBUSB */ | ||
| 177 | + | ||
| 178 | +/* EXPORTED PROGRAMMER FUNCTION DEFINITIONS */ | ||
| 179 | + | ||
| 180 | +int flip2_open(PROGRAMMER *pgm, char *port_spec) | ||
| 181 | +{ | ||
| 182 | + fprintf(stderr, "%s: Error: No USB support in this compile of avrdude\n", | ||
| 183 | + progname); | ||
| 184 | + return NULL; | ||
| 185 | +} | ||
| 186 | + | ||
| 187 | +int flip2_initialize(PROGRAMMER* pgm, AVRPART *part) | ||
| 188 | +{ | ||
| 189 | + return -1; | ||
| 190 | +} | ||
| 191 | + | ||
| 192 | +void flip2_close(PROGRAMMER* pgm) | ||
| 193 | +{ | ||
| 194 | +} | ||
| 195 | + | ||
| 196 | +void flip2_enable(PROGRAMMER* pgm) | ||
| 197 | +{ | ||
| 198 | +} | ||
| 199 | + | ||
| 200 | +void flip2_disable(PROGRAMMER* pgm) | ||
| 201 | +{ | ||
| 202 | +} | ||
| 203 | + | ||
| 204 | +void flip2_display(PROGRAMMER* pgm, const char *prefix) | ||
| 205 | +{ | ||
| 206 | +} | ||
| 207 | + | ||
| 208 | +int flip2_program_enable(PROGRAMMER* pgm, AVRPART *part) | ||
| 209 | +{ | ||
| 210 | + return -1; | ||
| 211 | +} | ||
| 212 | + | ||
| 213 | +int flip2_chip_erase(PROGRAMMER* pgm, AVRPART *part) | ||
| 214 | +{ | ||
| 215 | + return -1; | ||
| 216 | +} | ||
| 217 | + | ||
| 218 | +int flip2_read_byte(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem, | ||
| 219 | + unsigned long addr, unsigned char *value) | ||
| 220 | +{ | ||
| 221 | + return -1; | ||
| 222 | +} | ||
| 223 | + | ||
| 224 | +int flip2_write_byte(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem, | ||
| 225 | + unsigned long addr, unsigned char value) | ||
| 226 | +{ | ||
| 227 | + return -1; | ||
| 228 | +} | ||
| 229 | + | ||
| 230 | +int flip2_paged_load(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem, | ||
| 231 | + unsigned int page_size, unsigned int addr, unsigned int n_bytes) | ||
| 232 | +{ | ||
| 233 | + return -1; | ||
| 234 | +} | ||
| 235 | + | ||
| 236 | +int flip2_paged_write(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem, | ||
| 237 | + unsigned int page_size, unsigned int addr, unsigned int n_bytes) | ||
| 238 | +{ | ||
| 239 | + return -1; | ||
| 240 | +} | ||
| 241 | + | ||
| 242 | +int flip2_read_sig_bytes(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem) | ||
| 243 | +{ | ||
| 244 | + return -1; | ||
| 245 | +} | ||
| 246 | + | ||
| 247 | +void flip2_setup(PROGRAMMER * pgm) | ||
| 248 | +{ | ||
| 249 | +} | ||
| 250 | + | ||
| 251 | +void flip2_teardown(PROGRAMMER * pgm) | ||
| 252 | +{ | ||
| 253 | +} | ||
| 254 | + | ||
| 255 | + | ||
| 256 | +#endif /* HAVE_LIBUSB */ | ||
diff --git a/gnu/packages/patches/clang-3.8-libc-search-path.patch b/gnu/packages/patches/clang-3.8-libc-search-path.patch new file mode 100644 index 00000000000..0f7d0a4add4 --- /dev/null +++ b/gnu/packages/patches/clang-3.8-libc-search-path.patch | |||
| @@ -0,0 +1,69 @@ | |||
| 1 | Clang attempts to guess file names based on the OS and distro (yes!), | ||
| 2 | but unfortunately, that doesn't work for us. | ||
| 3 | |||
| 4 | This patch makes it easy to insert libc's $libdir so that Clang passes the | ||
| 5 | correct absolute file name of crt1.o etc. to 'ld'. It also disables all | ||
| 6 | the distro-specific stuff and removes the hard-coded FHS directory names | ||
| 7 | to make sure Clang also works on non-GuixSD systems. | ||
| 8 | |||
| 9 | This patch makes slight adjustments over "clang-libc-search-path.patch" for | ||
| 10 | changes in clang 3.8. | ||
| 11 | |||
| 12 | --- cfe-3.8.0.src/lib/Driver/ToolChains.cpp | ||
| 13 | +++ cfe-3.8.0.src/lib/Driver/ToolChains.cpp | ||
| 14 | @@ -3661,6 +3661,9 @@ | ||
| 15 | GCCInstallation.getTriple().str() + "/bin") | ||
| 16 | .str()); | ||
| 17 | |||
| 18 | + // Comment out the distro-specific tweaks so that they don't bite when | ||
| 19 | + // using Guix on a foreign distro. | ||
| 20 | +#if 0 | ||
| 21 | Distro Distro = DetectDistro(D, Arch); | ||
| 22 | |||
| 23 | if (IsOpenSUSE(Distro) || IsUbuntu(Distro)) { | ||
| 24 | @@ -3702,6 +3705,7 @@ | ||
| 25 | |||
| 26 | if (IsOpenSUSE(Distro)) | ||
| 27 | ExtraOpts.push_back("--enable-new-dtags"); | ||
| 28 | +#endif | ||
| 29 | |||
| 30 | // The selection of paths to try here is designed to match the patterns which | ||
| 31 | // the GCC driver itself uses, as this is part of the GCC-compatible driver. | ||
| 32 | @@ -3771,14 +3775,12 @@ | ||
| 33 | addPathIfExists(D, D.Dir + "/../" + OSLibDir, Paths); | ||
| 34 | } | ||
| 35 | |||
| 36 | - addPathIfExists(D, SysRoot + "/lib/" + MultiarchTriple, Paths); | ||
| 37 | - addPathIfExists(D, SysRoot + "/lib/../" + OSLibDir, Paths); | ||
| 38 | - addPathIfExists(D, SysRoot + "/usr/lib/" + MultiarchTriple, Paths); | ||
| 39 | - addPathIfExists(D, SysRoot + "/usr/lib/../" + OSLibDir, Paths); | ||
| 40 | - | ||
| 41 | // Try walking via the GCC triple path in case of biarch or multiarch GCC | ||
| 42 | // installations with strange symlinks. | ||
| 43 | if (GCCInstallation.isValid()) { | ||
| 44 | + // The following code would end up adding things like | ||
| 45 | + // "/usr/lib/x86_64-unknown-linux-gnu/../../lib64" to the search path. | ||
| 46 | +#if 0 | ||
| 47 | addPathIfExists(D, | ||
| 48 | SysRoot + "/usr/lib/" + GCCInstallation.getTriple().str() + | ||
| 49 | "/../../" + OSLibDir, | ||
| 50 | @@ -3791,6 +3793,7 @@ | ||
| 51 | BiarchSibling.gccSuffix(), | ||
| 52 | Paths); | ||
| 53 | } | ||
| 54 | +#endif | ||
| 55 | |||
| 56 | // See comments above on the multilib variant for details of why this is | ||
| 57 | // included even from outside the sysroot. | ||
| 58 | @@ -3815,8 +3818,9 @@ | ||
| 59 | if (StringRef(D.Dir).startswith(SysRoot)) | ||
| 60 | addPathIfExists(D, D.Dir + "/../lib", Paths); | ||
| 61 | |||
| 62 | - addPathIfExists(D, SysRoot + "/lib", Paths); | ||
| 63 | - addPathIfExists(D, SysRoot + "/usr/lib", Paths); | ||
| 64 | + // Add libc's lib/ directory to the search path, so that crt1.o, crti.o, | ||
| 65 | + // and friends can be found. | ||
| 66 | + addPathIfExists(D, "@GLIBC_LIBDIR@", Paths); | ||
| 67 | } | ||
| 68 | |||
| 69 | bool Linux::HasNativeLLVMSupport() const { return true; } | ||
diff --git a/gnu/packages/patches/gd-CVE-2016-5766.patch b/gnu/packages/patches/gd-CVE-2016-5766.patch new file mode 100644 index 00000000000..400cb0ab480 --- /dev/null +++ b/gnu/packages/patches/gd-CVE-2016-5766.patch | |||
| @@ -0,0 +1,81 @@ | |||
| 1 | Fix CVE-2016-5766 (Integer Overflow in _gd2GetHeader() resulting in heap | ||
| 2 | overflow). | ||
| 3 | |||
| 4 | https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-5766 | ||
| 5 | |||
| 6 | Adapted from upstream commits: | ||
| 7 | https://github.com/libgd/libgd/commit/aba3db8ba159465ecec1089027a24835a6da9cc0 | ||
| 8 | https://github.com/libgd/libgd/commit/a6a0e7feabb2a9738086a5dc96348f233c87fa79 | ||
| 9 | |||
| 10 | Since `patch` cannot apply Git binary diffs, we omit the addition of | ||
| 11 | 'tests/gd2/php_bug_72339.c' and its associated binary data. | ||
| 12 | |||
| 13 | From aba3db8ba159465ecec1089027a24835a6da9cc0 Mon Sep 17 00:00:00 2001 | ||
| 14 | From: Pierre Joye <pierre.php@gmail.com> | ||
| 15 | Date: Tue, 28 Jun 2016 16:23:42 +0700 | ||
| 16 | Subject: [PATCH] fix php bug 72339 (CVE-2016-5766), Integer Overflow in | ||
| 17 | _gd2GetHeader() resulting in heap overflow | ||
| 18 | |||
| 19 | --- | ||
| 20 | src/gd_gd2.c | 5 ++++- | ||
| 21 | tests/gd2/CMakeLists.txt | 1 + | ||
| 22 | tests/gd2/Makemodule.am | 6 ++++-- | ||
| 23 | tests/gd2/php_bug_72339.c | 21 +++++++++++++++++++++ | ||
| 24 | tests/gd2/php_bug_72339_exp.gd2 | Bin 0 -> 67108882 bytes | ||
| 25 | 5 files changed, 30 insertions(+), 3 deletions(-) | ||
| 26 | create mode 100644 tests/gd2/php_bug_72339.c | ||
| 27 | create mode 100644 tests/gd2/php_bug_72339_exp.gd2 | ||
| 28 | |||
| 29 | diff --git a/src/gd_gd2.c b/src/gd_gd2.c | ||
| 30 | index fd1e0c9..bdbbecf 100644 | ||
| 31 | --- a/src/gd_gd2.c | ||
| 32 | +++ b/src/gd_gd2.c | ||
| 33 | @@ -154,8 +154,11 @@ _gd2GetHeader (gdIOCtxPtr in, int *sx, int *sy, | ||
| 34 | nc = (*ncx) * (*ncy); | ||
| 35 | GD2_DBG (printf ("Reading %d chunk index entries\n", nc)); | ||
| 36 | sidx = sizeof (t_chunk_info) * nc; | ||
| 37 | + if (overflow2(sidx, nc)) { | ||
| 38 | + goto fail1; | ||
| 39 | + } | ||
| 40 | cidx = gdCalloc (sidx, 1); | ||
| 41 | - if (!cidx) { | ||
| 42 | + if (cidx == NULL) { | ||
| 43 | goto fail1; | ||
| 44 | } | ||
| 45 | for (i = 0; i < nc; i++) { | ||
| 46 | From a6a0e7feabb2a9738086a5dc96348f233c87fa79 Mon Sep 17 00:00:00 2001 | ||
| 47 | From: Pierre Joye <pierre.php@gmail.com> | ||
| 48 | Date: Wed, 29 Jun 2016 09:36:26 +0700 | ||
| 49 | Subject: [PATCH] fix php bug 72339 (CVE-2016-5766), Integer Overflow in | ||
| 50 | _gd2GetHeader() resulting in heap overflow. Sync with php's sync | ||
| 51 | |||
| 52 | --- | ||
| 53 | src/gd_gd2.c | 7 ++++++- | ||
| 54 | tests/gd2/php_bug_72339.c | 2 +- | ||
| 55 | 2 files changed, 7 insertions(+), 2 deletions(-) | ||
| 56 | |||
| 57 | diff --git a/src/gd_gd2.c b/src/gd_gd2.c | ||
| 58 | index bdbbecf..2837456 100644 | ||
| 59 | --- a/src/gd_gd2.c | ||
| 60 | +++ b/src/gd_gd2.c | ||
| 61 | @@ -152,11 +152,16 @@ _gd2GetHeader (gdIOCtxPtr in, int *sx, int *sy, | ||
| 62 | |||
| 63 | if (gd2_compressed (*fmt)) { | ||
| 64 | nc = (*ncx) * (*ncy); | ||
| 65 | + | ||
| 66 | GD2_DBG (printf ("Reading %d chunk index entries\n", nc)); | ||
| 67 | + if (overflow2(sizeof(t_chunk_info), nc)) { | ||
| 68 | + goto fail1; | ||
| 69 | + } | ||
| 70 | sidx = sizeof (t_chunk_info) * nc; | ||
| 71 | - if (overflow2(sidx, nc)) { | ||
| 72 | + if (sidx <= 0) { | ||
| 73 | goto fail1; | ||
| 74 | } | ||
| 75 | + | ||
| 76 | cidx = gdCalloc (sidx, 1); | ||
| 77 | if (cidx == NULL) { | ||
| 78 | goto fail1; | ||
| 79 | -- | ||
| 80 | 2.9.1 | ||
| 81 | |||
diff --git a/gnu/packages/patches/gd-CVE-2016-6128.patch b/gnu/packages/patches/gd-CVE-2016-6128.patch new file mode 100644 index 00000000000..45ee6b0cfa3 --- /dev/null +++ b/gnu/packages/patches/gd-CVE-2016-6128.patch | |||
| @@ -0,0 +1,253 @@ | |||
| 1 | Fix CVE-2016-6128 (invalid color index is not properly handled leading | ||
| 2 | to denial of service). | ||
| 3 | |||
| 4 | https://cve.mitre.org/cgi-bin/cvename.cgi?name=2016-6128 | ||
| 5 | |||
| 6 | Copied from upstream commits: | ||
| 7 | https://github.com/libgd/libgd/compare/3fe0a7128bac5000fdcfab888bd2a75ec0c9447d...fd623025505e87bba7ec8555eeb72dae4fb0afd | ||
| 8 | |||
| 9 | From 1ccfe21e14c4d18336f9da8515cd17db88c3de61 Mon Sep 17 00:00:00 2001 | ||
| 10 | From: Pierre Joye <pierre.php@gmail.com> | ||
| 11 | Date: Mon, 27 Jun 2016 11:17:39 +0700 | ||
| 12 | Subject: [PATCH 1/8] fix php 72494, invalid color index not handled, can lead | ||
| 13 | to crash | ||
| 14 | |||
| 15 | --- | ||
| 16 | src/gd_crop.c | 4 ++++ | ||
| 17 | tests/CMakeLists.txt | 1 + | ||
| 18 | tests/Makefile.am | 1 + | ||
| 19 | 3 files changed, 6 insertions(+) | ||
| 20 | |||
| 21 | diff --git a/src/gd_crop.c b/src/gd_crop.c | ||
| 22 | index 0296633..532b49b 100644 | ||
| 23 | --- a/src/gd_crop.c | ||
| 24 | +++ b/src/gd_crop.c | ||
| 25 | @@ -136,6 +136,10 @@ BGD_DECLARE(gdImagePtr) gdImageCropThreshold(gdImagePtr im, const unsigned int c | ||
| 26 | return NULL; | ||
| 27 | } | ||
| 28 | |||
| 29 | + if (color < 0 || (!gdImageTrueColor(im) && color >= gdImageColorsTotal(im))) { | ||
| 30 | + return NULL; | ||
| 31 | + } | ||
| 32 | + | ||
| 33 | /* TODO: Add gdImageGetRowPtr and works with ptr at the row level | ||
| 34 | * for the true color and palette images | ||
| 35 | * new formats will simply work with ptr | ||
| 36 | diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt | ||
| 37 | index 6f5c786..5093d52 100644 | ||
| 38 | --- a/tests/CMakeLists.txt | ||
| 39 | +++ b/tests/CMakeLists.txt | ||
| 40 | @@ -31,6 +31,7 @@ if (BUILD_TEST) | ||
| 41 | gdimagecolortransparent | ||
| 42 | gdimagecopy | ||
| 43 | gdimagecopyrotated | ||
| 44 | + gdimagecrop | ||
| 45 | gdimagefile | ||
| 46 | gdimagefill | ||
| 47 | gdimagefilledellipse | ||
| 48 | diff --git a/tests/Makefile.am b/tests/Makefile.am | ||
| 49 | index 4f6e756..5a0ebe8 100644 | ||
| 50 | --- a/tests/Makefile.am | ||
| 51 | +++ b/tests/Makefile.am | ||
| 52 | @@ -25,6 +25,7 @@ include gdimagecolorresolve/Makemodule.am | ||
| 53 | include gdimagecolortransparent/Makemodule.am | ||
| 54 | include gdimagecopy/Makemodule.am | ||
| 55 | include gdimagecopyrotated/Makemodule.am | ||
| 56 | +include gdimagecrop/Makemodule.am | ||
| 57 | include gdimagefile/Makemodule.am | ||
| 58 | include gdimagefill/Makemodule.am | ||
| 59 | include gdimagefilledellipse/Makemodule.am | ||
| 60 | -- | ||
| 61 | 2.9.1 | ||
| 62 | |||
| 63 | From 8c9f39c7cb1f62ea00bc7a48aff64d3811c2d6d0 Mon Sep 17 00:00:00 2001 | ||
| 64 | From: Pierre Joye <pierre.php@gmail.com> | ||
| 65 | Date: Mon, 27 Jun 2016 11:20:07 +0700 | ||
| 66 | Subject: [PATCH 2/8] fix php 72494, invalid color index not handled, can lead | ||
| 67 | to crash | ||
| 68 | |||
| 69 | --- | ||
| 70 | tests/gdimagecrop/.gitignore | 1 + | ||
| 71 | 1 file changed, 1 insertion(+) | ||
| 72 | create mode 100644 tests/gdimagecrop/.gitignore | ||
| 73 | |||
| 74 | diff --git a/tests/gdimagecrop/.gitignore b/tests/gdimagecrop/.gitignore | ||
| 75 | new file mode 100644 | ||
| 76 | index 0000000..8e8c9c3 | ||
| 77 | --- /dev/null | ||
| 78 | +++ b/tests/gdimagecrop/.gitignore | ||
| 79 | @@ -0,0 +1 @@ | ||
| 80 | +/php_bug_72494 | ||
| 81 | -- | ||
| 82 | 2.9.1 | ||
| 83 | |||
| 84 | From 8de370b7b6263a02268037a7cd13ddd991b43ea9 Mon Sep 17 00:00:00 2001 | ||
| 85 | From: Pierre Joye <pierre.php@gmail.com> | ||
| 86 | Date: Mon, 27 Jun 2016 11:24:50 +0700 | ||
| 87 | Subject: [PATCH 3/8] fix php 72494, invalid color index not handled, can lead | ||
| 88 | to crash | ||
| 89 | |||
| 90 | --- | ||
| 91 | tests/gdimagecrop/CMakeLists.txt | 5 +++++ | ||
| 92 | 1 file changed, 5 insertions(+) | ||
| 93 | create mode 100644 tests/gdimagecrop/CMakeLists.txt | ||
| 94 | |||
| 95 | diff --git a/tests/gdimagecrop/CMakeLists.txt b/tests/gdimagecrop/CMakeLists.txt | ||
| 96 | new file mode 100644 | ||
| 97 | index 0000000..f7e4c7e | ||
| 98 | --- /dev/null | ||
| 99 | +++ b/tests/gdimagecrop/CMakeLists.txt | ||
| 100 | @@ -0,0 +1,5 @@ | ||
| 101 | +SET(TESTS_FILES | ||
| 102 | + php_bug_72494 | ||
| 103 | +) | ||
| 104 | + | ||
| 105 | +ADD_GD_TESTS() | ||
| 106 | -- | ||
| 107 | 2.9.1 | ||
| 108 | |||
| 109 | From bca12e4e11ecda8a0ea719472700ad5c2b36a0d6 Mon Sep 17 00:00:00 2001 | ||
| 110 | From: Pierre Joye <pierre.php@gmail.com> | ||
| 111 | Date: Mon, 27 Jun 2016 11:25:12 +0700 | ||
| 112 | Subject: [PATCH 4/8] fix php 72494, invalid color index not handled, can lead | ||
| 113 | to crash | ||
| 114 | |||
| 115 | --- | ||
| 116 | tests/gdimagecrop/Makemodule.am | 5 +++++ | ||
| 117 | 1 file changed, 5 insertions(+) | ||
| 118 | create mode 100644 tests/gdimagecrop/Makemodule.am | ||
| 119 | |||
| 120 | diff --git a/tests/gdimagecrop/Makemodule.am b/tests/gdimagecrop/Makemodule.am | ||
| 121 | new file mode 100644 | ||
| 122 | index 0000000..210888b | ||
| 123 | --- /dev/null | ||
| 124 | +++ b/tests/gdimagecrop/Makemodule.am | ||
| 125 | @@ -0,0 +1,5 @@ | ||
| 126 | +libgd_test_programs += \ | ||
| 127 | + gdimagecrop/php_bug_72494 | ||
| 128 | + | ||
| 129 | +EXTRA_DIST += \ | ||
| 130 | + gdimagecrop/CMakeLists.txt | ||
| 131 | -- | ||
| 132 | 2.9.1 | ||
| 133 | |||
| 134 | From 6ff72ae40c7c20ece939afb362d98cc37f4a1c96 Mon Sep 17 00:00:00 2001 | ||
| 135 | From: Pierre Joye <pierre.php@gmail.com> | ||
| 136 | Date: Mon, 27 Jun 2016 11:25:40 +0700 | ||
| 137 | Subject: [PATCH 5/8] fix php 72494, invalid color index not handled, can lead | ||
| 138 | to crash | ||
| 139 | |||
| 140 | --- | ||
| 141 | tests/gdimagecrop/php_bug_72494.c | 23 +++++++++++++++++++++++ | ||
| 142 | 1 file changed, 23 insertions(+) | ||
| 143 | create mode 100644 tests/gdimagecrop/php_bug_72494.c | ||
| 144 | |||
| 145 | diff --git a/tests/gdimagecrop/php_bug_72494.c b/tests/gdimagecrop/php_bug_72494.c | ||
| 146 | new file mode 100644 | ||
| 147 | index 0000000..adaa379 | ||
| 148 | --- /dev/null | ||
| 149 | +++ b/tests/gdimagecrop/php_bug_72494.c | ||
| 150 | @@ -0,0 +1,23 @@ | ||
| 151 | +#include <stdio.h> | ||
| 152 | +#include <stdlib.h> | ||
| 153 | +#include "gd.h" | ||
| 154 | + | ||
| 155 | +#include "gdtest.h" | ||
| 156 | + | ||
| 157 | +int main() | ||
| 158 | +{ | ||
| 159 | + gdImagePtr im, exp; | ||
| 160 | + int error = 0; | ||
| 161 | + | ||
| 162 | + im = gdImageCreate(50, 50); | ||
| 163 | + | ||
| 164 | + if (!im) { | ||
| 165 | + gdTestErrorMsg("gdImageCreate failed.\n"); | ||
| 166 | + return 1; | ||
| 167 | + } | ||
| 168 | + | ||
| 169 | + gdImageCropThreshold(im, 1337, 0); | ||
| 170 | + gdImageDestroy(im); | ||
| 171 | + /* this bug tests a crash, it never reaches this point if the bug exists*/ | ||
| 172 | + return 0; | ||
| 173 | +} | ||
| 174 | -- | ||
| 175 | 2.9.1 | ||
| 176 | |||
| 177 | From a0f9f8f7bd0d3a6c6afd6d180b8e75d93aadddfa Mon Sep 17 00:00:00 2001 | ||
| 178 | From: Pierre Joye <pierre.php@gmail.com> | ||
| 179 | Date: Mon, 27 Jun 2016 11:38:07 +0700 | ||
| 180 | Subject: [PATCH 6/8] fix php 72494, CID 149753, color is unsigned int, remove | ||
| 181 | useless <0 comparison | ||
| 182 | |||
| 183 | --- | ||
| 184 | src/gd_crop.c | 2 +- | ||
| 185 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
| 186 | |||
| 187 | diff --git a/src/gd_crop.c b/src/gd_crop.c | ||
| 188 | index 532b49b..d51ad67 100644 | ||
| 189 | --- a/src/gd_crop.c | ||
| 190 | +++ b/src/gd_crop.c | ||
| 191 | @@ -136,7 +136,7 @@ BGD_DECLARE(gdImagePtr) gdImageCropThreshold(gdImagePtr im, const unsigned int c | ||
| 192 | return NULL; | ||
| 193 | } | ||
| 194 | |||
| 195 | - if (color < 0 || (!gdImageTrueColor(im) && color >= gdImageColorsTotal(im))) { | ||
| 196 | + if (!gdImageTrueColor(im) && color >= gdImageColorsTotal(im)) { | ||
| 197 | return NULL; | ||
| 198 | } | ||
| 199 | |||
| 200 | -- | ||
| 201 | 2.9.1 | ||
| 202 | |||
| 203 | From 907115fbb980862934d0de91af4977a216745039 Mon Sep 17 00:00:00 2001 | ||
| 204 | From: Pierre Joye <pierre.php@gmail.com> | ||
| 205 | Date: Mon, 27 Jun 2016 11:51:40 +0700 | ||
| 206 | Subject: [PATCH 7/8] fix php 72494, CID 149753, color is unsigned int, remove | ||
| 207 | useless <0 comparison | ||
| 208 | |||
| 209 | --- | ||
| 210 | tests/gdimagecrop/php_bug_72494.c | 2 +- | ||
| 211 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
| 212 | |||
| 213 | diff --git a/tests/gdimagecrop/php_bug_72494.c b/tests/gdimagecrop/php_bug_72494.c | ||
| 214 | index adaa379..5cb589b 100644 | ||
| 215 | --- a/tests/gdimagecrop/php_bug_72494.c | ||
| 216 | +++ b/tests/gdimagecrop/php_bug_72494.c | ||
| 217 | @@ -6,7 +6,7 @@ | ||
| 218 | |||
| 219 | int main() | ||
| 220 | { | ||
| 221 | - gdImagePtr im, exp; | ||
| 222 | + gdImagePtr im; | ||
| 223 | int error = 0; | ||
| 224 | |||
| 225 | im = gdImageCreate(50, 50); | ||
| 226 | -- | ||
| 227 | 2.9.1 | ||
| 228 | |||
| 229 | From fd623025505e87bba7ec8555eeb72dae4fb0afdc Mon Sep 17 00:00:00 2001 | ||
| 230 | From: Pierre Joye <pierre.php@gmail.com> | ||
| 231 | Date: Mon, 27 Jun 2016 12:04:25 +0700 | ||
| 232 | Subject: [PATCH 8/8] fix php 72494, CID 149753, color is unsigned int, remove | ||
| 233 | useless <0 comparison | ||
| 234 | |||
| 235 | --- | ||
| 236 | tests/gdimagecrop/php_bug_72494.c | 1 - | ||
| 237 | 1 file changed, 1 deletion(-) | ||
| 238 | |||
| 239 | diff --git a/tests/gdimagecrop/php_bug_72494.c b/tests/gdimagecrop/php_bug_72494.c | ||
| 240 | index 5cb589b..3bd19be 100644 | ||
| 241 | --- a/tests/gdimagecrop/php_bug_72494.c | ||
| 242 | +++ b/tests/gdimagecrop/php_bug_72494.c | ||
| 243 | @@ -7,7 +7,6 @@ | ||
| 244 | int main() | ||
| 245 | { | ||
| 246 | gdImagePtr im; | ||
| 247 | - int error = 0; | ||
| 248 | |||
| 249 | im = gdImageCreate(50, 50); | ||
| 250 | |||
| 251 | -- | ||
| 252 | 2.9.1 | ||
| 253 | |||
diff --git a/gnu/packages/patches/gd-CVE-2016-6132.patch b/gnu/packages/patches/gd-CVE-2016-6132.patch new file mode 100644 index 00000000000..4c475b71b29 --- /dev/null +++ b/gnu/packages/patches/gd-CVE-2016-6132.patch | |||
| @@ -0,0 +1,55 @@ | |||
| 1 | Fix CVE-2016-6132 (read out-of-bounds when parsing TGA files). | ||
| 2 | |||
| 3 | https://cve.mitre.org/cgi-bin/cvename.cgi?name=2016-6132 | ||
| 4 | |||
| 5 | Copied from upstream commit: | ||
| 6 | https://github.com/libgd/libgd/commit/ead349e99868303b37f5e6e9d9d680c9dc71ff8d | ||
| 7 | |||
| 8 | From ead349e99868303b37f5e6e9d9d680c9dc71ff8d Mon Sep 17 00:00:00 2001 | ||
| 9 | From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= <ondrej@sury.org> | ||
| 10 | Date: Tue, 12 Jul 2016 11:24:09 +0200 | ||
| 11 | Subject: [PATCH] Fix #247, A read out-of-bands was found in the parsing of TGA | ||
| 12 | files (CVE-2016-6132) | ||
| 13 | |||
| 14 | --- | ||
| 15 | src/gd_tga.c | 13 +++++++++++-- | ||
| 16 | 1 file changed, 11 insertions(+), 2 deletions(-) | ||
| 17 | |||
| 18 | diff --git a/src/gd_tga.c b/src/gd_tga.c | ||
| 19 | index ef20f86..20fe2d2 100644 | ||
| 20 | --- a/src/gd_tga.c | ||
| 21 | +++ b/src/gd_tga.c | ||
| 22 | @@ -237,7 +237,11 @@ int read_image_tga( gdIOCtx *ctx, oTga *tga ) | ||
| 23 | return -1; | ||
| 24 | } | ||
| 25 | |||
| 26 | - gdGetBuf(conversion_buffer, image_block_size, ctx); | ||
| 27 | + if (gdGetBuf(conversion_buffer, image_block_size, ctx) != image_block_size) { | ||
| 28 | + gd_error("gd-tga: premature end of image data\n"); | ||
| 29 | + gdFree(conversion_buffer); | ||
| 30 | + return -1; | ||
| 31 | + } | ||
| 32 | |||
| 33 | while (buffer_caret < image_block_size) { | ||
| 34 | tga->bitmap[buffer_caret] = (int) conversion_buffer[buffer_caret]; | ||
| 35 | @@ -257,11 +261,16 @@ int read_image_tga( gdIOCtx *ctx, oTga *tga ) | ||
| 36 | } | ||
| 37 | conversion_buffer = (unsigned char *) gdMalloc(image_block_size * sizeof(unsigned char)); | ||
| 38 | if (conversion_buffer == NULL) { | ||
| 39 | + gd_error("gd-tga: premature end of image data\n"); | ||
| 40 | gdFree( decompression_buffer ); | ||
| 41 | return -1; | ||
| 42 | } | ||
| 43 | |||
| 44 | - gdGetBuf( conversion_buffer, image_block_size, ctx ); | ||
| 45 | + if (gdGetBuf(conversion_buffer, image_block_size, ctx) != image_block_size) { | ||
| 46 | + gdFree(conversion_buffer); | ||
| 47 | + gdFree(decompression_buffer); | ||
| 48 | + return -1; | ||
| 49 | + } | ||
| 50 | |||
| 51 | buffer_caret = 0; | ||
| 52 | |||
| 53 | -- | ||
| 54 | 2.9.1 | ||
| 55 | |||
diff --git a/gnu/packages/patches/gd-CVE-2016-6214.patch b/gnu/packages/patches/gd-CVE-2016-6214.patch new file mode 100644 index 00000000000..7894a32bb11 --- /dev/null +++ b/gnu/packages/patches/gd-CVE-2016-6214.patch | |||
| @@ -0,0 +1,66 @@ | |||
| 1 | Fix CVE-2016-6214 (read out-of-bounds when parsing TGA files). | ||
| 2 | |||
| 3 | https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6214 | ||
| 4 | |||
| 5 | Adapted from upstream commit: | ||
| 6 | https://github.com/libgd/libgd/commit/341aa68843ceceae9ba6e083431f14a07bd92308 | ||
| 7 | |||
| 8 | Since `patch` cannot apply Git binary diffs, we omit the addition of | ||
| 9 | 'tests/tga/bug00247a.c' and its associated binary data. | ||
| 10 | |||
| 11 | From 341aa68843ceceae9ba6e083431f14a07bd92308 Mon Sep 17 00:00:00 2001 | ||
| 12 | From: "Christoph M. Becker" <cmbecker69@gmx.de> | ||
| 13 | Date: Tue, 12 Jul 2016 19:23:13 +0200 | ||
| 14 | Subject: [PATCH] Unsupported TGA bpp/alphabit combinations should error | ||
| 15 | gracefully | ||
| 16 | |||
| 17 | Currently, only 24bpp without alphabits and 32bpp with 8 alphabits are | ||
| 18 | really supported. All other combinations will be rejected with a warning. | ||
| 19 | |||
| 20 | (cherry picked from commit cb1a0b7e54e9aa118270c23a4a6fe560e4590dc9) | ||
| 21 | --- | ||
| 22 | src/gd_tga.c | 16 ++++++---------- | ||
| 23 | tests/tga/.gitignore | 1 + | ||
| 24 | tests/tga/CMakeLists.txt | 1 + | ||
| 25 | tests/tga/Makemodule.am | 4 +++- | ||
| 26 | tests/tga/bug00247a.c | 19 +++++++++++++++++++ | ||
| 27 | tests/tga/bug00247a.tga | Bin 0 -> 36 bytes | ||
| 28 | 6 files changed, 30 insertions(+), 11 deletions(-) | ||
| 29 | create mode 100644 tests/tga/bug00247a.c | ||
| 30 | create mode 100644 tests/tga/bug00247a.tga | ||
| 31 | |||
| 32 | diff --git a/src/gd_tga.c b/src/gd_tga.c | ||
| 33 | index 20fe2d2..b4f8fa6 100644 | ||
| 34 | --- a/src/gd_tga.c | ||
| 35 | +++ b/src/gd_tga.c | ||
| 36 | @@ -99,7 +99,7 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromTgaCtx(gdIOCtx* ctx) | ||
| 37 | if (tga->bits == TGA_BPP_24) { | ||
| 38 | *tpix = gdTrueColor(tga->bitmap[bitmap_caret + 2], tga->bitmap[bitmap_caret + 1], tga->bitmap[bitmap_caret]); | ||
| 39 | bitmap_caret += 3; | ||
| 40 | - } else if (tga->bits == TGA_BPP_32 || tga->alphabits) { | ||
| 41 | + } else if (tga->bits == TGA_BPP_32 && tga->alphabits) { | ||
| 42 | register int a = tga->bitmap[bitmap_caret + 3]; | ||
| 43 | |||
| 44 | *tpix = gdTrueColorAlpha(tga->bitmap[bitmap_caret + 2], tga->bitmap[bitmap_caret + 1], tga->bitmap[bitmap_caret], gdAlphaMax - (a >> 1)); | ||
| 45 | @@ -159,16 +159,12 @@ int read_header_tga(gdIOCtx *ctx, oTga *tga) | ||
| 46 | printf("wxh: %i %i\n", tga->width, tga->height); | ||
| 47 | #endif | ||
| 48 | |||
| 49 | - switch(tga->bits) { | ||
| 50 | - case 8: | ||
| 51 | - case 16: | ||
| 52 | - case 24: | ||
| 53 | - case 32: | ||
| 54 | - break; | ||
| 55 | - default: | ||
| 56 | - gd_error("bps %i not supported", tga->bits); | ||
| 57 | + if (!((tga->bits == TGA_BPP_24 && tga->alphabits == 0) | ||
| 58 | + || (tga->bits == TGA_BPP_32 && tga->alphabits == 8))) | ||
| 59 | + { | ||
| 60 | + gd_error_ex(GD_WARNING, "gd-tga: %u bits per pixel with %u alpha bits not supported\n", | ||
| 61 | + tga->bits, tga->alphabits); | ||
| 62 | return -1; | ||
| 63 | - break; | ||
| 64 | } | ||
| 65 | |||
| 66 | tga->ident = NULL; | ||
diff --git a/gnu/packages/patches/gd-fix-test-on-i686.patch b/gnu/packages/patches/gd-fix-test-on-i686.patch new file mode 100644 index 00000000000..6dd2e0fb032 --- /dev/null +++ b/gnu/packages/patches/gd-fix-test-on-i686.patch | |||
| @@ -0,0 +1,34 @@ | |||
| 1 | Disable part of the gdimagerotate test on architectures such as i686 | ||
| 2 | where intermediate floating-point operations are done with 80-bit long | ||
| 3 | doubles, and typically later rounded to 64-bit doubles. This double | ||
| 4 | rounding causes small differences in the resulting pixel values | ||
| 5 | compared with other architectures, causing the image comparison to | ||
| 6 | fail. | ||
| 7 | |||
| 8 | Patch by Mark H Weaver <mhw@netris.org>. | ||
| 9 | |||
| 10 | --- libgd-2.2.2/tests/gdimagerotate/bug00067.c 1969-12-31 19:00:00.000000000 -0500 | ||
| 11 | +++ libgd-2.2.2/tests/gdimagerotate/bug00067.c 2016-07-18 12:19:19.885423132 -0400 | ||
| 12 | @@ -1,5 +1,6 @@ | ||
| 13 | #include <stdio.h> | ||
| 14 | #include <stdlib.h> | ||
| 15 | +#include <float.h> | ||
| 16 | #include "gd.h" | ||
| 17 | |||
| 18 | #include "gdtest.h" | ||
| 19 | @@ -41,6 +42,7 @@ | ||
| 20 | return 1; | ||
| 21 | } | ||
| 22 | |||
| 23 | +#if FLT_EVAL_METHOD != 2 | ||
| 24 | sprintf(filename, "bug00067_%03d_exp.png", angle); | ||
| 25 | path = gdTestFilePath2("gdimagerotate", filename); | ||
| 26 | if (!gdAssertImageEqualsToFile(path, exp)) { | ||
| 27 | @@ -48,6 +50,7 @@ | ||
| 28 | error += 1; | ||
| 29 | } | ||
| 30 | free(path); | ||
| 31 | +#endif | ||
| 32 | |||
| 33 | gdImageDestroy(exp); | ||
| 34 | } | ||
diff --git a/gnu/packages/patches/gimp-CVE-2016-4994.patch b/gnu/packages/patches/gimp-CVE-2016-4994.patch new file mode 100644 index 00000000000..6c81c63386c --- /dev/null +++ b/gnu/packages/patches/gimp-CVE-2016-4994.patch | |||
| @@ -0,0 +1,96 @@ | |||
| 1 | Fix CVE-2016-4994: | ||
| 2 | https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-4994 | ||
| 3 | |||
| 4 | Copied from upstream repository: | ||
| 5 | https://git.gnome.org/browse/gimp/patch/?id=e82aaa4b4ee0703c879e35ea9321fff6be3e9b6f | ||
| 6 | |||
| 7 | From e82aaa4b4ee0703c879e35ea9321fff6be3e9b6f Mon Sep 17 00:00:00 2001 | ||
| 8 | From: Shmuel H <shmuelgimp@gmail.com> | ||
| 9 | Date: Mon, 20 Jun 2016 17:14:41 +0300 | ||
| 10 | Subject: Bug 767873 - (CVE-2016-4994) Multiple Use-After-Free when parsing... | ||
| 11 | |||
| 12 | ...XCF channel and layer properties | ||
| 13 | |||
| 14 | The properties PROP_ACTIVE_LAYER, PROP_FLOATING_SELECTION, | ||
| 15 | PROP_ACTIVE_CHANNEL saves the current object pointer the @info | ||
| 16 | structure. Others like PROP_SELECTION (for channel) and | ||
| 17 | PROP_GROUP_ITEM (for layer) will delete the current object and create | ||
| 18 | a new object, leaving the pointers in @info invalid (dangling). | ||
| 19 | |||
| 20 | Therefore, if a property from the first type will come before the | ||
| 21 | second, the result will be an UaF in the last lines of xcf_load_image | ||
| 22 | (when it actually using the pointers from @info). | ||
| 23 | |||
| 24 | I wasn't able to exploit this bug because that | ||
| 25 | g_object_instance->c_class gets cleared by the last g_object_unref and | ||
| 26 | GIMP_IS_{LAYER,CHANNEL} detects that and return FALSE. | ||
| 27 | |||
| 28 | (cherry picked from commit 6d804bf9ae77bc86a0a97f9b944a129844df9395) | ||
| 29 | --- | ||
| 30 | app/xcf/xcf-load.c | 29 +++++++++++++++++++++++++++++ | ||
| 31 | 1 file changed, 29 insertions(+) | ||
| 32 | |||
| 33 | diff --git a/app/xcf/xcf-load.c b/app/xcf/xcf-load.c | ||
| 34 | index b180377..67cc6d4 100644 | ||
| 35 | --- a/app/xcf/xcf-load.c | ||
| 36 | +++ b/app/xcf/xcf-load.c | ||
| 37 | @@ -904,6 +904,18 @@ xcf_load_layer_props (XcfInfo *info, | ||
| 38 | case PROP_GROUP_ITEM: | ||
| 39 | { | ||
| 40 | GimpLayer *group; | ||
| 41 | + gboolean is_active_layer; | ||
| 42 | + | ||
| 43 | + /* We're going to delete *layer, Don't leave its pointers | ||
| 44 | + * in @info. After that, we'll restore them back with the | ||
| 45 | + * new pointer. See bug #767873. | ||
| 46 | + */ | ||
| 47 | + is_active_layer = (*layer == info->active_layer); | ||
| 48 | + if (is_active_layer) | ||
| 49 | + info->active_layer = NULL; | ||
| 50 | + | ||
| 51 | + if (*layer == info->floating_sel) | ||
| 52 | + info->floating_sel = NULL; | ||
| 53 | |||
| 54 | group = gimp_group_layer_new (image); | ||
| 55 | |||
| 56 | @@ -916,6 +928,13 @@ xcf_load_layer_props (XcfInfo *info, | ||
| 57 | g_object_ref_sink (*layer); | ||
| 58 | g_object_unref (*layer); | ||
| 59 | *layer = group; | ||
| 60 | + | ||
| 61 | + if (is_active_layer) | ||
| 62 | + info->active_layer = *layer; | ||
| 63 | + | ||
| 64 | + /* Don't restore info->floating_sel because group layers | ||
| 65 | + * can't be floating selections | ||
| 66 | + */ | ||
| 67 | } | ||
| 68 | break; | ||
| 69 | |||
| 70 | @@ -986,6 +1005,12 @@ xcf_load_channel_props (XcfInfo *info, | ||
| 71 | { | ||
| 72 | GimpChannel *mask; | ||
| 73 | |||
| 74 | + /* We're going to delete *channel, Don't leave its pointer | ||
| 75 | + * in @info. See bug #767873. | ||
| 76 | + */ | ||
| 77 | + if (*channel == info->active_channel) | ||
| 78 | + info->active_channel = NULL; | ||
| 79 | + | ||
| 80 | mask = | ||
| 81 | gimp_selection_new (image, | ||
| 82 | gimp_item_get_width (GIMP_ITEM (*channel)), | ||
| 83 | @@ -1000,6 +1025,10 @@ xcf_load_channel_props (XcfInfo *info, | ||
| 84 | *channel = mask; | ||
| 85 | (*channel)->boundary_known = FALSE; | ||
| 86 | (*channel)->bounds_known = FALSE; | ||
| 87 | + | ||
| 88 | + /* Don't restore info->active_channel because the | ||
| 89 | + * selection can't be the active channel | ||
| 90 | + */ | ||
| 91 | } | ||
| 92 | break; | ||
| 93 | |||
| 94 | -- | ||
| 95 | cgit v0.12 | ||
| 96 | |||
diff --git a/gnu/packages/patches/khmer-use-libraries.patch b/gnu/packages/patches/khmer-use-libraries.patch new file mode 100644 index 00000000000..47d163a99a2 --- /dev/null +++ b/gnu/packages/patches/khmer-use-libraries.patch | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | Change setup.cfg so that the bundled zlib and bzip2 are not used. This cannot | ||
| 2 | currently be achieved using "--library z,bz2" as instructed in the setup.py. | ||
| 3 | |||
| 4 | diff --git a/setup.cfg b/setup.cfg | ||
| 5 | index c054092..080992e 100644 | ||
| 6 | --- a/setup.cfg | ||
| 7 | +++ b/setup.cfg | ||
| 8 | @@ -1,7 +1,7 @@ | ||
| 9 | [build_ext] | ||
| 10 | define = SEQAN_HAS_BZIP2,SEQAN_HAS_ZLIB | ||
| 11 | undef = NO_UNIQUE_RC | ||
| 12 | -# libraries = z,bz2 | ||
| 13 | +libraries = z,bz2 | ||
| 14 | ## if using system libraries | ||
| 15 | include-dirs = lib:third-party/zlib:third-party/bzip2:third-party/seqan/core/include:third-party/smhasher | ||
| 16 | # include-dirs = lib | ||
diff --git a/gnu/packages/patches/libmtp-devices.patch b/gnu/packages/patches/libmtp-devices.patch deleted file mode 100644 index 9b985e526d2..00000000000 --- a/gnu/packages/patches/libmtp-devices.patch +++ /dev/null | |||
| @@ -1,554 +0,0 @@ | |||
| 1 | Add additional devices; the patched file corresponds to git commit 8e471b, | ||
| 2 | to which one additional device has been added as reported at | ||
| 3 | http://sourceforge.net/p/libmtp/bugs/1422/ | ||
| 4 | |||
| 5 | diff -u -r libmtp-1.1.9.orig/src/music-players.h libmtp-1.1.9/src/music-players.h | ||
| 6 | --- libmtp-1.1.9.orig/src/music-players.h 2015-09-19 22:54:24.537330594 +0200 | ||
| 7 | +++ libmtp-1.1.9/src/music-players.h 2015-09-19 23:16:41.079206331 +0200 | ||
| 8 | @@ -47,82 +47,61 @@ | ||
| 9 | * and properties. | ||
| 10 | */ | ||
| 11 | { "Creative", 0x041e, "ZEN Vision", 0x411f, | ||
| 12 | - DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | | ||
| 13 | - DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL }, | ||
| 14 | + DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, | ||
| 15 | { "Creative", 0x041e, "Portable Media Center", 0x4123, | ||
| 16 | - DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | | ||
| 17 | - DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL }, | ||
| 18 | + DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, | ||
| 19 | { "Creative", 0x041e, "ZEN Xtra (MTP mode)", 0x4128, | ||
| 20 | - DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | | ||
| 21 | - DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL }, | ||
| 22 | + DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, | ||
| 23 | { "Dell", 0x041e, "DJ (2nd generation)", 0x412f, | ||
| 24 | - DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | | ||
| 25 | - DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL }, | ||
| 26 | + DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, | ||
| 27 | { "Creative", 0x041e, "ZEN Micro (MTP mode)", 0x4130, | ||
| 28 | - DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | | ||
| 29 | - DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL }, | ||
| 30 | + DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, | ||
| 31 | { "Creative", 0x041e, "ZEN Touch (MTP mode)", 0x4131, | ||
| 32 | - DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | | ||
| 33 | - DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL }, | ||
| 34 | + DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, | ||
| 35 | { "Dell", 0x041e, "Dell Pocket DJ (MTP mode)", 0x4132, | ||
| 36 | - DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | | ||
| 37 | - DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL }, | ||
| 38 | - { "Creative", 0x041e, "ZEN MicroPhoto (alternate version)", 0x4133, | ||
| 39 | - DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | | ||
| 40 | - DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL }, | ||
| 41 | + DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, | ||
| 42 | + { "Creative", 0x041e, "ZEN MicroPhoto (alternate version)", 0x4133, | ||
| 43 | + DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, | ||
| 44 | { "Creative", 0x041e, "ZEN Sleek (MTP mode)", 0x4137, | ||
| 45 | - DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | | ||
| 46 | - DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL }, | ||
| 47 | + DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, | ||
| 48 | { "Creative", 0x041e, "ZEN MicroPhoto", 0x413c, | ||
| 49 | - DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | | ||
| 50 | - DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL }, | ||
| 51 | + DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, | ||
| 52 | { "Creative", 0x041e, "ZEN Sleek Photo", 0x413d, | ||
| 53 | - DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | | ||
| 54 | - DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL }, | ||
| 55 | + DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, | ||
| 56 | { "Creative", 0x041e, "ZEN Vision:M", 0x413e, | ||
| 57 | - DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | | ||
| 58 | - DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL }, | ||
| 59 | + DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, | ||
| 60 | // Reported by marazm@o2.pl | ||
| 61 | { "Creative", 0x041e, "ZEN V", 0x4150, | ||
| 62 | - DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | | ||
| 63 | - DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL }, | ||
| 64 | + DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, | ||
| 65 | // Reported by danielw@iinet.net.au | ||
| 66 | // This version of the Vision:M needs the no release interface flag, | ||
| 67 | // unclear whether the other version above need it too or not. | ||
| 68 | { "Creative", 0x041e, "ZEN Vision:M (DVP-HD0004)", 0x4151, | ||
| 69 | DEVICE_FLAG_NO_RELEASE_INTERFACE | | ||
| 70 | - DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | | ||
| 71 | - DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL }, | ||
| 72 | + DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, | ||
| 73 | // Reported by Darel on the XNJB forums | ||
| 74 | { "Creative", 0x041e, "ZEN V Plus", 0x4152, | ||
| 75 | - DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | | ||
| 76 | - DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL }, | ||
| 77 | + DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, | ||
| 78 | { "Creative", 0x041e, "ZEN Vision W", 0x4153, | ||
| 79 | - DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | | ||
| 80 | - DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL }, | ||
| 81 | + DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, | ||
| 82 | // Don't add 0x4155: this is a Zen Stone device which is not MTP | ||
| 83 | // Reported by Paul Kurczaba <paul@kurczaba.com> | ||
| 84 | { "Creative", 0x041e, "ZEN", 0x4157, | ||
| 85 | DEVICE_FLAG_IGNORE_HEADER_ERRORS | | ||
| 86 | DEVICE_FLAG_BROKEN_SET_SAMPLE_DIMENSIONS | | ||
| 87 | - DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | | ||
| 88 | - DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL }, | ||
| 89 | + DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, | ||
| 90 | // Reported by Ringofan <mcroman@users.sourceforge.net> | ||
| 91 | { "Creative", 0x041e, "ZEN V 2GB", 0x4158, | ||
| 92 | - DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | | ||
| 93 | - DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL }, | ||
| 94 | + DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, | ||
| 95 | // Reported by j norment <stormzen@gmail.com> | ||
| 96 | { "Creative", 0x041e, "ZEN Mozaic", 0x4161, | ||
| 97 | - DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | | ||
| 98 | - DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL }, | ||
| 99 | + DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, | ||
| 100 | // Reported by Aaron F. Gonzalez <sub_tex@users.sourceforge.net> | ||
| 101 | { "Creative", 0x041e, "ZEN X-Fi", 0x4162, | ||
| 102 | - DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | | ||
| 103 | - DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL }, | ||
| 104 | + DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, | ||
| 105 | // Reported by farmerstimuli <farmerstimuli@users.sourceforge.net> | ||
| 106 | { "Creative", 0x041e, "ZEN X-Fi 3", 0x4169, | ||
| 107 | - DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL | | ||
| 108 | - DEVICE_FLAG_BROKEN_GET_OBJECT_PROPVAL }, | ||
| 109 | + DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST_ALL }, | ||
| 110 | // Reported by Todor Gyumyushev <yodor1@users.sourceforge.net> | ||
| 111 | { "ZiiLABS", 0x041e, "Zii EGG", 0x6000, | ||
| 112 | DEVICE_FLAG_UNLOAD_DRIVER | | ||
| 113 | @@ -607,8 +586,17 @@ | ||
| 114 | /* https://sourceforge.net/p/libmtp/bugs/1251/ */ | ||
| 115 | { "Acer", 0x0502, "E39", 0x3643, | ||
| 116 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 117 | + /* https://sourceforge.net/p/libmtp/bugs/1369/ */ | ||
| 118 | + { "Acer", 0x0502, "liquid e700", 0x3644, | ||
| 119 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 120 | { "Acer", 0x0502, "One 7", 0x3657, | ||
| 121 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 122 | + /* https://sourceforge.net/p/libmtp/support-requests/183/ */ | ||
| 123 | + { "Acer", 0x0502, "Z200", 0x3683, | ||
| 124 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 125 | + /* https://sourceforge.net/p/libmtp/bugs/1341/ */ | ||
| 126 | + { "Acer", 0x0502, "Liquid S56", 0x3725, | ||
| 127 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 128 | |||
| 129 | /* | ||
| 130 | * SanDisk | ||
| 131 | @@ -952,6 +940,7 @@ | ||
| 132 | { "Archos", 0x0e79, "SPOD (MTP mode)", 0x1341, DEVICE_FLAG_UNLOAD_DRIVER }, | ||
| 133 | { "Archos", 0x0e79, "5S IT (MTP mode)", 0x1351, DEVICE_FLAG_UNLOAD_DRIVER }, | ||
| 134 | { "Archos", 0x0e79, "5H IT (MTP mode)", 0x1357, DEVICE_FLAG_UNLOAD_DRIVER }, | ||
| 135 | + { "Archos", 0x0e79, "48 (MTP mode)", 0x1421, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 136 | { "Archos", 0x0e79, "Arnova Childpad", 0x1458, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 137 | { "Archos", 0x0e79, "Arnova 8c G3", 0x145e, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 138 | { "Archos", 0x0e79, "Arnova 10bG3 Tablet", 0x146b, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 139 | @@ -973,9 +962,17 @@ | ||
| 140 | { "Archos", 0x0e79, "70it2 (ID 2)", 0x1569, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 141 | { "Archos", 0x0e79, "50c", 0x2008, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 142 | { "Archos", 0x0e79, "C40", 0x31ab, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 143 | + /* https://sourceforge.net/p/libmtp/bugs/1393/ */ | ||
| 144 | + { "Archos", 0x0e79, "Phone", 0x31e1, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 145 | + /* https://sourceforge.net/p/libmtp/bugs/1325/ */ | ||
| 146 | + { "Archos", 0x0e79, "45 Neon", 0x31f3, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 147 | + /* https://sourceforge.net/p/libmtp/bugs/1352/ */ | ||
| 148 | + { "Archos", 0x0e79, "50 Diamond", 0x3229, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 149 | { "Archos", 0x0e79, "101 G4", 0x4002, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 150 | { "Archos (for Tesco)", 0x0e79, "Hudl (ID1)", 0x5008, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 151 | { "Archos (for Tesco)", 0x0e79, "Hudl (ID2)", 0x5009, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 152 | + /* https://sourceforge.net/p/libmtp/bugs/1404/ */ | ||
| 153 | + { "Archos", 0x0e79, "AC40DTI", 0x5217, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 154 | |||
| 155 | /* | ||
| 156 | * Dunlop (OEM of EGOMAN ltd?) reported by Nanomad | ||
| 157 | @@ -1181,6 +1178,10 @@ | ||
| 158 | { "Qualcomm (for OnePlus)", 0x05c6, "One (MTP+ADB)", | ||
| 159 | 0x6765, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 160 | |||
| 161 | + /* https://sourceforge.net/p/libmtp/bugs/1377/ */ | ||
| 162 | + { "Qualcomm (for Xolo)", 0x901b, "Xolo Black (MTP)", | ||
| 163 | + 0x9039, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 164 | + | ||
| 165 | { "Qualcomm (for PhiComm)", 0x05c6, "C230w (MTP)", | ||
| 166 | 0x9039, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 167 | |||
| 168 | @@ -1221,6 +1222,9 @@ | ||
| 169 | // Reported by Thomas Bretthauer | ||
| 170 | { "Fujitsu, Ltd", 0x04c5, "STYLISTIC M532", 0x133b, | ||
| 171 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 172 | + /* https://sourceforge.net/p/libmtp/feature-requests/137/ */ | ||
| 173 | + { "Fujitsu, Ltd", 0x04c5, "F02-E", 0x1378, | ||
| 174 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 175 | |||
| 176 | /* | ||
| 177 | * Palm device userland program named Pocket Tunes | ||
| 178 | @@ -1247,6 +1251,9 @@ | ||
| 179 | // Reported by anonymous SourceForge user | ||
| 180 | { "Medion", 0x066f, "MD8333 (ID2)", 0x8588, | ||
| 181 | DEVICE_FLAG_UNLOAD_DRIVER | DEVICE_FLAG_BROKEN_MTPGETOBJPROPLIST }, | ||
| 182 | + /* https://sourceforge.net/p/libmtp/bugs/1359/ */ | ||
| 183 | + { "Verizon", 0x0408, "Ellipsis 7", 0x3899, | ||
| 184 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 185 | // The vendor ID is "Quanta Computer, Inc." | ||
| 186 | // same as Olivetti Olipad 110 | ||
| 187 | // Guessing on device flags | ||
| 188 | @@ -1403,6 +1410,9 @@ | ||
| 189 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 190 | { "LG Electronics Inc.", 0x1004, "LG2 Optimus", 0x6225, | ||
| 191 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 192 | + /* https://sourceforge.net/p/libmtp/bugs/1386/ */ | ||
| 193 | + { "LG Electronics Inc.", 0x1004, "LG VS950", 0x622a, | ||
| 194 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 195 | { "LG Electronics Inc.", 0x1004, "LG VS870", 0x6239, | ||
| 196 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 197 | /* https://sourceforge.net/p/libmtp/bugs/992/ */ | ||
| 198 | @@ -1410,6 +1420,8 @@ | ||
| 199 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 200 | { "LG Electronics Inc.", 0x1004, "VK810", 0x6265, | ||
| 201 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 202 | + { "LG Electronics Inc.", 0x1004, "G3", 0x627f, | ||
| 203 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 204 | /* https://sourceforge.net/p/libmtp/support-requests/134/ */ | ||
| 205 | { "LG Electronics Inc.", 0x1004, "G3 (VS985)", 0x626e, | ||
| 206 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 207 | @@ -1723,8 +1735,12 @@ | ||
| 208 | DEVICE_FLAG_NONE }, | ||
| 209 | { "SONY", 0x0fce, "Xperia M2 MTP", 0x01aa, | ||
| 210 | DEVICE_FLAG_NONE }, | ||
| 211 | + { "SONY", 0x0fce, "Xperia M2 Dual MTP", 0x01ab, | ||
| 212 | + DEVICE_FLAG_NONE }, | ||
| 213 | { "SONY", 0x0fce, "Xperia Z2 MTP", 0x01af, | ||
| 214 | DEVICE_FLAG_NONE }, | ||
| 215 | + { "SONY", 0x0fce, "Xperia Z2 Tablet MTP", 0x01b1, | ||
| 216 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 217 | { "SONY", 0x0fce, "Xperia Z Ultra MTP", 0x01b6, | ||
| 218 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 219 | { "SONY", 0x0fce, "Xperia Z3 MTP", 0x01ba, | ||
| 220 | @@ -1733,6 +1749,10 @@ | ||
| 221 | DEVICE_FLAG_NONE }, | ||
| 222 | { "SONY", 0x0fce, "Xperia E3 MTP", 0x01bc, | ||
| 223 | DEVICE_FLAG_NONE }, | ||
| 224 | + { "SONY", 0x0fce, "XPeria Z3+ MTP", 0x01c9, | ||
| 225 | + DEVICE_FLAG_NONE }, | ||
| 226 | + { "SONY", 0x0fce, "XPeria E4g MTP", 0x01cb, | ||
| 227 | + DEVICE_FLAG_NONE }, | ||
| 228 | |||
| 229 | |||
| 230 | /* | ||
| 231 | @@ -1788,6 +1808,8 @@ | ||
| 232 | DEVICE_FLAG_NONE }, | ||
| 233 | { "SONY", 0x0fce, "Xperia M MTP+CDROM", 0x419b, | ||
| 234 | DEVICE_FLAG_NONE }, | ||
| 235 | + { "SONY", 0x0fce, "Xperia Z Ultra MTP+CDROM (ID3)", 0x419c, | ||
| 236 | + DEVICE_FLAG_NONE }, | ||
| 237 | { "SONY", 0x0fce, "Xperia Z1 MTP+CDROM", 0x419e, | ||
| 238 | DEVICE_FLAG_NONE }, | ||
| 239 | { "SONY", 0x0fce, "Xperia C MTP+CDROM", 0x41a3, | ||
| 240 | @@ -1796,10 +1818,20 @@ | ||
| 241 | DEVICE_FLAG_NONE }, | ||
| 242 | { "SONY", 0x0fce, "Xperia M2 MTP+CDROM", 0x41aa, | ||
| 243 | DEVICE_FLAG_NONE }, | ||
| 244 | + { "SONY", 0x0fce, "Xperia M2 Dual MTP+CDROM", 0x41ab, | ||
| 245 | + DEVICE_FLAG_NONE }, | ||
| 246 | { "SONY", 0x0fce, "Xperia Z2 MTP+CDROM", 0x41af, | ||
| 247 | DEVICE_FLAG_NONE }, | ||
| 248 | { "SONY", 0x0fce, "Xperia Z3 MTP+CDROM", 0x41ba, | ||
| 249 | DEVICE_FLAG_NONE }, | ||
| 250 | + { "SONY", 0x0fce, "Xperia Z3 Compact MTP+CDROM", 0x41bb, | ||
| 251 | + DEVICE_FLAG_NONE }, | ||
| 252 | + { "SONY", 0x0fce, "Xperia E3 MTP+CDROM", 0x01bc, | ||
| 253 | + DEVICE_FLAG_NONE }, | ||
| 254 | + { "SONY", 0x0fce, "XPeria Z3+ MTP+CDROM", 0x41c9, | ||
| 255 | + DEVICE_FLAG_NONE }, | ||
| 256 | + { "SONY", 0x0fce, "XPeria E4g MTP+CDROM", 0x41cb, | ||
| 257 | + DEVICE_FLAG_NONE }, | ||
| 258 | |||
| 259 | /* | ||
| 260 | * MTP+ADB personalities of MTP devices (see above) | ||
| 261 | @@ -1888,6 +1920,8 @@ | ||
| 262 | DEVICE_FLAG_NONE }, | ||
| 263 | { "SONY", 0x0fce, "Xperia M2 MTP+ADB", 0x51aa, | ||
| 264 | DEVICE_FLAG_NONE }, | ||
| 265 | + { "SONY", 0x0fce, "Xperia M2 Dual MTP+ADB", 0x51ab, | ||
| 266 | + DEVICE_FLAG_NONE }, | ||
| 267 | { "SONY", 0x0fce, "Xperia Z2 MTP+ADB", 0x51af, | ||
| 268 | DEVICE_FLAG_NONE }, | ||
| 269 | { "SONY", 0x0fce, "Xperia Z Ultra MTP+ADB", 0x51b6, | ||
| 270 | @@ -1898,6 +1932,10 @@ | ||
| 271 | DEVICE_FLAG_NONE }, | ||
| 272 | { "SONY", 0x0fce, "Xperia E3 MTP+ADB", 0x51bc, | ||
| 273 | DEVICE_FLAG_NONE }, | ||
| 274 | + { "SONY", 0x0fce, "XPeria Z3+ MTP+ADB", 0x51c9, | ||
| 275 | + DEVICE_FLAG_NONE }, | ||
| 276 | + { "SONY", 0x0fce, "XPeria E4g MTP+ADB", 0x51cb, | ||
| 277 | + DEVICE_FLAG_NONE }, | ||
| 278 | |||
| 279 | /* | ||
| 280 | * MTP+UMS modes | ||
| 281 | @@ -1936,6 +1974,9 @@ | ||
| 282 | * Motorola | ||
| 283 | * Assume DEVICE_FLAG_BROKEN_SET_OBJECT_PROPLIST on all of these. | ||
| 284 | */ | ||
| 285 | + /* https://sourceforge.net/p/libmtp/feature-requests/136/ */ | ||
| 286 | + { "Motorola", 0x22b8, "XT1524 (MTP)", 0x002e, | ||
| 287 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 288 | // Reported by David Boyd <tiggrdave@users.sourceforge.net> | ||
| 289 | { "Motorola", 0x22b8, "V3m/V750 verizon", 0x2a65, | ||
| 290 | DEVICE_FLAG_BROKEN_SET_OBJECT_PROPLIST | | ||
| 291 | @@ -1952,6 +1993,9 @@ | ||
| 292 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 293 | { "Motorola", 0x22b8, "Moto X (XT1058)", 0x2e63, | ||
| 294 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 295 | + /* https://sourceforge.net/p/libmtp/bugs/1323/ */ | ||
| 296 | + { "Motorola", 0x22b8, "Moto X (XT1080)", 0x2e66, | ||
| 297 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 298 | { "Motorola", 0x22b8, "Droid Maxx (XT1080)", 0x2e67, | ||
| 299 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 300 | { "Motorola", 0x22b8, "Droid Ultra", 0x2e68, | ||
| 301 | @@ -2345,6 +2389,14 @@ | ||
| 302 | /* https://sourceforge.net/p/libmtp/bugs/1244/ */ | ||
| 303 | { "Asus", 0x0b05, "MemoPad 8 ME181 CX (MTP)", 0x5561, | ||
| 304 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 305 | + /* https://sourceforge.net/p/libmtp/bugs/1406/ */ | ||
| 306 | + { "Asus", 0x0b05, "Zenfone 2 (MTP)", 0x5600, | ||
| 307 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 308 | + /* https://sourceforge.net/p/libmtp/bugs/1364/ */ | ||
| 309 | + { "Asus", 0x0b05, "Z00AD (MTP)", 0x5601, | ||
| 310 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 311 | + { "Asus", 0x0b05, "TX201LA (MTP)", 0x561f, | ||
| 312 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 313 | /* https://sourceforge.net/p/libmtp/bugs/1271/ */ | ||
| 314 | { "Asus", 0x0b05, "ZenFone 4 (MTP)", 0x580f, | ||
| 315 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 316 | @@ -2354,9 +2406,20 @@ | ||
| 317 | /* https://sourceforge.net/p/libmtp/bugs/1258/ */ | ||
| 318 | { "Asus", 0x0b05, "A450CG (MTP)", 0x5a0f, | ||
| 319 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 320 | + /* https://sourceforge.net/p/libmtp/bugs/1350/ */ | ||
| 321 | + { "Asus", 0x0b05, "Zenfone 2 ZE550ML (MTP)", 0x5f02, | ||
| 322 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 323 | + /* https://sourceforge.net/p/libmtp/bugs/1364/ */ | ||
| 324 | + { "Asus", 0x0b05, "Zenfone 2 ZE551ML (MTP)", 0x5f03, | ||
| 325 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 326 | /* https://sourceforge.net/p/libmtp/bugs/1232/ */ | ||
| 327 | { "Asus", 0x0b05, "MemoPad 7 (ME572CL)", 0x7772, | ||
| 328 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 329 | + /* https://sourceforge.net/p/libmtp/bugs/1351/ */ | ||
| 330 | + { "Asus", 0x0b05, "Fonepad 7 (FE375CXG)", 0x7773, | ||
| 331 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 332 | + { "Asus", 0x0b05, "ZenFone 5 A500KL (MTP)", 0x7780, | ||
| 333 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 334 | /* https://sourceforge.net/p/libmtp/bugs/1247/ */ | ||
| 335 | { "Asus", 0x0b05, "ZenFone 5 A500KL (MTP+ADB)", 0x7781, | ||
| 336 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 337 | @@ -2365,6 +2428,12 @@ | ||
| 338 | /* | ||
| 339 | * Lenovo | ||
| 340 | */ | ||
| 341 | + /* https://sourceforge.net/p/libmtp/support-requests/178/ */ | ||
| 342 | + { "Lenovo", 0x17ef, "P70-A", 0x0c02, | ||
| 343 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 344 | + /* https://sourceforge.net/p/libmtp/bugs/1415/ */ | ||
| 345 | + { "Lenovo", 0x17ef, "P70", 0x2008, | ||
| 346 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 347 | // Reported by Richard Körber <shredzone@users.sourceforge.net> | ||
| 348 | { "Lenovo", 0x17ef, "K1", 0x740a, | ||
| 349 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 350 | @@ -2407,6 +2476,9 @@ | ||
| 351 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 352 | { "Lenovo", 0x17ef, "Toga Tablet B6000-F", 0x76f2, | ||
| 353 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 354 | + /* https://sourceforge.net/p/libmtp/bugs/1122/ */ | ||
| 355 | + { "Lenovo", 0x17ef, "S930", 0x7718, | ||
| 356 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 357 | /* https://sourceforge.net/p/libmtp/bugs/1250/ */ | ||
| 358 | { "Lenovo", 0x17ef, "A5500-F", 0x772b, | ||
| 359 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 360 | @@ -2417,15 +2489,24 @@ | ||
| 361 | /* https://sourceforge.net/p/libmtp/bugs/1155/ */ | ||
| 362 | { "Lenovo", 0x17ef, "Yoga Tablet 10 B8000-H", 0x76ff, | ||
| 363 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 364 | + /* https://sourceforge.net/p/libmtp/bugs/1391/ */ | ||
| 365 | + { "Lenovo", 0x17ef, "A7600-F", 0x7731, | ||
| 366 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 367 | /* https://sourceforge.net/p/libmtp/bugs/1291/ */ | ||
| 368 | { "Lenovo", 0x17ef, "A3500-F", 0x7737, | ||
| 369 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 370 | + /* https://sourceforge.net/p/libmtp/support-requests/186/ */ | ||
| 371 | + { "Lenovo", 0x17ef, "Yoga Tablet 2 - 1050F", 0x77a4, | ||
| 372 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 373 | /* https://sourceforge.net/p/libmtp/support-requests/168/ */ | ||
| 374 | { "Lenovo", 0x17ef, "Yoga Tablet 2 Pro", 0x77b1, | ||
| 375 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 376 | /* https://sourceforge.net/p/libmtp/feature-requests/125/ */ | ||
| 377 | { "Lenovo", 0x17ef, "Vibe Z2", 0x77ea, | ||
| 378 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 379 | + /* https://sourceforge.net/p/libmtp/bugs/1360/ */ | ||
| 380 | + { "Lenovo", 0x17ef, "K3 Note", 0x7883, | ||
| 381 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 382 | |||
| 383 | /* | ||
| 384 | * Huawei | ||
| 385 | @@ -2435,6 +2516,15 @@ | ||
| 386 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 387 | { "Huawei", 0x12d1, "MTP device (ID2)", 0x1052, | ||
| 388 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 389 | + /* https://sourceforge.net/p/libmtp/bugs/1381/ */ | ||
| 390 | + { "Huawei", 0x12d1, "H60-L11", 0x1079, | ||
| 391 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 392 | + /* https://sourceforge.net/p/libmtp/bugs/1361/ */ | ||
| 393 | + { "Huawei", 0x12d1, "Ascend P8 ", 0x1082, | ||
| 394 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 395 | + /* https://sourceforge.net/p/libmtp/bugs/1418/ */ | ||
| 396 | + { "Huawei", 0x12d1, "Honor 3C ", 0x2012, | ||
| 397 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 398 | { "Huawei", 0x12d1, "Mediapad (mode 0)", 0x360f, | ||
| 399 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 400 | // Reported by Bearsh <bearsh@users.sourceforge.net> | ||
| 401 | @@ -2452,6 +2542,8 @@ | ||
| 402 | /* https://sourceforge.net/p/libmtp/bugs/672/ */ | ||
| 403 | { "ZTE", 0x19d2, "Grand X In", 0x0343, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 404 | { "ZTE", 0x19d2, "V985", 0x0383, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 405 | + /* https://sourceforge.net/p/libmtp/bugs/1328/ */ | ||
| 406 | + { "ZTE", 0x19d2, "V5", 0xffce, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 407 | |||
| 408 | /* | ||
| 409 | * HTC (High Tech Computer Corp) | ||
| 410 | @@ -2459,6 +2551,12 @@ | ||
| 411 | * Steven Eastland <grassmonk@users.sourceforge.net> | ||
| 412 | * Kevin Cheng <kache@users.sf.net> | ||
| 413 | */ | ||
| 414 | + /* https://sourceforge.net/p/libmtp/support-requests/181/ */ | ||
| 415 | + { "HTC", 0x0bb4, "HTC One M9 (MTP)", 0x040b, | ||
| 416 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 417 | + /* https://sourceforge.net/p/libmtp/bugs/1398/ */ | ||
| 418 | + { "HTC", 0x0bb4, "Spreadtrum SH57MYZ03342 (MTP)", 0x05e3, | ||
| 419 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 420 | /* reported by Mikkel Oscar Lyderik <mikkeloscar@gmail.com> */ | ||
| 421 | { "HTC", 0x0bb4, "HTC Desire 510 (MTP+ADB)", 0x05fd, | ||
| 422 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 423 | @@ -2545,6 +2643,9 @@ | ||
| 424 | /* https://sourceforge.net/p/libmtp/bugs/1182/ */ | ||
| 425 | { "HTC", 0x0bb4, "Desire 310 (MTP)", 0x0ec6, | ||
| 426 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 427 | + /* https://sourceforge.net/p/libmtp/bugs/1420/ */ | ||
| 428 | + { "HTC", 0x0bb4, "Desire 816G (MTP)", 0x0edb, | ||
| 429 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 430 | { "HTC", 0x0bb4, "HTC One (MTP+ADB+CDC)", 0x0f5f, | ||
| 431 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 432 | { "HTC", 0x0bb4, "HTC One (MTP+CDC)", 0x0f60, | ||
| 433 | @@ -2658,6 +2759,9 @@ | ||
| 434 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 435 | { "Amazon", 0x1949, "Kindle Fire (ID5)", 0x0012, | ||
| 436 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 437 | + /* https://sourceforge.net/p/libmtp/bugs/1353/ */ | ||
| 438 | + { "Amazon", 0x1949, "Kindle Fire HD6", 0x00f2, | ||
| 439 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 440 | { "Amazon", 0x1949, "Fire Phone", 0x0800, | ||
| 441 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 442 | |||
| 443 | @@ -2677,6 +2781,9 @@ | ||
| 444 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 445 | { "YiFang", 0x2207, "BQ Tesla", 0x0006, | ||
| 446 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 447 | + /* https://sourceforge.net/p/libmtp/bugs/1354/ */ | ||
| 448 | + { "Various", 0x2207, "Viewpia DR/bq Kepler Debugging", 0x0011, | ||
| 449 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 450 | |||
| 451 | /* | ||
| 452 | * Kobo | ||
| 453 | @@ -2708,6 +2815,8 @@ | ||
| 454 | { "Intel", 0x8087, "Foxconn iView i700", 0x0a15, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 455 | /* https://sourceforge.net/p/libmtp/bugs/1237/ */ | ||
| 456 | { "Intel", 0x8087, "Telcast Air 3G", 0x0a5e, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 457 | + /* https://sourceforge.net/p/libmtp/bugs/1338/ */ | ||
| 458 | + { "Intel", 0x8087, "Chuwi vi8", 0x0a5f, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 459 | |||
| 460 | /* | ||
| 461 | * Xiaomi | ||
| 462 | @@ -2738,6 +2847,15 @@ | ||
| 463 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 464 | { "Xiaomi", 0x2717, "Mi-2 (MTP)", 0xf003, | ||
| 465 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 466 | + /* https://sourceforge.net/p/libmtp/bugs/1397/ */ | ||
| 467 | + { "Xiaomi", 0x2717, "Mi-2s (id2) (MTP)", 0xff40, | ||
| 468 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 469 | + /* https://sourceforge.net/p/libmtp/bugs/1339/ */ | ||
| 470 | + { "Xiaomi", 0x2717, "Mi-2s (MTP)", 0xff48, | ||
| 471 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 472 | + /* https://sourceforge.net/p/libmtp/bugs/1402/ */ | ||
| 473 | + { "Xiaomi", 0x2717, "Redmi 2 (MTP)", 0xff60, | ||
| 474 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 475 | |||
| 476 | /* | ||
| 477 | * XO Learning Tablet | ||
| 478 | @@ -2774,6 +2892,9 @@ | ||
| 479 | /* https://sourceforge.net/p/libmtp/bugs/1304/ */ | ||
| 480 | { "Alcatel", 0x1bbb, "OneTouch 5042D (MTP)", 0xa00e, | ||
| 481 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 482 | + /* https://sourceforge.net/p/libmtp/bugs/1401/ */ | ||
| 483 | + { "Alcatel", 0x1bbb, "OneTouch Idol 3 (MTP)", 0xaf2b, | ||
| 484 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 485 | /* https://sourceforge.net/p/libmtp/feature-requests/114/ */ | ||
| 486 | { "Alcatel", 0x1bbb, "OneTouch 6034R", 0xf003, | ||
| 487 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 488 | @@ -2782,8 +2903,12 @@ | ||
| 489 | * Kyocera | ||
| 490 | */ | ||
| 491 | { "Kyocera", 0x0482, "Rise", 0x0571, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 492 | + /* https://sourceforge.net/p/libmtp/feature-requests/134/ */ | ||
| 493 | + { "Kyocera", 0x0482, "Torque Model E6715", 0x0059a, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 494 | /* https://sourceforge.net/p/libmtp/discussion/535190/thread/6270f5ce/ */ | ||
| 495 | { "Kyocera", 0x0482, "KYL22", 0x0810, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 496 | + /* https://sourceforge.net/p/libmtp/bugs/1345/ */ | ||
| 497 | + { "Kyocera", 0x0482, "DuraForce", 0x0979, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 498 | |||
| 499 | /* | ||
| 500 | * HiSense | ||
| 501 | @@ -2798,12 +2923,20 @@ | ||
| 502 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 503 | { "Hewlett-Packard", 0x03f0, "Slate 7 2800", 0x5d1d, | ||
| 504 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 505 | + /* https://sourceforge.net/p/libmtp/bugs/1366/ */ | ||
| 506 | + { "Hewlett-Packard", 0x03f0, "Slate 10 HD", 0x7e1d, | ||
| 507 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 508 | |||
| 509 | /* | ||
| 510 | * MediaTek Inc. | ||
| 511 | */ | ||
| 512 | { "MediaTek Inc", 0x0e8d, "MT5xx and MT6xx SoCs", 0x0050, | ||
| 513 | DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 514 | + { "MediaTek Inc", 0x0e8d, "MT65xx", 0x2008, | ||
| 515 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 516 | + /* https://sourceforge.net/p/libmtp/feature-requests/79/ */ | ||
| 517 | + { "MediaTek Inc", 0x0e8d, "Elephone P8000", 0x201d, | ||
| 518 | + DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 519 | |||
| 520 | /* | ||
| 521 | * Jolla | ||
| 522 | @@ -2860,6 +2993,8 @@ | ||
| 523 | { "Prestigio", 0x29e4, "5505 DUO ", 0x1103, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 524 | /* https://sourceforge.net/p/libmtp/bugs/1243/ */ | ||
| 525 | { "Prestigio", 0x29e4, "5504 DUO ", 0x1203, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 526 | + /* https://sourceforge.net/p/libmtp/feature-requests/141/ */ | ||
| 527 | + { "Prestigio", 0x29e4, "3405 DUO ", 0x3201, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 528 | |||
| 529 | /* https://sourceforge.net/p/libmtp/bugs/1283/ */ | ||
| 530 | { "Megafon", 0x201e, "MFLogin3T", 0x42ab, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 531 | @@ -2867,6 +3002,8 @@ | ||
| 532 | /* https://sourceforge.net/p/libmtp/bugs/1287/ */ | ||
| 533 | { "Gensis", 0x040d, "GT-7305 ", 0x885c, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 534 | |||
| 535 | + /* https://sourceforge.net/p/libmtp/support-requests/182/ */ | ||
| 536 | + { "Oppo", 0x22d9, "Find 5", 0x2764, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 537 | /* https://sourceforge.net/p/libmtp/bugs/1207/ */ | ||
| 538 | { "Oppo", 0x22d9, "Find 7 (ID 1)", 0x2765, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 539 | /* https://sourceforge.net/p/libmtp/bugs/1277/ */ | ||
| 540 | @@ -2916,6 +3053,14 @@ | ||
| 541 | /* https://sourceforge.net/p/libmtp/bugs/1314/ */ | ||
| 542 | { "BenQ", 0x1d45, "F5", 0x459d, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 543 | |||
| 544 | + /* https://sourceforge.net/p/libmtp/bugs/1362/ */ | ||
| 545 | + { "TomTom", 0x1390, "Rider 40", 0x5455, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 546 | + | ||
| 547 | + /* https://sourceforge.net/p/libmtp/feature-requests/135/. guessed android. */ | ||
| 548 | + { "OUYA", 0x2836, "Videogame Console", 0x0010, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 549 | + | ||
| 550 | + /* https://sourceforge.net/p/libmtp/bugs/1383/ */ | ||
| 551 | + { "BLU", 0x0e8d, "Studio HD", 0x2008, DEVICE_FLAGS_ANDROID_BUGS }, | ||
| 552 | /* | ||
| 553 | * Other strange stuff. | ||
| 554 | */ | ||
diff --git a/gnu/packages/patches/ninja-tests.patch b/gnu/packages/patches/ninja-tests.patch index 3436b6314dd..f9b0d9f9109 100644 --- a/gnu/packages/patches/ninja-tests.patch +++ b/gnu/packages/patches/ninja-tests.patch | |||
| @@ -1,16 +1,17 @@ | |||
| 1 | SubprocessTest.SetWithLots fails with: | 1 | From 67d6b9262efad99f8aad63ab81efc8e689748766 Mon Sep 17 00:00:00 2001 |
| 2 | Raise [ulimit -n] well above 1025 to make this test go. | 2 | From: Efraim Flashner <efraim@flashner.co.il> |
| 3 | Skip it. | 3 | Date: Sun, 3 Jul 2016 11:55:43 +0300 |
| 4 | Subject: [PATCH] patch | ||
| 4 | 5 | ||
| 5 | SubprocessTest.InterruptChild fails when using 'system*': | 6 | --- |
| 6 | *** Failure in src/subprocess_test.cc:83 | 7 | src/subprocess_test.cc | 4 ++++ |
| 7 | ExitInterrupted == subproc->Finish() | 8 | 1 file changed, 4 insertions(+) |
| 8 | I can pass it by using 'system' instead of 'system*' when building locally, | ||
| 9 | but it still failed on Hydra. Skip it. | ||
| 10 | 9 | ||
| 11 | --- ninja-1.5.3.orig/src/subprocess_test.cc 2015-01-15 10:34:28.859522176 +0800 | 10 | diff --git a/src/subprocess_test.cc b/src/subprocess_test.cc |
| 12 | +++ ninja-1.5.3/src/subprocess_test.cc 2015-01-15 10:37:52.969572075 +0800 | 11 | index ee16190..a537c11 100644 |
| 13 | @@ -72,6 +72,7 @@ | 12 | --- a/src/subprocess_test.cc |
| 13 | +++ b/src/subprocess_test.cc | ||
| 14 | @@ -72,6 +72,7 @@ TEST_F(SubprocessTest, NoSuchCommand) { | ||
| 14 | 15 | ||
| 15 | #ifndef _WIN32 | 16 | #ifndef _WIN32 |
| 16 | 17 | ||
| @@ -18,7 +19,7 @@ but it still failed on Hydra. Skip it. | |||
| 18 | TEST_F(SubprocessTest, InterruptChild) { | 19 | TEST_F(SubprocessTest, InterruptChild) { |
| 19 | Subprocess* subproc = subprocs_.Add("kill -INT $$"); | 20 | Subprocess* subproc = subprocs_.Add("kill -INT $$"); |
| 20 | ASSERT_NE((Subprocess *) 0, subproc); | 21 | ASSERT_NE((Subprocess *) 0, subproc); |
| 21 | @@ -82,6 +83,7 @@ | 22 | @@ -82,6 +83,7 @@ TEST_F(SubprocessTest, InterruptChild) { |
| 22 | 23 | ||
| 23 | EXPECT_EQ(ExitInterrupted, subproc->Finish()); | 24 | EXPECT_EQ(ExitInterrupted, subproc->Finish()); |
| 24 | } | 25 | } |
| @@ -26,7 +27,7 @@ but it still failed on Hydra. Skip it. | |||
| 26 | 27 | ||
| 27 | TEST_F(SubprocessTest, InterruptParent) { | 28 | TEST_F(SubprocessTest, InterruptParent) { |
| 28 | Subprocess* subproc = subprocs_.Add("kill -INT $PPID ; sleep 1"); | 29 | Subprocess* subproc = subprocs_.Add("kill -INT $PPID ; sleep 1"); |
| 29 | @@ -169,6 +171,7 @@ | 30 | @@ -217,6 +219,7 @@ TEST_F(SubprocessTest, SetWithMulti) { |
| 30 | // OS X's process limit is less than 1025 by default | 31 | // OS X's process limit is less than 1025 by default |
| 31 | // (|sysctl kern.maxprocperuid| is 709 on 10.7 and 10.8 and less prior to that). | 32 | // (|sysctl kern.maxprocperuid| is 709 on 10.7 and 10.8 and less prior to that). |
| 32 | #if !defined(__APPLE__) && !defined(_WIN32) | 33 | #if !defined(__APPLE__) && !defined(_WIN32) |
| @@ -34,11 +35,14 @@ but it still failed on Hydra. Skip it. | |||
| 34 | TEST_F(SubprocessTest, SetWithLots) { | 35 | TEST_F(SubprocessTest, SetWithLots) { |
| 35 | // Arbitrary big number; needs to be over 1024 to confirm we're no longer | 36 | // Arbitrary big number; needs to be over 1024 to confirm we're no longer |
| 36 | // hostage to pselect. | 37 | // hostage to pselect. |
| 37 | @@ -196,6 +199,7 @@ | 38 | @@ -245,6 +248,7 @@ TEST_F(SubprocessTest, SetWithLots) { |
| 38 | } | 39 | } |
| 39 | ASSERT_EQ(kNumProcs, subprocs_.finished_.size()); | 40 | ASSERT_EQ(kNumProcs, subprocs_.finished_.size()); |
| 40 | } | 41 | } |
| 41 | +#endif | 42 | +#endif |
| 42 | #endif // !__APPLE__ && !_WIN32 | 43 | #endif // !__APPLE__ && !_WIN32 |
| 43 | 44 | ||
| 44 | // TODO: this test could work on Windows, just not sure how to simply | 45 | // TODO: this test could work on Windows, just not sure how to simply |
| 46 | -- | ||
| 47 | 2.9.0 | ||
| 48 | |||
diff --git a/gnu/packages/patches/openimageio-boost-1.60.patch b/gnu/packages/patches/openimageio-boost-1.60.patch deleted file mode 100644 index 92fc3237bb5..00000000000 --- a/gnu/packages/patches/openimageio-boost-1.60.patch +++ /dev/null | |||
| @@ -1,47 +0,0 @@ | |||
| 1 | From 875fbbd92695397bfc83d1cd5fdd4094e1d50199 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Larry Gritz <lg@larrygritz.com> | ||
| 3 | Date: Mon, 28 Dec 2015 11:46:07 -0800 | ||
| 4 | Subject: [PATCH] Python ImageCache binding fixes -- disable broken calls | ||
| 5 | |||
| 6 | Some of these calls (thankfully undocumented and presumably unused) | ||
| 7 | are horribly broken. They compiled before, but with new Boost 1.60 | ||
| 8 | they don't even compile properly. So just comment them out on this | ||
| 9 | obsolete branch. They are fully fixed in RB-1.6 and beyond. | ||
| 10 | |||
| 11 | --- a/src/python/py_imagecache.cpp | ||
| 12 | +++ b/src/python/py_imagecache.cpp | ||
| 13 | @@ -199,23 +199,24 @@ void declare_imagecache() | ||
| 14 | .def("destroy", &ImageCacheWrap::destroy) | ||
| 15 | .staticmethod("destroy") | ||
| 16 | .def("clear", &ImageCacheWrap::clear) | ||
| 17 | - .def("attribute", &ImageCacheWrap::attribute) | ||
| 18 | + // .def("attribute", &ImageCacheWrap::attribute) | ||
| 19 | .def("attribute", &ImageCacheWrap::attribute_int) | ||
| 20 | .def("attribute", &ImageCacheWrap::attribute_float) | ||
| 21 | - .def("attribute", &ImageCacheWrap::attribute_double) | ||
| 22 | - .def("attribute", &ImageCacheWrap::attribute_char) | ||
| 23 | + // .def("attribute", &ImageCacheWrap::attribute_double) | ||
| 24 | + // .def("attribute", &ImageCacheWrap::attribute_char) | ||
| 25 | .def("attribute", &ImageCacheWrap::attribute_string) | ||
| 26 | - .def("getattribute", &ImageCacheWrap::attribute) | ||
| 27 | + // .def("getattribute", &ImageCacheWrap::attribute) | ||
| 28 | .def("getattribute", &ImageCacheWrap::getattribute_int) | ||
| 29 | .def("getattribute", &ImageCacheWrap::getattribute_float) | ||
| 30 | - .def("getattribute", &ImageCacheWrap::getattribute_double) | ||
| 31 | - .def("getattribute", &ImageCacheWrap::getattribute_char) | ||
| 32 | + // .def("getattribute", &ImageCacheWrap::getattribute_double) | ||
| 33 | + // .def("getattribute", &ImageCacheWrap::getattribute_char) | ||
| 34 | .def("getattribute", &ImageCacheWrap::getattribute_string) | ||
| 35 | - .def("resolve_filename", &ImageCacheWrap::resolve_filename) | ||
| 36 | - .def("get_image_info", &ImageCacheWrap::get_image_info) | ||
| 37 | - .def("get_image_info", &ImageCacheWrap::get_image_info_old) | ||
| 38 | + // .def("get_image_info", &ImageCacheWrap::get_image_info) | ||
| 39 | + // .def("get_image_info", &ImageCacheWrap::get_image_info_old) | ||
| 40 | .def("get_imagespec", &ImageCacheWrap::get_imagespec) | ||
| 41 | - .def("get_pixels", &ImageCacheWrap::get_pixels) | ||
| 42 | + // .def("get_pixels", &ImageCacheWrap::get_pixels) | ||
| 43 | + .def("resolve_filename", &ImageCacheWrap::resolve_filename) | ||
| 44 | + | ||
| 45 | // .def("get_tile", &ImageCacheWrap::get_tile) | ||
| 46 | // .def("release_tile", &ImageCacheWrap::release_tile) | ||
| 47 | // .def("tile_pixels", &ImageCacheWrap::tile_pixels) | ||
diff --git a/gnu/packages/patches/python-dendropy-exclude-failing-tests.patch b/gnu/packages/patches/python-dendropy-exclude-failing-tests.patch new file mode 100644 index 00000000000..288a58b06f5 --- /dev/null +++ b/gnu/packages/patches/python-dendropy-exclude-failing-tests.patch | |||
| @@ -0,0 +1,21 @@ | |||
| 1 | diff --git a/dendropy/test/test_phylogenetic_distance_matrix.py b/dendropy/test/test_phylogenetic_distance_matrix.py | ||
| 2 | index 10c05f5..a18ba52 100644 | ||
| 3 | --- a/dendropy/test/test_phylogenetic_distance_matrix.py | ||
| 4 | +++ b/dendropy/test/test_phylogenetic_distance_matrix.py | ||
| 5 | @@ -793,7 +793,7 @@ class PdmUpgmaTree(PdmTreeChecker, unittest.TestCase): | ||
| 6 | expected_tree=expected_tree) | ||
| 7 | |||
| 8 | class NodeToNodeDistancesTest(unittest.TestCase): | ||
| 9 | - | ||
| 10 | + @unittest.expectedFailure | ||
| 11 | def test_distances(self): | ||
| 12 | ## get distances from ape | ||
| 13 | # library(ape) | ||
| 14 | @@ -825,6 +825,7 @@ class NodeToNodeDistancesTest(unittest.TestCase): | ||
| 15 | e = reference_table[nd1.label, nd2.label] | ||
| 16 | self.assertAlmostEqual(d, e) | ||
| 17 | |||
| 18 | + @unittest.expectedFailure | ||
| 19 | def test_mrca(self): | ||
| 20 | test_runs = [ | ||
| 21 | "hiv1.newick", | ||
diff --git a/gnu/packages/patches/sudo-CVE-2015-5602.patch b/gnu/packages/patches/sudo-CVE-2015-5602.patch deleted file mode 100644 index 36c90fbee71..00000000000 --- a/gnu/packages/patches/sudo-CVE-2015-5602.patch +++ /dev/null | |||
| @@ -1,372 +0,0 @@ | |||
| 1 | Based on the patch from https://www.sudo.ws/repos/sudo/raw-rev/c2e36a80a279 | ||
| 2 | Backported to 1.8.15 by Mark H Weaver <mhw@netris.org> | ||
| 3 | |||
| 4 | # HG changeset patch | ||
| 5 | # User Todd C. Miller <Todd.Miller@courtesan.com> | ||
| 6 | # Date 1452475889 25200 | ||
| 7 | # Node ID c2e36a80a27927c32cba55afae78b8dc830cddc3 | ||
| 8 | # Parent 94ffd6b18431fa4b9ed0a0c3f0b7b9582a4f6bde | ||
| 9 | Rewritten sudoedit_checkdir support that checks all the dirs in the | ||
| 10 | path and refuses to follow symlinks in writable directories. | ||
| 11 | This is a better fix for CVE-2015-5602. | ||
| 12 | Adapted from a diff by Ben Hutchings. Bug #707 | ||
| 13 | |||
| 14 | diff -r 94ffd6b18431 -r c2e36a80a279 doc/CONTRIBUTORS | ||
| 15 | --- a/doc/CONTRIBUTORS Mon Jan 04 10:47:11 2016 -0700 | ||
| 16 | +++ b/doc/CONTRIBUTORS Sun Jan 10 18:31:29 2016 -0700 | ||
| 17 | @@ -58,6 +58,7 @@ | ||
| 18 | Holloway, Nick | ||
| 19 | Hoover, Adam | ||
| 20 | Hunter, Michael T. | ||
| 21 | + Hutchings, Ben | ||
| 22 | Irrgang, Eric | ||
| 23 | Jackson, Brian | ||
| 24 | Jackson, John R. | ||
| 25 | diff -r 94ffd6b18431 -r c2e36a80a279 doc/UPGRADE | ||
| 26 | --- a/doc/UPGRADE Mon Jan 04 10:47:11 2016 -0700 | ||
| 27 | +++ b/doc/UPGRADE Sun Jan 10 18:31:29 2016 -0700 | ||
| 28 | @@ -1,6 +1,15 @@ | ||
| 29 | Notes on upgrading from an older release | ||
| 30 | ======================================== | ||
| 31 | |||
| 32 | +o Upgrading from a version prior to the post-1.8.15 fix for CVE-2015-5602. | ||
| 33 | + | ||
| 34 | + The meaning of the sudoedit_checkdir sudoers option has changed. | ||
| 35 | + Previously, it would only check the parent directory | ||
| 36 | + of the file to be edited. After the CVE fix, all directories | ||
| 37 | + in the path to be edited are checked and sudoedit will refuse | ||
| 38 | + to follow a symbolic link in a directory that is writable by | ||
| 39 | + the invoking user. | ||
| 40 | + | ||
| 41 | o Upgrading from a version prior to 1.8.15: | ||
| 42 | |||
| 43 | Prior to version 1.8.15, when env_reset was enabled (the default) | ||
| 44 | diff -r 94ffd6b18431 -r c2e36a80a279 doc/sudoers.cat | ||
| 45 | --- a/doc/sudoers.cat Mon Jan 04 10:47:11 2016 -0700 | ||
| 46 | +++ b/doc/sudoers.cat Sun Jan 10 18:31:29 2016 -0700 | ||
| 47 | @@ -1275,12 +1275,15 @@ | ||
| 48 | system call. This flag is _o_f_f by default. | ||
| 49 | |||
| 50 | sudoedit_checkdir | ||
| 51 | - If set, ssuuddooeeddiitt will refuse to edit files located in a | ||
| 52 | - directory that is writable by the invoking user unless | ||
| 53 | - it is run by root. On many systems, this option | ||
| 54 | - requires that the parent directory of the file to be | ||
| 55 | - edited be readable by the target user. This flag is | ||
| 56 | - _o_f_f by default. | ||
| 57 | + If set, ssuuddooeeddiitt will check directories in the path to | ||
| 58 | + be edited for writability by the invoking user. | ||
| 59 | + Symbolic links will not be followed in writable | ||
| 60 | + directories and ssuuddooeeddiitt will also refuse to edit a | ||
| 61 | + file located in a writable directory. Theses | ||
| 62 | + restrictions are not enforced when ssuuddooeeddiitt is invoked | ||
| 63 | + as root. On many systems, this option requires that | ||
| 64 | + all directories in the path to be edited be readable by | ||
| 65 | + the target user. This flag is _o_f_f by default. | ||
| 66 | |||
| 67 | sudoedit_follow By default, ssuuddooeeddiitt will not follow symbolic links | ||
| 68 | when opening files. The _s_u_d_o_e_d_i_t___f_o_l_l_o_w option can be | ||
| 69 | diff -r 94ffd6b18431 -r c2e36a80a279 doc/sudoers.man.in | ||
| 70 | --- a/doc/sudoers.man.in Mon Jan 04 10:47:11 2016 -0700 | ||
| 71 | +++ b/doc/sudoers.man.in Sun Jan 10 18:31:29 2016 -0700 | ||
| 72 | @@ -2715,10 +2715,16 @@ | ||
| 73 | .br | ||
| 74 | If set, | ||
| 75 | \fBsudoedit\fR | ||
| 76 | -will refuse to edit files located in a directory that is writable | ||
| 77 | -by the invoking user unless it is run by root. | ||
| 78 | -On many systems, this option requires that the parent directory | ||
| 79 | -of the file to be edited be readable by the target user. | ||
| 80 | +will check directories in the path to be edited for writability | ||
| 81 | +by the invoking user. | ||
| 82 | +Symbolic links will not be followed in writable directories and | ||
| 83 | +\fBsudoedit\fR | ||
| 84 | +will also refuse to edit a file located in a writable directory. | ||
| 85 | +Theses restrictions are not enforced when | ||
| 86 | +\fBsudoedit\fR | ||
| 87 | +is invoked as root. | ||
| 88 | +On many systems, this option requires that all directories | ||
| 89 | +in the path to be edited be readable by the target user. | ||
| 90 | This flag is | ||
| 91 | \fIoff\fR | ||
| 92 | by default. | ||
| 93 | diff -r 94ffd6b18431 -r c2e36a80a279 doc/sudoers.mdoc.in | ||
| 94 | --- a/doc/sudoers.mdoc.in Mon Jan 04 10:47:11 2016 -0700 | ||
| 95 | +++ b/doc/sudoers.mdoc.in Sun Jan 10 18:31:29 2016 -0700 | ||
| 96 | @@ -2549,10 +2549,16 @@ | ||
| 97 | .It sudoedit_checkdir | ||
| 98 | If set, | ||
| 99 | .Nm sudoedit | ||
| 100 | -will refuse to edit files located in a directory that is writable | ||
| 101 | -by the invoking user unless it is run by root. | ||
| 102 | -On many systems, this option requires that the parent directory | ||
| 103 | -of the file to be edited be readable by the target user. | ||
| 104 | +will check directories in the path to be edited for writability | ||
| 105 | +by the invoking user. | ||
| 106 | +Symbolic links will not be followed in writable directories and | ||
| 107 | +.Nm sudoedit | ||
| 108 | +will also refuse to edit a file located in a writable directory. | ||
| 109 | +Theses restrictions are not enforced when | ||
| 110 | +.Nm sudoedit | ||
| 111 | +is invoked as root. | ||
| 112 | +On many systems, this option requires that all directories | ||
| 113 | +in the path to be edited be readable by the target user. | ||
| 114 | This flag is | ||
| 115 | .Em off | ||
| 116 | by default. | ||
| 117 | diff -r 94ffd6b18431 -r c2e36a80a279 include/sudo_compat.h | ||
| 118 | --- a/include/sudo_compat.h Mon Jan 04 10:47:11 2016 -0700 | ||
| 119 | +++ b/include/sudo_compat.h Sun Jan 10 18:31:29 2016 -0700 | ||
| 120 | @@ -182,6 +182,8 @@ | ||
| 121 | # ifndef UTIME_NOW | ||
| 122 | # define UTIME_NOW -2L | ||
| 123 | # endif | ||
| 124 | +#endif | ||
| 125 | +#if !defined(HAVE_OPENAT) || (!defined(HAVE_FUTIMENS) && !defined(HAVE_UTIMENSAT)) | ||
| 126 | # ifndef AT_FDCWD | ||
| 127 | # define AT_FDCWD -100 | ||
| 128 | # endif | ||
| 129 | diff -r 94ffd6b18431 -r c2e36a80a279 src/sudo_edit.c | ||
| 130 | --- a/src/sudo_edit.c Mon Jan 04 10:47:11 2016 -0700 | ||
| 131 | +++ b/src/sudo_edit.c Sun Jan 10 18:31:29 2016 -0700 | ||
| 132 | @@ -179,13 +179,15 @@ | ||
| 133 | } | ||
| 134 | |||
| 135 | #ifndef HAVE_OPENAT | ||
| 136 | -/* This does not support AT_FDCWD... */ | ||
| 137 | static int | ||
| 138 | sudo_openat(int dfd, const char *path, int flags, mode_t mode) | ||
| 139 | { | ||
| 140 | int fd, odfd; | ||
| 141 | debug_decl(sudo_openat, SUDO_DEBUG_EDIT) | ||
| 142 | |||
| 143 | + if (dfd == AT_FDCWD) | ||
| 144 | + debug_return_int(open(path, flags, mode)); | ||
| 145 | + | ||
| 146 | /* Save cwd */ | ||
| 147 | if ((odfd = open(".", O_RDONLY)) == -1) | ||
| 148 | debug_return_int(-1); | ||
| 149 | @@ -207,6 +209,64 @@ | ||
| 150 | #define openat sudo_openat | ||
| 151 | #endif /* HAVE_OPENAT */ | ||
| 152 | |||
| 153 | +#ifdef O_NOFOLLOW | ||
| 154 | +static int | ||
| 155 | +sudo_edit_openat_nofollow(int dfd, char *path, int oflags, mode_t mode) | ||
| 156 | +{ | ||
| 157 | + debug_decl(sudo_edit_open_nofollow, SUDO_DEBUG_EDIT) | ||
| 158 | + | ||
| 159 | + debug_return_int(openat(dfd, path, oflags|O_NOFOLLOW, mode)); | ||
| 160 | +} | ||
| 161 | +#else | ||
| 162 | +/* | ||
| 163 | + * Returns true if fd and path don't match or path is a symlink. | ||
| 164 | + * Used on older systems without O_NOFOLLOW. | ||
| 165 | + */ | ||
| 166 | +static bool | ||
| 167 | +sudo_edit_is_symlink(int fd, char *path) | ||
| 168 | +{ | ||
| 169 | + struct stat sb1, sb2; | ||
| 170 | + debug_decl(sudo_edit_is_symlink, SUDO_DEBUG_EDIT) | ||
| 171 | + | ||
| 172 | + /* | ||
| 173 | + * Treat [fl]stat() failure like there was a symlink. | ||
| 174 | + */ | ||
| 175 | + if (fstat(fd, &sb1) == -1 || lstat(path, &sb2) == -1) | ||
| 176 | + debug_return_bool(true); | ||
| 177 | + | ||
| 178 | + /* | ||
| 179 | + * Make sure we did not open a link and that what we opened | ||
| 180 | + * matches what is currently on the file system. | ||
| 181 | + */ | ||
| 182 | + if (S_ISLNK(sb2.st_mode) || | ||
| 183 | + sb1.st_dev != sb2.st_dev || sb1.st_ino != sb2.st_ino) { | ||
| 184 | + debug_return_bool(true); | ||
| 185 | + } | ||
| 186 | + | ||
| 187 | + debug_return_bool(false); | ||
| 188 | +} | ||
| 189 | + | ||
| 190 | +static int | ||
| 191 | +sudo_edit_openat_nofollow(char *path, int oflags, mode_t mode) | ||
| 192 | +{ | ||
| 193 | + struct stat sb1, sb2; | ||
| 194 | + int fd; | ||
| 195 | + debug_decl(sudo_edit_openat_nofollow, SUDO_DEBUG_EDIT) | ||
| 196 | + | ||
| 197 | + fd = openat(dfd, path, oflags, mode); | ||
| 198 | + if (fd == -1) | ||
| 199 | + debug_return_int(-1); | ||
| 200 | + | ||
| 201 | + if (sudo_edit_is_symlink(fd, path)) { | ||
| 202 | + close(fd); | ||
| 203 | + fd = -1; | ||
| 204 | + errno = ELOOP; | ||
| 205 | + } | ||
| 206 | + | ||
| 207 | + debug_return_int(fd); | ||
| 208 | +} | ||
| 209 | +#endif /* O_NOFOLLOW */ | ||
| 210 | + | ||
| 211 | /* | ||
| 212 | * Returns true if the directory described by sb is writable | ||
| 213 | * by the user. We treat directories with the sticky bit as | ||
| 214 | @@ -245,49 +305,94 @@ | ||
| 215 | debug_return_bool(false); | ||
| 216 | } | ||
| 217 | |||
| 218 | +/* | ||
| 219 | + * Directory open flags for use with openat(2) and fstat(2). | ||
| 220 | + * Use O_PATH and O_DIRECTORY where possible. | ||
| 221 | + */ | ||
| 222 | +#if defined(O_PATH) && defined(O_DIRECTORY) | ||
| 223 | +# define DIR_OPEN_FLAGS (O_PATH|O_DIRECTORY) | ||
| 224 | +#elif defined(O_PATH) && !defined(O_DIRECTORY) | ||
| 225 | +# define DIR_OPEN_FLAGS O_PATH | ||
| 226 | +#elif !defined(O_PATH) && defined(O_DIRECTORY) | ||
| 227 | +# define DIR_OPEN_FLAGS (O_RDONLY|O_DIRECTORY) | ||
| 228 | +#else | ||
| 229 | +# define DIR_OPEN_FLAGS (O_RDONLY|O_NONBLOCK) | ||
| 230 | +#endif | ||
| 231 | + | ||
| 232 | static int | ||
| 233 | sudo_edit_open_nonwritable(char *path, int oflags, mode_t mode) | ||
| 234 | { | ||
| 235 | - char *base, *dir; | ||
| 236 | + int dfd, fd, dflags = DIR_OPEN_FLAGS; | ||
| 237 | +#if defined(__linux__) && defined(O_PATH) | ||
| 238 | + char *opath = path; | ||
| 239 | +#endif | ||
| 240 | + bool is_writable; | ||
| 241 | struct stat sb; | ||
| 242 | - int dfd, fd; | ||
| 243 | debug_decl(sudo_edit_open_nonwritable, SUDO_DEBUG_EDIT) | ||
| 244 | |||
| 245 | - base = strrchr(path, '/'); | ||
| 246 | - if (base != NULL) { | ||
| 247 | - *base++ = '\0'; | ||
| 248 | - dir = path; | ||
| 249 | +#if defined(__linux__) && defined(O_PATH) | ||
| 250 | +restart: | ||
| 251 | +#endif | ||
| 252 | + if (path[0] == '/') { | ||
| 253 | + dfd = open("/", dflags); | ||
| 254 | + path++; | ||
| 255 | } else { | ||
| 256 | - base = path; | ||
| 257 | - dir = "."; | ||
| 258 | + dfd = open(".", dflags); | ||
| 259 | + if (path[0] == '.' && path[1] == '/') | ||
| 260 | + path += 2; | ||
| 261 | } | ||
| 262 | -#ifdef O_PATH | ||
| 263 | - if ((dfd = open(dir, O_PATH)) != -1) { | ||
| 264 | - /* Linux kernels < 3.6 can't do fstat on O_PATH fds. */ | ||
| 265 | - if (fstat(dfd, &sb) == -1) { | ||
| 266 | - close(dfd); | ||
| 267 | - dfd = open(dir, O_RDONLY); | ||
| 268 | - if (fstat(dfd, &sb) == -1) { | ||
| 269 | - close(dfd); | ||
| 270 | - dfd = -1; | ||
| 271 | - } | ||
| 272 | - } | ||
| 273 | - } | ||
| 274 | -#else | ||
| 275 | - if ((dfd = open(dir, O_RDONLY)) != -1) { | ||
| 276 | - if (fstat(dfd, &sb) == -1) { | ||
| 277 | - close(dfd); | ||
| 278 | - dfd = -1; | ||
| 279 | - } | ||
| 280 | - } | ||
| 281 | -#endif | ||
| 282 | - if (base != path) | ||
| 283 | - base[-1] = '/'; /* restore path */ | ||
| 284 | if (dfd == -1) | ||
| 285 | debug_return_int(-1); | ||
| 286 | |||
| 287 | - if (dir_is_writable(&sb, user_details.uid, user_details.gid, | ||
| 288 | - user_details.ngroups, user_details.groups)) { | ||
| 289 | + for (;;) { | ||
| 290 | + char *slash; | ||
| 291 | + int subdfd; | ||
| 292 | + | ||
| 293 | + /* | ||
| 294 | + * Look up one component at a time, avoiding symbolic links in | ||
| 295 | + * writable directories. | ||
| 296 | + */ | ||
| 297 | + if (fstat(dfd, &sb) == -1) { | ||
| 298 | + close(dfd); | ||
| 299 | +#if defined(__linux__) && defined(O_PATH) | ||
| 300 | + /* Linux prior to 3.6 can't fstat an O_PATH fd */ | ||
| 301 | + if (ISSET(dflags, O_PATH)) { | ||
| 302 | + CLR(dflags, O_PATH); | ||
| 303 | + path = opath; | ||
| 304 | + goto restart; | ||
| 305 | + } | ||
| 306 | +#endif | ||
| 307 | + debug_return_int(-1); | ||
| 308 | + } | ||
| 309 | +#ifndef O_DIRECTORY | ||
| 310 | + if (!S_ISDIR(sb.st_mode)) { | ||
| 311 | + close(dfd); | ||
| 312 | + errno = ENOTDIR; | ||
| 313 | + debug_return_int(-1); | ||
| 314 | + } | ||
| 315 | +#endif | ||
| 316 | + is_writable = dir_is_writable(&sb, user_details.uid, user_details.gid, | ||
| 317 | + user_details.ngroups, user_details.groups); | ||
| 318 | + | ||
| 319 | + while (path[0] == '/') | ||
| 320 | + path++; | ||
| 321 | + slash = strchr(path, '/'); | ||
| 322 | + if (slash == NULL) | ||
| 323 | + break; | ||
| 324 | + *slash = '\0'; | ||
| 325 | + if (is_writable) | ||
| 326 | + subdfd = sudo_edit_openat_nofollow(dfd, path, dflags, 0); | ||
| 327 | + else | ||
| 328 | + subdfd = openat(dfd, path, dflags, 0); | ||
| 329 | + *slash = '/'; /* restore path */ | ||
| 330 | + close(dfd); | ||
| 331 | + if (subdfd == -1) | ||
| 332 | + debug_return_int(-1); | ||
| 333 | + path = slash + 1; | ||
| 334 | + dfd = subdfd; | ||
| 335 | + } | ||
| 336 | + | ||
| 337 | + if (is_writable) { | ||
| 338 | close(dfd); | ||
| 339 | errno = EISDIR; | ||
| 340 | debug_return_int(-1); | ||
| 341 | @@ -332,27 +437,10 @@ | ||
| 342 | if (!ISSET(oflags, O_NONBLOCK)) | ||
| 343 | (void) fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) & ~O_NONBLOCK); | ||
| 344 | |||
| 345 | - /* | ||
| 346 | - * Treat [fl]stat() failure like an open() failure. | ||
| 347 | - */ | ||
| 348 | - if (fstat(fd, &sb1) == -1 || lstat(path, &sb2) == -1) { | ||
| 349 | - const int serrno = errno; | ||
| 350 | + if (!ISSET(sflags, CD_SUDOEDIT_FOLLOW) && sudo_edit_is_symlink(fd, path)) { | ||
| 351 | close(fd); | ||
| 352 | - errno = serrno; | ||
| 353 | - debug_return_int(-1); | ||
| 354 | - } | ||
| 355 | - | ||
| 356 | - /* | ||
| 357 | - * Make sure we did not open a link and that what we opened | ||
| 358 | - * matches what is currently on the file system. | ||
| 359 | - */ | ||
| 360 | - if (!ISSET(sflags, CD_SUDOEDIT_FOLLOW)) { | ||
| 361 | - if (S_ISLNK(sb2.st_mode) || | ||
| 362 | - sb1.st_dev != sb2.st_dev || sb1.st_ino != sb2.st_ino) { | ||
| 363 | - close(fd); | ||
| 364 | - errno = ELOOP; | ||
| 365 | - debug_return_int(-1); | ||
| 366 | - } | ||
| 367 | + fd = -1; | ||
| 368 | + errno = ELOOP; | ||
| 369 | } | ||
| 370 | |||
| 371 | debug_return_int(fd); | ||
| 372 | |||
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index 7c2651764ad..36c538c1655 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2013, 2015, 2016 Andreas Enge <andreas@enge.fr> | 2 | ;;; Copyright © 2013, 2015, 2016 Andreas Enge <andreas@enge.fr> |
| 3 | ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> | 3 | ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> |
| 4 | ;;; Copyright © 2014, 2015 Ricardo Wurmus <rekado@elephly.net> | 4 | ;;; Copyright © 2014, 2015, 2016 Ricardo Wurmus <rekado@elephly.net> |
| 5 | ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> | 5 | ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> |
| 6 | ;;; Copyright © 2016 Roel Janssen <roel@gnu.org> | 6 | ;;; Copyright © 2016 Roel Janssen <roel@gnu.org> |
| 7 | ;;; | 7 | ;;; |
| @@ -28,6 +28,7 @@ | |||
| 28 | #:use-module (guix build-system cmake) | 28 | #:use-module (guix build-system cmake) |
| 29 | #:use-module (guix build-system python) | 29 | #:use-module (guix build-system python) |
| 30 | #:use-module (gnu packages) | 30 | #:use-module (gnu packages) |
| 31 | #:use-module (gnu packages autotools) | ||
| 31 | #:use-module (gnu packages compression) | 32 | #:use-module (gnu packages compression) |
| 32 | #:use-module (gnu packages fontutils) | 33 | #:use-module (gnu packages fontutils) |
| 33 | #:use-module (gnu packages ghostscript) | 34 | #:use-module (gnu packages ghostscript) |
| @@ -157,6 +158,45 @@ | |||
| 157 | Poppler PDF rendering library.") | 158 | Poppler PDF rendering library.") |
| 158 | (license license:lgpl2.1+))) | 159 | (license license:lgpl2.1+))) |
| 159 | 160 | ||
| 161 | (define-public libharu | ||
| 162 | (package | ||
| 163 | (name "libharu") | ||
| 164 | (version "2.3.0") | ||
| 165 | (source (origin | ||
| 166 | (method url-fetch) | ||
| 167 | (uri (string-append "https://github.com/libharu/libharu/archive/" | ||
| 168 | "RELEASE_" | ||
| 169 | (string-join (string-split version #\.) "_") | ||
| 170 | ".tar.gz")) | ||
| 171 | (file-name (string-append name "-" version ".tar.gz")) | ||
| 172 | (sha256 | ||
| 173 | (base32 | ||
| 174 | "1lm4v539y9cb1lvbq387j57sy7yxda3yv8b1pk8m6zazbp66i7lg")))) | ||
| 175 | (build-system gnu-build-system) | ||
| 176 | (arguments | ||
| 177 | `(#:configure-flags | ||
| 178 | (list (string-append "--with-zlib=" | ||
| 179 | (assoc-ref %build-inputs "zlib")) | ||
| 180 | (string-append "--with-png=" | ||
| 181 | (assoc-ref %build-inputs "libpng"))) | ||
| 182 | #:phases | ||
| 183 | (modify-phases %standard-phases | ||
| 184 | (add-before 'configure 'autogen | ||
| 185 | (lambda _ (zero? (system* "autoreconf" "-vif"))))))) | ||
| 186 | (inputs | ||
| 187 | `(("zlib" ,zlib) | ||
| 188 | ("libpng" ,libpng))) | ||
| 189 | (native-inputs | ||
| 190 | `(("autoconf" ,autoconf) | ||
| 191 | ("automake" ,automake) | ||
| 192 | ("libtool" ,libtool))) | ||
| 193 | (home-page "http://libharu.org/") | ||
| 194 | (synopsis "Library for generating PDF files") | ||
| 195 | (description | ||
| 196 | "libHaru is a library for generating PDF files. libHaru does not support | ||
| 197 | reading and editing of existing PDF files.") | ||
| 198 | (license license:zlib))) | ||
| 199 | |||
| 160 | (define-public xpdf | 200 | (define-public xpdf |
| 161 | (package | 201 | (package |
| 162 | (name "xpdf") | 202 | (name "xpdf") |
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 211505a8460..9f298ac9600 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm | |||
| @@ -8,6 +8,8 @@ | |||
| 8 | ;;; Copyright © 2016 Jochem Raat <jchmrt@riseup.net> | 8 | ;;; Copyright © 2016 Jochem Raat <jchmrt@riseup.net> |
| 9 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | 9 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> |
| 10 | ;;; Coypright © 2016 ng0 <ng0@we.make.ritual.n0.is> | 10 | ;;; Coypright © 2016 ng0 <ng0@we.make.ritual.n0.is> |
| 11 | ;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co> | ||
| 12 | ;;; Copyright © 2016 Roel Janssen <roel@gnu.org> | ||
| 11 | ;;; | 13 | ;;; |
| 12 | ;;; This file is part of GNU Guix. | 14 | ;;; This file is part of GNU Guix. |
| 13 | ;;; | 15 | ;;; |
| @@ -1002,6 +1004,29 @@ some enhancements such as here-documents, C-style comments, and multiline | |||
| 1002 | options.") | 1004 | options.") |
| 1003 | (license (package-license perl)))) | 1005 | (license (package-license perl)))) |
| 1004 | 1006 | ||
| 1007 | (define-public perl-config-ini | ||
| 1008 | (package | ||
| 1009 | (name "perl-config-ini") | ||
| 1010 | (version "0.025") | ||
| 1011 | (source (origin | ||
| 1012 | (method url-fetch) | ||
| 1013 | (uri (string-append | ||
| 1014 | "mirror://cpan/authors/id/R/RJ/RJBS/Config-INI-" | ||
| 1015 | version ".tar.gz")) | ||
| 1016 | (sha256 | ||
| 1017 | (base32 | ||
| 1018 | "0clphq6a17chvb663fvjnxqvyvh26g03x0fl4bg9vy4ibdnzg2v2")))) | ||
| 1019 | (build-system perl-build-system) | ||
| 1020 | (inputs | ||
| 1021 | `(("perl-mixin-linewise" ,perl-mixin-linewise) | ||
| 1022 | ("perl-perlio-utf8_strict" ,perl-perlio-utf8_strict) | ||
| 1023 | ("perl-sub-exporter" ,perl-sub-exporter))) | ||
| 1024 | (home-page "http://search.cpan.org/dist/Config-INI") | ||
| 1025 | (synopsis "Simple .ini-file format reader and writer") | ||
| 1026 | (description "@code{Config::INI} is a module that facilates the reading | ||
| 1027 | and writing of @code{.ini}-style configuration files.") | ||
| 1028 | (license (package-license perl)))) | ||
| 1029 | |||
| 1005 | (define-public perl-context-preserve | 1030 | (define-public perl-context-preserve |
| 1006 | (package | 1031 | (package |
| 1007 | (name "perl-context-preserve") | 1032 | (name "perl-context-preserve") |
| @@ -2458,6 +2483,26 @@ shell.") | |||
| 2458 | "File-Which-" version)) | 2483 | "File-Which-" version)) |
| 2459 | (license (package-license perl)))) | 2484 | (license (package-license perl)))) |
| 2460 | 2485 | ||
| 2486 | (define-public perl-file-zglob | ||
| 2487 | (package | ||
| 2488 | (name "perl-file-zglob") | ||
| 2489 | (version "0.11") | ||
| 2490 | (source (origin | ||
| 2491 | (method url-fetch) | ||
| 2492 | (uri (string-append | ||
| 2493 | "mirror://cpan/authors/id/T/TO/TOKUHIROM/File-Zglob-" | ||
| 2494 | version ".tar.gz")) | ||
| 2495 | (sha256 | ||
| 2496 | (base32 | ||
| 2497 | "16v61rn0yimpv5kp6b20z2f1c93n5kpsyjvr0gq4w2dc43gfvc8w")))) | ||
| 2498 | (build-system perl-build-system) | ||
| 2499 | (home-page "http://search.cpan.org/dist/File-Zglob") | ||
| 2500 | (synopsis "Extended Unix style glob functionality") | ||
| 2501 | (description "@code{File::Zglob} provides a traditional Unix @code{glob} | ||
| 2502 | functionality; it returns a list of file names that match the given pattern. | ||
| 2503 | For instance, it supports the @code{**/*.pm} form.") | ||
| 2504 | (license (package-license perl)))) | ||
| 2505 | |||
| 2461 | (define-public perl-getopt-long-descriptive | 2506 | (define-public perl-getopt-long-descriptive |
| 2462 | (package | 2507 | (package |
| 2463 | (name "perl-getopt-long-descriptive") | 2508 | (name "perl-getopt-long-descriptive") |
| @@ -2505,6 +2550,29 @@ vaguely inspired by John Ousterhout's Tk_ParseArgv.") | |||
| 2505 | "Getopt-Tabular-" version)) | 2550 | "Getopt-Tabular-" version)) |
| 2506 | (license (package-license perl)))) | 2551 | (license (package-license perl)))) |
| 2507 | 2552 | ||
| 2553 | (define-public perl-guard | ||
| 2554 | (package | ||
| 2555 | (name "perl-guard") | ||
| 2556 | (version "1.023") | ||
| 2557 | (source (origin | ||
| 2558 | (method url-fetch) | ||
| 2559 | (uri (string-append "mirror://cpan/authors/id/M/ML/MLEHMANN/Guard-" | ||
| 2560 | version ".tar.gz")) | ||
| 2561 | (sha256 | ||
| 2562 | (base32 | ||
| 2563 | "1p6i9mfmbs9cw40jqdv71ihv2xfi0vvlv8bdv2810gf93zwxvi1l")))) | ||
| 2564 | (build-system perl-build-system) | ||
| 2565 | (home-page "http://search.cpan.org/dist/Guard") | ||
| 2566 | (synopsis "Safe cleanup blocks implemented as guards") | ||
| 2567 | (description "@code{Guard} implements so-called @dfn{guards}. A guard is | ||
| 2568 | something (usually an object) that \"guards\" a resource, ensuring that it is | ||
| 2569 | cleaned up when expected. | ||
| 2570 | |||
| 2571 | Specifically, this module supports two different types of guards: guard | ||
| 2572 | objects, which execute a given code block when destroyed, and scoped guards, | ||
| 2573 | which are tied to the scope exit.") | ||
| 2574 | (license (package-license perl)))) | ||
| 2575 | |||
| 2508 | (define-public perl-hash-merge | 2576 | (define-public perl-hash-merge |
| 2509 | (package | 2577 | (package |
| 2510 | (name "perl-hash-merge") | 2578 | (name "perl-hash-merge") |
| @@ -2592,6 +2660,31 @@ dependencies for CPAN distributions. These dependencies get bundled into the | |||
| 2592 | inc directory within a distribution and are used by Makefile.PL or Build.PL.") | 2660 | inc directory within a distribution and are used by Makefile.PL or Build.PL.") |
| 2593 | (license asl2.0))) | 2661 | (license asl2.0))) |
| 2594 | 2662 | ||
| 2663 | (define-public perl-io-captureoutput | ||
| 2664 | (package | ||
| 2665 | (name "perl-io-captureoutput") | ||
| 2666 | (version "1.1104") | ||
| 2667 | (source | ||
| 2668 | (origin | ||
| 2669 | (method url-fetch) | ||
| 2670 | (uri (string-append | ||
| 2671 | "mirror://cpan/authors/id/D/DA/DAGOLDEN/IO-CaptureOutput-" | ||
| 2672 | version | ||
| 2673 | ".tar.gz")) | ||
| 2674 | (sha256 | ||
| 2675 | (base32 | ||
| 2676 | "0c437zvzpqi8f0h3nmblwdi2bvsb92b7g30fndr7my9qnky35izw")))) | ||
| 2677 | (build-system perl-build-system) | ||
| 2678 | (home-page "http://search.cpan.org/dist/IO-CaptureOutput") | ||
| 2679 | (synopsis "Capture STDOUT and STDERR from Perl code, subprocesses or XS") | ||
| 2680 | (description "@code{IO::CaptureOutput} provides routines for capturing | ||
| 2681 | @code{STDOUT} and @code{STDERR} from perl subroutines, forked system | ||
| 2682 | calls (e.g. @code{system()}, @code{fork()}) and from XS or C modules. | ||
| 2683 | |||
| 2684 | This module is no longer recommended by its maintainer. Users are advised to | ||
| 2685 | try @code{Capture::Tiny} instead.") | ||
| 2686 | (license (package-license perl)))) | ||
| 2687 | |||
| 2595 | (define-public perl-io-interactive | 2688 | (define-public perl-io-interactive |
| 2596 | (package | 2689 | (package |
| 2597 | (name "perl-io-interactive") | 2690 | (name "perl-io-interactive") |
| @@ -2744,6 +2837,30 @@ Perlish API and none of the bloat and rarely used features of IPC::Run.") | |||
| 2744 | allowing data to be efficiently communicated between processes.") | 2837 | allowing data to be efficiently communicated between processes.") |
| 2745 | (license (package-license perl)))) | 2838 | (license (package-license perl)))) |
| 2746 | 2839 | ||
| 2840 | (define-public perl-ipc-system-simple | ||
| 2841 | (package | ||
| 2842 | (name "perl-ipc-system-simple") | ||
| 2843 | (version "1.25") | ||
| 2844 | (source (origin | ||
| 2845 | (method url-fetch) | ||
| 2846 | (uri (string-append | ||
| 2847 | "mirror://cpan/authors/id/P/PJ/PJF/IPC-System-Simple-" | ||
| 2848 | version ".tar.gz")) | ||
| 2849 | (sha256 | ||
| 2850 | (base32 | ||
| 2851 | "0fsdb81shjj4hifyyzvj7vpkhq5jrfhlcpw2xbjfi1mqz8fsmdpi")))) | ||
| 2852 | (build-system perl-build-system) | ||
| 2853 | (home-page "http://search.cpan.org/dist/IPC-System-Simple") | ||
| 2854 | (synopsis "Run commands simply, with detailed diagnostics") | ||
| 2855 | (description "Calling Perl's in-built @code{system} function is easy, | ||
| 2856 | determining if it was successful is hard. Let's face it, @code{$?} isn't the | ||
| 2857 | nicest variable in the world to play with, and even if you do check it, | ||
| 2858 | producing a well-formatted error string takes a lot of work. | ||
| 2859 | |||
| 2860 | @code{IPC::System::Simple} takes the hard work out of calling external | ||
| 2861 | commands.") | ||
| 2862 | (license (package-license perl)))) | ||
| 2863 | |||
| 2747 | (define-public perl-json | 2864 | (define-public perl-json |
| 2748 | (package | 2865 | (package |
| 2749 | (name "perl-json") | 2866 | (name "perl-json") |
| @@ -2913,6 +3030,30 @@ one: logging, exceptions, and translations.") | |||
| 2913 | List::Util or List::MoreUtils defines, with preference to List::Util.") | 3030 | List::Util or List::MoreUtils defines, with preference to List::Util.") |
| 2914 | (license (package-license perl)))) | 3031 | (license (package-license perl)))) |
| 2915 | 3032 | ||
| 3033 | (define-public perl-list-compare | ||
| 3034 | (package | ||
| 3035 | (name "perl-list-compare") | ||
| 3036 | (version "0.53") | ||
| 3037 | (source | ||
| 3038 | (origin | ||
| 3039 | (method url-fetch) | ||
| 3040 | (uri (string-append | ||
| 3041 | "mirror://cpan/authors/id/J/JK/JKEENAN/List-Compare-" | ||
| 3042 | version | ||
| 3043 | ".tar.gz")) | ||
| 3044 | (sha256 | ||
| 3045 | (base32 | ||
| 3046 | "0l451yqhx1hlm7f2c3bjsl3n8w6l1jngrxzyfm2d8d9iggv4zgzx")))) | ||
| 3047 | (build-system perl-build-system) | ||
| 3048 | (native-inputs | ||
| 3049 | `(("perl-io-captureoutput" ,perl-io-captureoutput))) | ||
| 3050 | (home-page "http://search.cpan.org/dist/List-Compare") | ||
| 3051 | (synopsis "Compare elements of two or more lists") | ||
| 3052 | (description "@code{List::Compare} provides a module to perform | ||
| 3053 | comparative operations on two or more lists. Provided operations include | ||
| 3054 | intersections, unions, unique elements, complements and many more.") | ||
| 3055 | (license (package-license perl)))) | ||
| 3056 | |||
| 2916 | (define-public perl-list-moreutils | 3057 | (define-public perl-list-moreutils |
| 2917 | (package | 3058 | (package |
| 2918 | (name "perl-list-moreutils") | 3059 | (name "perl-list-moreutils") |
| @@ -2938,6 +3079,39 @@ List::Util or List::MoreUtils defines, with preference to List::Util.") | |||
| 2938 | functionality on lists which is not going to go into List::Util.") | 3079 | functionality on lists which is not going to go into List::Util.") |
| 2939 | (license (package-license perl)))) | 3080 | (license (package-license perl)))) |
| 2940 | 3081 | ||
| 3082 | (define-public perl-list-someutils | ||
| 3083 | (package | ||
| 3084 | (name "perl-list-someutils") | ||
| 3085 | (version "0.52") | ||
| 3086 | (source | ||
| 3087 | (origin | ||
| 3088 | (method url-fetch) | ||
| 3089 | (uri (string-append | ||
| 3090 | "mirror://cpan/authors/id/D/DR/DROLSKY/List-SomeUtils-" | ||
| 3091 | version | ||
| 3092 | ".tar.gz")) | ||
| 3093 | (sha256 | ||
| 3094 | (base32 | ||
| 3095 | "1b450jyxaa6q2yl0cdhknr3c2a5s7b9b18ccnwac625c681r130y")))) | ||
| 3096 | (build-system perl-build-system) | ||
| 3097 | (native-inputs | ||
| 3098 | `(("perl-test-leaktrace" ,perl-test-leaktrace))) | ||
| 3099 | (inputs | ||
| 3100 | `(("perl-exporter-tiny" ,perl-exporter-tiny) | ||
| 3101 | ("perl-module-implementation" | ||
| 3102 | ,perl-module-implementation))) | ||
| 3103 | (home-page "http://search.cpan.org/dist/List-SomeUtils") | ||
| 3104 | (synopsis "Provide the stuff missing in List::Util") | ||
| 3105 | (description "@code{List::SomeUtils} provides some trivial but commonly | ||
| 3106 | needed functionality on lists which is not going to go into @code{List::Util}. | ||
| 3107 | |||
| 3108 | All of the below functions are implementable in only a couple of lines of Perl | ||
| 3109 | code. Using the functions from this module however should give slightly | ||
| 3110 | better performance as everything is implemented in C. The pure-Perl | ||
| 3111 | implementation of these functions only serves as a fallback in case the C | ||
| 3112 | portions of this module couldn't be compiled on this machine.") | ||
| 3113 | (license (package-license perl)))) | ||
| 3114 | |||
| 2941 | (define-public perl-memoize-expirelru | 3115 | (define-public perl-memoize-expirelru |
| 2942 | (package | 3116 | (package |
| 2943 | (name "perl-memoize-expirelru") | 3117 | (name "perl-memoize-expirelru") |
| @@ -2997,6 +3171,31 @@ from various sources. For instance, it contains all IANA types and the | |||
| 2997 | knowledge of Apache.") | 3171 | knowledge of Apache.") |
| 2998 | (license (package-license perl)))) | 3172 | (license (package-license perl)))) |
| 2999 | 3173 | ||
| 3174 | (define-public perl-mixin-linewise | ||
| 3175 | (package | ||
| 3176 | (name "perl-mixin-linewise") | ||
| 3177 | (version "0.108") | ||
| 3178 | (source (origin | ||
| 3179 | (method url-fetch) | ||
| 3180 | (uri (string-append | ||
| 3181 | "mirror://cpan/authors/id/R/RJ/RJBS/Mixin-Linewise-" | ||
| 3182 | version ".tar.gz")) | ||
| 3183 | (sha256 | ||
| 3184 | (base32 | ||
| 3185 | "1wmfr19w9y8qys7b32mnj1vmps7qwdahqas71a9p62ac8xw0dwkx")))) | ||
| 3186 | (build-system perl-build-system) | ||
| 3187 | (inputs | ||
| 3188 | `(("perl-perlio-utf8_strict" ,perl-perlio-utf8_strict) | ||
| 3189 | ("perl-sub-exporter" ,perl-sub-exporter))) | ||
| 3190 | (home-page "http://search.cpan.org/dist/Mixin-Linewise") | ||
| 3191 | (synopsis "Write your linewise code for handles; this does the rest") | ||
| 3192 | (description "It's boring to deal with opening files for IO, converting | ||
| 3193 | strings to handle-like objects, and all that. With | ||
| 3194 | @code{Mixin::Linewise::Readers} and @code{Mixin::Linewise::Writers}, you can | ||
| 3195 | just write a method to handle handles, and methods for handling strings and | ||
| 3196 | file names are added for you.") | ||
| 3197 | (license (package-license perl)))) | ||
| 3198 | |||
| 3000 | (define-public perl-module-build-tiny | 3199 | (define-public perl-module-build-tiny |
| 3001 | (package | 3200 | (package |
| 3002 | (name "perl-module-build-tiny") | 3201 | (name "perl-module-build-tiny") |
| @@ -4154,6 +4353,29 @@ up inheritance from those modules at the same time.") | |||
| 4154 | directory specifications in a cross-platform manner.") | 4353 | directory specifications in a cross-platform manner.") |
| 4155 | (license (package-license perl)))) | 4354 | (license (package-license perl)))) |
| 4156 | 4355 | ||
| 4356 | (define-public perl-perlio-utf8_strict | ||
| 4357 | (package | ||
| 4358 | (name "perl-perlio-utf8-strict") | ||
| 4359 | (version "0.006") | ||
| 4360 | (source (origin | ||
| 4361 | (method url-fetch) | ||
| 4362 | (uri (string-append | ||
| 4363 | "mirror://cpan/authors/id/L/LE/LEONT/PerlIO-utf8_strict-" | ||
| 4364 | version ".tar.gz")) | ||
| 4365 | (sha256 | ||
| 4366 | (base32 | ||
| 4367 | "0qnmiflirfq10jkmrxyy81ch6hzyndfzxqf8maif0fy44kk1004q")))) | ||
| 4368 | (build-system perl-build-system) | ||
| 4369 | (native-inputs | ||
| 4370 | `(("perl-test-exception" ,perl-test-exception))) | ||
| 4371 | (home-page | ||
| 4372 | "http://search.cpan.org/dist/PerlIO-utf8_strict") | ||
| 4373 | (synopsis "Fast and correct UTF-8 IO") | ||
| 4374 | (description "@code{PerlIO::utf8_strict} provides a fast and correct UTF-8 | ||
| 4375 | PerlIO layer. Unlike Perl's default @code{:utf8} layer it checks the input | ||
| 4376 | for correctness.") | ||
| 4377 | (license (package-license perl)))) | ||
| 4378 | |||
| 4157 | (define-public perl-pod-coverage | 4379 | (define-public perl-pod-coverage |
| 4158 | (package | 4380 | (package |
| 4159 | (name "perl-pod-coverage") | 4381 | (name "perl-pod-coverage") |
| @@ -4939,6 +5161,66 @@ framework base class. It concentrates on offering reusable data driven | |||
| 4939 | patterns, so that you can write tests with a minimum of code.") | 5161 | patterns, so that you can write tests with a minimum of code.") |
| 4940 | (license (package-license perl)))) | 5162 | (license (package-license perl)))) |
| 4941 | 5163 | ||
| 5164 | (define-public perl-test-class | ||
| 5165 | (package | ||
| 5166 | (name "perl-test-class") | ||
| 5167 | (version "0.50") | ||
| 5168 | (source | ||
| 5169 | (origin | ||
| 5170 | (method url-fetch) | ||
| 5171 | (uri (string-append | ||
| 5172 | "https://cpan.metacpan.org/authors/id/E/ET/ETHER/Test-Class-" | ||
| 5173 | version | ||
| 5174 | ".tar.gz")) | ||
| 5175 | (sha256 | ||
| 5176 | (base32 | ||
| 5177 | "0l0kk5jvxjkic2jkf1r7v41irb344aasnzr3f5ygjgxgiknm9489")))) | ||
| 5178 | (build-system perl-build-system) | ||
| 5179 | (native-inputs | ||
| 5180 | `(("perl-test-exception" ,perl-test-exception))) | ||
| 5181 | (inputs | ||
| 5182 | `(("perl-module-runtime" ,perl-module-runtime) | ||
| 5183 | ("perl-mro-compat" ,perl-mro-compat) | ||
| 5184 | ("perl-try-tiny" ,perl-try-tiny))) | ||
| 5185 | (home-page "http://search.cpan.org/dist/Test-Class") | ||
| 5186 | (synopsis "Easily create test classes in an xUnit/JUnit style") | ||
| 5187 | (description "@code{Test::Class} provides a simple way of creating classes | ||
| 5188 | and objects to test your code in an xUnit style. | ||
| 5189 | |||
| 5190 | Built using @code{Test::Builder}, it was designed to work with other | ||
| 5191 | @code{Test::Builder} based modules (@code{Test::More}, | ||
| 5192 | @code{Test::Differences}, @code{Test::Exception}, etc.).") | ||
| 5193 | (license (package-license perl)))) | ||
| 5194 | |||
| 5195 | (define-public perl-test-class-most | ||
| 5196 | (package | ||
| 5197 | (name "perl-test-class-most") | ||
| 5198 | (version "0.08") | ||
| 5199 | (source | ||
| 5200 | (origin | ||
| 5201 | (method url-fetch) | ||
| 5202 | (uri (string-append | ||
| 5203 | "mirror://cpan/authors/id/O/OV/OVID/Test-Class-Most-" | ||
| 5204 | version | ||
| 5205 | ".tar.gz")) | ||
| 5206 | (sha256 | ||
| 5207 | (base32 | ||
| 5208 | "1zvx9hil0mg0pnb8xfa4m0xgjpvh8s5gnbyprq3xwpdsdgcdwk33")))) | ||
| 5209 | (build-system perl-build-system) | ||
| 5210 | (native-inputs | ||
| 5211 | `(("perl-module-build" ,perl-module-build))) | ||
| 5212 | (inputs | ||
| 5213 | `(("perl-test-class" ,perl-test-class) | ||
| 5214 | ("perl-test-most" ,perl-test-most) | ||
| 5215 | ("perl-module-runtime" ,perl-module-runtime) | ||
| 5216 | ("perl-try-tiny" ,perl-try-tiny) | ||
| 5217 | ("perl-mro-compat" ,perl-mro-compat))) | ||
| 5218 | (home-page "http://search.cpan.org/dist/Test-Class-Most") | ||
| 5219 | (synopsis "Test classes the easy way") | ||
| 5220 | (description "@code{Test::Class::Most} provides some more convenience when | ||
| 5221 | using @code{Test::Class}.") | ||
| 5222 | (license (package-license perl)))) | ||
| 5223 | |||
| 4942 | (define-public perl-test-cleannamespaces | 5224 | (define-public perl-test-cleannamespaces |
| 4943 | (package | 5225 | (package |
| 4944 | (name "perl-test-cleannamespaces") | 5226 | (name "perl-test-cleannamespaces") |
| @@ -5651,15 +5933,15 @@ can combine fields into a CSV string and parse a CSV string into fields.") | |||
| 5651 | (define-public perl-text-diff | 5933 | (define-public perl-text-diff |
| 5652 | (package | 5934 | (package |
| 5653 | (name "perl-text-diff") | 5935 | (name "perl-text-diff") |
| 5654 | (version "1.41") | 5936 | (version "1.44") |
| 5655 | (source | 5937 | (source |
| 5656 | (origin | 5938 | (origin |
| 5657 | (method url-fetch) | 5939 | (method url-fetch) |
| 5658 | (uri (string-append "mirror://cpan/authors/id/O/OV/OVID/" | 5940 | (uri (string-append "mirror://cpan/authors/id/N/NE/NEILB/" |
| 5659 | "Text-Diff-" version ".tar.gz")) | 5941 | "Text-Diff-" version ".tar.gz")) |
| 5660 | (sha256 | 5942 | (sha256 |
| 5661 | (base32 | 5943 | (base32 |
| 5662 | "1ynjsa4sr1yvyh65sdfvahaafglibz70j8b6rj01cg1iisj50zx6")))) | 5944 | "041v92zla2acdc433f47giridf6p820sdczs7x5d71fhsyza1xsp")))) |
| 5663 | (build-system perl-build-system) | 5945 | (build-system perl-build-system) |
| 5664 | (propagated-inputs | 5946 | (propagated-inputs |
| 5665 | `(("perl-algorithm-diff" ,perl-algorithm-diff))) | 5947 | `(("perl-algorithm-diff" ,perl-algorithm-diff))) |
| @@ -5806,6 +6088,26 @@ system.") | |||
| 5806 | as exceptions to standard program flow.") | 6088 | as exceptions to standard program flow.") |
| 5807 | (license (package-license perl)))) | 6089 | (license (package-license perl)))) |
| 5808 | 6090 | ||
| 6091 | (define-public perltidy | ||
| 6092 | (package | ||
| 6093 | (name "perltidy") | ||
| 6094 | (version "20160302") | ||
| 6095 | (source (origin | ||
| 6096 | (method url-fetch) | ||
| 6097 | (uri (string-append "mirror://sourceforge/perltidy/Perl-Tidy-" | ||
| 6098 | version ".tar.gz")) | ||
| 6099 | (sha256 | ||
| 6100 | (base32 | ||
| 6101 | "19yw63yh5s3pq7k3nkw6nsamg5b8vvwyhgbizslgxg0mqgc4xl3d")))) | ||
| 6102 | (build-system perl-build-system) | ||
| 6103 | (home-page "http://perltidy.sourceforge.net/") | ||
| 6104 | (synopsis "Perl script tidier") | ||
| 6105 | (description "This package contains a Perl script which indents and | ||
| 6106 | reformats Perl scripts to make them easier to read. The formatting can be | ||
| 6107 | controlled with command line parameters. The default parameter settings | ||
| 6108 | approximately follow the suggestions in the Perl Style Guide.") | ||
| 6109 | (license gpl2+))) | ||
| 6110 | |||
| 5809 | (define-public perl-tie-ixhash | 6111 | (define-public perl-tie-ixhash |
| 5810 | (package | 6112 | (package |
| 5811 | (name "perl-tie-ixhash") | 6113 | (name "perl-tie-ixhash") |
diff --git a/gnu/packages/pumpio.scm b/gnu/packages/pumpio.scm index 9d705ea3d55..a74d474368c 100644 --- a/gnu/packages/pumpio.scm +++ b/gnu/packages/pumpio.scm | |||
| @@ -61,7 +61,6 @@ | |||
| 61 | (inputs | 61 | (inputs |
| 62 | `(("aspell" ,aspell) | 62 | `(("aspell" ,aspell) |
| 63 | ("qtbase" ,qtbase) | 63 | ("qtbase" ,qtbase) |
| 64 | ("qjson" ,qjson) | ||
| 65 | ("tidy" ,tidy))) | 64 | ("tidy" ,tidy))) |
| 66 | (synopsis "Qt-based pump.io client") | 65 | (synopsis "Qt-based pump.io client") |
| 67 | (description "Pumpa is a simple pump.io client written in C++ and Qt.") | 66 | (description "Pumpa is a simple pump.io client written in C++ and Qt.") |
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 8bba7ca2565..717a81e59fc 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm | |||
| @@ -22,6 +22,8 @@ | |||
| 22 | ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> | 22 | ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> |
| 23 | ;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org> | 23 | ;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org> |
| 24 | ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com> | 24 | ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com> |
| 25 | ;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com> | ||
| 26 | ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is> | ||
| 25 | ;;; | 27 | ;;; |
| 26 | ;;; This file is part of GNU Guix. | 28 | ;;; This file is part of GNU Guix. |
| 27 | ;;; | 29 | ;;; |
| @@ -384,18 +386,18 @@ instead of @command{python3}."))) | |||
| 384 | (define-public python-psutil | 386 | (define-public python-psutil |
| 385 | (package | 387 | (package |
| 386 | (name "python-psutil") | 388 | (name "python-psutil") |
| 387 | (version "3.3.0") | 389 | (version "4.3.0") |
| 388 | (source | 390 | (source |
| 389 | (origin | 391 | (origin |
| 390 | (method url-fetch) | 392 | (method url-fetch) |
| 391 | (uri (pypi-uri "psutil" version)) | 393 | (uri (pypi-uri "psutil" version)) |
| 392 | (sha256 | 394 | (sha256 |
| 393 | (base32 | 395 | (base32 |
| 394 | "11bd1555vf2ibjnmqf64im5cp55vcqfq45ccinm9ll3bs68na6s2")))) | 396 | "1w4r09fvn6kd80m5mx4ws1wz100brkaq6hzzpwrns8cgjzjpl6c6")))) |
| 395 | (build-system python-build-system) | 397 | (build-system python-build-system) |
| 396 | (native-inputs | 398 | (native-inputs |
| 397 | `(("python-setuptools" ,python-setuptools))) | 399 | `(("python-setuptools" ,python-setuptools))) |
| 398 | (home-page "https://pypi.python.org/pypi/psutil/") | 400 | (home-page "https://www.github.com/giampaolo/psutil") |
| 399 | (synopsis "Library for retrieving information on running processes") | 401 | (synopsis "Library for retrieving information on running processes") |
| 400 | (description | 402 | (description |
| 401 | "psutil (Python system and process utilities) is a library for retrieving | 403 | "psutil (Python system and process utilities) is a library for retrieving |
| @@ -1139,15 +1141,14 @@ after Andy Lester’s Perl module WWW::Mechanize.") | |||
| 1139 | (define-public python-simplejson | 1141 | (define-public python-simplejson |
| 1140 | (package | 1142 | (package |
| 1141 | (name "python-simplejson") | 1143 | (name "python-simplejson") |
| 1142 | (version "3.3.0") | 1144 | (version "3.8.2") |
| 1143 | (source | 1145 | (source |
| 1144 | (origin | 1146 | (origin |
| 1145 | (method url-fetch) | 1147 | (method url-fetch) |
| 1146 | (uri (string-append "https://pypi.python.org/packages/source/s/simplejson/simplejson-" | 1148 | (uri (pypi-uri "simplejson" version)) |
| 1147 | version ".tar.gz")) | ||
| 1148 | (sha256 | 1149 | (sha256 |
| 1149 | (base32 | 1150 | (base32 |
| 1150 | "07wsry5j44l5zzm74l4j2bvasiq8n5m32f31n2p7c68i5vc6p2ks")))) | 1151 | "0zylrnax8b6r0ndgni4w9c599fi6wm9vx5g6k3ddqfj3932kk16m")))) |
| 1151 | (build-system python-build-system) | 1152 | (build-system python-build-system) |
| 1152 | (home-page "http://simplejson.readthedocs.org/en/latest/") | 1153 | (home-page "http://simplejson.readthedocs.org/en/latest/") |
| 1153 | (synopsis | 1154 | (synopsis |
| @@ -2030,14 +2031,14 @@ have failed since the last commit or what tests are currently failing.") | |||
| 2030 | (define-public python-coverage | 2031 | (define-public python-coverage |
| 2031 | (package | 2032 | (package |
| 2032 | (name "python-coverage") | 2033 | (name "python-coverage") |
| 2033 | (version "4.0.3") | 2034 | (version "4.1") |
| 2034 | (source | 2035 | (source |
| 2035 | (origin | 2036 | (origin |
| 2036 | (method url-fetch) | 2037 | (method url-fetch) |
| 2037 | (uri (pypi-uri "coverage" version)) | 2038 | (uri (pypi-uri "coverage" version)) |
| 2038 | (sha256 | 2039 | (sha256 |
| 2039 | (base32 | 2040 | (base32 |
| 2040 | "0qjlja8ny4gcfp8abqfwdrvr8qw9kr69lkja0b4cqqbsdmdjgcc5")))) | 2041 | "01rbr4br4lsk0lwn8fb96zwd2xr4f0mg1w7iq3j11i8f5ig2nqs1")))) |
| 2041 | (build-system python-build-system) | 2042 | (build-system python-build-system) |
| 2042 | (inputs | 2043 | (inputs |
| 2043 | `(("python-setuptools" ,python-setuptools))) | 2044 | `(("python-setuptools" ,python-setuptools))) |
| @@ -2083,14 +2084,13 @@ backported from Python 2.7 for Python 2.4+.") | |||
| 2083 | (define-public behave | 2084 | (define-public behave |
| 2084 | (package | 2085 | (package |
| 2085 | (name "behave") | 2086 | (name "behave") |
| 2086 | (version "1.2.4") | 2087 | (version "1.2.5") |
| 2087 | (source (origin | 2088 | (source (origin |
| 2088 | (method url-fetch) | 2089 | (method url-fetch) |
| 2089 | (uri (string-append "https://pypi.python.org/packages/source/b/" | 2090 | (uri (pypi-uri "behave" version ".tar.bz2")) |
| 2090 | name "/" name "-" version ".tar.gz")) | ||
| 2091 | (sha256 | 2091 | (sha256 |
| 2092 | (base32 | 2092 | (base32 |
| 2093 | "1v2rfy8xnf0rk7cj4cgr7lam4015d458i7bg0xqs9czfv6njlm14")))) | 2093 | "1iypp6z46r19n4xmgx6m1lwmlpfjh8vapq8izigrqlaarvp2y64c")))) |
| 2094 | (build-system python-build-system) | 2094 | (build-system python-build-system) |
| 2095 | (inputs | 2095 | (inputs |
| 2096 | `(("python-setuptools" ,python-setuptools) | 2096 | `(("python-setuptools" ,python-setuptools) |
| @@ -3283,15 +3283,14 @@ that client code uses to construct the grammar directly in Python code.") | |||
| 3283 | (define-public python-numexpr | 3283 | (define-public python-numexpr |
| 3284 | (package | 3284 | (package |
| 3285 | (name "python-numexpr") | 3285 | (name "python-numexpr") |
| 3286 | (version "2.4.4") | 3286 | (version "2.6.0") |
| 3287 | (source | 3287 | (source |
| 3288 | (origin | 3288 | (origin |
| 3289 | (method url-fetch) | 3289 | (method url-fetch) |
| 3290 | (uri (string-append "https://pypi.python.org/packages/source/" | 3290 | (uri (pypi-uri "numexpr" version)) |
| 3291 | "n/numexpr/numexpr-" version ".tar.gz")) | ||
| 3292 | (sha256 | 3291 | (sha256 |
| 3293 | (base32 | 3292 | (base32 |
| 3294 | "0nsnff5312fm38w6dm34bw7ghfqqy8vl9gig0al963h4mz8zm8nz")))) | 3293 | "0i6iagl2hhbr8q4qzbbjd859v5806vqylq87fq7pi914ps6d6cag")))) |
| 3295 | (build-system python-build-system) | 3294 | (build-system python-build-system) |
| 3296 | (arguments `(#:tests? #f)) ; no tests included | 3295 | (arguments `(#:tests? #f)) ; no tests included |
| 3297 | (propagated-inputs | 3296 | (propagated-inputs |
| @@ -4132,13 +4131,13 @@ child application and control it as if a human were typing commands.") | |||
| 4132 | (define-public python-setuptools-scm | 4131 | (define-public python-setuptools-scm |
| 4133 | (package | 4132 | (package |
| 4134 | (name "python-setuptools-scm") | 4133 | (name "python-setuptools-scm") |
| 4135 | (version "1.9.0") | 4134 | (version "1.11.1") |
| 4136 | (source (origin | 4135 | (source (origin |
| 4137 | (method url-fetch) | 4136 | (method url-fetch) |
| 4138 | (uri (pypi-uri "setuptools_scm" version)) | 4137 | (uri (pypi-uri "setuptools_scm" version)) |
| 4139 | (sha256 | 4138 | (sha256 |
| 4140 | (base32 | 4139 | (base32 |
| 4141 | "0y24bl893zk6nrklbvdrlmpkalf214zjn6k1xrglljd29rrn4wxi")))) | 4140 | "1gqr73i150yzj3mz32854vj93x07yr52kn8fdckwa41ll8wgficc")))) |
| 4142 | (build-system python-build-system) | 4141 | (build-system python-build-system) |
| 4143 | (native-inputs `(("python-setuptools" ,python-setuptools))) | 4142 | (native-inputs `(("python-setuptools" ,python-setuptools))) |
| 4144 | (home-page "https://github.com/pypa/setuptools_scm/") | 4143 | (home-page "https://github.com/pypa/setuptools_scm/") |
| @@ -4507,6 +4506,30 @@ features useful for text console applications.") | |||
| 4507 | (define-public python2-urwid | 4506 | (define-public python2-urwid |
| 4508 | (package-with-python2 python-urwid)) | 4507 | (package-with-python2 python-urwid)) |
| 4509 | 4508 | ||
| 4509 | (define-public python-urwidtrees | ||
| 4510 | (package | ||
| 4511 | (name "python-urwidtrees") | ||
| 4512 | (version "1.0.1.1") | ||
| 4513 | (source | ||
| 4514 | (origin | ||
| 4515 | (method url-fetch) | ||
| 4516 | (uri (pypi-uri "urwidtrees" version)) | ||
| 4517 | (sha256 | ||
| 4518 | (base32 | ||
| 4519 | "1zcvy12s7h3fazf33d6y7b4v19p8hg95xqwhqlmw6jz9fq76v9h8")))) | ||
| 4520 | (build-system python-build-system) | ||
| 4521 | (arguments | ||
| 4522 | '(#:tests? #f)) ; no tests | ||
| 4523 | (inputs `(("python-urwid" ,python-urwid))) | ||
| 4524 | (home-page "https://github.com/pazz/urwidtrees") | ||
| 4525 | (synopsis "Tree widgets for urwid") | ||
| 4526 | (description "Urwidtrees is a Widget Container API for the @code{urwid} | ||
| 4527 | toolkit. Use it to build trees of widgets.") | ||
| 4528 | (license gpl3+))) | ||
| 4529 | |||
| 4530 | (define-public python2-urwidtrees | ||
| 4531 | (package-with-python2 python-urwidtrees)) | ||
| 4532 | |||
| 4510 | (define-public python-dbus | 4533 | (define-public python-dbus |
| 4511 | (package | 4534 | (package |
| 4512 | (name "python-dbus") | 4535 | (name "python-dbus") |
| @@ -4591,14 +4614,14 @@ translate the complete SQLite API into Python.") | |||
| 4591 | (define-public python-lxml | 4614 | (define-public python-lxml |
| 4592 | (package | 4615 | (package |
| 4593 | (name "python-lxml") | 4616 | (name "python-lxml") |
| 4594 | (version "3.5.0") | 4617 | (version "3.6.0") |
| 4595 | (source | 4618 | (source |
| 4596 | (origin | 4619 | (origin |
| 4597 | (method url-fetch) | 4620 | (method url-fetch) |
| 4598 | (uri (pypi-uri "lxml" version)) | 4621 | (uri (pypi-uri "lxml" version)) |
| 4599 | (sha256 | 4622 | (sha256 |
| 4600 | (base32 | 4623 | (base32 |
| 4601 | "0y7m2s8ci6q642zl85y5axkj8z827l0vhjl532acb75hlkir77rl")))) | 4624 | "1pvbmiy2m7jwv493kilbghhj2pkh8wy1na3ji350vhzhlwlclx4w")))) |
| 4602 | (build-system python-build-system) | 4625 | (build-system python-build-system) |
| 4603 | (inputs | 4626 | (inputs |
| 4604 | `(("libxml2" ,libxml2) | 4627 | `(("libxml2" ,libxml2) |
| @@ -4651,17 +4674,14 @@ converts incoming documents to Unicode and outgoing documents to UTF-8.") | |||
| 4651 | (define-public python2-cssutils | 4674 | (define-public python2-cssutils |
| 4652 | (package | 4675 | (package |
| 4653 | (name "python2-cssutils") | 4676 | (name "python2-cssutils") |
| 4654 | (version "1.0") | 4677 | (version "1.0.1") |
| 4655 | (source | 4678 | (source |
| 4656 | (origin | 4679 | (origin |
| 4657 | (method url-fetch) | 4680 | (method url-fetch) |
| 4658 | (uri (string-append | 4681 | (uri (pypi-uri "cssutils" version)) |
| 4659 | "https://pypi.python.org/packages/source/c/cssutils/cssutils-" | ||
| 4660 | version | ||
| 4661 | ".zip")) | ||
| 4662 | (sha256 | 4682 | (sha256 |
| 4663 | (base32 | 4683 | (base32 |
| 4664 | "1bwim1353r4hqiir73sn4sc43y7ymh09qx0kly7vj048blppc125")))) | 4684 | "0qwha9x1wml2qmipbcz03gndnlwhzrjdvw9i09si247a90l8p8fq")))) |
| 4665 | (build-system python-build-system) | 4685 | (build-system python-build-system) |
| 4666 | (native-inputs | 4686 | (native-inputs |
| 4667 | `(("python2-mock" ,python2-mock) ; for the tests | 4687 | `(("python2-mock" ,python2-mock) ; for the tests |
| @@ -4684,17 +4704,14 @@ options.") | |||
| 4684 | (define-public python-cssselect | 4704 | (define-public python-cssselect |
| 4685 | (package | 4705 | (package |
| 4686 | (name "python-cssselect") | 4706 | (name "python-cssselect") |
| 4687 | (version "0.9.1") | 4707 | (version "0.9.2") |
| 4688 | (source | 4708 | (source |
| 4689 | (origin | 4709 | (origin |
| 4690 | (method url-fetch) | 4710 | (method url-fetch) |
| 4691 | (uri (string-append | 4711 | (uri (pypi-uri "cssselect" version)) |
| 4692 | "https://pypi.python.org/packages/source/c/cssselect/cssselect-" | ||
| 4693 | version | ||
| 4694 | ".tar.gz")) | ||
| 4695 | (sha256 | 4712 | (sha256 |
| 4696 | (base32 | 4713 | (base32 |
| 4697 | "10h623qnp6dp1191jri7lvgmnd4yfkl36k9smqklp1qlf3iafd85")))) | 4714 | "1xg6gbva1yswghiycmgincv6ab4bn7hpm720ndbj40h8xycmnfvi")))) |
| 4698 | (build-system python-build-system) | 4715 | (build-system python-build-system) |
| 4699 | (inputs | 4716 | (inputs |
| 4700 | `(("python-setuptools" ,python-setuptools))) | 4717 | `(("python-setuptools" ,python-setuptools))) |
| @@ -5961,18 +5978,14 @@ responses, rather than doing any computation.") | |||
| 5961 | (define-public python-cryptography-vectors | 5978 | (define-public python-cryptography-vectors |
| 5962 | (package | 5979 | (package |
| 5963 | (name "python-cryptography-vectors") | 5980 | (name "python-cryptography-vectors") |
| 5964 | (version "1.3.2") | 5981 | (version "1.3.4") |
| 5965 | (source | 5982 | (source |
| 5966 | (origin | 5983 | (origin |
| 5967 | (method url-fetch) | 5984 | (method url-fetch) |
| 5968 | (uri (string-append | 5985 | (uri (pypi-uri "cryptography_vectors" version)) |
| 5969 | "https://pypi.python.org/packages/" | ||
| 5970 | "3f/fd/" | ||
| 5971 | "5883a7fdfcdf6edec55c58605be99d8c36ce97a9b729763ea9cf30e761b7" | ||
| 5972 | "/cryptography_vectors-" version ".tar.gz")) | ||
| 5973 | (sha256 | 5986 | (sha256 |
| 5974 | (base32 | 5987 | (base32 |
| 5975 | "0ss682bpgzdfy2vam8yhhrx7p5gnw89ydlvaswqp52za8sd8nsh0")))) | 5988 | "15h1iz2klnpb4f8djxy7cpbnyn3wbjp7bnj4pz6s7w6plghbq524")))) |
| 5976 | (build-system python-build-system) | 5989 | (build-system python-build-system) |
| 5977 | (native-inputs | 5990 | (native-inputs |
| 5978 | `(("python-setuptools" ,python-setuptools))) | 5991 | `(("python-setuptools" ,python-setuptools))) |
| @@ -5989,18 +6002,14 @@ responses, rather than doing any computation.") | |||
| 5989 | (define-public python-cryptography | 6002 | (define-public python-cryptography |
| 5990 | (package | 6003 | (package |
| 5991 | (name "python-cryptography") | 6004 | (name "python-cryptography") |
| 5992 | (version "1.3.2") | 6005 | (version "1.3.4") |
| 5993 | (source | 6006 | (source |
| 5994 | (origin | 6007 | (origin |
| 5995 | (method url-fetch) | 6008 | (method url-fetch) |
| 5996 | (uri (string-append | 6009 | (uri (pypi-uri "cryptography" version)) |
| 5997 | "https://pypi.python.org/packages/" | ||
| 5998 | "04/da/" | ||
| 5999 | "35f9a1d34dab5d777f65fb87731288f338ab0ae46a525ffdf0405b573dd0" | ||
| 6000 | "/cryptography-" version ".tar.gz")) | ||
| 6001 | (sha256 | 6010 | (sha256 |
| 6002 | (base32 | 6011 | (base32 |
| 6003 | "121067qdbzd0ir0nxjdf0kgai7qlsc9yh2xhrj4cavcn4y4gmapv")))) | 6012 | "1a85l548w5vvq3yhz0az7ajg2ijixzp6gagapw6wgrqvq28ghgs2")))) |
| 6004 | (build-system python-build-system) | 6013 | (build-system python-build-system) |
| 6005 | (inputs | 6014 | (inputs |
| 6006 | `(("openssl" ,openssl))) | 6015 | `(("openssl" ,openssl))) |
| @@ -6666,16 +6675,14 @@ facilities for defining, registering and looking up components.") | |||
| 6666 | (define-public python2-pythondialog | 6675 | (define-public python2-pythondialog |
| 6667 | (package | 6676 | (package |
| 6668 | (name "python2-pythondialog") | 6677 | (name "python2-pythondialog") |
| 6669 | (version "3.3.0") | 6678 | (version "3.4.0") |
| 6670 | (source | 6679 | (source |
| 6671 | (origin | 6680 | (origin |
| 6672 | (method url-fetch) | 6681 | (method url-fetch) |
| 6673 | (uri (string-append "https://pypi.python.org/packages/source/p/" | 6682 | (uri (pypi-uri "python2-pythondialog" version)) |
| 6674 | "python2-pythondialog/python2-pythondialog-" | ||
| 6675 | version ".tar.gz")) | ||
| 6676 | (sha256 | 6683 | (sha256 |
| 6677 | (base32 | 6684 | (base32 |
| 6678 | "1yhkagsh99bfi592ymczf8rnw8rk6n9hdqy3dd98m3yrx8zmjvry")))) | 6685 | "0d8k7lxk50imdyx85lv8j98i4c93a71iwpapnl1506rpkbm9qvd9")))) |
| 6679 | (build-system python-build-system) | 6686 | (build-system python-build-system) |
| 6680 | (arguments | 6687 | (arguments |
| 6681 | `(#:phases | 6688 | `(#:phases |
| @@ -6896,16 +6903,14 @@ tables.") | |||
| 6896 | (define-public python-websocket-client | 6903 | (define-public python-websocket-client |
| 6897 | (package | 6904 | (package |
| 6898 | (name "python-websocket-client") | 6905 | (name "python-websocket-client") |
| 6899 | (version "0.34.0") | 6906 | (version "0.37.0") |
| 6900 | (source | 6907 | (source |
| 6901 | (origin | 6908 | (origin |
| 6902 | (method url-fetch) | 6909 | (method url-fetch) |
| 6903 | (uri (string-append "https://pypi.python.org/packages/source/w" | 6910 | (uri (pypi-uri "websocket_client" version)) |
| 6904 | "/websocket-client/websocket_client-" | ||
| 6905 | version ".tar.gz")) | ||
| 6906 | (sha256 | 6911 | (sha256 |
| 6907 | (base32 | 6912 | (base32 |
| 6908 | "1prdx6d49f1cff17kzj15bnz09palfdgc1m5dkq9jd4mr90n4ak8")))) | 6913 | "0h9glp1jll3z76ly3kg08aqgxqk0a68p4zi9yn50353bh5nj92v7")))) |
| 6909 | (build-system python-build-system) | 6914 | (build-system python-build-system) |
| 6910 | (native-inputs | 6915 | (native-inputs |
| 6911 | `(("python-six" ,python-six))) ; for tests | 6916 | `(("python-six" ,python-six))) ; for tests |
| @@ -7094,7 +7099,17 @@ minimal and fast API targetting the following uses: | |||
| 7094 | (description "The pytest-cache plugin provides tools to rerun failures from | 7099 | (description "The pytest-cache plugin provides tools to rerun failures from |
| 7095 | the last py.test invocation.") | 7100 | the last py.test invocation.") |
| 7096 | (home-page "https://bitbucket.org/hpk42/pytest-cache/") | 7101 | (home-page "https://bitbucket.org/hpk42/pytest-cache/") |
| 7097 | (license license:expat))) | 7102 | (license license:expat) |
| 7103 | (properties `((python2-variant . ,(delay python2-pytest-cache)))))) | ||
| 7104 | |||
| 7105 | (define-public python2-pytest-cache | ||
| 7106 | (let ((pytest-cache (package-with-python2 | ||
| 7107 | (strip-python2-variant python-pytest-cache)))) | ||
| 7108 | (package | ||
| 7109 | (inherit pytest-cache) | ||
| 7110 | (native-inputs | ||
| 7111 | `(("python2-setuptools" ,python2-setuptools) | ||
| 7112 | ,@(package-native-inputs pytest-cache)))))) | ||
| 7098 | 7113 | ||
| 7099 | (define-public python-pytest-localserver | 7114 | (define-public python-pytest-localserver |
| 7100 | (package | 7115 | (package |
| @@ -7975,14 +7990,14 @@ layouts.") | |||
| 7975 | (define-public python-pyquery | 7990 | (define-public python-pyquery |
| 7976 | (package | 7991 | (package |
| 7977 | (name "python-pyquery") | 7992 | (name "python-pyquery") |
| 7978 | (version "1.2.11") | 7993 | (version "1.2.13") |
| 7979 | (source | 7994 | (source |
| 7980 | (origin | 7995 | (origin |
| 7981 | (method url-fetch) | 7996 | (method url-fetch) |
| 7982 | (uri (pypi-uri "pyquery" version)) | 7997 | (uri (pypi-uri "pyquery" version)) |
| 7983 | (sha256 | 7998 | (sha256 |
| 7984 | (base32 | 7999 | (base32 |
| 7985 | "1ikz1387nsp0pp7mzzr6ip9n5gr67acpap24yn33987v7fkjp0sa")))) | 8000 | "0j9fsisip21qv4xljsg5dmni1pgpvwrjyyhhql0glydc4bs5rjgv")))) |
| 7986 | (build-system python-build-system) | 8001 | (build-system python-build-system) |
| 7987 | (propagated-inputs | 8002 | (propagated-inputs |
| 7988 | `(("python-lxml" ,python-lxml) | 8003 | `(("python-lxml" ,python-lxml) |
| @@ -8335,13 +8350,13 @@ commands into documents, helping you to keep your command examples up to date.") | |||
| 8335 | (define-public python-sphinx-repoze-autointerface | 8350 | (define-public python-sphinx-repoze-autointerface |
| 8336 | (package | 8351 | (package |
| 8337 | (name "python-sphinx-repoze-autointerface") | 8352 | (name "python-sphinx-repoze-autointerface") |
| 8338 | (version "0.7.1") | 8353 | (version "0.8") |
| 8339 | (source (origin | 8354 | (source (origin |
| 8340 | (method url-fetch) | 8355 | (method url-fetch) |
| 8341 | (uri (pypi-uri "repoze.sphinx.autointerface" version)) | 8356 | (uri (pypi-uri "repoze.sphinx.autointerface" version)) |
| 8342 | (sha256 | 8357 | (sha256 |
| 8343 | (base32 | 8358 | (base32 |
| 8344 | "016mv3wbylw278wl7z33y2liyra8ljp08zq1g0anzadh1an5zvwp")))) | 8359 | "08ycivzf7bh4a1zcyp31hbyqs1b2c9r26raa3vxjwwmbfqr3iw4f")))) |
| 8345 | (build-system python-build-system) | 8360 | (build-system python-build-system) |
| 8346 | (propagated-inputs | 8361 | (propagated-inputs |
| 8347 | `(("python-docutils" ,python-docutils) | 8362 | `(("python-docutils" ,python-docutils) |
| @@ -9123,8 +9138,9 @@ to provide a high-level synchronous API on top of the libev event loop.") | |||
| 9123 | "0ydxrp9myw1mvsz3qfzx5579y5llmqa82pxvqchgp5syczffi450")))) | 9138 | "0ydxrp9myw1mvsz3qfzx5579y5llmqa82pxvqchgp5syczffi450")))) |
| 9124 | (build-system python-build-system) | 9139 | (build-system python-build-system) |
| 9125 | (native-inputs | 9140 | (native-inputs |
| 9126 | `(("python-setuptools" ,python-setuptools) | 9141 | `(("python-setuptools" ,python-setuptools))) |
| 9127 | ("python-zope-interface" ,python-zope-interface))) | 9142 | (propagated-inputs |
| 9143 | `(("python-zope-interface" ,python-zope-interface))) | ||
| 9128 | (home-page "https://twistedmatrix.com/") | 9144 | (home-page "https://twistedmatrix.com/") |
| 9129 | (synopsis "Asynchronous networking framework written in Python") | 9145 | (synopsis "Asynchronous networking framework written in Python") |
| 9130 | (description | 9146 | (description |
| @@ -9209,8 +9225,9 @@ data in Python.") | |||
| 9209 | (build-system python-build-system) | 9225 | (build-system python-build-system) |
| 9210 | (arguments '(#:tests? #f)) ; XXX: needs zookeeper | 9226 | (arguments '(#:tests? #f)) ; XXX: needs zookeeper |
| 9211 | (native-inputs | 9227 | (native-inputs |
| 9212 | `(("python-setuptools" ,python-setuptools) | 9228 | `(("python-setuptools" ,python-setuptools))) |
| 9213 | ("python-six" ,python-six))) | 9229 | (propagated-inputs |
| 9230 | `(("python-six" ,python-six))) | ||
| 9214 | (home-page "https://kazoo.readthedocs.org") | 9231 | (home-page "https://kazoo.readthedocs.org") |
| 9215 | (synopsis "High-level Zookeeper client library") | 9232 | (synopsis "High-level Zookeeper client library") |
| 9216 | (description | 9233 | (description |
| @@ -9238,9 +9255,10 @@ programming errors.") | |||
| 9238 | (build-system python-build-system) | 9255 | (build-system python-build-system) |
| 9239 | (arguments '(#:tests? #f)) ; XXX: needs zookeeper, kafka, etc. | 9256 | (arguments '(#:tests? #f)) ; XXX: needs zookeeper, kafka, etc. |
| 9240 | (native-inputs | 9257 | (native-inputs |
| 9258 | `(("python-setuptools" ,python-setuptools))) | ||
| 9259 | (propagated-inputs | ||
| 9241 | `(("python-gevent" ,python-gevent) | 9260 | `(("python-gevent" ,python-gevent) |
| 9242 | ("python-kazoo" ,python-kazoo) | 9261 | ("python-kazoo" ,python-kazoo) |
| 9243 | ("python-setuptools" ,python-setuptools) | ||
| 9244 | ("python-tabulate" ,python-tabulate))) | 9262 | ("python-tabulate" ,python-tabulate))) |
| 9245 | (inputs | 9263 | (inputs |
| 9246 | `(("librdkafka" ,librdkafka))) | 9264 | `(("librdkafka" ,librdkafka))) |
| @@ -9277,7 +9295,8 @@ wide-character codes. It is useful for those implementing a terminal emulator, | |||
| 9277 | or programs that carefully produce output to be interpreted by one. It is a | 9295 | or programs that carefully produce output to be interpreted by one. It is a |
| 9278 | Python implementation of the @code{wcwidth} and @code{wcswidth} C functions | 9296 | Python implementation of the @code{wcwidth} and @code{wcswidth} C functions |
| 9279 | specified in POSIX.1-2001 and POSIX.1-2008.") | 9297 | specified in POSIX.1-2001 and POSIX.1-2008.") |
| 9280 | (license license:expat))) | 9298 | (license license:expat) |
| 9299 | (properties `((python2-variant . ,(delay python2-wcwidth)))))) | ||
| 9281 | 9300 | ||
| 9282 | (define-public python2-wcwidth | 9301 | (define-public python2-wcwidth |
| 9283 | (package | 9302 | (package |
| @@ -9348,10 +9367,11 @@ objects, patterned after the Mocha library for Ruby.") | |||
| 9348 | (build-system python-build-system) | 9367 | (build-system python-build-system) |
| 9349 | (native-inputs | 9368 | (native-inputs |
| 9350 | `(("python-setuptools" ,python-setuptools) | 9369 | `(("python-setuptools" ,python-setuptools) |
| 9351 | ("python-dateutil" ,python-dateutil-2) | ||
| 9352 | ;; For testing | 9370 | ;; For testing |
| 9353 | ("python-chai" ,python-chai) | 9371 | ("python-chai" ,python-chai) |
| 9354 | ("python-simplejson" ,python-simplejson))) | 9372 | ("python-simplejson" ,python-simplejson))) |
| 9373 | (propagated-inputs | ||
| 9374 | `(("python-dateutil" ,python-dateutil-2))) | ||
| 9355 | (home-page "https://github.com/crsmithdev/arrow/") | 9375 | (home-page "https://github.com/crsmithdev/arrow/") |
| 9356 | (synopsis "Dates and times for Python") | 9376 | (synopsis "Dates and times for Python") |
| 9357 | (description | 9377 | (description |
| @@ -9422,12 +9442,13 @@ Wikipedia code samples at | |||
| 9422 | "1k2dcl6mqpn5bljyl6w42rqyd9mb3y9kh2mg7m2x3kfjwvg0rpva")))) | 9442 | "1k2dcl6mqpn5bljyl6w42rqyd9mb3y9kh2mg7m2x3kfjwvg0rpva")))) |
| 9423 | (build-system python-build-system) | 9443 | (build-system python-build-system) |
| 9424 | (native-inputs | 9444 | (native-inputs |
| 9425 | `(("python-psutil" ,python-psutil) | 9445 | `(("python-setuptools" ,python-setuptools) |
| 9426 | ("python-pylev" ,python-pylev) | ||
| 9427 | ("python-setuptools" ,python-setuptools) | ||
| 9428 | ;; For testing | 9446 | ;; For testing |
| 9429 | ("python-mock" ,python-mock) | 9447 | ("python-mock" ,python-mock) |
| 9430 | ("python-pytest" ,python-pytest))) | 9448 | ("python-pytest" ,python-pytest))) |
| 9449 | (propagated-inputs | ||
| 9450 | `(("python-psutil" ,python-psutil) | ||
| 9451 | ("python-pylev" ,python-pylev))) | ||
| 9431 | (home-page "https://github.com/sdispater/cleo") | 9452 | (home-page "https://github.com/sdispater/cleo") |
| 9432 | (synopsis "Command-line arguments library for Python") | 9453 | (synopsis "Command-line arguments library for Python") |
| 9433 | (description | 9454 | (description |
| @@ -9507,9 +9528,10 @@ It supports TSIG authenticated messages and EDNS0.") | |||
| 9507 | (("dnspython3") "dnspython")) | 9528 | (("dnspython3") "dnspython")) |
| 9508 | #t))))) | 9529 | #t))))) |
| 9509 | (native-inputs | 9530 | (native-inputs |
| 9531 | `(("python-setuptools" ,python-setuptools))) | ||
| 9532 | (propagated-inputs | ||
| 9510 | `(("python-dnspython" ,python-dnspython) | 9533 | `(("python-dnspython" ,python-dnspython) |
| 9511 | ("python-idna" ,python-idna) | 9534 | ("python-idna" ,python-idna))) |
| 9512 | ("python-setuptools" ,python-setuptools))) | ||
| 9513 | (home-page "https://github.com/JoshData/python-email-validator") | 9535 | (home-page "https://github.com/JoshData/python-email-validator") |
| 9514 | (synopsis "Email address validation library for Python") | 9536 | (synopsis "Email address validation library for Python") |
| 9515 | (description | 9537 | (description |
| @@ -9564,13 +9586,14 @@ parsing UK postcodes.") | |||
| 9564 | (delete-file "faker/tests/ne_np/__init__.py") | 9586 | (delete-file "faker/tests/ne_np/__init__.py") |
| 9565 | #t))))) | 9587 | #t))))) |
| 9566 | (native-inputs | 9588 | (native-inputs |
| 9567 | `(("python-dateutil" ,python-dateutil-2) | 9589 | `(("python-setuptools" ,python-setuptools) |
| 9568 | ("python-setuptools" ,python-setuptools) | ||
| 9569 | ("python-six" ,python-six) | ||
| 9570 | ;; For testing | 9590 | ;; For testing |
| 9571 | ("python-email-validator" ,python-email-validator) | 9591 | ("python-email-validator" ,python-email-validator) |
| 9572 | ("python-mock" ,python-mock) | 9592 | ("python-mock" ,python-mock) |
| 9573 | ("python-ukpostcodeparser" ,python-ukpostcodeparser))) | 9593 | ("python-ukpostcodeparser" ,python-ukpostcodeparser))) |
| 9594 | (propagated-inputs | ||
| 9595 | `(("python-dateutil" ,python-dateutil-2) | ||
| 9596 | ("python-six" ,python-six))) | ||
| 9574 | (home-page "http://github.com/joke2k/faker") | 9597 | (home-page "http://github.com/joke2k/faker") |
| 9575 | (synopsis "Python package that generates fake data") | 9598 | (synopsis "Python package that generates fake data") |
| 9576 | (description | 9599 | (description |
| @@ -9584,9 +9607,9 @@ addresses, and phone numbers.") | |||
| 9584 | python-fake-factory)))) | 9607 | python-fake-factory)))) |
| 9585 | (package | 9608 | (package |
| 9586 | (inherit base) | 9609 | (inherit base) |
| 9587 | (native-inputs | 9610 | (propagated-inputs |
| 9588 | `(("python2-ipaddress" ,python2-ipaddress) | 9611 | `(("python2-ipaddress" ,python2-ipaddress) |
| 9589 | ,@(package-native-inputs base)))))) | 9612 | ,@(package-propagated-inputs base)))))) |
| 9590 | 9613 | ||
| 9591 | (define-public python-pyaml | 9614 | (define-public python-pyaml |
| 9592 | (package | 9615 | (package |
| @@ -9649,6 +9672,8 @@ mocks, stubs and fakes.") | |||
| 9649 | (build-system python-build-system) | 9672 | (build-system python-build-system) |
| 9650 | (arguments '(#:tests? #f)) ; no tests | 9673 | (arguments '(#:tests? #f)) ; no tests |
| 9651 | (native-inputs | 9674 | (native-inputs |
| 9675 | `(("python-setuptools" ,python-setuptools))) | ||
| 9676 | (propagated-inputs | ||
| 9652 | `(("python-arrow" ,python-arrow) | 9677 | `(("python-arrow" ,python-arrow) |
| 9653 | ("python-blinker" ,python-blinker) | 9678 | ("python-blinker" ,python-blinker) |
| 9654 | ("python-cleo" ,python-cleo) | 9679 | ("python-cleo" ,python-cleo) |
| @@ -9656,7 +9681,6 @@ mocks, stubs and fakes.") | |||
| 9656 | ("python-inflection" ,python-inflection) | 9681 | ("python-inflection" ,python-inflection) |
| 9657 | ("python-lazy-object-proxy" ,python-lazy-object-proxy) | 9682 | ("python-lazy-object-proxy" ,python-lazy-object-proxy) |
| 9658 | ("python-pyaml" ,python-pyaml) | 9683 | ("python-pyaml" ,python-pyaml) |
| 9659 | ("python-setuptools" ,python-setuptools) | ||
| 9660 | ("python-simplejson" ,python-simplejson) | 9684 | ("python-simplejson" ,python-simplejson) |
| 9661 | ("python-wrapt" ,python-wrapt))) | 9685 | ("python-wrapt" ,python-wrapt))) |
| 9662 | (home-page "https://orator-orm.com/") | 9686 | (home-page "https://orator-orm.com/") |
| @@ -9671,6 +9695,71 @@ implementation for Python.") | |||
| 9671 | (let ((base (package-with-python2 (strip-python2-variant python-orator)))) | 9695 | (let ((base (package-with-python2 (strip-python2-variant python-orator)))) |
| 9672 | (package | 9696 | (package |
| 9673 | (inherit base) | 9697 | (inherit base) |
| 9674 | (native-inputs | 9698 | (propagated-inputs |
| 9675 | `(("python2-ipaddress" ,python2-ipaddress) | 9699 | `(("python2-ipaddress" ,python2-ipaddress) |
| 9700 | ,@(package-propagated-inputs base)))))) | ||
| 9701 | |||
| 9702 | (define-public python-prompt-toolkit | ||
| 9703 | (package | ||
| 9704 | (name "python-prompt-toolkit") | ||
| 9705 | (version "1.0.3") | ||
| 9706 | (source | ||
| 9707 | (origin | ||
| 9708 | (method url-fetch) | ||
| 9709 | (uri (string-append | ||
| 9710 | "https://pypi.python.org/packages/" | ||
| 9711 | "8d/de/412f23919929c01e6b55183e124623f705e4b91796d3d2dce2cb53d595ad/" | ||
| 9712 | "prompt_toolkit-" version ".tar.gz")) | ||
| 9713 | (sha256 | ||
| 9714 | (base32 | ||
| 9715 | "18lbmmkyjf509klc3217lq0x863pfzix779zx5kp9lms1iph4pl0")))) | ||
| 9716 | (build-system python-build-system) | ||
| 9717 | (inputs `(("python-wcwidth" ,python-wcwidth) | ||
| 9718 | ("python-pygments" ,python-pygments))) | ||
| 9719 | (native-inputs `(("python-six" ,python-six))) | ||
| 9720 | (home-page "https://github.com/jonathanslenders/python-prompt-toolkit") | ||
| 9721 | (synopsis "Library for building command line interfaces in Python") | ||
| 9722 | (description | ||
| 9723 | "Prompt-Toolkit is a library for building interactive command line | ||
| 9724 | interfaces in Python. It's like GNU Readline but it also features syntax | ||
| 9725 | highlighting while typing, out-of-the-box multi-line input editing, advanced | ||
| 9726 | code completion, incremental search, support for Chinese double-width | ||
| 9727 | characters, mouse support, and auto suggestions.") | ||
| 9728 | (license bsd-3) | ||
| 9729 | (properties `((python2-variant . ,(delay python2-prompt-toolkit)))))) | ||
| 9730 | |||
| 9731 | (define-public python2-prompt-toolkit | ||
| 9732 | (let ((base (package-with-python2 (strip-python2-variant python-prompt-toolkit)))) | ||
| 9733 | (package | ||
| 9734 | (inherit base) | ||
| 9735 | (native-inputs | ||
| 9736 | `(("python2-setuptools" ,python2-setuptools) | ||
| 9737 | ,@(package-native-inputs base)))))) | ||
| 9738 | |||
| 9739 | (define-public python-jedi | ||
| 9740 | (package | ||
| 9741 | (name "python-jedi") | ||
| 9742 | (version "0.9.0") | ||
| 9743 | (source | ||
| 9744 | (origin | ||
| 9745 | (method url-fetch) | ||
| 9746 | (uri (pypi-uri "jedi" version)) | ||
| 9747 | (sha256 | ||
| 9748 | (base32 | ||
| 9749 | "0c8x962ynpx001fdvp07m2q5jk4igkxbj3rmnydavphvlgxijk1v")))) | ||
| 9750 | (build-system python-build-system) | ||
| 9751 | (home-page "https://github.com/davidhalter/jedi") | ||
| 9752 | (synopsis | ||
| 9753 | "Autocompletion for Python that can be used for text editors") | ||
| 9754 | (description | ||
| 9755 | "Jedi is an autocompletion tool for Python that can be used for text editors.") | ||
| 9756 | (license license:expat) | ||
| 9757 | (properties `((python2-variant . ,(delay python2-jedi)))))) | ||
| 9758 | |||
| 9759 | (define-public python2-jedi | ||
| 9760 | (let ((base (package-with-python2 (strip-python2-variant python-jedi)))) | ||
| 9761 | (package | ||
| 9762 | (inherit base) | ||
| 9763 | (native-inputs | ||
| 9764 | `(("python2-setuptools" ,python2-setuptools) | ||
| 9676 | ,@(package-native-inputs base)))))) | 9765 | ,@(package-native-inputs base)))))) |
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index cab1f30db51..6c1bbc33c36 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm | |||
| @@ -302,7 +302,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 302 | (define-public qtbase | 302 | (define-public qtbase |
| 303 | (package | 303 | (package |
| 304 | (name "qtbase") | 304 | (name "qtbase") |
| 305 | (version "5.6.1") | 305 | (version "5.6.1-1") |
| 306 | (source (origin | 306 | (source (origin |
| 307 | (method url-fetch) | 307 | (method url-fetch) |
| 308 | (uri (string-append "https://download.qt.io/official_releases/qt/" | 308 | (uri (string-append "https://download.qt.io/official_releases/qt/" |
| @@ -310,8 +310,8 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 310 | "/submodules/" name "-opensource-src-" | 310 | "/submodules/" name "-opensource-src-" |
| 311 | version ".tar.xz")) | 311 | version ".tar.xz")) |
| 312 | (sha256 | 312 | (sha256 |
| 313 | (base32 | 313 | (base32 |
| 314 | "0r3jrqymnnxrig4f11xvs33c26f0kzfakbp3kcbdpv795gpc276h")) | 314 | "0fbwprlhqmdyhh2wb9122fcpq7pbil530iak482b9sy5gqs7i5ij")) |
| 315 | (modules '((guix build utils))) | 315 | (modules '((guix build utils))) |
| 316 | (snippet | 316 | (snippet |
| 317 | '(begin | 317 | '(begin |
| @@ -328,12 +328,14 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 328 | `(("alsa-lib" ,alsa-lib) | 328 | `(("alsa-lib" ,alsa-lib) |
| 329 | ("cups" ,cups) | 329 | ("cups" ,cups) |
| 330 | ("dbus" ,dbus) | 330 | ("dbus" ,dbus) |
| 331 | ("eudev" ,eudev) | ||
| 331 | ("expat" ,expat) | 332 | ("expat" ,expat) |
| 332 | ("fontconfig" ,fontconfig) | 333 | ("fontconfig" ,fontconfig) |
| 333 | ("freetype" ,freetype) | 334 | ("freetype" ,freetype) |
| 334 | ("glib" ,glib) | 335 | ("glib" ,glib) |
| 335 | ("harfbuzz" ,harfbuzz) | 336 | ("harfbuzz" ,harfbuzz) |
| 336 | ("icu4c" ,icu4c) | 337 | ("icu4c" ,icu4c) |
| 338 | ("libinput" ,libinput) | ||
| 337 | ("libjpeg" ,libjpeg) | 339 | ("libjpeg" ,libjpeg) |
| 338 | ("libmng" ,libmng) | 340 | ("libmng" ,libmng) |
| 339 | ("libpng" ,libpng) | 341 | ("libpng" ,libpng) |
| @@ -435,7 +437,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 435 | (define-public qtsvg | 437 | (define-public qtsvg |
| 436 | (package (inherit qtbase) | 438 | (package (inherit qtbase) |
| 437 | (name "qtsvg") | 439 | (name "qtsvg") |
| 438 | (version "5.6.1") | 440 | (version "5.6.1-1") |
| 439 | (source (origin | 441 | (source (origin |
| 440 | (method url-fetch) | 442 | (method url-fetch) |
| 441 | (uri (string-append "https://download.qt.io/official_releases/qt/" | 443 | (uri (string-append "https://download.qt.io/official_releases/qt/" |
| @@ -444,7 +446,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 444 | version ".tar.xz")) | 446 | version ".tar.xz")) |
| 445 | (sha256 | 447 | (sha256 |
| 446 | (base32 | 448 | (base32 |
| 447 | "08ca5g46g75acy27jfnvnalmcias5hxmjp7491v3y4k9y7a4ybpi")))) | 449 | "1w0jvhgaiddafcms2nv8wl1klg07lncmjwm1zhdw3l6rxi9071sw")))) |
| 448 | (propagated-inputs `()) | 450 | (propagated-inputs `()) |
| 449 | (native-inputs `(("perl" ,perl))) | 451 | (native-inputs `(("perl" ,perl))) |
| 450 | (inputs | 452 | (inputs |
| @@ -469,7 +471,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 469 | (define-public qtimageformats | 471 | (define-public qtimageformats |
| 470 | (package (inherit qtsvg) | 472 | (package (inherit qtsvg) |
| 471 | (name "qtimageformats") | 473 | (name "qtimageformats") |
| 472 | (version "5.6.1") | 474 | (version "5.6.1-1") |
| 473 | (source (origin | 475 | (source (origin |
| 474 | (method url-fetch) | 476 | (method url-fetch) |
| 475 | (uri (string-append "https://download.qt.io/official_releases/qt/" | 477 | (uri (string-append "https://download.qt.io/official_releases/qt/" |
| @@ -478,7 +480,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 478 | version ".tar.xz")) | 480 | version ".tar.xz")) |
| 479 | (sha256 | 481 | (sha256 |
| 480 | (base32 | 482 | (base32 |
| 481 | "020v1148433zx4g87z2r8fgff32n0laajxqqsja1l3yzz7jbrwvl")))) | 483 | "1p98acvsm3azka2by1ph4gdb31qbnndrr5k5wns4xk2d760y8ifc")))) |
| 482 | (native-inputs `()) | 484 | (native-inputs `()) |
| 483 | (inputs | 485 | (inputs |
| 484 | `(("libmng" ,libmng) | 486 | `(("libmng" ,libmng) |
| @@ -491,7 +493,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 491 | (define-public qtx11extras | 493 | (define-public qtx11extras |
| 492 | (package (inherit qtsvg) | 494 | (package (inherit qtsvg) |
| 493 | (name "qtx11extras") | 495 | (name "qtx11extras") |
| 494 | (version "5.6.1") | 496 | (version "5.6.1-1") |
| 495 | (source (origin | 497 | (source (origin |
| 496 | (method url-fetch) | 498 | (method url-fetch) |
| 497 | (uri (string-append "https://download.qt.io/official_releases/qt/" | 499 | (uri (string-append "https://download.qt.io/official_releases/qt/" |
| @@ -500,7 +502,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 500 | version ".tar.xz")) | 502 | version ".tar.xz")) |
| 501 | (sha256 | 503 | (sha256 |
| 502 | (base32 | 504 | (base32 |
| 503 | "0l736qiz8adrnh267xz63hv4sph6nhy90h836qfnnmv3p78ipsz8")))) | 505 | "0yj5yg2dqkrwbgbicmk2rpqsagmi8dsffkrprpsj0fmkx4awhv5y")))) |
| 504 | (native-inputs `(("perl" ,perl))) | 506 | (native-inputs `(("perl" ,perl))) |
| 505 | (inputs | 507 | (inputs |
| 506 | `(("mesa" ,mesa) | 508 | `(("mesa" ,mesa) |
| @@ -509,7 +511,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 509 | (define-public qtxmlpatterns | 511 | (define-public qtxmlpatterns |
| 510 | (package (inherit qtsvg) | 512 | (package (inherit qtsvg) |
| 511 | (name "qtxmlpatterns") | 513 | (name "qtxmlpatterns") |
| 512 | (version "5.6.1") | 514 | (version "5.6.1-1") |
| 513 | (source (origin | 515 | (source (origin |
| 514 | (method url-fetch) | 516 | (method url-fetch) |
| 515 | (uri (string-append "https://download.qt.io/official_releases/qt/" | 517 | (uri (string-append "https://download.qt.io/official_releases/qt/" |
| @@ -518,14 +520,14 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 518 | version ".tar.xz")) | 520 | version ".tar.xz")) |
| 519 | (sha256 | 521 | (sha256 |
| 520 | (base32 | 522 | (base32 |
| 521 | "0q412jv3xbg7v05b8pbahifwx17gzlp96s90akh6zwhpm8i6xx34")))) | 523 | "1966rrk7f6c55k57j33rffdjs77kk4mawrnnl8yv1ckcirxc3np1")))) |
| 522 | (native-inputs `(("perl" ,perl))) | 524 | (native-inputs `(("perl" ,perl))) |
| 523 | (inputs `(("qtbase" ,qtbase))))) | 525 | (inputs `(("qtbase" ,qtbase))))) |
| 524 | 526 | ||
| 525 | (define-public qtdeclarative | 527 | (define-public qtdeclarative |
| 526 | (package (inherit qtsvg) | 528 | (package (inherit qtsvg) |
| 527 | (name "qtdeclarative") | 529 | (name "qtdeclarative") |
| 528 | (version "5.6.1") | 530 | (version "5.6.1-1") |
| 529 | (source (origin | 531 | (source (origin |
| 530 | (method url-fetch) | 532 | (method url-fetch) |
| 531 | (uri (string-append "https://download.qt.io/official_releases/qt/" | 533 | (uri (string-append "https://download.qt.io/official_releases/qt/" |
| @@ -534,7 +536,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 534 | version ".tar.xz")) | 536 | version ".tar.xz")) |
| 535 | (sha256 | 537 | (sha256 |
| 536 | (base32 | 538 | (base32 |
| 537 | "1d2217kxk85kpi7ls08b41hqzy26hvch8m4cgzq6km5sqi5zvz0j")))) | 539 | "094gx5mzqzcga97y7ihf052b6i5iv512lh7m0702m5q94nsn1pqw")))) |
| 538 | (native-inputs | 540 | (native-inputs |
| 539 | `(("perl" ,perl) | 541 | `(("perl" ,perl) |
| 540 | ("pkg-config" ,pkg-config) | 542 | ("pkg-config" ,pkg-config) |
| @@ -548,7 +550,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 548 | (define-public qtconnectivity | 550 | (define-public qtconnectivity |
| 549 | (package (inherit qtsvg) | 551 | (package (inherit qtsvg) |
| 550 | (name "qtconnectivity") | 552 | (name "qtconnectivity") |
| 551 | (version "5.6.1") | 553 | (version "5.6.1-1") |
| 552 | (source (origin | 554 | (source (origin |
| 553 | (method url-fetch) | 555 | (method url-fetch) |
| 554 | (uri (string-append "https://download.qt.io/official_releases/qt/" | 556 | (uri (string-append "https://download.qt.io/official_releases/qt/" |
| @@ -557,7 +559,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 557 | version ".tar.xz")) | 559 | version ".tar.xz")) |
| 558 | (sha256 | 560 | (sha256 |
| 559 | (base32 | 561 | (base32 |
| 560 | "06fr9321f52kf0nda9zjjfzp5694hbnx0y0v315iw28mnpvandas")))) | 562 | "0sr6sxp0q45pacs25knr28139xdrphcjgrwlksdhdpsryfw19mzi")))) |
| 561 | (native-inputs | 563 | (native-inputs |
| 562 | `(("perl" ,perl) | 564 | `(("perl" ,perl) |
| 563 | ("pkg-config" ,pkg-config) | 565 | ("pkg-config" ,pkg-config) |
| @@ -569,7 +571,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 569 | (define-public qtwebsockets | 571 | (define-public qtwebsockets |
| 570 | (package (inherit qtsvg) | 572 | (package (inherit qtsvg) |
| 571 | (name "qtwebsockets") | 573 | (name "qtwebsockets") |
| 572 | (version "5.6.1") | 574 | (version "5.6.1-1") |
| 573 | (source (origin | 575 | (source (origin |
| 574 | (method url-fetch) | 576 | (method url-fetch) |
| 575 | (uri (string-append "https://download.qt.io/official_releases/qt/" | 577 | (uri (string-append "https://download.qt.io/official_releases/qt/" |
| @@ -578,7 +580,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 578 | version ".tar.xz")) | 580 | version ".tar.xz")) |
| 579 | (sha256 | 581 | (sha256 |
| 580 | (base32 | 582 | (base32 |
| 581 | "0fkj52i4yi6gmq4jfjgdij08cspxspac6mbpf0fknnllimmkl7jm")))) | 583 | "1fz0x8570zxc00a22skd848svma3p2g3xyxj14jq10559jihqqil")))) |
| 582 | (native-inputs | 584 | (native-inputs |
| 583 | `(("perl" ,perl) | 585 | `(("perl" ,perl) |
| 584 | ("qtdeclarative" ,qtdeclarative))) | 586 | ("qtdeclarative" ,qtdeclarative))) |
| @@ -587,7 +589,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 587 | (define-public qtsensors | 589 | (define-public qtsensors |
| 588 | (package (inherit qtsvg) | 590 | (package (inherit qtsvg) |
| 589 | (name "qtsensors") | 591 | (name "qtsensors") |
| 590 | (version "5.6.1") | 592 | (version "5.6.1-1") |
| 591 | (source (origin | 593 | (source (origin |
| 592 | (method url-fetch) | 594 | (method url-fetch) |
| 593 | (uri (string-append "https://download.qt.io/official_releases/qt/" | 595 | (uri (string-append "https://download.qt.io/official_releases/qt/" |
| @@ -596,7 +598,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 596 | version ".tar.xz")) | 598 | version ".tar.xz")) |
| 597 | (sha256 | 599 | (sha256 |
| 598 | (base32 | 600 | (base32 |
| 599 | "0bll7ll6s5g8w89knyrc0famjwqyfzwpn512m1f96bf6xwacs967")))) | 601 | "0kcrvf6vzn6g2v2m70f9r3raalzmfp48rwjlqhss3w84jfz3y04r")))) |
| 600 | (native-inputs | 602 | (native-inputs |
| 601 | `(("perl" ,perl) | 603 | `(("perl" ,perl) |
| 602 | ("qtdeclarative" ,qtdeclarative))) | 604 | ("qtdeclarative" ,qtdeclarative))) |
| @@ -605,7 +607,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 605 | (define-public qtmultimedia | 607 | (define-public qtmultimedia |
| 606 | (package (inherit qtsvg) | 608 | (package (inherit qtsvg) |
| 607 | (name "qtmultimedia") | 609 | (name "qtmultimedia") |
| 608 | (version "5.6.1") | 610 | (version "5.6.1-1") |
| 609 | (source (origin | 611 | (source (origin |
| 610 | (method url-fetch) | 612 | (method url-fetch) |
| 611 | (uri (string-append "https://download.qt.io/official_releases/qt/" | 613 | (uri (string-append "https://download.qt.io/official_releases/qt/" |
| @@ -614,7 +616,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 614 | version ".tar.xz")) | 616 | version ".tar.xz")) |
| 615 | (sha256 | 617 | (sha256 |
| 616 | (base32 | 618 | (base32 |
| 617 | "058523c2qra3d8fq46ygcndnkrbwlh316zy28s2cr5pjr5gmnjyj")))) | 619 | "0paffx0614ivjbf87lr9klpbqik6r1pzbc14l41np6d9jv3dqa2f")))) |
| 618 | (native-inputs | 620 | (native-inputs |
| 619 | `(("perl" ,perl) | 621 | `(("perl" ,perl) |
| 620 | ("pkg-config" ,pkg-config) | 622 | ("pkg-config" ,pkg-config) |
| @@ -629,7 +631,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 629 | (define-public qtwayland | 631 | (define-public qtwayland |
| 630 | (package (inherit qtsvg) | 632 | (package (inherit qtsvg) |
| 631 | (name "qtwayland") | 633 | (name "qtwayland") |
| 632 | (version "5.6.1") | 634 | (version "5.6.1-1") |
| 633 | (source (origin | 635 | (source (origin |
| 634 | (method url-fetch) | 636 | (method url-fetch) |
| 635 | (uri (string-append "https://download.qt.io/official_releases/qt/" | 637 | (uri (string-append "https://download.qt.io/official_releases/qt/" |
| @@ -638,7 +640,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 638 | version ".tar.xz")) | 640 | version ".tar.xz")) |
| 639 | (sha256 | 641 | (sha256 |
| 640 | (base32 | 642 | (base32 |
| 641 | "1jgghjfrg0wwyfzfwgwhagwxz9k936ylv3w2l9bwlpql8rgm8d11")))) | 643 | "1fnvgpi49ilds3ah9iizxj9qhhb5rnwqd9h03bhkwf0ydywv52c4")))) |
| 642 | (native-inputs | 644 | (native-inputs |
| 643 | `(("glib" ,glib) | 645 | `(("glib" ,glib) |
| 644 | ("perl" ,perl) | 646 | ("perl" ,perl) |
| @@ -660,7 +662,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 660 | (define-public qtserialport | 662 | (define-public qtserialport |
| 661 | (package (inherit qtsvg) | 663 | (package (inherit qtsvg) |
| 662 | (name "qtserialport") | 664 | (name "qtserialport") |
| 663 | (version "5.6.1") | 665 | (version "5.6.1-1") |
| 664 | (source (origin | 666 | (source (origin |
| 665 | (method url-fetch) | 667 | (method url-fetch) |
| 666 | (uri (string-append "https://download.qt.io/official_releases/qt/" | 668 | (uri (string-append "https://download.qt.io/official_releases/qt/" |
| @@ -669,14 +671,16 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 669 | version ".tar.xz")) | 671 | version ".tar.xz")) |
| 670 | (sha256 | 672 | (sha256 |
| 671 | (base32 | 673 | (base32 |
| 672 | "1hp63cgqhps6y1k041lzhcb2b0rcpcmszabnn293q5ilbvla4x0b")))) | 674 | "135cbgghxk0c6dblmyyrw6znfb9m8sac9hhyc2dm6vq7vzy8id52")))) |
| 673 | (native-inputs `(("perl" ,perl))) | 675 | (native-inputs `(("perl" ,perl))) |
| 674 | (inputs `(("qtbase" ,qtbase))))) | 676 | (inputs |
| 677 | `(("qtbase" ,qtbase) | ||
| 678 | ("eudev" ,eudev))))) | ||
| 675 | 679 | ||
| 676 | (define-public qtwebchannel | 680 | (define-public qtwebchannel |
| 677 | (package (inherit qtsvg) | 681 | (package (inherit qtsvg) |
| 678 | (name "qtwebchannel") | 682 | (name "qtwebchannel") |
| 679 | (version "5.6.1") | 683 | (version "5.6.1-1") |
| 680 | (source (origin | 684 | (source (origin |
| 681 | (method url-fetch) | 685 | (method url-fetch) |
| 682 | (uri (string-append "https://download.qt.io/official_releases/qt/" | 686 | (uri (string-append "https://download.qt.io/official_releases/qt/" |
| @@ -685,7 +689,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 685 | version ".tar.xz")) | 689 | version ".tar.xz")) |
| 686 | (sha256 | 690 | (sha256 |
| 687 | (base32 | 691 | (base32 |
| 688 | "01q80917a1048hdhaii4v50dqs84h16lc9w3v99r9xvspk8vab7q")))) | 692 | "10kys3ppjkj60fs1s335fdcpdsbxsjn6ibvm6zph9gqbncabd2l7")))) |
| 689 | (native-inputs | 693 | (native-inputs |
| 690 | `(("perl" ,perl) | 694 | `(("perl" ,perl) |
| 691 | ("qtdeclarative" ,qtdeclarative) | 695 | ("qtdeclarative" ,qtdeclarative) |
| @@ -695,7 +699,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 695 | (define-public qtlocation | 699 | (define-public qtlocation |
| 696 | (package (inherit qtsvg) | 700 | (package (inherit qtsvg) |
| 697 | (name "qtlocation") | 701 | (name "qtlocation") |
| 698 | (version "5.6.1") | 702 | (version "5.6.1-1") |
| 699 | (source (origin | 703 | (source (origin |
| 700 | (method url-fetch) | 704 | (method url-fetch) |
| 701 | (uri (string-append "https://download.qt.io/official_releases/qt/" | 705 | (uri (string-append "https://download.qt.io/official_releases/qt/" |
| @@ -704,7 +708,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 704 | version ".tar.xz")) | 708 | version ".tar.xz")) |
| 705 | (sha256 | 709 | (sha256 |
| 706 | (base32 | 710 | (base32 |
| 707 | "0qahs7a2n3l4h0bl8bnwci9mzy1vra3zncnzr40csic9ys67ddfk")))) | 711 | "0my4pbcxa58yzvdh65l5qx99ln03chjr5c3ml5v37wfk7nx23k69")))) |
| 708 | (native-inputs | 712 | (native-inputs |
| 709 | `(("perl" ,perl) | 713 | `(("perl" ,perl) |
| 710 | ("qtdeclarative" ,qtdeclarative) | 714 | ("qtdeclarative" ,qtdeclarative) |
| @@ -715,7 +719,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 715 | (define-public qttools | 719 | (define-public qttools |
| 716 | (package (inherit qtsvg) | 720 | (package (inherit qtsvg) |
| 717 | (name "qttools") | 721 | (name "qttools") |
| 718 | (version "5.6.1") | 722 | (version "5.6.1-1") |
| 719 | (source (origin | 723 | (source (origin |
| 720 | (method url-fetch) | 724 | (method url-fetch) |
| 721 | (uri (string-append "https://download.qt.io/official_releases/qt/" | 725 | (uri (string-append "https://download.qt.io/official_releases/qt/" |
| @@ -724,7 +728,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 724 | version ".tar.xz")) | 728 | version ".tar.xz")) |
| 725 | (sha256 | 729 | (sha256 |
| 726 | (base32 | 730 | (base32 |
| 727 | "0wbzq60d7lkvlb7b5lqcw87qgy6kyjz1npjavz8f4grdxsaqi8vp")))) | 731 | "0haic027a2d7p7k8xz83fbvci4a4dln34360rlwgy7hlyy5m4nip")))) |
| 728 | (native-inputs | 732 | (native-inputs |
| 729 | `(("perl" ,perl) | 733 | `(("perl" ,perl) |
| 730 | ("qtdeclarative" ,qtdeclarative))) | 734 | ("qtdeclarative" ,qtdeclarative))) |
| @@ -732,6 +736,25 @@ developers using C++ or QML, a CSS & JavaScript like language.") | |||
| 732 | `(("mesa" ,mesa) | 736 | `(("mesa" ,mesa) |
| 733 | ("qtbase" ,qtbase))))) | 737 | ("qtbase" ,qtbase))))) |
| 734 | 738 | ||
| 739 | (define-public qtscript | ||
| 740 | (package (inherit qtsvg) | ||
| 741 | (name "qtscript") | ||
| 742 | (version "5.6.1-1") | ||
| 743 | (source (origin | ||
| 744 | (method url-fetch) | ||
| 745 | (uri (string-append "https://download.qt.io/official_releases/qt/" | ||
| 746 | (version-major+minor version) "/" version | ||
| 747 | "/submodules/" name "-opensource-src-" | ||
| 748 | version ".tar.xz")) | ||
| 749 | (sha256 | ||
| 750 | (base32 | ||
| 751 | "1gini9483flqa9q4a4bl81bh7g5s408bycqykqhgbklmfd29y5lx")))) | ||
| 752 | (native-inputs | ||
| 753 | `(("perl" ,perl) | ||
| 754 | ("qttools" ,qttools))) | ||
| 755 | (inputs | ||
| 756 | `(("qtbase" ,qtbase))))) | ||
| 757 | |||
| 735 | (define-public qjson | 758 | (define-public qjson |
| 736 | (package | 759 | (package |
| 737 | (name "qjson") | 760 | (name "qjson") |
diff --git a/gnu/packages/readline.scm b/gnu/packages/readline.scm index db469db0514..169a7386c4c 100644 --- a/gnu/packages/readline.scm +++ b/gnu/packages/readline.scm | |||
| @@ -1,5 +1,6 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org> | 2 | ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org> |
| 3 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | ||
| 3 | ;;; | 4 | ;;; |
| 4 | ;;; This file is part of GNU Guix. | 5 | ;;; This file is part of GNU Guix. |
| 5 | ;;; | 6 | ;;; |
| @@ -20,6 +21,7 @@ | |||
| 20 | #:use-module (guix licenses) | 21 | #:use-module (guix licenses) |
| 21 | #:use-module (gnu packages) | 22 | #:use-module (gnu packages) |
| 22 | #:use-module (gnu packages ncurses) | 23 | #:use-module (gnu packages ncurses) |
| 24 | #:use-module (gnu packages perl) | ||
| 23 | #:use-module (guix packages) | 25 | #:use-module (guix packages) |
| 24 | #:use-module (guix download) | 26 | #:use-module (guix download) |
| 25 | #:use-module (guix build-system gnu)) | 27 | #:use-module (guix build-system gnu)) |
| @@ -85,3 +87,29 @@ comfortable for anyone.") | |||
| 85 | (sha256 | 87 | (sha256 |
| 86 | (base32 | 88 | (base32 |
| 87 | "10ckm2bd2rkxhvdmj7nmbsylmihw0abwcsnxf8y27305183rd9kr")))))) | 89 | "10ckm2bd2rkxhvdmj7nmbsylmihw0abwcsnxf8y27305183rd9kr")))))) |
| 90 | |||
| 91 | (define-public rlwrap | ||
| 92 | (package | ||
| 93 | (name "rlwrap") | ||
| 94 | (version "0.42") | ||
| 95 | (source | ||
| 96 | (origin | ||
| 97 | (method url-fetch) | ||
| 98 | (uri (string-append "http://utopia.knoware.nl/~hlub/uck/rlwrap/rlwrap-" | ||
| 99 | version ".tar.gz")) | ||
| 100 | (sha256 | ||
| 101 | (base32 | ||
| 102 | "0i3yz303wscrysyzpdq04h4nrl9ajz9dbwi80risdl5rkm3dhw2s")))) | ||
| 103 | (build-system gnu-build-system) | ||
| 104 | (native-inputs `(("perl" ,perl))) | ||
| 105 | (inputs | ||
| 106 | `(("readline" ,readline))) | ||
| 107 | (synopsis "Wrapper to allow the editing of keyboard commands") | ||
| 108 | (description | ||
| 109 | "Rlwrap is a 'readline wrapper', a small utility that uses the GNU | ||
| 110 | readline library to allow the editing of keyboard input for any command. You | ||
| 111 | should consider rlwrap especially when you need user-defined completion (by way | ||
| 112 | of completion word lists) and persistent history, or if you want to program | ||
| 113 | 'special effects' using the filter mechanism.") | ||
| 114 | (home-page "http://utopia.knoware.nl/~hlub/uck/rlwrap/") | ||
| 115 | (license gpl2+))) | ||
diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm index 8aac6a5dc10..9f0b57c739f 100644 --- a/gnu/packages/samba.scm +++ b/gnu/packages/samba.scm | |||
| @@ -99,14 +99,14 @@ anywhere.") | |||
| 99 | (define-public samba | 99 | (define-public samba |
| 100 | (package | 100 | (package |
| 101 | (name "samba") | 101 | (name "samba") |
| 102 | (version "4.3.8") | 102 | (version "4.3.11") |
| 103 | (source (origin | 103 | (source (origin |
| 104 | (method url-fetch) | 104 | (method url-fetch) |
| 105 | (uri (string-append "https://www.samba.org/samba/ftp/stable/samba-" | 105 | (uri (string-append "https://www.samba.org/samba/ftp/stable/samba-" |
| 106 | version ".tar.gz")) | 106 | version ".tar.gz")) |
| 107 | (sha256 | 107 | (sha256 |
| 108 | (base32 | 108 | (base32 |
| 109 | "041b5frh4ikcka922aqhqjvlv4w2s7jycyykpvsknj0a79ncd79p")))) | 109 | "1v2grwivm6rasz1ganbybs0ikz1lydaniy65kxf1v8rl1qqngach")))) |
| 110 | (build-system gnu-build-system) | 110 | (build-system gnu-build-system) |
| 111 | (arguments | 111 | (arguments |
| 112 | '(#:phases | 112 | '(#:phases |
| @@ -150,7 +150,7 @@ anywhere.") | |||
| 150 | `(("perl" ,perl) | 150 | `(("perl" ,perl) |
| 151 | ("pkg-config" ,pkg-config) | 151 | ("pkg-config" ,pkg-config) |
| 152 | ("python" ,python-2))) ; incompatible with Python 3 | 152 | ("python" ,python-2))) ; incompatible with Python 3 |
| 153 | (home-page "http://www.samba.org/") | 153 | (home-page "https://www.samba.org/") |
| 154 | (synopsis | 154 | (synopsis |
| 155 | "The standard Windows interoperability suite of programs for GNU and Unix") | 155 | "The standard Windows interoperability suite of programs for GNU and Unix") |
| 156 | (description | 156 | (description |
| @@ -165,14 +165,14 @@ Desktops into Active Directory environments using the winbind daemon.") | |||
| 165 | (define-public talloc | 165 | (define-public talloc |
| 166 | (package | 166 | (package |
| 167 | (name "talloc") | 167 | (name "talloc") |
| 168 | (version "2.1.5") | 168 | (version "2.1.7") |
| 169 | (source (origin | 169 | (source (origin |
| 170 | (method url-fetch) | 170 | (method url-fetch) |
| 171 | (uri (string-append "https://www.samba.org/ftp/talloc/talloc-" | 171 | (uri (string-append "https://www.samba.org/ftp/talloc/talloc-" |
| 172 | version ".tar.gz")) | 172 | version ".tar.gz")) |
| 173 | (sha256 | 173 | (sha256 |
| 174 | (base32 | 174 | (base32 |
| 175 | "1pfx3kmj973hpacfw46fzfnjd7ms1j03ifkc30wk930brx8ffcrq")))) | 175 | "01m0kzndciyj43z1zd2nc61xqgh9knjv0w7lk1rrrlj8irr4w58r")))) |
| 176 | (build-system gnu-build-system) | 176 | (build-system gnu-build-system) |
| 177 | (arguments | 177 | (arguments |
| 178 | '(#:phases | 178 | '(#:phases |
| @@ -202,14 +202,14 @@ destructors. It is the core memory allocator used in Samba.") | |||
| 202 | (define-public tevent | 202 | (define-public tevent |
| 203 | (package | 203 | (package |
| 204 | (name "tevent") | 204 | (name "tevent") |
| 205 | (version "0.9.26") | 205 | (version "0.9.28") |
| 206 | (source (origin | 206 | (source (origin |
| 207 | (method url-fetch) | 207 | (method url-fetch) |
| 208 | (uri (string-append "https://www.samba.org/ftp/tevent/tevent-" | 208 | (uri (string-append "https://www.samba.org/ftp/tevent/tevent-" |
| 209 | version ".tar.gz")) | 209 | version ".tar.gz")) |
| 210 | (sha256 | 210 | (sha256 |
| 211 | (base32 | 211 | (base32 |
| 212 | "1gbh6d2m49j1v2hkaiyrh8bj02i5wxd4hqayzk2g44yyivbi8b16")))) | 212 | "0a9ml52jjnzz7qg9z750mavlvs1yibjwrzy4yl55dc95j0vm7n84")))) |
| 213 | (build-system gnu-build-system) | 213 | (build-system gnu-build-system) |
| 214 | (arguments | 214 | (arguments |
| 215 | '(#:phases | 215 | '(#:phases |
| @@ -237,14 +237,14 @@ many event types, including timers, signals, and the classic file descriptor eve | |||
| 237 | (define-public ldb | 237 | (define-public ldb |
| 238 | (package | 238 | (package |
| 239 | (name "ldb") | 239 | (name "ldb") |
| 240 | (version "1.1.24") | 240 | (version "1.1.26") |
| 241 | (source (origin | 241 | (source (origin |
| 242 | (method url-fetch) | 242 | (method url-fetch) |
| 243 | (uri (string-append "https://www.samba.org/ftp/ldb/ldb-" | 243 | (uri (string-append "https://www.samba.org/ftp/ldb/ldb-" |
| 244 | version ".tar.gz")) | 244 | version ".tar.gz")) |
| 245 | (sha256 | 245 | (sha256 |
| 246 | (base32 | 246 | (base32 |
| 247 | "08ab66qzigfsfxqdvp6lx1knwsl3sqsww309xbq17l7hfcjgbsa5")))) | 247 | "1rmjv12pf57vga8s5z9p9d90rlfckc1lqjbcp89r83cq5fkwfhw8")))) |
| 248 | (build-system gnu-build-system) | 248 | (build-system gnu-build-system) |
| 249 | (arguments | 249 | (arguments |
| 250 | '(#:phases | 250 | '(#:phases |
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm index eac550e4ab9..1e00e6bb9dc 100644 --- a/gnu/packages/scheme.scm +++ b/gnu/packages/scheme.scm | |||
| @@ -400,7 +400,7 @@ implementation techniques and as an expository tool.") | |||
| 400 | (define-public racket | 400 | (define-public racket |
| 401 | (package | 401 | (package |
| 402 | (name "racket") | 402 | (name "racket") |
| 403 | (version "6.2.1") | 403 | (version "6.5") |
| 404 | (source (origin | 404 | (source (origin |
| 405 | (method url-fetch) | 405 | (method url-fetch) |
| 406 | (uri (list (string-append "http://mirror.racket-lang.org/installers/" | 406 | (uri (list (string-append "http://mirror.racket-lang.org/installers/" |
| @@ -410,7 +410,7 @@ implementation techniques and as an expository tool.") | |||
| 410 | version "/racket/racket-" version "-src-unix.tgz"))) | 410 | version "/racket/racket-" version "-src-unix.tgz"))) |
| 411 | (sha256 | 411 | (sha256 |
| 412 | (base32 | 412 | (base32 |
| 413 | "0555j63k7fs10iv0icmivlxpzgp6s7gwcbfddmbwxlf2rk80qhq0")))) | 413 | "0gvh7i5k87mg1gpqk8gaq50ja9ksbhnvdqn7qqh0n17byidd6999")))) |
| 414 | (build-system gnu-build-system) | 414 | (build-system gnu-build-system) |
| 415 | (arguments | 415 | (arguments |
| 416 | '(#:phases | 416 | '(#:phases |
diff --git a/gnu/packages/screen.scm b/gnu/packages/screen.scm index a4eefd85a62..e3f97f4b685 100644 --- a/gnu/packages/screen.scm +++ b/gnu/packages/screen.scm | |||
| @@ -3,6 +3,7 @@ | |||
| 3 | ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> | 3 | ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> |
| 4 | ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org> | 4 | ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org> |
| 5 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | 5 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> |
| 6 | ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> | ||
| 6 | ;;; | 7 | ;;; |
| 7 | ;;; This file is part of GNU Guix. | 8 | ;;; This file is part of GNU Guix. |
| 8 | ;;; | 9 | ;;; |
| @@ -49,11 +50,9 @@ | |||
| 49 | ("perl" ,perl))) | 50 | ("perl" ,perl))) |
| 50 | (arguments | 51 | (arguments |
| 51 | `(#:configure-flags | 52 | `(#:configure-flags |
| 52 | ;; By default, man and info pages are put in PREFIX/{man,info}, | 53 | ;; By default, screen supports 16 colors, but we want 256 when |
| 53 | ;; but we want them in PREFIX/share/{man,info}. | 54 | ;; ~/.screenrc contains 'term xterm-256color'. |
| 54 | (let ((out (assoc-ref %outputs "out"))) | 55 | '("--enable-colors256"))) |
| 55 | (list (string-append "--mandir=" out "/share/man") | ||
| 56 | (string-append "--infodir=" out "/share/info"))))) | ||
| 57 | (home-page "http://www.gnu.org/software/screen/") | 56 | (home-page "http://www.gnu.org/software/screen/") |
| 58 | (synopsis "Full-screen window manager providing multiple terminals") | 57 | (synopsis "Full-screen window manager providing multiple terminals") |
| 59 | (description | 58 | (description |
| @@ -144,3 +143,30 @@ as folding room dividers. The Byobu software includes an enhanced profile, | |||
| 144 | configuration utilities, and system status notifications for the GNU Screen | 143 | configuration utilities, and system status notifications for the GNU Screen |
| 145 | window manager as well as the Tmux terminal multiplexer.") | 144 | window manager as well as the Tmux terminal multiplexer.") |
| 146 | (license gpl3+))) | 145 | (license gpl3+))) |
| 146 | |||
| 147 | (define-public reptyr | ||
| 148 | (package | ||
| 149 | (name "reptyr") | ||
| 150 | (version "0.6.2") | ||
| 151 | (source | ||
| 152 | (origin | ||
| 153 | (method url-fetch) | ||
| 154 | (uri (string-append "https://github.com/nelhage/reptyr/archive" | ||
| 155 | "/reptyr-" version ".tar.gz")) | ||
| 156 | (sha256 | ||
| 157 | (base32 | ||
| 158 | "07pfl0rkgm8m3f3jy8r9l2yvnhf8lgllpsk3mh57mhzdxq8fagf7")))) | ||
| 159 | (build-system gnu-build-system) | ||
| 160 | (arguments | ||
| 161 | '(#:tests? #f ; no tests | ||
| 162 | #:make-flags (list "CC=gcc" | ||
| 163 | (string-append "PREFIX=" %output)) | ||
| 164 | #:phases (modify-phases %standard-phases (delete 'configure)))) | ||
| 165 | (home-page "https://github.com/nelhage/reptyr") | ||
| 166 | (synopsis "Tool for reparenting a running program to a new terminal") | ||
| 167 | (description | ||
| 168 | "reptyr is a utility for taking an existing running program and attaching | ||
| 169 | it to a new terminal. Started a long-running process over @code{ssh}, but have | ||
| 170 | to leave and don't want to interrupt it? Just start a @code{screen}, use | ||
| 171 | reptyr to grab it, and then kill the @code{ssh} session and head on home.") | ||
| 172 | (license expat))) | ||
diff --git a/gnu/packages/smalltalk.scm b/gnu/packages/smalltalk.scm index c9d733d5056..77e033f8473 100644 --- a/gnu/packages/smalltalk.scm +++ b/gnu/packages/smalltalk.scm | |||
| @@ -1,5 +1,6 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> | 2 | ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> |
| 3 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | ||
| 3 | ;;; | 4 | ;;; |
| 4 | ;;; This file is part of GNU Guix. | 5 | ;;; This file is part of GNU Guix. |
| 5 | ;;; | 6 | ;;; |
| @@ -21,6 +22,10 @@ | |||
| 21 | #:use-module (guix packages) | 22 | #:use-module (guix packages) |
| 22 | #:use-module (guix download) | 23 | #:use-module (guix download) |
| 23 | #:use-module (guix build-system gnu) | 24 | #:use-module (guix build-system gnu) |
| 25 | #:use-module (gnu packages autotools) | ||
| 26 | #:use-module (gnu packages libffi) | ||
| 27 | #:use-module (gnu packages libsigsegv) | ||
| 28 | #:use-module (gnu packages pkg-config) | ||
| 24 | #:use-module (gnu packages zip)) | 29 | #:use-module (gnu packages zip)) |
| 25 | 30 | ||
| 26 | (define-public smalltalk | 31 | (define-public smalltalk |
| @@ -36,7 +41,13 @@ | |||
| 36 | (base32 | 41 | (base32 |
| 37 | "1k2ssrapfzhngc7bg1zrnd9n2vyxp9c9m70byvsma6wapbvib6l1")))) | 42 | "1k2ssrapfzhngc7bg1zrnd9n2vyxp9c9m70byvsma6wapbvib6l1")))) |
| 38 | (build-system gnu-build-system) | 43 | (build-system gnu-build-system) |
| 39 | (inputs `(("zip" ,zip))) | 44 | (native-inputs |
| 45 | `(("libffi" ,libffi) | ||
| 46 | ("libltdl" ,libltdl) | ||
| 47 | ("libsigsegv" ,libsigsegv) | ||
| 48 | ("pkg-config" ,pkg-config))) | ||
| 49 | (inputs | ||
| 50 | `(("zip" ,zip))) | ||
| 40 | (arguments | 51 | (arguments |
| 41 | `(#:phases (alist-cons-before | 52 | `(#:phases (alist-cons-before |
| 42 | 'configure 'fix-libc | 53 | 'configure 'fix-libc |
| @@ -46,7 +57,7 @@ | |||
| 46 | (("@LIBC_SO_NAME@") "libc.so") | 57 | (("@LIBC_SO_NAME@") "libc.so") |
| 47 | (("@LIBC_SO_DIR@") (string-append libc "/lib"))))) | 58 | (("@LIBC_SO_DIR@") (string-append libc "/lib"))))) |
| 48 | %standard-phases))) | 59 | %standard-phases))) |
| 49 | (home-page "https://www.gnu.org/software/smalltalk/") | 60 | (home-page "http://smalltalk.gnu.org/") |
| 50 | (synopsis "Smalltalk environment") | 61 | (synopsis "Smalltalk environment") |
| 51 | (description | 62 | (description |
| 52 | "GNU Smalltalk is a free implementation of the Smalltalk language. It | 63 | "GNU Smalltalk is a free implementation of the Smalltalk language. It |
diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index b8f107b111b..71310ecf949 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm | |||
| @@ -1,4 +1,5 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> | ||
| 2 | ;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr> | 3 | ;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr> |
| 3 | ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org> | 4 | ;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org> |
| 4 | ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> | 5 | ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> |
| @@ -20,27 +21,34 @@ | |||
| 20 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | 21 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. |
| 21 | 22 | ||
| 22 | (define-module (gnu packages ssh) | 23 | (define-module (gnu packages ssh) |
| 23 | #:use-module ((guix licenses) #:prefix license:) | 24 | #:use-module (gnu packages) |
| 25 | #:use-module (gnu packages autotools) | ||
| 26 | #:use-module (gnu packages base) | ||
| 27 | #:autoload (gnu packages boost) (boost) | ||
| 24 | #:use-module (gnu packages compression) | 28 | #:use-module (gnu packages compression) |
| 29 | #:use-module (gnu packages elf) | ||
| 25 | #:use-module (gnu packages gnupg) | 30 | #:use-module (gnu packages gnupg) |
| 31 | #:use-module (gnu packages gperf) | ||
| 26 | #:use-module (gnu packages groff) | 32 | #:use-module (gnu packages groff) |
| 27 | #:use-module (gnu packages elf) | ||
| 28 | #:use-module (gnu packages guile) | 33 | #:use-module (gnu packages guile) |
| 29 | #:use-module (gnu packages pkg-config) | 34 | #:use-module (gnu packages linux) |
| 30 | #:use-module (gnu packages autotools) | 35 | #:use-module (gnu packages m4) |
| 31 | #:use-module (gnu packages texinfo) | 36 | #:use-module (gnu packages multiprecision) |
| 32 | #:use-module (gnu packages perl) | ||
| 33 | #:use-module (gnu packages ncurses) | 37 | #:use-module (gnu packages ncurses) |
| 38 | #:use-module (gnu packages nettle) | ||
| 39 | #:use-module (gnu packages perl) | ||
| 40 | #:use-module (gnu packages pkg-config) | ||
| 34 | #:autoload (gnu packages protobuf) (protobuf) | 41 | #:autoload (gnu packages protobuf) (protobuf) |
| 35 | #:autoload (gnu packages boost) (boost) | 42 | #:use-module (gnu packages readline) |
| 36 | #:use-module (gnu packages base) | 43 | #:use-module (gnu packages texinfo) |
| 37 | #:use-module (gnu packages tls) | 44 | #:use-module (gnu packages tls) |
| 38 | #:use-module (gnu packages) | 45 | #:use-module (gnu packages xorg) |
| 39 | #:use-module (guix packages) | 46 | #:use-module (guix build-system cmake) |
| 47 | #:use-module (guix build-system gnu) | ||
| 40 | #:use-module (guix download) | 48 | #:use-module (guix download) |
| 41 | #:use-module (guix git-download) | 49 | #:use-module (guix git-download) |
| 42 | #:use-module (guix build-system gnu) | 50 | #:use-module ((guix licenses) #:prefix license:) |
| 43 | #:use-module (guix build-system cmake)) | 51 | #:use-module (guix packages)) |
| 44 | 52 | ||
| 45 | (define-public libssh | 53 | (define-public libssh |
| 46 | (package | 54 | (package |
| @@ -337,7 +345,7 @@ especially over Wi-Fi, cellular, and long-distance links.") | |||
| 337 | (define-public dropbear | 345 | (define-public dropbear |
| 338 | (package | 346 | (package |
| 339 | (name "dropbear") | 347 | (name "dropbear") |
| 340 | (version "2016.72") | 348 | (version "2016.73") |
| 341 | (source (origin | 349 | (source (origin |
| 342 | (method url-fetch) | 350 | (method url-fetch) |
| 343 | (uri (string-append | 351 | (uri (string-append |
| @@ -345,7 +353,7 @@ especially over Wi-Fi, cellular, and long-distance links.") | |||
| 345 | name "-" version ".tar.bz2")) | 353 | name "-" version ".tar.bz2")) |
| 346 | (sha256 | 354 | (sha256 |
| 347 | (base32 | 355 | (base32 |
| 348 | "10fnlaf6rm537v3rml1gnd58d42plv2q5cp7svbrysap69npc8wk")))) | 356 | "1mzg18jss1bsmcnn88zv7kv5yj01hzimndnd5636hfq9kgva8qaw")))) |
| 349 | (build-system gnu-build-system) | 357 | (build-system gnu-build-system) |
| 350 | (arguments `(#:tests? #f)) ; There is no "make check" or anything similar | 358 | (arguments `(#:tests? #f)) ; There is no "make check" or anything similar |
| 351 | (inputs `(("zlib" ,zlib))) | 359 | (inputs `(("zlib" ,zlib))) |
| @@ -355,3 +363,129 @@ client. It runs on a variety of POSIX-based platforms. Dropbear is | |||
| 355 | particularly useful for embedded systems, such as wireless routers.") | 363 | particularly useful for embedded systems, such as wireless routers.") |
| 356 | (home-page "https://matt.ucc.asn.au/dropbear/dropbear.html") | 364 | (home-page "https://matt.ucc.asn.au/dropbear/dropbear.html") |
| 357 | (license (license:x11-style "" "See file LICENSE.")))) | 365 | (license (license:x11-style "" "See file LICENSE.")))) |
| 366 | |||
| 367 | (define-public liboop | ||
| 368 | (package | ||
| 369 | (name "liboop") | ||
| 370 | (version "1.0") | ||
| 371 | (source | ||
| 372 | (origin | ||
| 373 | (method url-fetch) | ||
| 374 | (uri (string-append "http://download.ofb.net/liboop/liboop-" | ||
| 375 | version ".tar.gz")) | ||
| 376 | (sha256 | ||
| 377 | (base32 | ||
| 378 | "0z6rlalhvfca64jpvksppc9bdhs7jwhiw4y35g5ibvh91xp3rn1l")) | ||
| 379 | (patches (search-patches "liboop-mips64-deplibs-fix.patch")))) | ||
| 380 | (build-system gnu-build-system) | ||
| 381 | (home-page "http://www.lysator.liu.se/liboop/") | ||
| 382 | (synopsis "Event loop library") | ||
| 383 | (description "Liboop is a low-level event loop management library for | ||
| 384 | POSIX-based operating systems. It supports the development of modular, | ||
| 385 | multiplexed applications which may respond to events from several sources. It | ||
| 386 | replaces the \"select() loop\" and allows the registration of event handlers | ||
| 387 | for file and network I/O, timers and signals. Since processes use these | ||
| 388 | mechanisms for almost all external communication, liboop can be used as the | ||
| 389 | basis for almost any application.") | ||
| 390 | (license license:lgpl2.1+))) | ||
| 391 | |||
| 392 | (define-public lsh | ||
| 393 | (package | ||
| 394 | (name "lsh") | ||
| 395 | (version "2.1") | ||
| 396 | (source (origin | ||
| 397 | (method url-fetch) | ||
| 398 | (uri (string-append "mirror://gnu/lsh/lsh-" | ||
| 399 | version ".tar.gz")) | ||
| 400 | (sha256 | ||
| 401 | (base32 | ||
| 402 | "1qqjy9zfzgny0rkb27c8c7dfsylvb6n0ld8h3an2r83pmaqr9gwb")) | ||
| 403 | (modules '((guix build utils))) | ||
| 404 | (snippet | ||
| 405 | '(begin | ||
| 406 | (substitute* "src/testsuite/functions.sh" | ||
| 407 | (("localhost") | ||
| 408 | ;; Avoid host name lookups since they don't work in | ||
| 409 | ;; chroot builds. | ||
| 410 | "127.0.0.1") | ||
| 411 | (("set -e") | ||
| 412 | ;; Make tests more verbose. | ||
| 413 | "set -e\nset -x")) | ||
| 414 | |||
| 415 | (substitute* (find-files "src/testsuite" "-test$") | ||
| 416 | (("localhost") "127.0.0.1")) | ||
| 417 | |||
| 418 | (substitute* "src/testsuite/login-auth-test" | ||
| 419 | (("/bin/cat") "cat")))))) | ||
| 420 | (build-system gnu-build-system) | ||
| 421 | (native-inputs | ||
| 422 | `(("m4" ,m4) | ||
| 423 | ("guile" ,guile-2.0) | ||
| 424 | ("gperf" ,gperf) | ||
| 425 | ("psmisc" ,psmisc))) ; for `killall' | ||
| 426 | (inputs | ||
| 427 | `(("nettle" ,nettle-2) | ||
| 428 | ("linux-pam" ,linux-pam) | ||
| 429 | |||
| 430 | ;; 'rl.c' uses the 'CPPFunction' type, which is no longer in | ||
| 431 | ;; Readline 6.3. | ||
| 432 | ("readline" ,readline-6.2) | ||
| 433 | |||
| 434 | ("liboop" ,liboop) | ||
| 435 | ("zlib" ,zlib) | ||
| 436 | ("gmp" ,gmp) | ||
| 437 | |||
| 438 | ;; The server (lshd) invokes xauth when X11 forwarding is requested. | ||
| 439 | ;; This adds 24 MiB (or 27%) to the closure of lsh. | ||
| 440 | ("xauth" ,xauth))) | ||
| 441 | (arguments | ||
| 442 | '(;; Skip the `configure' test that checks whether /dev/ptmx & | ||
| 443 | ;; co. work as expected, because it relies on impurities (for | ||
| 444 | ;; instance, /dev/pts may be unavailable in chroots.) | ||
| 445 | #:configure-flags '("lsh_cv_sys_unix98_ptys=yes") | ||
| 446 | |||
| 447 | ;; FIXME: Tests won't run in a chroot, presumably because | ||
| 448 | ;; /etc/profile is missing, and thus clients get an empty $PATH | ||
| 449 | ;; and nothing works. | ||
| 450 | #:tests? #f | ||
| 451 | |||
| 452 | #:phases | ||
| 453 | (modify-phases %standard-phases | ||
| 454 | (add-before 'configure 'pre-configure | ||
| 455 | (lambda* (#:key inputs #:allow-other-keys) | ||
| 456 | (let* ((nettle (assoc-ref inputs "nettle")) | ||
| 457 | (sexp-conv (string-append nettle "/bin/sexp-conv"))) | ||
| 458 | ;; Make sure 'lsh' and 'lshd' pick 'sexp-conv' in the right place | ||
| 459 | ;; by default. | ||
| 460 | (substitute* "src/environ.h.in" | ||
| 461 | (("^#define PATH_SEXP_CONV.*") | ||
| 462 | (string-append "#define PATH_SEXP_CONV \"" | ||
| 463 | sexp-conv "\"\n"))) | ||
| 464 | |||
| 465 | ;; Same for the 'lsh-authorize' script. | ||
| 466 | (substitute* "src/lsh-authorize" | ||
| 467 | (("=sexp-conv") | ||
| 468 | (string-append "=" sexp-conv))) | ||
| 469 | |||
| 470 | ;; Tell lshd where 'xauth' lives. Another option would be to | ||
| 471 | ;; hardcode "/run/current-system/profile/bin/xauth", thereby | ||
| 472 | ;; reducing the closure size, but that wouldn't work on foreign | ||
| 473 | ;; distros. | ||
| 474 | (with-fluids ((%default-port-encoding "ISO-8859-1")) | ||
| 475 | (substitute* "src/server_x11.c" | ||
| 476 | (("define XAUTH_PROGRAM.*") | ||
| 477 | (string-append "define XAUTH_PROGRAM \"" | ||
| 478 | (assoc-ref inputs "xauth") | ||
| 479 | "/bin/xauth\"\n"))))) | ||
| 480 | |||
| 481 | ;; Tests rely on $USER being set. | ||
| 482 | (setenv "USER" "guix")))))) | ||
| 483 | (home-page "http://www.lysator.liu.se/~nisse/lsh/") | ||
| 484 | (synopsis "GNU implementation of the Secure Shell (ssh) protocols") | ||
| 485 | (description | ||
| 486 | "GNU lsh is a free implementation of the SSH version 2 protocol. It is | ||
| 487 | used to create a secure line of communication between two computers, | ||
| 488 | providing shell access to the server system from the client. It provides | ||
| 489 | both the server daemon and the client application, as well as tools for | ||
| 490 | manipulating key files.") | ||
| 491 | (license license:gpl2+))) | ||
diff --git a/gnu/packages/stalonetray.scm b/gnu/packages/stalonetray.scm index e1604327ab2..c803fb06f63 100644 --- a/gnu/packages/stalonetray.scm +++ b/gnu/packages/stalonetray.scm | |||
| @@ -1,5 +1,6 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2014 Raimon Grau <raimonster@gmail.com> | 2 | ;;; Copyright © 2014 Raimon Grau <raimonster@gmail.com> |
| 3 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | ||
| 3 | ;;; | 4 | ;;; |
| 4 | ;;; This file is part of GNU Guix. | 5 | ;;; This file is part of GNU Guix. |
| 5 | ;;; | 6 | ;;; |
| @@ -26,16 +27,16 @@ | |||
| 26 | (define-public stalonetray | 27 | (define-public stalonetray |
| 27 | (package | 28 | (package |
| 28 | (name "stalonetray") | 29 | (name "stalonetray") |
| 29 | (version "0.8.1") | 30 | (version "0.8.3") |
| 30 | (source | 31 | (source |
| 31 | (origin | 32 | (origin |
| 32 | (method url-fetch) | 33 | (method url-fetch) |
| 33 | (uri | 34 | (uri |
| 34 | (string-append "mirror://sourceforge/stalonetray/stalonetray-" | 35 | (string-append "mirror://sourceforge/stalonetray/stalonetray/stalonetray-" |
| 35 | version "/stalonetray-" version ".tar.bz2")) | 36 | version "/stalonetray-" version ".tar.bz2")) |
| 36 | (sha256 | 37 | (sha256 |
| 37 | (base32 | 38 | (base32 |
| 38 | "1wp8pnlv34w7xizj1vivnc3fkwqq4qgb9dbrsg15598iw85gi8ll")))) | 39 | "0k7xnpdb6dvx25d67v0crlr32cdnzykdsi9j889njiididc8lm1n")))) |
| 39 | (inputs `(("libx11" ,libx11))) | 40 | (inputs `(("libx11" ,libx11))) |
| 40 | (build-system gnu-build-system) | 41 | (build-system gnu-build-system) |
| 41 | (home-page "http://stalonetray.sourceforge.net") | 42 | (home-page "http://stalonetray.sourceforge.net") |
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index c84845dd296..45e50b651c0 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm | |||
| @@ -165,7 +165,9 @@ be output in text, PostScript, PDF or HTML.") | |||
| 165 | ("which" ,which) ; for tests/Examples/base-Ex.R | 165 | ("which" ,which) ; for tests/Examples/base-Ex.R |
| 166 | ("xz" ,xz))) | 166 | ("xz" ,xz))) |
| 167 | (inputs | 167 | (inputs |
| 168 | `(("cairo" ,cairo) | 168 | `(;; We need not only cairo here, but pango to ensure that tests for the |
| 169 | ;; "cairo" bitmapType plotting backend succeed. | ||
| 170 | ("pango" ,pango) | ||
| 169 | ("curl" ,curl) | 171 | ("curl" ,curl) |
| 170 | ("tzdata" ,tzdata) | 172 | ("tzdata" ,tzdata) |
| 171 | ("gfortran" ,gfortran) | 173 | ("gfortran" ,gfortran) |
| @@ -596,7 +598,8 @@ legends.") | |||
| 596 | ("r-plyr" ,r-plyr) | 598 | ("r-plyr" ,r-plyr) |
| 597 | ("r-proto" ,r-proto) | 599 | ("r-proto" ,r-proto) |
| 598 | ("r-reshape2" ,r-reshape2) | 600 | ("r-reshape2" ,r-reshape2) |
| 599 | ("r-scales" ,r-scales))) | 601 | ("r-scales" ,r-scales) |
| 602 | ("r-svglite" ,r-svglite))) | ||
| 600 | (home-page "http://ggplot2.org") | 603 | (home-page "http://ggplot2.org") |
| 601 | (synopsis "An implementation of the grammar of graphics") | 604 | (synopsis "An implementation of the grammar of graphics") |
| 602 | (description | 605 | (description |
| @@ -608,6 +611,55 @@ multidimensional conditioning system and a consistent interface to map data to | |||
| 608 | aesthetic attributes.") | 611 | aesthetic attributes.") |
| 609 | (license license:gpl2+))) | 612 | (license license:gpl2+))) |
| 610 | 613 | ||
| 614 | (define-public r-gdtools | ||
| 615 | (package | ||
| 616 | (name "r-gdtools") | ||
| 617 | (version "0.0.7") | ||
| 618 | (source | ||
| 619 | (origin | ||
| 620 | (method url-fetch) | ||
| 621 | (uri (cran-uri "gdtools" version)) | ||
| 622 | (sha256 | ||
| 623 | (base32 | ||
| 624 | "1bmnf9d677f2jy8jnb9ymjz1qzm4yrd0qp6k5qrrly06jfffyx7g")))) | ||
| 625 | (build-system r-build-system) | ||
| 626 | (native-inputs | ||
| 627 | `(("r-rcpp" ,r-rcpp) | ||
| 628 | ("pkg-config" ,pkg-config))) | ||
| 629 | (inputs | ||
| 630 | `(("cairo" ,cairo))) | ||
| 631 | (home-page "http://cran.r-project.org/web/packages/gdtools") | ||
| 632 | (synopsis "Utilities for graphical rendering") | ||
| 633 | (description | ||
| 634 | "The @code{gdtools} package provides functionalities to get font metrics | ||
| 635 | and to generate base64 encoded string from raster matrix.") | ||
| 636 | (license license:gpl3))) | ||
| 637 | |||
| 638 | (define-public r-svglite | ||
| 639 | (package | ||
| 640 | (name "r-svglite") | ||
| 641 | (version "1.1.0") | ||
| 642 | (source | ||
| 643 | (origin | ||
| 644 | (method url-fetch) | ||
| 645 | (uri (cran-uri "svglite" version)) | ||
| 646 | (sha256 | ||
| 647 | (base32 | ||
| 648 | "11ryicjglfi6jvkk4jgg5kra42qbs5z2zid7jjhlslpjcljfwc70")))) | ||
| 649 | (build-system r-build-system) | ||
| 650 | (native-inputs `(("r-rcpp" ,r-rcpp))) | ||
| 651 | (propagated-inputs | ||
| 652 | `(("r-bh" ,r-bh) | ||
| 653 | ("r-gdtools" ,r-gdtools))) | ||
| 654 | (home-page "https://github.com/hadley/svglite") | ||
| 655 | (synopsis "SVG graphics device") | ||
| 656 | (description | ||
| 657 | "@code{svglite} is a graphics device that produces clean | ||
| 658 | @dfn{SVG} (Scalable Vector Graphics) output, suitable for use on the web, or | ||
| 659 | hand editing. Compared to the built-in @code{svg()}, @code{svglite} is | ||
| 660 | considerably faster, produces smaller files, and leaves text as is.") | ||
| 661 | (license license:gpl2+))) | ||
| 662 | |||
| 611 | (define-public r-assertthat | 663 | (define-public r-assertthat |
| 612 | (package | 664 | (package |
| 613 | (name "r-assertthat") | 665 | (name "r-assertthat") |
| @@ -1353,6 +1405,25 @@ diagnostic tests of convergence to the equilibrium distribution of the Markov | |||
| 1353 | chain.") | 1405 | chain.") |
| 1354 | (license license:gpl2+))) | 1406 | (license license:gpl2+))) |
| 1355 | 1407 | ||
| 1408 | (define-public r-ade4 | ||
| 1409 | (package | ||
| 1410 | (name "r-ade4") | ||
| 1411 | (version "1.7-4") | ||
| 1412 | (source | ||
| 1413 | (origin | ||
| 1414 | (method url-fetch) | ||
| 1415 | (uri (cran-uri "ade4" version)) | ||
| 1416 | (sha256 | ||
| 1417 | (base32 | ||
| 1418 | "17sbicash7z4b63dlrbaf8xx2pbwh62vykzvhdjs43h8jkl881y7")))) | ||
| 1419 | (build-system r-build-system) | ||
| 1420 | (home-page "http://pbil.univ-lyon1.fr/ADE-4") | ||
| 1421 | (synopsis "Multivariate data analysis and graphical display") | ||
| 1422 | (description | ||
| 1423 | "The ade4 package contains data analysis functions to analyze ecological | ||
| 1424 | and environmental data in the framework of Euclidean exploratory methods.") | ||
| 1425 | (license license:gpl2+))) | ||
| 1426 | |||
| 1356 | (define-public r-xml2 | 1427 | (define-public r-xml2 |
| 1357 | (package | 1428 | (package |
| 1358 | (name "r-xml2") | 1429 | (name "r-xml2") |
| @@ -1377,6 +1448,32 @@ chain.") | |||
| 1377 | files in R. It is built on top of the libxml2 C library.") | 1448 | files in R. It is built on top of the libxml2 C library.") |
| 1378 | (license license:gpl2+))) | 1449 | (license license:gpl2+))) |
| 1379 | 1450 | ||
| 1451 | (define-public r-multitaper | ||
| 1452 | (package | ||
| 1453 | (name "r-multitaper") | ||
| 1454 | (version "1.0-11") | ||
| 1455 | (source | ||
| 1456 | (origin | ||
| 1457 | (method url-fetch) | ||
| 1458 | (uri (cran-uri "multitaper" version)) | ||
| 1459 | (sha256 | ||
| 1460 | (base32 | ||
| 1461 | "1s0lmjzpyd7zmc2p1ywv5fm7qkq357p70b76gw9wjlms6d81j1n4")))) | ||
| 1462 | (build-system r-build-system) | ||
| 1463 | (native-inputs | ||
| 1464 | `(("gfortran" ,gfortran))) | ||
| 1465 | (home-page "http://github.com/wesleyburr/multitaper/") | ||
| 1466 | (synopsis "Multitaper spectral analysis tools") | ||
| 1467 | (description | ||
| 1468 | "This package implements multitaper spectral estimation | ||
| 1469 | techniques using prolate spheroidal sequences (Slepians) and sine | ||
| 1470 | tapers for time series analysis. It includes an adaptive weighted | ||
| 1471 | multitaper spectral estimate, a coherence estimate, Thomson's Harmonic | ||
| 1472 | F-test, and complex demodulation. The Slepians sequences are | ||
| 1473 | generated efficiently using a tridiagonal matrix solution, and | ||
| 1474 | jackknifed confidence intervals are available for most estimates.") | ||
| 1475 | (license license:gpl2+))) | ||
| 1476 | |||
| 1380 | (define-public r-rversions | 1477 | (define-public r-rversions |
| 1381 | (package | 1478 | (package |
| 1382 | (name "r-rversions") | 1479 | (name "r-rversions") |
| @@ -2170,6 +2267,29 @@ parallel.") | |||
| 2170 | using the parallel package.") | 2267 | using the parallel package.") |
| 2171 | (license license:gpl2+))) | 2268 | (license license:gpl2+))) |
| 2172 | 2269 | ||
| 2270 | (define-public r-domc | ||
| 2271 | (package | ||
| 2272 | (name "r-domc") | ||
| 2273 | (version "1.3.4") | ||
| 2274 | (source | ||
| 2275 | (origin | ||
| 2276 | (method url-fetch) | ||
| 2277 | (uri (cran-uri "doMC" version)) | ||
| 2278 | (sha256 | ||
| 2279 | (base32 | ||
| 2280 | "0y47jl6g4f83r14pj8bafdzq1phj7bxy5dwyz3k43d2rr8phk8bn")))) | ||
| 2281 | (properties `((upstream-name . "doMC"))) | ||
| 2282 | (build-system r-build-system) | ||
| 2283 | (propagated-inputs | ||
| 2284 | `(("r-foreach" ,r-foreach) | ||
| 2285 | ("r-iterators" ,r-iterators))) | ||
| 2286 | (home-page "http://cran.r-project.org/web/packages/doMC") | ||
| 2287 | (synopsis "Foreach parallel adaptor for the 'parallel' package") | ||
| 2288 | (description | ||
| 2289 | "This package provides a parallel backend for the @code{%dopar%} function | ||
| 2290 | using the multicore functionality of the parallel package.") | ||
| 2291 | (license license:gpl2+))) | ||
| 2292 | |||
| 2173 | (define-public r-dt | 2293 | (define-public r-dt |
| 2174 | (package | 2294 | (package |
| 2175 | (name "r-dt") | 2295 | (name "r-dt") |
| @@ -2242,6 +2362,32 @@ singular and eigenvalue decompositions, as well as for principal component | |||
| 2242 | analysis of large sparse or dense matrices.") | 2362 | analysis of large sparse or dense matrices.") |
| 2243 | (license (list license:gpl2+ license:gpl3+)))) | 2363 | (license (list license:gpl2+ license:gpl3+)))) |
| 2244 | 2364 | ||
| 2365 | (define-public r-glmnet | ||
| 2366 | (package | ||
| 2367 | (name "r-glmnet") | ||
| 2368 | (version "2.0-5") | ||
| 2369 | (source | ||
| 2370 | (origin | ||
| 2371 | (method url-fetch) | ||
| 2372 | (uri (cran-uri "glmnet" version)) | ||
| 2373 | (sha256 | ||
| 2374 | (base32 | ||
| 2375 | "1cbpzmbv837fvq88rgn6mgzgr9f1wqp9fg8gh2kkmngvr1957a9c")))) | ||
| 2376 | (build-system r-build-system) | ||
| 2377 | (inputs | ||
| 2378 | `(("gfortran" ,gfortran))) | ||
| 2379 | (propagated-inputs | ||
| 2380 | `(("r-foreach" ,r-foreach))) | ||
| 2381 | (home-page "http://www.jstatsoft.org/v33/i01") | ||
| 2382 | (synopsis "Lasso and elastic-net regularized generalized linear models") | ||
| 2383 | (description | ||
| 2384 | "The glmnet package provides efficient procedures for fitting the entire | ||
| 2385 | lasso or elastic-net regularization path for linear and Poisson regression, as | ||
| 2386 | well as logistic, multinomial, Cox, multiple-response Gaussian and grouped | ||
| 2387 | multinomial models. The algorithm uses cyclical coordinate descent in a | ||
| 2388 | path-wise fashion.") | ||
| 2389 | (license license:gpl2+))) | ||
| 2390 | |||
| 2245 | (define-public r-pkgmaker | 2391 | (define-public r-pkgmaker |
| 2246 | (package | 2392 | (package |
| 2247 | (name "r-pkgmaker") | 2393 | (name "r-pkgmaker") |
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index ec4d3df1a66..9abaabad893 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | ;;; Copyright © 2015 David Thompson <davet@gnu.org> | 6 | ;;; Copyright © 2015 David Thompson <davet@gnu.org> |
| 7 | ;;; Copyright © 2015 Leo Famulari <leo@famulari.name> | 7 | ;;; Copyright © 2015 Leo Famulari <leo@famulari.name> |
| 8 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | 8 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> |
| 9 | ;;; Copyright © 2016 Nils Gillmann <niasterisk@grrlz.net> | 9 | ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is> |
| 10 | ;;; | 10 | ;;; |
| 11 | ;;; This file is part of GNU Guix. | 11 | ;;; This file is part of GNU Guix. |
| 12 | ;;; | 12 | ;;; |
diff --git a/gnu/packages/tmux.scm b/gnu/packages/tmux.scm index d89fc168443..e4f3b45d687 100644 --- a/gnu/packages/tmux.scm +++ b/gnu/packages/tmux.scm | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com> | 2 | ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com> |
| 3 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | 3 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> |
| 4 | ;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com> | ||
| 4 | ;;; | 5 | ;;; |
| 5 | ;;; This file is part of GNU Guix. | 6 | ;;; This file is part of GNU Guix. |
| 6 | ;;; | 7 | ;;; |
| @@ -21,11 +22,13 @@ | |||
| 21 | #:use-module (guix licenses) | 22 | #:use-module (guix licenses) |
| 22 | #:use-module (guix packages) | 23 | #:use-module (guix packages) |
| 23 | #:use-module (guix download) | 24 | #:use-module (guix download) |
| 25 | #:use-module (guix git-download) | ||
| 24 | #:use-module (guix build-system gnu) | 26 | #:use-module (guix build-system gnu) |
| 25 | #:use-module (gnu packages) | 27 | #:use-module (gnu packages) |
| 26 | #:use-module (gnu packages libevent) | 28 | #:use-module (gnu packages libevent) |
| 27 | #:use-module (gnu packages ncurses)) | 29 | #:use-module (gnu packages ncurses)) |
| 28 | 30 | ||
| 31 | |||
| 29 | (define-public tmux | 32 | (define-public tmux |
| 30 | (package | 33 | (package |
| 31 | (name "tmux") | 34 | (name "tmux") |
| @@ -50,3 +53,38 @@ windows), each running a separate program, to be created, accessed, and | |||
| 50 | controlled from a single screen. tmux may be detached from a screen and | 53 | controlled from a single screen. tmux may be detached from a screen and |
| 51 | continue running in the background, then later reattached.") | 54 | continue running in the background, then later reattached.") |
| 52 | (license isc))) | 55 | (license isc))) |
| 56 | |||
| 57 | (define-public tmux-themepack | ||
| 58 | (let ((commit "03a372866f7677f7fe63bcee140b48b9fd372c48") | ||
| 59 | (revision "1")) | ||
| 60 | (package | ||
| 61 | (name "tmux-themepack") | ||
| 62 | (version | ||
| 63 | (string-append "0.0.0-" revision "." (string-take commit 7))) ;; No version tags | ||
| 64 | (source (origin | ||
| 65 | (method git-fetch) | ||
| 66 | (uri (git-reference | ||
| 67 | (url | ||
| 68 | (string-append "https://github.com/jimeh/" name ".git")) | ||
| 69 | (commit commit))) | ||
| 70 | (sha256 | ||
| 71 | (base32 | ||
| 72 | "1d3k87mq5lca042jbap5kxskjy3kg79wjhhpnm6jacbn3anc67zl")) | ||
| 73 | (file-name (string-append name "-" version "-checkout")))) | ||
| 74 | (build-system gnu-build-system) | ||
| 75 | (arguments | ||
| 76 | `(#:tests? #f ; No test suite. | ||
| 77 | #:phases (modify-phases %standard-phases | ||
| 78 | (delete 'configure) | ||
| 79 | (delete 'build) | ||
| 80 | (replace 'install | ||
| 81 | (lambda* (#:key outputs #:allow-other-keys) | ||
| 82 | (let* ((out (string-append | ||
| 83 | (assoc-ref outputs "out") | ||
| 84 | "/share/" ,name "-" ,version))) | ||
| 85 | (copy-recursively "." out))))))) | ||
| 86 | (home-page "https://github.com/jimeh/tmux-themepack") | ||
| 87 | (synopsis "Collection of themes for Tmux") | ||
| 88 | (description "A collection of various themes for Tmux.") | ||
| 89 | (license | ||
| 90 | (non-copyleft "http://www.wtfpl.net/txt/copying/"))))) | ||
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index e6e7e0011bb..ec7f9e8a3ce 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm | |||
| @@ -112,14 +112,14 @@ as well as the classic centralized workflow.") | |||
| 112 | ;; Keep in sync with 'git-manpages'! | 112 | ;; Keep in sync with 'git-manpages'! |
| 113 | (package | 113 | (package |
| 114 | (name "git") | 114 | (name "git") |
| 115 | (version "2.9.0") | 115 | (version "2.9.1") |
| 116 | (source (origin | 116 | (source (origin |
| 117 | (method url-fetch) | 117 | (method url-fetch) |
| 118 | (uri (string-append "mirror://kernel.org/software/scm/git/git-" | 118 | (uri (string-append "mirror://kernel.org/software/scm/git/git-" |
| 119 | version ".tar.xz")) | 119 | version ".tar.xz")) |
| 120 | (sha256 | 120 | (sha256 |
| 121 | (base32 | 121 | (base32 |
| 122 | "02dl8yvvl7m4zy39s0xmqr958ah7krvkv94lmx4vz3wl95wsj7zl")))) | 122 | "18l2jb4bkp9ljz6p2aviwzxqyzza9z3v6h1pnkz7kjf1fay61zp8")))) |
| 123 | (build-system gnu-build-system) | 123 | (build-system gnu-build-system) |
| 124 | (native-inputs | 124 | (native-inputs |
| 125 | `(("native-perl" ,perl) | 125 | `(("native-perl" ,perl) |
| @@ -294,7 +294,7 @@ everything from small to very large projects with speed and efficiency.") | |||
| 294 | version ".tar.xz")) | 294 | version ".tar.xz")) |
| 295 | (sha256 | 295 | (sha256 |
| 296 | (base32 | 296 | (base32 |
| 297 | "0ic4zs4axkkwa44nqv5iihj3q2nm42kx0j8scnfp1z93m6pw31fw")))) | 297 | "1v9icsf85vvrrg7fakm91d11q23rvnh6dq4b4c4ya8v95z00mg8p")))) |
| 298 | (build-system trivial-build-system) | 298 | (build-system trivial-build-system) |
| 299 | (arguments | 299 | (arguments |
| 300 | '(#:modules ((guix build utils)) | 300 | '(#:modules ((guix build utils)) |
| @@ -369,7 +369,7 @@ write native speed custom Git applications in any language with bindings.") | |||
| 369 | (define-public cgit | 369 | (define-public cgit |
| 370 | (package | 370 | (package |
| 371 | (name "cgit") | 371 | (name "cgit") |
| 372 | (version "0.12") | 372 | (version "1.0") |
| 373 | (source (origin | 373 | (source (origin |
| 374 | (method url-fetch) | 374 | (method url-fetch) |
| 375 | (uri (string-append | 375 | (uri (string-append |
| @@ -377,7 +377,7 @@ write native speed custom Git applications in any language with bindings.") | |||
| 377 | version ".tar.xz")) | 377 | version ".tar.xz")) |
| 378 | (sha256 | 378 | (sha256 |
| 379 | (base32 | 379 | (base32 |
| 380 | "1dx54hgfyabmg9nm5qp6d01f54nlbqbbdwhwl0llb9imjf237qif")))) | 380 | "0kbh835p7dl4h88qv55fyfh1za09cgnqh63rii325w9215hm95x8")))) |
| 381 | (build-system gnu-build-system) | 381 | (build-system gnu-build-system) |
| 382 | (arguments | 382 | (arguments |
| 383 | '(#:tests? #f ; XXX: fail to build the in-source git. | 383 | '(#:tests? #f ; XXX: fail to build the in-source git. |
| @@ -608,14 +608,14 @@ control to Git repositories.") | |||
| 608 | (define-public mercurial | 608 | (define-public mercurial |
| 609 | (package | 609 | (package |
| 610 | (name "mercurial") | 610 | (name "mercurial") |
| 611 | (version "3.8.1") | 611 | (version "3.8.4") |
| 612 | (source (origin | 612 | (source (origin |
| 613 | (method url-fetch) | 613 | (method url-fetch) |
| 614 | (uri (string-append "https://www.mercurial-scm.org/" | 614 | (uri (string-append "https://www.mercurial-scm.org/" |
| 615 | "release/mercurial-" version ".tar.gz")) | 615 | "release/mercurial-" version ".tar.gz")) |
| 616 | (sha256 | 616 | (sha256 |
| 617 | (base32 | 617 | (base32 |
| 618 | "156m6269xdqq7mpw01c6b065k29xnb8b9lyzn1b0nlz5il2izkps")))) | 618 | "19ixvxgifx48lxp9vdmsf88nnjsxl035ahmp3iw1vyilkpqkwbjb")))) |
| 619 | (build-system python-build-system) | 619 | (build-system python-build-system) |
| 620 | (arguments | 620 | (arguments |
| 621 | `(;; Restrict to Python 2, as Python 3 would require | 621 | `(;; Restrict to Python 2, as Python 3 would require |
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 819c0d5f485..dfce444d9ee 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm | |||
| @@ -7,6 +7,7 @@ | |||
| 7 | ;;; Copyright © 2015 Andy Patterson <ajpatter@uwaterloo.ca> | 7 | ;;; Copyright © 2015 Andy Patterson <ajpatter@uwaterloo.ca> |
| 8 | ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> | 8 | ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> |
| 9 | ;;; Copyright © 2015 Alex Vong <alexvong1995@gmail.com> | 9 | ;;; Copyright © 2015 Alex Vong <alexvong1995@gmail.com> |
| 10 | ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> | ||
| 10 | ;;; | 11 | ;;; |
| 11 | ;;; This file is part of GNU Guix. | 12 | ;;; This file is part of GNU Guix. |
| 12 | ;;; | 13 | ;;; |
| @@ -25,6 +26,8 @@ | |||
| 25 | 26 | ||
| 26 | (define-module (gnu packages video) | 27 | (define-module (gnu packages video) |
| 27 | #:use-module (ice-9 match) | 28 | #:use-module (ice-9 match) |
| 29 | #:use-module (srfi srfi-1) | ||
| 30 | #:use-module (srfi srfi-26) | ||
| 28 | #:use-module ((guix licenses) #:prefix license:) | 31 | #:use-module ((guix licenses) #:prefix license:) |
| 29 | #:use-module (guix utils) | 32 | #:use-module (guix utils) |
| 30 | #:use-module (guix packages) | 33 | #:use-module (guix packages) |
| @@ -32,6 +35,7 @@ | |||
| 32 | #:use-module (guix git-download) | 35 | #:use-module (guix git-download) |
| 33 | #:use-module (guix build-system cmake) | 36 | #:use-module (guix build-system cmake) |
| 34 | #:use-module (guix build-system gnu) | 37 | #:use-module (guix build-system gnu) |
| 38 | #:use-module (guix build-system glib-or-gtk) | ||
| 35 | #:use-module (guix build-system python) | 39 | #:use-module (guix build-system python) |
| 36 | #:use-module (guix build-system waf) | 40 | #:use-module (guix build-system waf) |
| 37 | #:use-module (gnu packages) | 41 | #:use-module (gnu packages) |
| @@ -373,14 +377,14 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") | |||
| 373 | (define-public ffmpeg | 377 | (define-public ffmpeg |
| 374 | (package | 378 | (package |
| 375 | (name "ffmpeg") | 379 | (name "ffmpeg") |
| 376 | (version "3.0.2") | 380 | (version "3.1.1") |
| 377 | (source (origin | 381 | (source (origin |
| 378 | (method url-fetch) | 382 | (method url-fetch) |
| 379 | (uri (string-append "https://ffmpeg.org/releases/ffmpeg-" | 383 | (uri (string-append "https://ffmpeg.org/releases/ffmpeg-" |
| 380 | version ".tar.xz")) | 384 | version ".tar.xz")) |
| 381 | (sha256 | 385 | (sha256 |
| 382 | (base32 | 386 | (base32 |
| 383 | "08sjp4dxgcinmv9ly7nm24swmn2cnbbhvph44ihlplf4n33kr542")))) | 387 | "1nris3flwqd4v4b65yrrv9aqhsab7cb9lfp4wpxz6bi0m3r13g3i")))) |
| 384 | (build-system gnu-build-system) | 388 | (build-system gnu-build-system) |
| 385 | (inputs | 389 | (inputs |
| 386 | `(("fontconfig" ,fontconfig) | 390 | `(("fontconfig" ,fontconfig) |
| @@ -539,14 +543,14 @@ audio/video codec library.") | |||
| 539 | (define-public ffmpeg-2.8 | 543 | (define-public ffmpeg-2.8 |
| 540 | (package | 544 | (package |
| 541 | (inherit ffmpeg) | 545 | (inherit ffmpeg) |
| 542 | (version "2.8.6") | 546 | (version "2.8.7") |
| 543 | (source (origin | 547 | (source (origin |
| 544 | (method url-fetch) | 548 | (method url-fetch) |
| 545 | (uri (string-append "https://ffmpeg.org/releases/ffmpeg-" | 549 | (uri (string-append "https://ffmpeg.org/releases/ffmpeg-" |
| 546 | version ".tar.xz")) | 550 | version ".tar.xz")) |
| 547 | (sha256 | 551 | (sha256 |
| 548 | (base32 | 552 | (base32 |
| 549 | "1yh7dvm7zwdlsspdaq524s5qaggma5md9h95qc4kvb5dmyyyvg15")))) | 553 | "0z0mcj2q3ysp9qdn1ks03g5sn2zxyr06vxs4al0m4b5b3in8mglp")))) |
| 550 | (arguments | 554 | (arguments |
| 551 | (substitute-keyword-arguments (package-arguments ffmpeg) | 555 | (substitute-keyword-arguments (package-arguments ffmpeg) |
| 552 | ((#:configure-flags flags) | 556 | ((#:configure-flags flags) |
| @@ -818,7 +822,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.") | |||
| 818 | (lambda* (#:key inputs #:allow-other-keys) | 822 | (lambda* (#:key inputs #:allow-other-keys) |
| 819 | (copy-file (assoc-ref inputs "waf") "waf") | 823 | (copy-file (assoc-ref inputs "waf") "waf") |
| 820 | (setenv "CC" "gcc")))) | 824 | (setenv "CC" "gcc")))) |
| 821 | #:configure-flags (list "--enable-zsh-comp") | 825 | #:configure-flags (list "--enable-libmpv-shared" "--enable-zsh-comp") |
| 822 | ;; No check function defined. | 826 | ;; No check function defined. |
| 823 | #:tests? #f)) | 827 | #:tests? #f)) |
| 824 | (home-page "https://mpv.io/") | 828 | (home-page "https://mpv.io/") |
| @@ -828,6 +832,34 @@ fork of mplayer2 and MPlayer. It shares some features with the former | |||
| 828 | projects while introducing many more.") | 832 | projects while introducing many more.") |
| 829 | (license license:gpl2+))) | 833 | (license license:gpl2+))) |
| 830 | 834 | ||
| 835 | (define-public gnome-mpv | ||
| 836 | (package | ||
| 837 | (name "gnome-mpv") | ||
| 838 | (version "0.9") | ||
| 839 | (source | ||
| 840 | (origin | ||
| 841 | (method url-fetch) | ||
| 842 | (uri (string-append "https://github.com/gnome-mpv/gnome-mpv/releases" | ||
| 843 | "/download/v" version "/gnome-mpv-" version | ||
| 844 | ".tar.xz")) | ||
| 845 | (sha256 | ||
| 846 | (base32 | ||
| 847 | "06pgxl6f3kkgxv8nlmyl7gy3pg55sqf8vgr8m6426mlpm4p3qdn0")))) | ||
| 848 | (native-inputs | ||
| 849 | `(("intltool" ,intltool) | ||
| 850 | ("pkg-config" ,pkg-config))) | ||
| 851 | (inputs | ||
| 852 | `(("gtk+" ,gtk+) | ||
| 853 | ("libepoxy" ,libepoxy) | ||
| 854 | ("mpv" ,mpv))) | ||
| 855 | (build-system glib-or-gtk-build-system) | ||
| 856 | (home-page "https://github.com/gnome-mpv/gnome-mpv") | ||
| 857 | (synopsis "GTK+ frontend for the mpv media player") | ||
| 858 | (description "GNOME MPV is a simple GTK+ frontend for the mpv media player. | ||
| 859 | GNOME MPV interacts with mpv via the client API exported by libmpv, allowing | ||
| 860 | access to mpv's powerful playback capabilities.") | ||
| 861 | (license license:gpl3+))) | ||
| 862 | |||
| 831 | (define-public libvpx | 863 | (define-public libvpx |
| 832 | (package | 864 | (package |
| 833 | (name "libvpx") | 865 | (name "libvpx") |
| @@ -910,15 +942,15 @@ YouTube.com and a few more sites.") | |||
| 910 | (define-public libbluray | 942 | (define-public libbluray |
| 911 | (package | 943 | (package |
| 912 | (name "libbluray") | 944 | (name "libbluray") |
| 913 | (version "0.9.2") | 945 | (version "0.9.3") |
| 914 | (source (origin | 946 | (source (origin |
| 915 | (method url-fetch) | 947 | (method url-fetch) |
| 916 | (uri (string-append "http://download.videolan.org/videolan/" | 948 | (uri (string-append "https://download.videolan.org/videolan/" |
| 917 | name "/" version "/" | 949 | name "/" version "/" |
| 918 | name "-" version ".tar.bz2")) | 950 | name "-" version ".tar.bz2")) |
| 919 | (sha256 | 951 | (sha256 |
| 920 | (base32 | 952 | (base32 |
| 921 | "1sp71j4agcsg17g6b85cqz78pn5vknl5pl39rvr6mkib5ps99jgg")))) | 953 | "1q1whviqv5sr9nr372h31zwid1rvbfbx3z4lzr8lnj25xha6cdm6")))) |
| 922 | (build-system gnu-build-system) | 954 | (build-system gnu-build-system) |
| 923 | (arguments `(#:configure-flags '("--disable-bdjava"))) | 955 | (arguments `(#:configure-flags '("--disable-bdjava"))) |
| 924 | (native-inputs `(("pkg-config" ,pkg-config))) | 956 | (native-inputs `(("pkg-config" ,pkg-config))) |
| @@ -926,7 +958,7 @@ YouTube.com and a few more sites.") | |||
| 926 | `(("fontconfig" ,fontconfig) | 958 | `(("fontconfig" ,fontconfig) |
| 927 | ("freetype" ,freetype) | 959 | ("freetype" ,freetype) |
| 928 | ("libxml2" ,libxml2))) | 960 | ("libxml2" ,libxml2))) |
| 929 | (home-page "http://www.videolan.org/developers/libbluray.html") | 961 | (home-page "https://www.videolan.org/developers/libbluray.html") |
| 930 | (synopsis "Blu-Ray Disc playback library") | 962 | (synopsis "Blu-Ray Disc playback library") |
| 931 | (description | 963 | (description |
| 932 | "libbluray is a library designed for Blu-Ray Disc playback for media | 964 | "libbluray is a library designed for Blu-Ray Disc playback for media |
| @@ -1363,7 +1395,7 @@ be used for realtime video capture via Linux-specific APIs.") | |||
| 1363 | (define-public obs | 1395 | (define-public obs |
| 1364 | (package | 1396 | (package |
| 1365 | (name "obs") | 1397 | (name "obs") |
| 1366 | (version "0.14.2") | 1398 | (version "0.15.1") |
| 1367 | (source (origin | 1399 | (source (origin |
| 1368 | (method url-fetch) | 1400 | (method url-fetch) |
| 1369 | (uri (string-append "https://github.com/jp9000/obs-studio" | 1401 | (uri (string-append "https://github.com/jp9000/obs-studio" |
| @@ -1371,9 +1403,23 @@ be used for realtime video capture via Linux-specific APIs.") | |||
| 1371 | (file-name (string-append name "-" version ".tar.gz")) | 1403 | (file-name (string-append name "-" version ".tar.gz")) |
| 1372 | (sha256 | 1404 | (sha256 |
| 1373 | (base32 | 1405 | (base32 |
| 1374 | "1cb8naa67kfnnngkzv1wpd4y241j29ggnk1w7jgnymp9j8dny1xl")))) | 1406 | "18fycg7xlj2i89wdb9c5js0bnl964s1lpmnvmfyj11zi9k061wsg")))) |
| 1375 | (build-system cmake-build-system) | 1407 | (build-system cmake-build-system) |
| 1376 | (arguments '(#:tests? #f)) ; no tests | 1408 | (arguments |
| 1409 | `(#:tests? #f ; no tests | ||
| 1410 | ,@(if (any (cute string-prefix? <> (or (%current-target-system) | ||
| 1411 | (%current-system))) | ||
| 1412 | '("arm" "mips")) | ||
| 1413 | '(#:phases | ||
| 1414 | (modify-phases %standard-phases | ||
| 1415 | (add-after 'unpack 'remove-architecture-specific-instructions | ||
| 1416 | ;; non-Intel platforms fail to build with the architecture | ||
| 1417 | ;; specific compiler flags included by default. | ||
| 1418 | (lambda _ | ||
| 1419 | (substitute* "libobs/CMakeLists.txt" | ||
| 1420 | (("if\\(NOT MSVC\\)") "if(MSVC)")) | ||
| 1421 | #t)))) | ||
| 1422 | '()))) | ||
| 1377 | (native-inputs | 1423 | (native-inputs |
| 1378 | `(("pkg-config" ,pkg-config))) | 1424 | `(("pkg-config" ,pkg-config))) |
| 1379 | (inputs | 1425 | (inputs |
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 19870ef8f44..ea1a30ad260 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm | |||
| @@ -76,14 +76,14 @@ | |||
| 76 | (define-public httpd | 76 | (define-public httpd |
| 77 | (package | 77 | (package |
| 78 | (name "httpd") | 78 | (name "httpd") |
| 79 | (version "2.4.16") | 79 | (version "2.4.23") |
| 80 | (source (origin | 80 | (source (origin |
| 81 | (method url-fetch) | 81 | (method url-fetch) |
| 82 | (uri (string-append "mirror://apache/httpd/httpd-" | 82 | (uri (string-append "mirror://apache/httpd/httpd-" |
| 83 | version ".tar.bz2")) | 83 | version ".tar.bz2")) |
| 84 | (sha256 | 84 | (sha256 |
| 85 | (base32 | 85 | (base32 |
| 86 | "0hrpy6gjwma0kba7p7m61vwh82qcnkf08123lrwpg257m93hnrmc")))) | 86 | "0n2yx3gjlpr4kgqx845fj6amnmg25r2l6a7rzab5hxnpmar985hc")))) |
| 87 | (build-system gnu-build-system) | 87 | (build-system gnu-build-system) |
| 88 | (native-inputs `(("pcre" ,pcre "bin"))) ;for 'pcre-config' | 88 | (native-inputs `(("pcre" ,pcre "bin"))) ;for 'pcre-config' |
| 89 | (inputs `(("apr" ,apr) | 89 | (inputs `(("apr" ,apr) |
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index f385d2b4fb8..790c74bbfd2 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm | |||
| @@ -393,7 +393,6 @@ experience.") | |||
| 393 | "1m910lr7wkw2dgzmirfvz7dasfswhhccdf65l21iiciv24c3w1bb")) | 393 | "1m910lr7wkw2dgzmirfvz7dasfswhhccdf65l21iiciv24c3w1bb")) |
| 394 | (modules '((guix build utils) | 394 | (modules '((guix build utils) |
| 395 | (srfi srfi-19))) | 395 | (srfi srfi-19))) |
| 396 | (imported-modules '((guix build utils))) | ||
| 397 | (snippet | 396 | (snippet |
| 398 | ;; Remove non-reproducible timestamp and use the date of the | 397 | ;; Remove non-reproducible timestamp and use the date of the |
| 399 | ;; source file instead. | 398 | ;; source file instead. |
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index bfcba473a8c..44d82dac609 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org> | 12 | ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org> |
| 13 | ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> | 13 | ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> |
| 14 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | 14 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> |
| 15 | ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> | ||
| 15 | ;;; | 16 | ;;; |
| 16 | ;;; This file is part of GNU Guix. | 17 | ;;; This file is part of GNU Guix. |
| 17 | ;;; | 18 | ;;; |
| @@ -63,14 +64,14 @@ | |||
| 63 | (define-public arandr | 64 | (define-public arandr |
| 64 | (package | 65 | (package |
| 65 | (name "arandr") | 66 | (name "arandr") |
| 66 | (version "0.1.8") | 67 | (version "0.1.9") |
| 67 | (source (origin | 68 | (source (origin |
| 68 | (method url-fetch) | 69 | (method url-fetch) |
| 69 | (uri (string-append "http://christian.amsuess.com/tools/" name | 70 | (uri (string-append "http://christian.amsuess.com/tools/" name |
| 70 | "/files/" name "-" version ".tar.gz")) | 71 | "/files/" name "-" version ".tar.gz")) |
| 71 | (sha256 | 72 | (sha256 |
| 72 | (base32 | 73 | (base32 |
| 73 | "0d574mbmhaqmh7kivaryj2hpghz6xkvic9ah43s1hf385y7c33kd")))) | 74 | "1i3f1agixxbfy4kxikb2b241p7c2lg73cl9wqfvlwz3q6zf5faxv")))) |
| 74 | (build-system python-build-system) | 75 | (build-system python-build-system) |
| 75 | (arguments | 76 | (arguments |
| 76 | `(#:python ,python-2 ;incompatible with python 3 | 77 | `(#:python ,python-2 ;incompatible with python 3 |
| @@ -126,14 +127,14 @@ avoiding password prompts when X11 forwarding has already been setup.") | |||
| 126 | (define-public libxkbcommon | 127 | (define-public libxkbcommon |
| 127 | (package | 128 | (package |
| 128 | (name "libxkbcommon") | 129 | (name "libxkbcommon") |
| 129 | (version "0.5.0") | 130 | (version "0.6.1") |
| 130 | (source (origin | 131 | (source (origin |
| 131 | (method url-fetch) | 132 | (method url-fetch) |
| 132 | (uri (string-append "http://xkbcommon.org/download/" name "-" | 133 | (uri (string-append "http://xkbcommon.org/download/" name "-" |
| 133 | version ".tar.xz")) | 134 | version ".tar.xz")) |
| 134 | (sha256 | 135 | (sha256 |
| 135 | (base32 | 136 | (base32 |
| 136 | "176ii5dn2wh74q48sd8ac37ljlvgvp5f506glr96z6ibfhj7igch")))) | 137 | "0q47xa1szlxwgvwmhv4b7xwawnykz1hnc431d84nj8dlh2q8f22v")))) |
| 137 | (build-system gnu-build-system) | 138 | (build-system gnu-build-system) |
| 138 | (inputs | 139 | (inputs |
| 139 | `(("libx11" ,libx11) | 140 | `(("libx11" ,libx11) |
| @@ -296,7 +297,7 @@ and Matrox.") | |||
| 296 | (define-public mtdev | 297 | (define-public mtdev |
| 297 | (package | 298 | (package |
| 298 | (name "mtdev") | 299 | (name "mtdev") |
| 299 | (version "1.1.3") | 300 | (version "1.1.5") |
| 300 | (source | 301 | (source |
| 301 | (origin | 302 | (origin |
| 302 | (method url-fetch) | 303 | (method url-fetch) |
| @@ -304,8 +305,8 @@ and Matrox.") | |||
| 304 | "http://bitmath.org/code/mtdev/mtdev-" | 305 | "http://bitmath.org/code/mtdev/mtdev-" |
| 305 | version ".tar.bz2")) | 306 | version ".tar.bz2")) |
| 306 | (sha256 | 307 | (sha256 |
| 307 | (base32 | 308 | (base32 |
| 308 | "159ndzwfpw0xr8mw4lhl47w9c2krshlfrscs7k6n186vknv2hk3d")))) | 309 | "0zxs7shzgbalkvlaiibi25bd902rbmkv9n1lww6q8j3ri9qdaxv6")))) |
| 309 | (build-system gnu-build-system) | 310 | (build-system gnu-build-system) |
| 310 | (home-page "http://bitmath.org/code/mtdev/") | 311 | (home-page "http://bitmath.org/code/mtdev/") |
| 311 | (synopsis "Multitouch protocol translation library") | 312 | (synopsis "Multitouch protocol translation library") |
| @@ -638,7 +639,7 @@ Guile will work for XBindKeys.") | |||
| 638 | (define-public sxhkd | 639 | (define-public sxhkd |
| 639 | (package | 640 | (package |
| 640 | (name "sxhkd") | 641 | (name "sxhkd") |
| 641 | (version "0.5.5") | 642 | (version "0.5.6") |
| 642 | (source | 643 | (source |
| 643 | (origin | 644 | (origin |
| 644 | (file-name (string-append name "-" version ".tar.gz")) | 645 | (file-name (string-append name "-" version ".tar.gz")) |
| @@ -648,7 +649,7 @@ Guile will work for XBindKeys.") | |||
| 648 | version ".tar.gz")) | 649 | version ".tar.gz")) |
| 649 | (sha256 | 650 | (sha256 |
| 650 | (base32 | 651 | (base32 |
| 651 | "04s3y2bq9502gw72jj3y2zsh96yj3qg2av3zsa8ahd2farvrysg6")))) | 652 | "15grmzpxz5fqlbfg2slj7gb7r6nzkvjmflmbkqx7mlby9pm6wdkj")))) |
| 652 | (build-system gnu-build-system) | 653 | (build-system gnu-build-system) |
| 653 | (inputs | 654 | (inputs |
| 654 | `(("asciidoc" ,asciidoc) | 655 | `(("asciidoc" ,asciidoc) |
| @@ -670,14 +671,14 @@ compact configuration syntax.") | |||
| 670 | (define-public rxvt-unicode | 671 | (define-public rxvt-unicode |
| 671 | (package | 672 | (package |
| 672 | (name "rxvt-unicode") | 673 | (name "rxvt-unicode") |
| 673 | (version "9.21") | 674 | (version "9.22") |
| 674 | (source (origin | 675 | (source (origin |
| 675 | (method url-fetch) | 676 | (method url-fetch) |
| 676 | (uri (string-append "http://dist.schmorp.de/rxvt-unicode/Attic/" | 677 | (uri (string-append "http://dist.schmorp.de/rxvt-unicode/Attic/" |
| 677 | name "-" version ".tar.bz2")) | 678 | name "-" version ".tar.bz2")) |
| 678 | (sha256 | 679 | (sha256 |
| 679 | (base32 | 680 | (base32 |
| 680 | "0swmi308v5yxsddrdhvi4cch88k2bbs2nffpl5j5m2f55gbhw9vm")))) | 681 | "1pddjn5ynblwfrdmskylrsxb9vfnk3w4jdnq2l8xn2pspkljhip9")))) |
| 681 | (build-system gnu-build-system) | 682 | (build-system gnu-build-system) |
| 682 | (arguments | 683 | (arguments |
| 683 | ;; This sets the destination when installing the necessary terminal | 684 | ;; This sets the destination when installing the necessary terminal |
| @@ -848,7 +849,7 @@ color temperature should be set to match the lamps in your room.") | |||
| 848 | (define-public xscreensaver | 849 | (define-public xscreensaver |
| 849 | (package | 850 | (package |
| 850 | (name "xscreensaver") | 851 | (name "xscreensaver") |
| 851 | (version "5.34") | 852 | (version "5.35") |
| 852 | (source | 853 | (source |
| 853 | (origin | 854 | (origin |
| 854 | (method url-fetch) | 855 | (method url-fetch) |
| @@ -857,7 +858,7 @@ color temperature should be set to match the lamps in your room.") | |||
| 857 | version ".tar.gz")) | 858 | version ".tar.gz")) |
| 858 | (sha256 | 859 | (sha256 |
| 859 | (base32 | 860 | (base32 |
| 860 | "09sy5v8bn62hiq4ib3jyvp8lipqcvn3rdsj74q25qgklpv27xzvg")))) | 861 | "08kbb0ry7ih436ab4i5g6lnhaaz13zkcdmbdibrn4j5gm5qq8v0y")))) |
| 861 | (build-system gnu-build-system) | 862 | (build-system gnu-build-system) |
| 862 | (arguments | 863 | (arguments |
| 863 | `(#:tests? #f ; no check target | 864 | `(#:tests? #f ; no check target |
| @@ -914,7 +915,7 @@ demos. It also acts as a nice screen locker.") | |||
| 914 | (define-public rofi | 915 | (define-public rofi |
| 915 | (package | 916 | (package |
| 916 | (name "rofi") | 917 | (name "rofi") |
| 917 | (version "1.0.1") | 918 | (version "1.1.0") |
| 918 | (source (origin | 919 | (source (origin |
| 919 | (method url-fetch) | 920 | (method url-fetch) |
| 920 | (uri (string-append "https://github.com/DaveDavenport/rofi/" | 921 | (uri (string-append "https://github.com/DaveDavenport/rofi/" |
| @@ -922,7 +923,7 @@ demos. It also acts as a nice screen locker.") | |||
| 922 | version "/rofi-" version ".tar.xz")) | 923 | version "/rofi-" version ".tar.xz")) |
| 923 | (sha256 | 924 | (sha256 |
| 924 | (base32 | 925 | (base32 |
| 925 | "01jxml9vk4cw7pngpan7dipmb98s6ibh6f0023lw3hbgxy650637")))) | 926 | "1l8vl0mh7i0b1ycifqpg6392f5i4qxlv003m126skfk6fnlfq8hn")))) |
| 926 | (build-system gnu-build-system) | 927 | (build-system gnu-build-system) |
| 927 | (inputs | 928 | (inputs |
| 928 | `(("libx11" ,libx11) | 929 | `(("libx11" ,libx11) |
diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm index c201f03ab5d..5639f1daa3d 100644 --- a/gnu/packages/xfce.scm +++ b/gnu/packages/xfce.scm | |||
| @@ -28,6 +28,7 @@ | |||
| 28 | #:use-module (guix build-system gnu) | 28 | #:use-module (guix build-system gnu) |
| 29 | #:use-module (guix build-system trivial) | 29 | #:use-module (guix build-system trivial) |
| 30 | #:use-module (gnu packages) | 30 | #:use-module (gnu packages) |
| 31 | #:use-module (gnu packages calendar) | ||
| 31 | #:use-module (gnu packages pkg-config) | 32 | #:use-module (gnu packages pkg-config) |
| 32 | #:use-module (gnu packages glib) | 33 | #:use-module (gnu packages glib) |
| 33 | #:use-module (gnu packages gtk) | 34 | #:use-module (gnu packages gtk) |
| @@ -43,6 +44,7 @@ | |||
| 43 | #:use-module (gnu packages linux) | 44 | #:use-module (gnu packages linux) |
| 44 | #:use-module (gnu packages photo) | 45 | #:use-module (gnu packages photo) |
| 45 | #:use-module (gnu packages pcre) | 46 | #:use-module (gnu packages pcre) |
| 47 | #:use-module (gnu packages popt) | ||
| 46 | #:use-module (gnu packages pulseaudio)) | 48 | #:use-module (gnu packages pulseaudio)) |
| 47 | 49 | ||
| 48 | (define-public gtk-xfce-engine | 50 | (define-public gtk-xfce-engine |
| @@ -815,3 +817,35 @@ the desktop wallpaper.") | |||
| 815 | "This is a task manager for the Xfce desktop. It displays the CPU and | 817 | "This is a task manager for the Xfce desktop. It displays the CPU and |
| 816 | memory usage graphically, and it can display processes as a tree.") | 818 | memory usage graphically, and it can display processes as a tree.") |
| 817 | (license gpl2+))) | 819 | (license gpl2+))) |
| 820 | |||
| 821 | (define-public orage | ||
| 822 | (package | ||
| 823 | (name "orage") | ||
| 824 | (version "4.12.1") | ||
| 825 | (source (origin | ||
| 826 | (method url-fetch) | ||
| 827 | (uri (string-append "http://archive.xfce.org/src/apps/" | ||
| 828 | name "/" (version-major+minor version) "/" | ||
| 829 | name "-" version ".tar.bz2")) | ||
| 830 | (sha256 | ||
| 831 | (base32 | ||
| 832 | "0qlhvnl2m33vfxqlbkic2nmfpwyd4mq230jzhs48cg78392amy9w")))) | ||
| 833 | (build-system gnu-build-system) | ||
| 834 | (native-inputs | ||
| 835 | `(("intltool" ,intltool) | ||
| 836 | ("pkg-config" ,pkg-config))) | ||
| 837 | (inputs | ||
| 838 | `(("gtk+" ,gtk+-2) | ||
| 839 | ("libical" ,libical) | ||
| 840 | ("libnotify" ,libnotify) | ||
| 841 | ("popt" ,popt) | ||
| 842 | ("xfce4-panel" ,xfce4-panel))) | ||
| 843 | (home-page "http://www.xfce.org/projects/") | ||
| 844 | (synopsis "Simple calendar application with reminders") | ||
| 845 | (description | ||
| 846 | "This is a simple calendar application for the Xfce desktop. Orage has | ||
| 847 | alarms and uses the iCalendar format, making it compatible with many other | ||
| 848 | calendar applications. It also includes a panel clock plugin and an | ||
| 849 | international clock application capable of simultaneously showing clocks from | ||
| 850 | several different time zones.") | ||
| 851 | (license gpl2+))) | ||
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm index ef7f257139b..fb0d07d8cfc 100644 --- a/gnu/packages/xml.scm +++ b/gnu/packages/xml.scm | |||
| @@ -532,16 +532,15 @@ server, collect the answer, and finally decoding the XML to Perl.") | |||
| 532 | (define-public pugixml | 532 | (define-public pugixml |
| 533 | (package | 533 | (package |
| 534 | (name "pugixml") | 534 | (name "pugixml") |
| 535 | (version "1.6") | 535 | (version "1.7") |
| 536 | (source | 536 | (source |
| 537 | (origin | 537 | (origin |
| 538 | (method url-fetch) | 538 | (method url-fetch) |
| 539 | (uri (string-append "https://github.com/zeux/pugixml/archive/v" | 539 | (uri (string-append "https://github.com/zeux/pugixml/releases/download/v" |
| 540 | version ".tar.gz")) | 540 | version "/pugixml-" version ".tar.gz")) |
| 541 | (file-name (string-append name "-" version ".tar.gz")) | ||
| 542 | (sha256 | 541 | (sha256 |
| 543 | (base32 | 542 | (base32 |
| 544 | "0czbcv9aqf2rw3s9cljz2wb1f4zbhd07wnj7ykklklccl0ipfnwi")))) | 543 | "1jpml475kbhs1aqwa48g2cbfxlrb9qp115m2j9yryxhxyr30vqgv")))) |
| 545 | (build-system cmake-build-system) | 544 | (build-system cmake-build-system) |
| 546 | (arguments | 545 | (arguments |
| 547 | `(#:tests? #f | 546 | `(#:tests? #f |
diff --git a/gnu/services.scm b/gnu/services.scm index 50e76df8182..5479bfae193 100644 --- a/gnu/services.scm +++ b/gnu/services.scm | |||
| @@ -238,42 +238,33 @@ directory." | |||
| 238 | (define (cleanup-gexp _) | 238 | (define (cleanup-gexp _) |
| 239 | "Return as a monadic value a gexp to clean up /tmp and similar places upon | 239 | "Return as a monadic value a gexp to clean up /tmp and similar places upon |
| 240 | boot." | 240 | boot." |
| 241 | (define %modules | 241 | (with-monad %store-monad |
| 242 | '((guix build utils))) | 242 | (with-imported-modules '((guix build utils)) |
| 243 | 243 | (return #~(begin | |
| 244 | (mlet %store-monad ((modules (imported-modules %modules)) | 244 | (use-modules (guix build utils)) |
| 245 | (compiled (compiled-modules %modules))) | 245 | |
| 246 | (return #~(begin | 246 | ;; Clean out /tmp and /var/run. |
| 247 | (eval-when (expand load eval) | 247 | ;; |
| 248 | ;; Make sure 'use-modules' below succeeds. | 248 | ;; XXX This needs to happen before service activations, so it |
| 249 | (set! %load-path (cons #$modules %load-path)) | 249 | ;; has to be here, but this also implicitly assumes that /tmp |
| 250 | (set! %load-compiled-path | 250 | ;; and /var/run are on the root partition. |
| 251 | (cons #$compiled %load-compiled-path))) | 251 | (letrec-syntax ((fail-safe (syntax-rules () |
| 252 | 252 | ((_ exp rest ...) | |
| 253 | (use-modules (guix build utils)) | 253 | (begin |
| 254 | 254 | (catch 'system-error | |
| 255 | ;; Clean out /tmp and /var/run. | 255 | (lambda () exp) |
| 256 | ;; | 256 | (const #f)) |
| 257 | ;; XXX This needs to happen before service activations, so it | 257 | (fail-safe rest ...))) |
| 258 | ;; has to be here, but this also implicitly assumes that /tmp | 258 | ((_) |
| 259 | ;; and /var/run are on the root partition. | 259 | #t)))) |
| 260 | (letrec-syntax ((fail-safe (syntax-rules () | 260 | ;; Ignore I/O errors so the system can boot. |
| 261 | ((_ exp rest ...) | 261 | (fail-safe |
| 262 | (begin | 262 | (delete-file-recursively "/tmp") |
| 263 | (catch 'system-error | 263 | (delete-file-recursively "/var/run") |
| 264 | (lambda () exp) | 264 | (mkdir "/tmp") |
| 265 | (const #f)) | 265 | (chmod "/tmp" #o1777) |
| 266 | (fail-safe rest ...))) | 266 | (mkdir "/var/run") |
| 267 | ((_) | 267 | (chmod "/var/run" #o755)))))))) |
| 268 | #t)))) | ||
| 269 | ;; Ignore I/O errors so the system can boot. | ||
| 270 | (fail-safe | ||
| 271 | (delete-file-recursively "/tmp") | ||
| 272 | (delete-file-recursively "/var/run") | ||
| 273 | (mkdir "/tmp") | ||
| 274 | (chmod "/tmp" #o1777) | ||
| 275 | (mkdir "/var/run") | ||
| 276 | (chmod "/var/run" #o755))))))) | ||
| 277 | 268 | ||
| 278 | (define cleanup-service-type | 269 | (define cleanup-service-type |
| 279 | ;; Service that cleans things up in /tmp and similar. | 270 | ;; Service that cleans things up in /tmp and similar. |
| @@ -309,10 +300,10 @@ file." | |||
| 309 | one) | 300 | one) |
| 310 | (_ | 301 | (_ |
| 311 | (computed-file name | 302 | (computed-file name |
| 312 | #~(begin | 303 | (with-imported-modules '((guix build union)) |
| 313 | (use-modules (guix build union)) | 304 | #~(begin |
| 314 | (union-build #$output '#$things)) | 305 | (use-modules (guix build union)) |
| 315 | #:modules '((guix build union)))))) | 306 | (union-build #$output '#$things))))))) |
| 316 | 307 | ||
| 317 | (define* (activation-service->script service) | 308 | (define* (activation-service->script service) |
| 318 | "Return as a monadic value the activation script for SERVICE, a service of | 309 | "Return as a monadic value the activation script for SERVICE, a service of |
| @@ -337,29 +328,22 @@ ACTIVATION-SCRIPT-TYPE." | |||
| 337 | (cut gexp->file "activate-service" <>) | 328 | (cut gexp->file "activate-service" <>) |
| 338 | gexps)) | 329 | gexps)) |
| 339 | 330 | ||
| 340 | (mlet* %store-monad ((actions (service-activations)) | 331 | (mlet* %store-monad ((actions (service-activations))) |
| 341 | (modules (imported-modules %modules)) | ||
| 342 | (compiled (compiled-modules %modules))) | ||
| 343 | (gexp->file "activate" | 332 | (gexp->file "activate" |
| 344 | #~(begin | 333 | (with-imported-modules %modules |
| 345 | (eval-when (expand load eval) | 334 | #~(begin |
| 346 | ;; Make sure 'use-modules' below succeeds. | 335 | (use-modules (gnu build activation)) |
| 347 | (set! %load-path (cons #$modules %load-path)) | ||
| 348 | (set! %load-compiled-path | ||
| 349 | (cons #$compiled %load-compiled-path))) | ||
| 350 | |||
| 351 | (use-modules (gnu build activation)) | ||
| 352 | 336 | ||
| 353 | ;; Make sure /bin/sh is valid and current. | 337 | ;; Make sure /bin/sh is valid and current. |
| 354 | (activate-/bin/sh | 338 | (activate-/bin/sh |
| 355 | (string-append #$(canonical-package bash) "/bin/sh")) | 339 | (string-append #$(canonical-package bash) "/bin/sh")) |
| 356 | 340 | ||
| 357 | ;; Run the services' activation snippets. | 341 | ;; Run the services' activation snippets. |
| 358 | ;; TODO: Use 'load-compiled'. | 342 | ;; TODO: Use 'load-compiled'. |
| 359 | (for-each primitive-load '#$actions) | 343 | (for-each primitive-load '#$actions) |
| 360 | 344 | ||
| 361 | ;; Set up /run/current-system. | 345 | ;; Set up /run/current-system. |
| 362 | (activate-current-system))))) | 346 | (activate-current-system)))))) |
| 363 | 347 | ||
| 364 | (define (gexps->activation-gexp gexps) | 348 | (define (gexps->activation-gexp gexps) |
| 365 | "Return a gexp that runs the activation script containing GEXPS." | 349 | "Return a gexp that runs the activation script containing GEXPS." |
diff --git a/gnu/services/avahi.scm b/gnu/services/avahi.scm index 8005b066ed4..562005c22c7 100644 --- a/gnu/services/avahi.scm +++ b/gnu/services/avahi.scm | |||
| @@ -42,6 +42,8 @@ | |||
| 42 | avahi-configuration? | 42 | avahi-configuration? |
| 43 | (avahi avahi-configuration-avahi ;<package> | 43 | (avahi avahi-configuration-avahi ;<package> |
| 44 | (default avahi)) | 44 | (default avahi)) |
| 45 | (debug? avahi-configuration-debug? ;Boolean | ||
| 46 | (default #f)) | ||
| 45 | (host-name avahi-configuration-host-name) ;string | 47 | (host-name avahi-configuration-host-name) ;string |
| 46 | (publish? avahi-configuration-publish?) ;Boolean | 48 | (publish? avahi-configuration-publish?) ;Boolean |
| 47 | (ipv4? avahi-configuration-ipv4?) ;Boolean | 49 | (ipv4? avahi-configuration-ipv4?) ;Boolean |
| @@ -96,6 +98,7 @@ | |||
| 96 | (define (avahi-shepherd-service config) | 98 | (define (avahi-shepherd-service config) |
| 97 | "Return a list of <shepherd-service> for CONFIG." | 99 | "Return a list of <shepherd-service> for CONFIG." |
| 98 | (let ((config (configuration-file config)) | 100 | (let ((config (configuration-file config)) |
| 101 | (debug? (avahi-configuration-debug? config)) | ||
| 99 | (avahi (avahi-configuration-avahi config))) | 102 | (avahi (avahi-configuration-avahi config))) |
| 100 | (list (shepherd-service | 103 | (list (shepherd-service |
| 101 | (documentation "Run the Avahi mDNS/DNS-SD responder.") | 104 | (documentation "Run the Avahi mDNS/DNS-SD responder.") |
| @@ -104,7 +107,10 @@ | |||
| 104 | 107 | ||
| 105 | (start #~(make-forkexec-constructor | 108 | (start #~(make-forkexec-constructor |
| 106 | (list (string-append #$avahi "/sbin/avahi-daemon") | 109 | (list (string-append #$avahi "/sbin/avahi-daemon") |
| 107 | "--syslog" "-f" #$config))) | 110 | "--daemonize" |
| 111 | #$@(if debug? #~("--debug") #~()) | ||
| 112 | "-f" #$config) | ||
| 113 | #:pid-file "/var/run/avahi-daemon/pid")) | ||
| 108 | (stop #~(make-kill-destructor)))))) | 114 | (stop #~(make-kill-destructor)))))) |
| 109 | 115 | ||
| 110 | (define avahi-service-type | 116 | (define avahi-service-type |
| @@ -127,7 +133,7 @@ | |||
| 127 | (service-extension profile-service-type | 133 | (service-extension profile-service-type |
| 128 | avahi-package)))))) | 134 | avahi-package)))))) |
| 129 | 135 | ||
| 130 | (define* (avahi-service #:key (avahi avahi) | 136 | (define* (avahi-service #:key (avahi avahi) debug? |
| 131 | host-name | 137 | host-name |
| 132 | (publish? #t) | 138 | (publish? #t) |
| 133 | (ipv4? #t) (ipv6? #t) | 139 | (ipv4? #t) (ipv6? #t) |
| @@ -155,7 +161,7 @@ Boolean values @var{ipv4?} and @var{ipv6?} determine whether to use IPv4/IPv6 | |||
| 155 | sockets." | 161 | sockets." |
| 156 | (service avahi-service-type | 162 | (service avahi-service-type |
| 157 | (avahi-configuration | 163 | (avahi-configuration |
| 158 | (avahi avahi) (host-name host-name) | 164 | (avahi avahi) (debug? debug?) (host-name host-name) |
| 159 | (publish? publish?) (ipv4? ipv4?) (ipv6? ipv6?) | 165 | (publish? publish?) (ipv4? ipv4?) (ipv6? ipv6?) |
| 160 | (wide-area? wide-area?) | 166 | (wide-area? wide-area?) |
| 161 | (domains-to-browse domains-to-browse)))) | 167 | (domains-to-browse domains-to-browse)))) |
diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 2780d124c77..805ba7d12c1 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm | |||
| @@ -4,6 +4,8 @@ | |||
| 4 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> | 4 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> |
| 5 | ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> | 5 | ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> |
| 6 | ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> | 6 | ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> |
| 7 | ;;; Copyright © 2016 David Craven <david@craven.ch> | ||
| 8 | ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> | ||
| 7 | ;;; | 9 | ;;; |
| 8 | ;;; This file is part of GNU Guix. | 10 | ;;; This file is part of GNU Guix. |
| 9 | ;;; | 11 | ;;; |
| @@ -31,11 +33,11 @@ | |||
| 31 | #:use-module (gnu system mapped-devices) | 33 | #:use-module (gnu system mapped-devices) |
| 32 | #:use-module (gnu packages admin) | 34 | #:use-module (gnu packages admin) |
| 33 | #:use-module ((gnu packages linux) | 35 | #:use-module ((gnu packages linux) |
| 34 | #:select (eudev kbd e2fsprogs lvm2 fuse alsa-utils crda gpm)) | 36 | #:select (alsa-utils crda eudev e2fsprogs fuse gpm kbd lvm2 rng-tools)) |
| 35 | #:use-module ((gnu packages base) | 37 | #:use-module ((gnu packages base) |
| 36 | #:select (canonical-package glibc)) | 38 | #:select (canonical-package glibc)) |
| 37 | #:use-module (gnu packages package-management) | 39 | #:use-module (gnu packages package-management) |
| 38 | #:use-module (gnu packages lsh) | 40 | #:use-module (gnu packages ssh) |
| 39 | #:use-module (gnu packages lsof) | 41 | #:use-module (gnu packages lsof) |
| 40 | #:use-module ((gnu build file-systems) | 42 | #:use-module ((gnu build file-systems) |
| 41 | #:select (mount-flags->bit-mask)) | 43 | #:select (mount-flags->bit-mask)) |
| @@ -81,6 +83,7 @@ | |||
| 81 | nscd-service-type | 83 | nscd-service-type |
| 82 | nscd-service | 84 | nscd-service |
| 83 | syslog-service | 85 | syslog-service |
| 86 | syslog-service-type | ||
| 84 | %default-syslog.conf | 87 | %default-syslog.conf |
| 85 | 88 | ||
| 86 | guix-configuration | 89 | guix-configuration |
| @@ -94,7 +97,12 @@ | |||
| 94 | gpm-service-type | 97 | gpm-service-type |
| 95 | gpm-service | 98 | gpm-service |
| 96 | 99 | ||
| 100 | urandom-seed-service-type | ||
| 97 | urandom-seed-service | 101 | urandom-seed-service |
| 102 | rngd-service-type | ||
| 103 | rngd-service | ||
| 104 | pam-limits-service-type | ||
| 105 | pam-limits-service | ||
| 98 | 106 | ||
| 99 | %base-services)) | 107 | %base-services)) |
| 100 | 108 | ||
| @@ -224,59 +232,58 @@ FILE-SYSTEM." | |||
| 224 | (create? (file-system-create-mount-point? file-system)) | 232 | (create? (file-system-create-mount-point? file-system)) |
| 225 | (dependencies (file-system-dependencies file-system))) | 233 | (dependencies (file-system-dependencies file-system))) |
| 226 | (if (file-system-mount? file-system) | 234 | (if (file-system-mount? file-system) |
| 227 | (list | 235 | (with-imported-modules '((gnu build file-systems) |
| 228 | (shepherd-service | 236 | (guix build bournish)) |
| 229 | (provision (list (file-system->shepherd-service-name file-system))) | 237 | (list |
| 230 | (requirement `(root-file-system | 238 | (shepherd-service |
| 231 | ,@(map dependency->shepherd-service-name dependencies))) | 239 | (provision (list (file-system->shepherd-service-name file-system))) |
| 232 | (documentation "Check, mount, and unmount the given file system.") | 240 | (requirement `(root-file-system |
| 233 | (start #~(lambda args | 241 | ,@(map dependency->shepherd-service-name dependencies))) |
| 234 | ;; FIXME: Use or factorize with 'mount-file-system'. | 242 | (documentation "Check, mount, and unmount the given file system.") |
| 235 | (let ((device (canonicalize-device-spec #$device '#$title)) | 243 | (start #~(lambda args |
| 236 | (flags #$(mount-flags->bit-mask | 244 | ;; FIXME: Use or factorize with 'mount-file-system'. |
| 237 | (file-system-flags file-system)))) | 245 | (let ((device (canonicalize-device-spec #$device '#$title)) |
| 238 | #$(if create? | 246 | (flags #$(mount-flags->bit-mask |
| 239 | #~(mkdir-p #$target) | 247 | (file-system-flags file-system)))) |
| 240 | #~#t) | 248 | #$(if create? |
| 241 | #$(if check? | 249 | #~(mkdir-p #$target) |
| 242 | #~(begin | 250 | #~#t) |
| 243 | ;; Make sure fsck.ext2 & co. can be found. | 251 | #$(if check? |
| 244 | (setenv "PATH" | 252 | #~(begin |
| 245 | (string-append | 253 | ;; Make sure fsck.ext2 & co. can be found. |
| 246 | #$e2fsprogs "/sbin:" | 254 | (setenv "PATH" |
| 247 | "/run/current-system/profile/sbin:" | 255 | (string-append |
| 248 | (getenv "PATH"))) | 256 | #$e2fsprogs "/sbin:" |
| 249 | (check-file-system device #$type)) | 257 | "/run/current-system/profile/sbin:" |
| 250 | #~#t) | 258 | (getenv "PATH"))) |
| 251 | 259 | (check-file-system device #$type)) | |
| 252 | (mount device #$target #$type flags | 260 | #~#t) |
| 253 | #$(file-system-options file-system)) | 261 | |
| 254 | 262 | (mount device #$target #$type flags | |
| 255 | ;; For read-only bind mounts, an extra remount is | 263 | #$(file-system-options file-system)) |
| 256 | ;; needed, as per <http://lwn.net/Articles/281157/>, | 264 | |
| 257 | ;; which still applies to Linux 4.0. | 265 | ;; For read-only bind mounts, an extra remount is |
| 258 | (when (and (= MS_BIND (logand flags MS_BIND)) | 266 | ;; needed, as per <http://lwn.net/Articles/281157/>, |
| 259 | (= MS_RDONLY (logand flags MS_RDONLY))) | 267 | ;; which still applies to Linux 4.0. |
| 260 | (mount device #$target #$type | 268 | (when (and (= MS_BIND (logand flags MS_BIND)) |
| 261 | (logior MS_BIND MS_REMOUNT MS_RDONLY)))) | 269 | (= MS_RDONLY (logand flags MS_RDONLY))) |
| 262 | #t)) | 270 | (mount device #$target #$type |
| 263 | (stop #~(lambda args | 271 | (logior MS_BIND MS_REMOUNT MS_RDONLY)))) |
| 264 | ;; Normally there are no processes left at this point, so | 272 | #t)) |
| 265 | ;; TARGET can be safely unmounted. | 273 | (stop #~(lambda args |
| 266 | 274 | ;; Normally there are no processes left at this point, so | |
| 267 | ;; Make sure PID 1 doesn't keep TARGET busy. | 275 | ;; TARGET can be safely unmounted. |
| 268 | (chdir "/") | 276 | |
| 269 | 277 | ;; Make sure PID 1 doesn't keep TARGET busy. | |
| 270 | (umount #$target) | 278 | (chdir "/") |
| 271 | #f)) | 279 | |
| 272 | 280 | (umount #$target) | |
| 273 | ;; We need an additional module. | 281 | #f)) |
| 274 | (modules `(((gnu build file-systems) | 282 | |
| 275 | #:select (check-file-system canonicalize-device-spec)) | 283 | ;; We need an additional module. |
| 276 | ,@%default-modules)) | 284 | (modules `(((gnu build file-systems) |
| 277 | (imported-modules `((gnu build file-systems) | 285 | #:select (check-file-system canonicalize-device-spec)) |
| 278 | (guix build bournish) | 286 | ,@%default-modules))))) |
| 279 | ,@%default-imported-modules)))) | ||
| 280 | '()))) | 287 | '()))) |
| 281 | 288 | ||
| 282 | (define file-system-service-type | 289 | (define file-system-service-type |
| @@ -484,7 +491,47 @@ stopped before 'kill' is called." | |||
| 484 | (define (urandom-seed-service) | 491 | (define (urandom-seed-service) |
| 485 | (service urandom-seed-service-type #f)) | 492 | (service urandom-seed-service-type #f)) |
| 486 | 493 | ||
| 487 | 494 | ||
| 495 | ;;; | ||
| 496 | ;;; Add hardware random number generator to entropy pool. | ||
| 497 | ;;; | ||
| 498 | |||
| 499 | (define-record-type* <rngd-configuration> | ||
| 500 | rngd-configuration make-rngd-configuration | ||
| 501 | rngd-configuration? | ||
| 502 | (rng-tools rngd-configuration-rng-tools) ;package | ||
| 503 | (device rngd-configuration-device)) ;string | ||
| 504 | |||
| 505 | (define rngd-service-type | ||
| 506 | (shepherd-service-type | ||
| 507 | 'rngd | ||
| 508 | (lambda (config) | ||
| 509 | (define rng-tools (rngd-configuration-rng-tools config)) | ||
| 510 | (define device (rngd-configuration-device config)) | ||
| 511 | |||
| 512 | (define rngd-command | ||
| 513 | (list #~(string-append #$rng-tools "/sbin/rngd") | ||
| 514 | "-f" "-r" device)) | ||
| 515 | |||
| 516 | (shepherd-service | ||
| 517 | (documentation "Add TRNG to entropy pool.") | ||
| 518 | (requirement '(udev)) | ||
| 519 | (provision '(trng)) | ||
| 520 | (start #~(make-forkexec-constructor #$@rngd-command)) | ||
| 521 | (stop #~(make-kill-destructor)))))) | ||
| 522 | |||
| 523 | (define* (rngd-service #:key | ||
| 524 | (rng-tools rng-tools) | ||
| 525 | (device "/dev/hwrng")) | ||
| 526 | "Return a service that runs the @command{rngd} program from @var{rng-tools} | ||
| 527 | to add @var{device} to the kernel's entropy pool. The service will fail if | ||
| 528 | @var{device} does not exist." | ||
| 529 | (service rngd-service-type | ||
| 530 | (rngd-configuration | ||
| 531 | (rng-tools rng-tools) | ||
| 532 | (device device)))) | ||
| 533 | |||
| 534 | |||
| 488 | ;;; | 535 | ;;; |
| 489 | ;;; System-wide environment variables. | 536 | ;;; System-wide environment variables. |
| 490 | ;;; | 537 | ;;; |
| @@ -790,6 +837,11 @@ the tty to run, among other things." | |||
| 790 | "/sbin/nscd") | 837 | "/sbin/nscd") |
| 791 | "-f" #$nscd.conf "--foreground") | 838 | "-f" #$nscd.conf "--foreground") |
| 792 | 839 | ||
| 840 | ;; Wait for the PID file. However, the PID file is | ||
| 841 | ;; written before nscd is actually listening on its | ||
| 842 | ;; socket (XXX). | ||
| 843 | #:pid-file "/var/run/nscd/nscd.pid" | ||
| 844 | |||
| 793 | #:environment-variables | 845 | #:environment-variables |
| 794 | (list (string-append "LD_LIBRARY_PATH=" | 846 | (list (string-append "LD_LIBRARY_PATH=" |
| 795 | (string-join | 847 | (string-join |
| @@ -875,6 +927,46 @@ settings. | |||
| 875 | information on the configuration file syntax." | 927 | information on the configuration file syntax." |
| 876 | (service syslog-service-type config-file)) | 928 | (service syslog-service-type config-file)) |
| 877 | 929 | ||
| 930 | (define pam-limits-service-type | ||
| 931 | (let ((security-limits | ||
| 932 | ;; Create /etc/security containing the provided "limits.conf" file. | ||
| 933 | (lambda (limits-file) | ||
| 934 | `(("security" | ||
| 935 | ,(computed-file | ||
| 936 | "security" | ||
| 937 | #~(begin | ||
| 938 | (mkdir #$output) | ||
| 939 | (stat #$limits-file) | ||
| 940 | (symlink #$limits-file | ||
| 941 | (string-append #$output "/limits.conf")))))))) | ||
| 942 | (pam-extension | ||
| 943 | (lambda (pam) | ||
| 944 | (let ((pam-limits (pam-entry | ||
| 945 | (control "required") | ||
| 946 | (module "pam_limits.so") | ||
| 947 | (arguments '("conf=/etc/security/limits.conf"))))) | ||
| 948 | (if (member (pam-service-name pam) | ||
| 949 | '("login" "su" "slim")) | ||
| 950 | (pam-service | ||
| 951 | (inherit pam) | ||
| 952 | (session (cons pam-limits | ||
| 953 | (pam-service-session pam)))) | ||
| 954 | pam))))) | ||
| 955 | (service-type | ||
| 956 | (name 'limits) | ||
| 957 | (extensions | ||
| 958 | (list (service-extension etc-service-type security-limits) | ||
| 959 | (service-extension pam-root-service-type | ||
| 960 | (lambda _ (list pam-extension)))))))) | ||
| 961 | |||
| 962 | (define* (pam-limits-service #:optional (limits '())) | ||
| 963 | "Return a service that makes selected programs respect the list of | ||
| 964 | pam-limits-entry specified in LIMITS via pam_limits.so." | ||
| 965 | (service pam-limits-service-type | ||
| 966 | (plain-file "limits.conf" | ||
| 967 | (string-join (map pam-limits-entry->string limits) | ||
| 968 | "\n")))) | ||
| 969 | |||
| 878 | 970 | ||
| 879 | ;;; | 971 | ;;; |
| 880 | ;;; Guix services. | 972 | ;;; Guix services. |
| @@ -1088,44 +1180,44 @@ archive}). If that is not the case, the service will fail to start." | |||
| 1088 | "Return the union of the @code{lib/udev/rules.d} directories found in each | 1180 | "Return the union of the @code{lib/udev/rules.d} directories found in each |
| 1089 | item of @var{packages}." | 1181 | item of @var{packages}." |
| 1090 | (define build | 1182 | (define build |
| 1091 | #~(begin | 1183 | (with-imported-modules '((guix build union) |
| 1092 | (use-modules (guix build union) | 1184 | (guix build utils)) |
| 1093 | (guix build utils) | 1185 | #~(begin |
| 1094 | (srfi srfi-1) | 1186 | (use-modules (guix build union) |
| 1095 | (srfi srfi-26)) | 1187 | (guix build utils) |
| 1188 | (srfi srfi-1) | ||
| 1189 | (srfi srfi-26)) | ||
| 1096 | 1190 | ||
| 1097 | (define %standard-locations | 1191 | (define %standard-locations |
| 1098 | '("/lib/udev/rules.d" "/libexec/udev/rules.d")) | 1192 | '("/lib/udev/rules.d" "/libexec/udev/rules.d")) |
| 1099 | 1193 | ||
| 1100 | (define (rules-sub-directory directory) | 1194 | (define (rules-sub-directory directory) |
| 1101 | ;; Return the sub-directory of DIRECTORY containing udev rules, or | 1195 | ;; Return the sub-directory of DIRECTORY containing udev rules, or |
| 1102 | ;; #f if none was found. | 1196 | ;; #f if none was found. |
| 1103 | (find directory-exists? | 1197 | (find directory-exists? |
| 1104 | (map (cut string-append directory <>) %standard-locations))) | 1198 | (map (cut string-append directory <>) %standard-locations))) |
| 1105 | 1199 | ||
| 1106 | (mkdir-p (string-append #$output "/lib/udev")) | 1200 | (mkdir-p (string-append #$output "/lib/udev")) |
| 1107 | (union-build (string-append #$output "/lib/udev/rules.d") | 1201 | (union-build (string-append #$output "/lib/udev/rules.d") |
| 1108 | (filter-map rules-sub-directory '#$packages)))) | 1202 | (filter-map rules-sub-directory '#$packages))))) |
| 1109 | 1203 | ||
| 1110 | (computed-file "udev-rules" build | 1204 | (computed-file "udev-rules" build)) |
| 1111 | #:modules '((guix build union) | ||
| 1112 | (guix build utils)))) | ||
| 1113 | 1205 | ||
| 1114 | (define (udev-rule file-name contents) | 1206 | (define (udev-rule file-name contents) |
| 1115 | "Return a directory with a udev rule file FILE-NAME containing CONTENTS." | 1207 | "Return a directory with a udev rule file FILE-NAME containing CONTENTS." |
| 1116 | (computed-file file-name | 1208 | (computed-file file-name |
| 1117 | #~(begin | 1209 | (with-imported-modules '((guix build utils)) |
| 1118 | (use-modules (guix build utils)) | 1210 | #~(begin |
| 1119 | 1211 | (use-modules (guix build utils)) | |
| 1120 | (define rules.d | 1212 | |
| 1121 | (string-append #$output "/lib/udev/rules.d")) | 1213 | (define rules.d |
| 1122 | 1214 | (string-append #$output "/lib/udev/rules.d")) | |
| 1123 | (mkdir-p rules.d) | 1215 | |
| 1124 | (call-with-output-file | 1216 | (mkdir-p rules.d) |
| 1125 | (string-append rules.d "/" #$file-name) | 1217 | (call-with-output-file |
| 1126 | (lambda (port) | 1218 | (string-append rules.d "/" #$file-name) |
| 1127 | (display #$contents port)))) | 1219 | (lambda (port) |
| 1128 | #:modules '((guix build utils)))) | 1220 | (display #$contents port))))))) |
| 1129 | 1221 | ||
| 1130 | (define kvm-udev-rule | 1222 | (define kvm-udev-rule |
| 1131 | ;; Return a directory with a udev rule that changes the group of /dev/kvm to | 1223 | ;; Return a directory with a udev rule that changes the group of /dev/kvm to |
diff --git a/gnu/services/dbus.scm b/gnu/services/dbus.scm index 9a4a13d41df..6ef13568efe 100644 --- a/gnu/services/dbus.scm +++ b/gnu/services/dbus.scm | |||
| @@ -46,26 +46,27 @@ | |||
| 46 | "Return the system service directory, containing @code{.service} files for | 46 | "Return the system service directory, containing @code{.service} files for |
| 47 | all the services that may be activated by the daemon." | 47 | all the services that may be activated by the daemon." |
| 48 | (computed-file "dbus-system-services" | 48 | (computed-file "dbus-system-services" |
| 49 | #~(begin | 49 | (with-imported-modules '((guix build utils)) |
| 50 | (use-modules (guix build utils) | 50 | #~(begin |
| 51 | (srfi srfi-1)) | 51 | (use-modules (guix build utils) |
| 52 | 52 | (srfi srfi-1)) | |
| 53 | (define files | 53 | |
| 54 | (append-map (lambda (service) | 54 | (define files |
| 55 | (find-files (string-append | 55 | (append-map (lambda (service) |
| 56 | service | 56 | (find-files |
| 57 | "/share/dbus-1/system-services") | 57 | (string-append |
| 58 | "\\.service$")) | 58 | service |
| 59 | (list #$@services))) | 59 | "/share/dbus-1/system-services") |
| 60 | 60 | "\\.service$")) | |
| 61 | (mkdir #$output) | 61 | (list #$@services))) |
| 62 | (for-each (lambda (file) | 62 | |
| 63 | (symlink file | 63 | (mkdir #$output) |
| 64 | (string-append #$output "/" | 64 | (for-each (lambda (file) |
| 65 | (basename file)))) | 65 | (symlink file |
| 66 | files) | 66 | (string-append #$output "/" |
| 67 | #t) | 67 | (basename file)))) |
| 68 | #:modules '((guix build utils)))) | 68 | files) |
| 69 | #t)))) | ||
| 69 | 70 | ||
| 70 | (define (dbus-configuration-directory services) | 71 | (define (dbus-configuration-directory services) |
| 71 | "Return a directory contains the @code{system-local.conf} file for DBUS that | 72 | "Return a directory contains the @code{system-local.conf} file for DBUS that |
| @@ -168,7 +169,8 @@ includes the @code{etc/dbus-1/system.d} directories of each package listed in | |||
| 168 | (requirement '(user-processes)) | 169 | (requirement '(user-processes)) |
| 169 | (start #~(make-forkexec-constructor | 170 | (start #~(make-forkexec-constructor |
| 170 | (list (string-append #$dbus "/bin/dbus-daemon") | 171 | (list (string-append #$dbus "/bin/dbus-daemon") |
| 171 | "--nofork" "--system"))) | 172 | "--nofork" "--system") |
| 173 | #:pid-file "/var/run/dbus/pid")) | ||
| 172 | (stop #~(make-kill-destructor))))))) | 174 | (stop #~(make-kill-destructor))))))) |
| 173 | 175 | ||
| 174 | (define dbus-root-service-type | 176 | (define dbus-root-service-type |
diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm index 2fb08cd1b33..86214a73bf2 100644 --- a/gnu/services/desktop.scm +++ b/gnu/services/desktop.scm | |||
| @@ -91,30 +91,33 @@ is set to @var{value} when the bus daemon launches it." | |||
| 91 | (string-append #$service "/" #$program) | 91 | (string-append #$service "/" #$program) |
| 92 | (cdr (command-line)))))) | 92 | (cdr (command-line)))))) |
| 93 | 93 | ||
| 94 | (define build | ||
| 95 | (with-imported-modules '((guix build utils)) | ||
| 96 | #~(begin | ||
| 97 | (use-modules (guix build utils)) | ||
| 98 | |||
| 99 | (define service-directory | ||
| 100 | "/share/dbus-1/system-services") | ||
| 101 | |||
| 102 | (mkdir-p (dirname (string-append #$output | ||
| 103 | service-directory))) | ||
| 104 | (copy-recursively (string-append #$service | ||
| 105 | service-directory) | ||
| 106 | (string-append #$output | ||
| 107 | service-directory)) | ||
| 108 | (symlink (string-append #$service "/etc") ;for etc/dbus-1 | ||
| 109 | (string-append #$output "/etc")) | ||
| 110 | |||
| 111 | (for-each (lambda (file) | ||
| 112 | (substitute* file | ||
| 113 | (("Exec[[:blank:]]*=[[:blank:]]*([[:graph:]]+)(.*)$" | ||
| 114 | _ original-program arguments) | ||
| 115 | (string-append "Exec=" #$wrapper arguments | ||
| 116 | "\n")))) | ||
| 117 | (find-files #$output "\\.service$"))))) | ||
| 118 | |||
| 94 | (computed-file (string-append (package-name service) "-wrapper") | 119 | (computed-file (string-append (package-name service) "-wrapper") |
| 95 | #~(begin | 120 | build)) |
| 96 | (use-modules (guix build utils)) | ||
| 97 | |||
| 98 | (define service-directory | ||
| 99 | "/share/dbus-1/system-services") | ||
| 100 | |||
| 101 | (mkdir-p (dirname (string-append #$output | ||
| 102 | service-directory))) | ||
| 103 | (copy-recursively (string-append #$service | ||
| 104 | service-directory) | ||
| 105 | (string-append #$output | ||
| 106 | service-directory)) | ||
| 107 | (symlink (string-append #$service "/etc") ;for etc/dbus-1 | ||
| 108 | (string-append #$output "/etc")) | ||
| 109 | |||
| 110 | (for-each (lambda (file) | ||
| 111 | (substitute* file | ||
| 112 | (("Exec[[:blank:]]*=[[:blank:]]*([[:graph:]]+)(.*)$" | ||
| 113 | _ original-program arguments) | ||
| 114 | (string-append "Exec=" #$wrapper arguments | ||
| 115 | "\n")))) | ||
| 116 | (find-files #$output "\\.service$"))) | ||
| 117 | #:modules '((guix build utils)))) | ||
| 118 | 121 | ||
| 119 | 122 | ||
| 120 | ;;; | 123 | ;;; |
| @@ -408,15 +411,15 @@ Users need to be in the @code{lp} group to access the D-Bus service. | |||
| 408 | (define (polkit-directory packages) | 411 | (define (polkit-directory packages) |
| 409 | "Return a directory containing an @file{actions} and possibly a | 412 | "Return a directory containing an @file{actions} and possibly a |
| 410 | @file{rules.d} sub-directory, for use as @file{/etc/polkit-1}." | 413 | @file{rules.d} sub-directory, for use as @file{/etc/polkit-1}." |
| 411 | (computed-file "etc-polkit-1" | 414 | (with-imported-modules '((guix build union)) |
| 412 | #~(begin | 415 | (computed-file "etc-polkit-1" |
| 413 | (use-modules (guix build union) (srfi srfi-26)) | 416 | #~(begin |
| 414 | 417 | (use-modules (guix build union) (srfi srfi-26)) | |
| 415 | (union-build #$output | 418 | |
| 416 | (map (cut string-append <> | 419 | (union-build #$output |
| 417 | "/share/polkit-1") | 420 | (map (cut string-append <> |
| 418 | (list #$@packages)))) | 421 | "/share/polkit-1") |
| 419 | #:modules '((guix build union)))) | 422 | (list #$@packages))))))) |
| 420 | 423 | ||
| 421 | (define polkit-etc-files | 424 | (define polkit-etc-files |
| 422 | (match-lambda | 425 | (match-lambda |
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index af2a60936b0..a77ed3bb80b 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> | 2 | ;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> |
| 3 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> | 3 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> |
| 4 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> | 4 | ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> |
| 5 | ;;; | 5 | ;;; |
| @@ -345,39 +345,39 @@ keep the system clock synchronized with that of @var{servers}." | |||
| 345 | (($ <tor-configuration> tor config-file services) | 345 | (($ <tor-configuration> tor config-file services) |
| 346 | (computed-file | 346 | (computed-file |
| 347 | "torrc" | 347 | "torrc" |
| 348 | #~(begin | 348 | (with-imported-modules '((guix build utils)) |
| 349 | (use-modules (guix build utils) | 349 | #~(begin |
| 350 | (ice-9 match)) | 350 | (use-modules (guix build utils) |
| 351 | 351 | (ice-9 match)) | |
| 352 | (call-with-output-file #$output | 352 | |
| 353 | (lambda (port) | 353 | (call-with-output-file #$output |
| 354 | (display "\ | 354 | (lambda (port) |
| 355 | (display "\ | ||
| 355 | # The beginning was automatically added. | 356 | # The beginning was automatically added. |
| 356 | User tor | 357 | User tor |
| 357 | DataDirectory /var/lib/tor | 358 | DataDirectory /var/lib/tor |
| 358 | Log notice syslog\n" port) | 359 | Log notice syslog\n" port) |
| 359 | 360 | ||
| 360 | (for-each (match-lambda | 361 | (for-each (match-lambda |
| 361 | ((service (ports hosts) ...) | 362 | ((service (ports hosts) ...) |
| 362 | (format port "\ | 363 | (format port "\ |
| 363 | HiddenServiceDir /var/lib/tor/hidden-services/~a~%" | 364 | HiddenServiceDir /var/lib/tor/hidden-services/~a~%" |
| 364 | service) | 365 | service) |
| 365 | (for-each (lambda (tcp-port host) | 366 | (for-each (lambda (tcp-port host) |
| 366 | (format port "\ | 367 | (format port "\ |
| 367 | HiddenServicePort ~a ~a~%" | 368 | HiddenServicePort ~a ~a~%" |
| 368 | tcp-port host)) | 369 | tcp-port host)) |
| 369 | ports hosts))) | 370 | ports hosts))) |
| 370 | '#$(map (match-lambda | 371 | '#$(map (match-lambda |
| 371 | (($ <hidden-service> name mapping) | 372 | (($ <hidden-service> name mapping) |
| 372 | (cons name mapping))) | 373 | (cons name mapping))) |
| 373 | services)) | 374 | services)) |
| 374 | 375 | ||
| 375 | ;; Append the user's config file. | 376 | ;; Append the user's config file. |
| 376 | (call-with-input-file #$config-file | 377 | (call-with-input-file #$config-file |
| 377 | (lambda (input) | 378 | (lambda (input) |
| 378 | (dump-port input port))) | 379 | (dump-port input port))) |
| 379 | #t))) | 380 | #t)))))))) |
| 380 | #:modules '((guix build utils)))))) | ||
| 381 | 381 | ||
| 382 | (define (tor-shepherd-service config) | 382 | (define (tor-shepherd-service config) |
| 383 | "Return a <shepherd-service> running TOR." | 383 | "Return a <shepherd-service> running TOR." |
diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm index 5d829e4c38e..a14f51592a6 100644 --- a/gnu/services/shepherd.scm +++ b/gnu/services/shepherd.scm | |||
| @@ -47,9 +47,7 @@ | |||
| 47 | shepherd-service-stop | 47 | shepherd-service-stop |
| 48 | shepherd-service-auto-start? | 48 | shepherd-service-auto-start? |
| 49 | shepherd-service-modules | 49 | shepherd-service-modules |
| 50 | shepherd-service-imported-modules | ||
| 51 | 50 | ||
| 52 | %default-imported-modules | ||
| 53 | %default-modules | 51 | %default-modules |
| 54 | 52 | ||
| 55 | shepherd-service-file | 53 | shepherd-service-file |
| @@ -138,9 +136,7 @@ for a service that extends SHEPHERD-ROOT-SERVICE-TYPE and nothing else." | |||
| 138 | (auto-start? shepherd-service-auto-start? ;Boolean | 136 | (auto-start? shepherd-service-auto-start? ;Boolean |
| 139 | (default #t)) | 137 | (default #t)) |
| 140 | (modules shepherd-service-modules ;list of module names | 138 | (modules shepherd-service-modules ;list of module names |
| 141 | (default %default-modules)) | 139 | (default %default-modules))) |
| 142 | (imported-modules shepherd-service-imported-modules ;list of module names | ||
| 143 | (default %default-imported-modules))) | ||
| 144 | 140 | ||
| 145 | (define (shepherd-service-canonical-name service) | 141 | (define (shepherd-service-canonical-name service) |
| 146 | "Return the 'canonical name' of SERVICE." | 142 | "Return the 'canonical name' of SERVICE." |
| @@ -179,7 +175,7 @@ assertion failure." | |||
| 179 | (&message | 175 | (&message |
| 180 | (message | 176 | (message |
| 181 | (format #f (_ "service '~a' requires '~a', \ | 177 | (format #f (_ "service '~a' requires '~a', \ |
| 182 | which is undefined") | 178 | which is not provided by any service") |
| 183 | (match (shepherd-service-provision service) | 179 | (match (shepherd-service-provision service) |
| 184 | ((head . _) head) | 180 | ((head . _) head) |
| 185 | (_ service)) | 181 | (_ service)) |
| @@ -203,37 +199,26 @@ stored." | |||
| 203 | (define (shepherd-service-file service) | 199 | (define (shepherd-service-file service) |
| 204 | "Return a file defining SERVICE." | 200 | "Return a file defining SERVICE." |
| 205 | (gexp->file (shepherd-service-file-name service) | 201 | (gexp->file (shepherd-service-file-name service) |
| 206 | #~(begin | 202 | (with-imported-modules %default-imported-modules |
| 207 | (use-modules #$@(shepherd-service-modules service)) | 203 | #~(begin |
| 208 | 204 | (use-modules #$@(shepherd-service-modules service)) | |
| 209 | (make <service> | 205 | |
| 210 | #:docstring '#$(shepherd-service-documentation service) | 206 | (make <service> |
| 211 | #:provides '#$(shepherd-service-provision service) | 207 | #:docstring '#$(shepherd-service-documentation service) |
| 212 | #:requires '#$(shepherd-service-requirement service) | 208 | #:provides '#$(shepherd-service-provision service) |
| 213 | #:respawn? '#$(shepherd-service-respawn? service) | 209 | #:requires '#$(shepherd-service-requirement service) |
| 214 | #:start #$(shepherd-service-start service) | 210 | #:respawn? '#$(shepherd-service-respawn? service) |
| 215 | #:stop #$(shepherd-service-stop service))))) | 211 | #:start #$(shepherd-service-start service) |
| 212 | #:stop #$(shepherd-service-stop service)))))) | ||
| 216 | 213 | ||
| 217 | (define (shepherd-configuration-file services) | 214 | (define (shepherd-configuration-file services) |
| 218 | "Return the shepherd configuration file for SERVICES." | 215 | "Return the shepherd configuration file for SERVICES." |
| 219 | (define modules | ||
| 220 | (delete-duplicates | ||
| 221 | (append-map shepherd-service-imported-modules services))) | ||
| 222 | |||
| 223 | (assert-valid-graph services) | 216 | (assert-valid-graph services) |
| 224 | 217 | ||
| 225 | (mlet %store-monad ((modules (imported-modules modules)) | 218 | (mlet %store-monad ((files (mapm %store-monad |
| 226 | (compiled (compiled-modules modules)) | 219 | shepherd-service-file services))) |
| 227 | (files (mapm %store-monad | ||
| 228 | shepherd-service-file | ||
| 229 | services))) | ||
| 230 | (define config | 220 | (define config |
| 231 | #~(begin | 221 | #~(begin |
| 232 | (eval-when (expand load eval) | ||
| 233 | (set! %load-path (cons #$modules %load-path)) | ||
| 234 | (set! %load-compiled-path | ||
| 235 | (cons #$compiled %load-compiled-path))) | ||
| 236 | |||
| 237 | (use-modules (srfi srfi-34) | 222 | (use-modules (srfi srfi-34) |
| 238 | (system repl error-handling)) | 223 | (system repl error-handling)) |
| 239 | 224 | ||
diff --git a/gnu/services/ssh.scm b/gnu/services/ssh.scm index 33e1951a6e7..743b5e3805a 100644 --- a/gnu/services/ssh.scm +++ b/gnu/services/ssh.scm | |||
| @@ -1,5 +1,6 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org> | 2 | ;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> |
| 3 | ;;; Copyright © 2016 David Craven <david@craven.ch> | ||
| 3 | ;;; | 4 | ;;; |
| 4 | ;;; This file is part of GNU Guix. | 5 | ;;; This file is part of GNU Guix. |
| 5 | ;;; | 6 | ;;; |
| @@ -17,14 +18,19 @@ | |||
| 17 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | 18 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. |
| 18 | 19 | ||
| 19 | (define-module (gnu services ssh) | 20 | (define-module (gnu services ssh) |
| 20 | #:use-module (guix gexp) | 21 | #:use-module (gnu packages ssh) |
| 21 | #:use-module (guix records) | ||
| 22 | #:use-module (gnu services) | 22 | #:use-module (gnu services) |
| 23 | #:use-module (gnu services shepherd) | 23 | #:use-module (gnu services shepherd) |
| 24 | #:use-module (gnu system pam) | 24 | #:use-module (gnu system pam) |
| 25 | #:use-module (gnu packages lsh) | 25 | #:use-module (guix gexp) |
| 26 | #:use-module (guix records) | ||
| 26 | #:use-module (srfi srfi-26) | 27 | #:use-module (srfi srfi-26) |
| 27 | #:export (lsh-service)) | 28 | #:export (lsh-service |
| 29 | |||
| 30 | dropbear-configuration | ||
| 31 | dropbear-configuration? | ||
| 32 | dropbear-service-type | ||
| 33 | dropbear-service)) | ||
| 28 | 34 | ||
| 29 | ;;; Commentary: | 35 | ;;; Commentary: |
| 30 | ;;; | 36 | ;;; |
| @@ -235,4 +241,85 @@ The other options should be self-descriptive." | |||
| 235 | public-key-authentication?) | 241 | public-key-authentication?) |
| 236 | (initialize? initialize?)))) | 242 | (initialize? initialize?)))) |
| 237 | 243 | ||
| 244 | |||
| 245 | ;;; | ||
| 246 | ;;; Dropbear. | ||
| 247 | ;;; | ||
| 248 | |||
| 249 | (define-record-type* <dropbear-configuration> | ||
| 250 | dropbear-configuration make-dropbear-configuration | ||
| 251 | dropbear-configuration? | ||
| 252 | (dropbear dropbear-configuration-dropbear | ||
| 253 | (default dropbear)) | ||
| 254 | (port-number dropbear-configuration-port-number | ||
| 255 | (default 22)) | ||
| 256 | (syslog-output? dropbear-configuration-syslog-output? | ||
| 257 | (default #t)) | ||
| 258 | (pid-file dropbear-configuration-pid-file | ||
| 259 | (default "/var/run/dropbear.pid")) | ||
| 260 | (root-login? dropbear-configuration-root-login? | ||
| 261 | (default #f)) | ||
| 262 | (allow-empty-passwords? dropbear-configuration-allow-empty-passwords? | ||
| 263 | (default #f)) | ||
| 264 | (password-authentication? dropbear-configuration-password-authentication? | ||
| 265 | (default #t))) | ||
| 266 | |||
| 267 | (define (dropbear-activation config) | ||
| 268 | "Return the activation gexp for CONFIG." | ||
| 269 | #~(begin | ||
| 270 | (mkdir-p "/etc/dropbear"))) | ||
| 271 | |||
| 272 | (define (dropbear-shepherd-service config) | ||
| 273 | "Return a <shepherd-service> for dropbear with CONFIG." | ||
| 274 | (define dropbear | ||
| 275 | (dropbear-configuration-dropbear config)) | ||
| 276 | |||
| 277 | (define pid-file | ||
| 278 | (dropbear-configuration-pid-file config)) | ||
| 279 | |||
| 280 | (define dropbear-command | ||
| 281 | #~(list (string-append #$dropbear "/sbin/dropbear") | ||
| 282 | |||
| 283 | ;; '-R' allows host keys to be automatically generated upon first | ||
| 284 | ;; connection, at a time when /dev/urandom is more likely securely | ||
| 285 | ;; seeded. | ||
| 286 | "-F" "-R" | ||
| 287 | |||
| 288 | "-p" #$(number->string (dropbear-configuration-port-number config)) | ||
| 289 | "-P" #$pid-file | ||
| 290 | #$@(if (dropbear-configuration-syslog-output? config) '() '("-E")) | ||
| 291 | #$@(if (dropbear-configuration-root-login? config) '() '("-w")) | ||
| 292 | #$@(if (dropbear-configuration-password-authentication? config) | ||
| 293 | '() | ||
| 294 | '("-s" "-g")) | ||
| 295 | #$@(if (dropbear-configuration-allow-empty-passwords? config) | ||
| 296 | '("-B") | ||
| 297 | '()))) | ||
| 298 | |||
| 299 | (define requires | ||
| 300 | (if (dropbear-configuration-syslog-output? config) | ||
| 301 | '(networking syslogd) '(networking))) | ||
| 302 | |||
| 303 | (list (shepherd-service | ||
| 304 | (documentation "Dropbear SSH server.") | ||
| 305 | (requirement requires) | ||
| 306 | (provision '(ssh-daemon)) | ||
| 307 | (start #~(make-forkexec-constructor #$dropbear-command | ||
| 308 | #:pid-file #$pid-file)) | ||
| 309 | (stop #~(make-kill-destructor))))) | ||
| 310 | |||
| 311 | (define dropbear-service-type | ||
| 312 | (service-type (name 'dropbear) | ||
| 313 | (extensions | ||
| 314 | (list (service-extension shepherd-root-service-type | ||
| 315 | dropbear-shepherd-service) | ||
| 316 | (service-extension activation-service-type | ||
| 317 | dropbear-activation))))) | ||
| 318 | |||
| 319 | (define* (dropbear-service #:optional (config (dropbear-configuration))) | ||
| 320 | "Run the @uref{https://matt.ucc.asn.au/dropbear/dropbear.html,Dropbear SSH | ||
| 321 | daemon} with the given @var{config}, a @code{<dropbear-configuration>} | ||
| 322 | object." | ||
| 323 | (service dropbear-service-type config)) | ||
| 324 | |||
| 238 | ;;; ssh.scm ends here | 325 | ;;; ssh.scm ends here |
diff --git a/gnu/services/web.scm b/gnu/services/web.scm index 0e17f6e5c61..72ef7d4050a 100644 --- a/gnu/services/web.scm +++ b/gnu/services/web.scm | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2015 David Thompson <davet@gnu.org> | 2 | ;;; Copyright © 2015 David Thompson <davet@gnu.org> |
| 3 | ;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org> | 3 | ;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org> |
| 4 | ;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is> | ||
| 4 | ;;; | 5 | ;;; |
| 5 | ;;; This file is part of GNU Guix. | 6 | ;;; This file is part of GNU Guix. |
| 6 | ;;; | 7 | ;;; |
| @@ -114,7 +115,7 @@ | |||
| 114 | (default-nginx-config log-directory run-directory))) | 115 | (default-nginx-config log-directory run-directory))) |
| 115 | "Return a service that runs NGINX, the nginx web server. | 116 | "Return a service that runs NGINX, the nginx web server. |
| 116 | 117 | ||
| 117 | The nginx daemon loads its runtime configuration from CONFIG-FIGLE, stores log | 118 | The nginx daemon loads its runtime configuration from CONFIG-FILE, stores log |
| 118 | files in LOG-DIRECTORY, and stores temporary runtime files in RUN-DIRECTORY." | 119 | files in LOG-DIRECTORY, and stores temporary runtime files in RUN-DIRECTORY." |
| 119 | (service nginx-service-type | 120 | (service nginx-service-type |
| 120 | (nginx-configuration | 121 | (nginx-configuration |
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index 9908b9526bc..44d12a7e77a 100644 --- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm | |||
| @@ -158,27 +158,27 @@ EndSection | |||
| 158 | "Return a directory that contains the @code{.conf} files for X.org that | 158 | "Return a directory that contains the @code{.conf} files for X.org that |
| 159 | includes the @code{share/X11/xorg.conf.d} directories of each package listed | 159 | includes the @code{share/X11/xorg.conf.d} directories of each package listed |
| 160 | in @var{modules}." | 160 | in @var{modules}." |
| 161 | (computed-file "xorg.conf.d" | 161 | (with-imported-modules '((guix build utils)) |
| 162 | #~(begin | 162 | (computed-file "xorg.conf.d" |
| 163 | (use-modules (guix build utils) | 163 | #~(begin |
| 164 | (srfi srfi-1)) | 164 | (use-modules (guix build utils) |
| 165 | 165 | (srfi srfi-1)) | |
| 166 | (define files | 166 | |
| 167 | (append-map (lambda (module) | 167 | (define files |
| 168 | (find-files (string-append | 168 | (append-map (lambda (module) |
| 169 | module | 169 | (find-files (string-append |
| 170 | "/share/X11/xorg.conf.d") | 170 | module |
| 171 | "\\.conf$")) | 171 | "/share/X11/xorg.conf.d") |
| 172 | (list #$@modules))) | 172 | "\\.conf$")) |
| 173 | 173 | (list #$@modules))) | |
| 174 | (mkdir #$output) | 174 | |
| 175 | (for-each (lambda (file) | 175 | (mkdir #$output) |
| 176 | (symlink file | 176 | (for-each (lambda (file) |
| 177 | (string-append #$output "/" | 177 | (symlink file |
| 178 | (basename file)))) | 178 | (string-append #$output "/" |
| 179 | files) | 179 | (basename file)))) |
| 180 | #t) | 180 | files) |
| 181 | #:modules '((guix build utils)))) | 181 | #t)))) |
| 182 | 182 | ||
| 183 | (define* (xorg-start-command #:key | 183 | (define* (xorg-start-command #:key |
| 184 | (guile (canonical-package guile-2.0)) | 184 | (guile (canonical-package guile-2.0)) |
diff --git a/gnu/system.scm b/gnu/system.scm index 96ea153cd06..476720b9f9b 100644 --- a/gnu/system.scm +++ b/gnu/system.scm | |||
| @@ -81,6 +81,8 @@ | |||
| 81 | operating-system-mapped-devices | 81 | operating-system-mapped-devices |
| 82 | operating-system-file-systems | 82 | operating-system-file-systems |
| 83 | operating-system-store-file-system | 83 | operating-system-store-file-system |
| 84 | operating-system-user-mapped-devices | ||
| 85 | operating-system-boot-mapped-devices | ||
| 84 | operating-system-activation-script | 86 | operating-system-activation-script |
| 85 | operating-system-user-accounts | 87 | operating-system-user-accounts |
| 86 | operating-system-shepherd-service-names | 88 | operating-system-shepherd-service-names |
| @@ -208,8 +210,9 @@ as 'needed-for-boot'." | |||
| 208 | "Return a file system among FILE-SYSTEMS that uses DEVICE, or #f." | 210 | "Return a file system among FILE-SYSTEMS that uses DEVICE, or #f." |
| 209 | (let ((target (string-append "/dev/mapper/" (mapped-device-target device)))) | 211 | (let ((target (string-append "/dev/mapper/" (mapped-device-target device)))) |
| 210 | (find (lambda (fs) | 212 | (find (lambda (fs) |
| 211 | (and (eq? 'device (file-system-title fs)) | 213 | (or (member device (file-system-dependencies fs)) |
| 212 | (string=? (file-system-device fs) target))) | 214 | (and (eq? 'device (file-system-title fs)) |
| 215 | (string=? (file-system-device fs) target)))) | ||
| 213 | file-systems))) | 216 | file-systems))) |
| 214 | 217 | ||
| 215 | (define (operating-system-user-mapped-devices os) | 218 | (define (operating-system-user-mapped-devices os) |
| @@ -731,7 +734,8 @@ this file is the reconstruction of GRUB menu entries for old configurations." | |||
| 731 | (kernel #$(operating-system-kernel os)) | 734 | (kernel #$(operating-system-kernel os)) |
| 732 | (kernel-arguments | 735 | (kernel-arguments |
| 733 | #$(operating-system-kernel-arguments os)) | 736 | #$(operating-system-kernel-arguments os)) |
| 734 | (initrd #$initrd))))) | 737 | (initrd #$initrd)) |
| 738 | #:set-load-path? #f))) | ||
| 735 | 739 | ||
| 736 | 740 | ||
| 737 | ;;; | 741 | ;;; |
diff --git a/gnu/system/install.scm b/gnu/system/install.scm index de14f6fb4c7..734a361c375 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> | 2 | ;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> |
| 3 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> | 3 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> |
| 4 | ;;; Copyright © 2016 Andreas Enge <andreas@enge.fr> | ||
| 4 | ;;; | 5 | ;;; |
| 5 | ;;; This file is part of GNU Guix. | 6 | ;;; This file is part of GNU Guix. |
| 6 | ;;; | 7 | ;;; |
| @@ -55,52 +56,53 @@ under /root/.guix-profile where GUIX is installed." | |||
| 55 | (manifest | 56 | (manifest |
| 56 | (list (package->manifest-entry guix)))))) | 57 | (list (package->manifest-entry guix)))))) |
| 57 | (define build | 58 | (define build |
| 58 | #~(begin | 59 | (with-imported-modules '((guix build utils) |
| 59 | (use-modules (guix build utils) | 60 | (guix build store-copy) |
| 60 | (gnu build install)) | 61 | (gnu build install)) |
| 61 | 62 | #~(begin | |
| 62 | (define %root "root") | 63 | (use-modules (guix build utils) |
| 63 | 64 | (gnu build install)) | |
| 64 | (setenv "PATH" | 65 | |
| 65 | (string-append #$guix "/sbin:" #$tar "/bin:" #$xz "/bin")) | 66 | (define %root "root") |
| 66 | 67 | ||
| 67 | ;; Note: there is not much to gain here with deduplication and there | 68 | (setenv "PATH" |
| 68 | ;; is the overhead of the '.links' directory, so turn it off. | 69 | (string-append #$guix "/sbin:" #$tar "/bin:" #$xz "/bin")) |
| 69 | (populate-single-profile-directory %root | 70 | |
| 70 | #:profile #$profile | 71 | ;; Note: there is not much to gain here with deduplication and |
| 71 | #:closure "profile" | 72 | ;; there is the overhead of the '.links' directory, so turn it |
| 72 | #:deduplicate? #f) | 73 | ;; off. |
| 73 | 74 | (populate-single-profile-directory %root | |
| 74 | ;; Create the tarball. Use GNU format so there's no file name | 75 | #:profile #$profile |
| 75 | ;; length limitation. | 76 | #:closure "profile" |
| 76 | (with-directory-excursion %root | 77 | #:deduplicate? #f) |
| 77 | (zero? (system* "tar" "--xz" "--format=gnu" | 78 | |
| 78 | 79 | ;; Create the tarball. Use GNU format so there's no file name | |
| 79 | ;; Avoid non-determinism in the archive. Use | 80 | ;; length limitation. |
| 80 | ;; mtime = 1, not zero, because that is what the | 81 | (with-directory-excursion %root |
| 81 | ;; daemon does for files in the store (see the | 82 | (zero? (system* "tar" "--xz" "--format=gnu" |
| 82 | ;; 'mtimeStore' constant in local-store.cc.) | 83 | |
| 83 | "--sort=name" | 84 | ;; Avoid non-determinism in the archive. Use |
| 84 | "--mtime=@1" ;for files in /var/guix | 85 | ;; mtime = 1, not zero, because that is what the |
| 85 | "--owner=root:0" | 86 | ;; daemon does for files in the store (see the |
| 86 | "--group=root:0" | 87 | ;; 'mtimeStore' constant in local-store.cc.) |
| 87 | 88 | "--sort=name" | |
| 88 | "--check-links" | 89 | "--mtime=@1" ;for files in /var/guix |
| 89 | "-cvf" #$output | 90 | "--owner=root:0" |
| 90 | ;; Avoid adding / and /var to the tarball, | 91 | "--group=root:0" |
| 91 | ;; so that the ownership and permissions of those | 92 | |
| 92 | ;; directories will not be overwritten when | 93 | "--check-links" |
| 93 | ;; extracting the archive. Do not include /root | 94 | "-cvf" #$output |
| 94 | ;; because the root account might have a different | 95 | ;; Avoid adding / and /var to the tarball, so |
| 95 | ;; home directory. | 96 | ;; that the ownership and permissions of those |
| 96 | "./var/guix" | 97 | ;; directories will not be overwritten when |
| 97 | (string-append "." (%store-directory))))))) | 98 | ;; extracting the archive. Do not include /root |
| 99 | ;; because the root account might have a | ||
| 100 | ;; different home directory. | ||
| 101 | "./var/guix" | ||
| 102 | (string-append "." (%store-directory)))))))) | ||
| 98 | 103 | ||
| 99 | (gexp->derivation "guix-tarball.tar.xz" build | 104 | (gexp->derivation "guix-tarball.tar.xz" build |
| 100 | #:references-graphs `(("profile" ,profile)) | 105 | #:references-graphs `(("profile" ,profile))))) |
| 101 | #:modules '((guix build utils) | ||
| 102 | (guix build store-copy) | ||
| 103 | (gnu build install))))) | ||
| 104 | 106 | ||
| 105 | 107 | ||
| 106 | (define (log-to-info) | 108 | (define (log-to-info) |
| @@ -212,20 +214,20 @@ the user's target storage device rather than on the RAM disk." | |||
| 212 | 214 | ||
| 213 | (define directory | 215 | (define directory |
| 214 | (computed-file "configuration-templates" | 216 | (computed-file "configuration-templates" |
| 215 | #~(begin | 217 | (with-imported-modules '((guix build utils)) |
| 216 | (mkdir #$output) | 218 | #~(begin |
| 217 | (for-each (lambda (file target) | 219 | (mkdir #$output) |
| 218 | (copy-file file | 220 | (for-each (lambda (file target) |
| 219 | (string-append #$output "/" | 221 | (copy-file file |
| 220 | target))) | 222 | (string-append #$output "/" |
| 221 | '(#$(file "bare-bones.tmpl") | 223 | target))) |
| 222 | #$(file "desktop.tmpl") | 224 | '(#$(file "bare-bones.tmpl") |
| 223 | #$(file "lightweight-desktop.tmpl")) | 225 | #$(file "desktop.tmpl") |
| 224 | '("bare-bones.scm" | 226 | #$(file "lightweight-desktop.tmpl")) |
| 225 | "desktop.scm" | 227 | '("bare-bones.scm" |
| 226 | "lightweight-desktop.scm")) | 228 | "desktop.scm" |
| 227 | #t) | 229 | "lightweight-desktop.scm")) |
| 228 | #:modules '((guix build utils)))) | 230 | #t)))) |
| 229 | 231 | ||
| 230 | `(("configuration" ,directory))) | 232 | `(("configuration" ,directory))) |
| 231 | 233 | ||
| @@ -391,6 +393,7 @@ Use Alt-F2 for documentation. | |||
| 391 | parted ddrescue | 393 | parted ddrescue |
| 392 | grub ;mostly so xrefs to its manual work | 394 | grub ;mostly so xrefs to its manual work |
| 393 | cryptsetup | 395 | cryptsetup |
| 396 | mdadm | ||
| 394 | btrfs-progs | 397 | btrfs-progs |
| 395 | wireless-tools iw wpa-supplicant-minimal iproute | 398 | wireless-tools iw wpa-supplicant-minimal iproute |
| 396 | ;; XXX: We used to have GNU fdisk here, but as of version | 399 | ;; XXX: We used to have GNU fdisk here, but as of version |
diff --git a/gnu/system/linux-container.scm b/gnu/system/linux-container.scm index 3acc579a6b9..d3c0036f47b 100644 --- a/gnu/system/linux-container.scm +++ b/gnu/system/linux-container.scm | |||
| @@ -87,30 +87,29 @@ that will be shared with the host system." | |||
| 87 | #:container? #t))) | 87 | #:container? #t))) |
| 88 | 88 | ||
| 89 | (define script | 89 | (define script |
| 90 | #~(begin | 90 | (with-imported-modules '((guix config) |
| 91 | (use-modules (gnu build linux-container) | 91 | (guix utils) |
| 92 | (guix build utils)) | 92 | (guix combinators) |
| 93 | (guix build utils) | ||
| 94 | (guix build syscalls) | ||
| 95 | (guix build bournish) | ||
| 96 | (gnu build file-systems) | ||
| 97 | (gnu build linux-container)) | ||
| 98 | #~(begin | ||
| 99 | (use-modules (gnu build linux-container) | ||
| 100 | (guix build utils)) | ||
| 93 | 101 | ||
| 94 | (call-with-container '#$specs | 102 | (call-with-container '#$specs |
| 95 | (lambda () | 103 | (lambda () |
| 96 | (setenv "HOME" "/root") | 104 | (setenv "HOME" "/root") |
| 97 | (setenv "TMPDIR" "/tmp") | 105 | (setenv "TMPDIR" "/tmp") |
| 98 | (setenv "GUIX_NEW_SYSTEM" #$os-drv) | 106 | (setenv "GUIX_NEW_SYSTEM" #$os-drv) |
| 99 | (for-each mkdir-p '("/run" "/bin" "/etc" "/home" "/var")) | 107 | (for-each mkdir-p '("/run" "/bin" "/etc" "/home" "/var")) |
| 100 | (primitive-load (string-append #$os-drv "/boot"))) | 108 | (primitive-load (string-append #$os-drv "/boot"))) |
| 101 | ;; A range of 65536 uid/gids is used to cover 16 bits worth of | 109 | ;; A range of 65536 uid/gids is used to cover 16 bits worth of |
| 102 | ;; users and groups, which is sufficient for most cases. | 110 | ;; users and groups, which is sufficient for most cases. |
| 103 | ;; | 111 | ;; |
| 104 | ;; See: http://www.freedesktop.org/software/systemd/man/systemd-nspawn.html#--private-users= | 112 | ;; See: http://www.freedesktop.org/software/systemd/man/systemd-nspawn.html#--private-users= |
| 105 | #:host-uids 65536))) | 113 | #:host-uids 65536)))) |
| 106 | 114 | ||
| 107 | (gexp->script "run-container" script | 115 | (gexp->script "run-container" script)))) |
| 108 | #:modules '((ice-9 match) | ||
| 109 | (srfi srfi-98) | ||
| 110 | (guix config) | ||
| 111 | (guix utils) | ||
| 112 | (guix build utils) | ||
| 113 | (guix build syscalls) | ||
| 114 | (guix build bournish) | ||
| 115 | (gnu build file-systems) | ||
| 116 | (gnu build linux-container)))))) | ||
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm index 484bce71c46..bbaa5c0f893 100644 --- a/gnu/system/linux-initrd.scm +++ b/gnu/system/linux-initrd.scm | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> | 2 | ;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> |
| 3 | ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org> | 3 | ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org> |
| 4 | ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> | ||
| 4 | ;;; | 5 | ;;; |
| 5 | ;;; This file is part of GNU Guix. | 6 | ;;; This file is part of GNU Guix. |
| 6 | ;;; | 7 | ;;; |
| @@ -54,85 +55,81 @@ | |||
| 54 | (guile %guile-static-stripped) | 55 | (guile %guile-static-stripped) |
| 55 | (gzip gzip) | 56 | (gzip gzip) |
| 56 | (name "guile-initrd") | 57 | (name "guile-initrd") |
| 57 | (system (%current-system)) | 58 | (system (%current-system))) |
| 58 | (modules '())) | ||
| 59 | "Return a derivation that builds a Linux initrd (a gzipped cpio archive) | 59 | "Return a derivation that builds a Linux initrd (a gzipped cpio archive) |
| 60 | containing GUILE and that evaluates EXP, a G-expression, upon booting. All | 60 | containing GUILE and that evaluates EXP, a G-expression, upon booting. All |
| 61 | the derivations referenced by EXP are automatically copied to the initrd. | 61 | the derivations referenced by EXP are automatically copied to the initrd." |
| 62 | |||
| 63 | MODULES is a list of Guile module names to be embedded in the initrd." | ||
| 64 | 62 | ||
| 65 | ;; General Linux overview in `Documentation/early-userspace/README' and | 63 | ;; General Linux overview in `Documentation/early-userspace/README' and |
| 66 | ;; `Documentation/filesystems/ramfs-rootfs-initramfs.txt'. | 64 | ;; `Documentation/filesystems/ramfs-rootfs-initramfs.txt'. |
| 67 | 65 | ||
| 68 | (mlet %store-monad ((init (gexp->script "init" exp | 66 | (mlet %store-monad ((init (gexp->script "init" exp |
| 69 | #:modules modules | ||
| 70 | #:guile guile))) | 67 | #:guile guile))) |
| 71 | (define builder | 68 | (define builder |
| 72 | #~(begin | 69 | (with-imported-modules '((guix cpio) |
| 73 | (use-modules (gnu build linux-initrd)) | 70 | (guix build utils) |
| 71 | (guix build store-copy) | ||
| 72 | (gnu build linux-initrd)) | ||
| 73 | #~(begin | ||
| 74 | (use-modules (gnu build linux-initrd)) | ||
| 74 | 75 | ||
| 75 | (mkdir #$output) | 76 | (mkdir #$output) |
| 76 | (build-initrd (string-append #$output "/initrd") | 77 | (build-initrd (string-append #$output "/initrd") |
| 77 | #:guile #$guile | 78 | #:guile #$guile |
| 78 | #:init #$init | 79 | #:init #$init |
| 79 | ;; Copy everything INIT refers to into the initrd. | 80 | ;; Copy everything INIT refers to into the initrd. |
| 80 | #:references-graphs '("closure") | 81 | #:references-graphs '("closure") |
| 81 | #:gzip (string-append #$gzip "/bin/gzip")))) | 82 | #:gzip (string-append #$gzip "/bin/gzip"))))) |
| 82 | 83 | ||
| 83 | (gexp->derivation name builder | 84 | (gexp->derivation name builder |
| 84 | #:modules '((guix cpio) | 85 | #:references-graphs `(("closure" ,init))))) |
| 85 | (guix build utils) | ||
| 86 | (guix build store-copy) | ||
| 87 | (gnu build linux-initrd)) | ||
| 88 | #:references-graphs `(("closure" ,init))))) | ||
| 89 | 86 | ||
| 90 | (define (flat-linux-module-directory linux modules) | 87 | (define (flat-linux-module-directory linux modules) |
| 91 | "Return a flat directory containing the Linux kernel modules listed in | 88 | "Return a flat directory containing the Linux kernel modules listed in |
| 92 | MODULES and taken from LINUX." | 89 | MODULES and taken from LINUX." |
| 93 | (define build-exp | 90 | (define build-exp |
| 94 | #~(begin | 91 | (with-imported-modules '((guix build utils) |
| 95 | (use-modules (ice-9 match) (ice-9 regex) | 92 | (guix elf) |
| 96 | (srfi srfi-1) | 93 | (gnu build linux-modules)) |
| 97 | (guix build utils) | 94 | #~(begin |
| 98 | (gnu build linux-modules)) | 95 | (use-modules (ice-9 match) (ice-9 regex) |
| 96 | (srfi srfi-1) | ||
| 97 | (guix build utils) | ||
| 98 | (gnu build linux-modules)) | ||
| 99 | 99 | ||
| 100 | (define (string->regexp str) | 100 | (define (string->regexp str) |
| 101 | ;; Return a regexp that matches STR exactly. | 101 | ;; Return a regexp that matches STR exactly. |
| 102 | (string-append "^" (regexp-quote str) "$")) | 102 | (string-append "^" (regexp-quote str) "$")) |
| 103 | 103 | ||
| 104 | (define module-dir | 104 | (define module-dir |
| 105 | (string-append #$linux "/lib/modules")) | 105 | (string-append #$linux "/lib/modules")) |
| 106 | 106 | ||
| 107 | (define (lookup module) | 107 | (define (lookup module) |
| 108 | (let ((name (ensure-dot-ko module))) | 108 | (let ((name (ensure-dot-ko module))) |
| 109 | (match (find-files module-dir (string->regexp name)) | 109 | (match (find-files module-dir (string->regexp name)) |
| 110 | ((file) | 110 | ((file) |
| 111 | file) | 111 | file) |
| 112 | (() | 112 | (() |
| 113 | (error "module not found" name module-dir)) | 113 | (error "module not found" name module-dir)) |
| 114 | ((_ ...) | 114 | ((_ ...) |
| 115 | (error "several modules by that name" | 115 | (error "several modules by that name" |
| 116 | name module-dir))))) | 116 | name module-dir))))) |
| 117 | 117 | ||
| 118 | (define modules | 118 | (define modules |
| 119 | (let ((modules (map lookup '#$modules))) | 119 | (let ((modules (map lookup '#$modules))) |
| 120 | (append modules | 120 | (append modules |
| 121 | (recursive-module-dependencies modules | 121 | (recursive-module-dependencies modules |
| 122 | #:lookup-module lookup)))) | 122 | #:lookup-module lookup)))) |
| 123 | 123 | ||
| 124 | (mkdir #$output) | 124 | (mkdir #$output) |
| 125 | (for-each (lambda (module) | 125 | (for-each (lambda (module) |
| 126 | (format #t "copying '~a'...~%" module) | 126 | (format #t "copying '~a'...~%" module) |
| 127 | (copy-file module | 127 | (copy-file module |
| 128 | (string-append #$output "/" | 128 | (string-append #$output "/" |
| 129 | (basename module)))) | 129 | (basename module)))) |
| 130 | (delete-duplicates modules)))) | 130 | (delete-duplicates modules))))) |
| 131 | 131 | ||
| 132 | (gexp->derivation "linux-modules" build-exp | 132 | (gexp->derivation "linux-modules" build-exp)) |
| 133 | #:modules '((guix build utils) | ||
| 134 | (guix elf) | ||
| 135 | (gnu build linux-modules)))) | ||
| 136 | 133 | ||
| 137 | (define* (base-initrd file-systems | 134 | (define* (base-initrd file-systems |
| 138 | #:key | 135 | #:key |
| @@ -183,6 +180,7 @@ loaded at boot time in the order in which they appear." | |||
| 183 | "usb-storage" "uas" ;for the installation image etc. | 180 | "usb-storage" "uas" ;for the installation image etc. |
| 184 | "usbhid" "hid-generic" "hid-apple" ;keyboards during early boot | 181 | "usbhid" "hid-generic" "hid-apple" ;keyboards during early boot |
| 185 | "dm-crypt" "xts" "serpent_generic" "wp512" ;for encrypted root partitions | 182 | "dm-crypt" "xts" "serpent_generic" "wp512" ;for encrypted root partitions |
| 183 | "nvme" ;for new SSD NVMe devices | ||
| 186 | ,@(if (string-match "^(x86_64|i[3-6]86)-" (%current-system)) | 184 | ,@(if (string-match "^(x86_64|i[3-6]86)-" (%current-system)) |
| 187 | '("pata_acpi" "pata_atiixp" ;for ATA controllers | 185 | '("pata_acpi" "pata_atiixp" ;for ATA controllers |
| 188 | "isci") ;for SAS controllers like Intel C602 | 186 | "isci") ;for SAS controllers like Intel C602 |
| @@ -225,38 +223,38 @@ loaded at boot time in the order in which they appear." | |||
| 225 | (mlet %store-monad ((kodir (flat-linux-module-directory linux | 223 | (mlet %store-monad ((kodir (flat-linux-module-directory linux |
| 226 | linux-modules))) | 224 | linux-modules))) |
| 227 | (expression->initrd | 225 | (expression->initrd |
| 228 | #~(begin | 226 | (with-imported-modules '((guix build bournish) |
| 229 | (use-modules (gnu build linux-boot) | 227 | (guix build utils) |
| 230 | (guix build utils) | 228 | (guix build syscalls) |
| 231 | (guix build bournish) ;add the 'bournish' meta-command | 229 | (gnu build linux-boot) |
| 232 | (srfi srfi-26) | 230 | (gnu build linux-modules) |
| 231 | (gnu build file-systems) | ||
| 232 | (guix elf)) | ||
| 233 | #~(begin | ||
| 234 | (use-modules (gnu build linux-boot) | ||
| 235 | (guix build utils) | ||
| 236 | (guix build bournish) ;add the 'bournish' meta-command | ||
| 237 | (srfi srfi-26) | ||
| 233 | 238 | ||
| 234 | ;; FIXME: The following modules are for | 239 | ;; FIXME: The following modules are for |
| 235 | ;; LUKS-DEVICE-MAPPING. We should instead propagate | 240 | ;; LUKS-DEVICE-MAPPING. We should instead propagate |
| 236 | ;; this info via gexps. | 241 | ;; this info via gexps. |
| 237 | ((gnu build file-systems) | 242 | ((gnu build file-systems) |
| 238 | #:select (find-partition-by-luks-uuid)) | 243 | #:select (find-partition-by-luks-uuid)) |
| 239 | (rnrs bytevectors)) | 244 | (rnrs bytevectors)) |
| 240 | 245 | ||
| 241 | (with-output-to-port (%make-void-port "w") | 246 | (with-output-to-port (%make-void-port "w") |
| 242 | (lambda () | 247 | (lambda () |
| 243 | (set-path-environment-variable "PATH" '("bin" "sbin") | 248 | (set-path-environment-variable "PATH" '("bin" "sbin") |
| 244 | '#$helper-packages))) | 249 | '#$helper-packages))) |
| 245 | 250 | ||
| 246 | (boot-system #:mounts '#$(map file-system->spec file-systems) | 251 | (boot-system #:mounts '#$(map file-system->spec file-systems) |
| 247 | #:pre-mount (lambda () | 252 | #:pre-mount (lambda () |
| 248 | (and #$@device-mapping-commands)) | 253 | (and #$@device-mapping-commands)) |
| 249 | #:linux-modules '#$linux-modules | 254 | #:linux-modules '#$linux-modules |
| 250 | #:linux-module-directory '#$kodir | 255 | #:linux-module-directory '#$kodir |
| 251 | #:qemu-guest-networking? #$qemu-networking? | 256 | #:qemu-guest-networking? #$qemu-networking? |
| 252 | #:volatile-root? '#$volatile-root?)) | 257 | #:volatile-root? '#$volatile-root?))) |
| 253 | #:name "base-initrd" | 258 | #:name "base-initrd"))) |
| 254 | #:modules '((guix build bournish) | ||
| 255 | (guix build utils) | ||
| 256 | (guix build syscalls) | ||
| 257 | (gnu build linux-boot) | ||
| 258 | (gnu build linux-modules) | ||
| 259 | (gnu build file-systems) | ||
| 260 | (guix elf))))) | ||
| 261 | 259 | ||
| 262 | ;;; linux-initrd.scm ends here | 260 | ;;; linux-initrd.scm ends here |
diff --git a/gnu/system/locale.scm b/gnu/system/locale.scm index f9d713e0cfd..3bb9f950a84 100644 --- a/gnu/system/locale.scm +++ b/gnu/system/locale.scm | |||
| @@ -154,10 +154,10 @@ data format changes between libc versions." | |||
| 154 | #:libc libc)) | 154 | #:libc libc)) |
| 155 | libcs))) | 155 | libcs))) |
| 156 | (gexp->derivation "locale-multiple-versions" | 156 | (gexp->derivation "locale-multiple-versions" |
| 157 | #~(begin | 157 | (with-imported-modules '((guix build union)) |
| 158 | (use-modules (guix build union)) | 158 | #~(begin |
| 159 | (union-build #$output (list #$@dirs))) | 159 | (use-modules (guix build union)) |
| 160 | #:modules '((guix build union)) | 160 | (union-build #$output (list #$@dirs)))) |
| 161 | #:local-build? #t | 161 | #:local-build? #t |
| 162 | #:substitutable? #f))))) | 162 | #:substitutable? #f))))) |
| 163 | 163 | ||
diff --git a/gnu/system/mapped-devices.scm b/gnu/system/mapped-devices.scm index 450b4737acc..732f73cc4ba 100644 --- a/gnu/system/mapped-devices.scm +++ b/gnu/system/mapped-devices.scm | |||
| @@ -85,9 +85,7 @@ | |||
| 85 | (modules `((rnrs bytevectors) ;bytevector? | 85 | (modules `((rnrs bytevectors) ;bytevector? |
| 86 | ((gnu build file-systems) | 86 | ((gnu build file-systems) |
| 87 | #:select (find-partition-by-luks-uuid)) | 87 | #:select (find-partition-by-luks-uuid)) |
| 88 | ,@%default-modules)) | 88 | ,@%default-modules))))))) |
| 89 | (imported-modules `((gnu build file-systems) | ||
| 90 | ,@%default-imported-modules))))))) | ||
| 91 | 89 | ||
| 92 | (define (device-mapping-service mapped-device) | 90 | (define (device-mapping-service mapped-device) |
| 93 | "Return a service that sets up @var{mapped-device}." | 91 | "Return a service that sets up @var{mapped-device}." |
| @@ -101,20 +99,22 @@ | |||
| 101 | (define (open-luks-device source target) | 99 | (define (open-luks-device source target) |
| 102 | "Return a gexp that maps SOURCE to TARGET as a LUKS device, using | 100 | "Return a gexp that maps SOURCE to TARGET as a LUKS device, using |
| 103 | 'cryptsetup'." | 101 | 'cryptsetup'." |
| 104 | #~(let ((source #$source)) | 102 | (with-imported-modules '((gnu build file-systems) |
| 105 | (zero? (system* (string-append #$cryptsetup "/sbin/cryptsetup") | 103 | (guix build bournish)) |
| 106 | "open" "--type" "luks" | 104 | #~(let ((source #$source)) |
| 107 | 105 | (zero? (system* (string-append #$cryptsetup "/sbin/cryptsetup") | |
| 108 | ;; Note: We cannot use the "UUID=source" syntax here | 106 | "open" "--type" "luks" |
| 109 | ;; because 'cryptsetup' implements it by searching the | 107 | |
| 110 | ;; udev-populated /dev/disk/by-id directory but udev may | 108 | ;; Note: We cannot use the "UUID=source" syntax here |
| 111 | ;; be unavailable at the time we run this. | 109 | ;; because 'cryptsetup' implements it by searching the |
| 112 | (if (bytevector? source) | 110 | ;; udev-populated /dev/disk/by-id directory but udev may |
| 113 | (or (find-partition-by-luks-uuid source) | 111 | ;; be unavailable at the time we run this. |
| 114 | (error "LUKS partition not found" source)) | 112 | (if (bytevector? source) |
| 115 | source) | 113 | (or (find-partition-by-luks-uuid source) |
| 116 | 114 | (error "LUKS partition not found" source)) | |
| 117 | #$target)))) | 115 | source) |
| 116 | |||
| 117 | #$target))))) | ||
| 118 | 118 | ||
| 119 | (define (close-luks-device source target) | 119 | (define (close-luks-device source target) |
| 120 | "Return a gexp that closes TARGET, a LUKS device." | 120 | "Return a gexp that closes TARGET, a LUKS device." |
diff --git a/gnu/system/pam.scm b/gnu/system/pam.scm index 743039daf6c..cd7a3427ede 100644 --- a/gnu/system/pam.scm +++ b/gnu/system/pam.scm | |||
| @@ -23,6 +23,7 @@ | |||
| 23 | #:use-module (gnu services) | 23 | #:use-module (gnu services) |
| 24 | #:use-module (ice-9 match) | 24 | #:use-module (ice-9 match) |
| 25 | #:use-module (srfi srfi-1) | 25 | #:use-module (srfi srfi-1) |
| 26 | #:use-module (srfi srfi-9) | ||
| 26 | #:use-module (srfi srfi-11) | 27 | #:use-module (srfi srfi-11) |
| 27 | #:use-module (srfi srfi-26) | 28 | #:use-module (srfi srfi-26) |
| 28 | #:use-module ((guix utils) #:select (%current-system)) | 29 | #:use-module ((guix utils) #:select (%current-system)) |
| @@ -38,6 +39,13 @@ | |||
| 38 | pam-entry-module | 39 | pam-entry-module |
| 39 | pam-entry-arguments | 40 | pam-entry-arguments |
| 40 | 41 | ||
| 42 | pam-limits-entry | ||
| 43 | pam-limits-entry-domain | ||
| 44 | pam-limits-entry-type | ||
| 45 | pam-limits-entry-item | ||
| 46 | pam-limits-entry-value | ||
| 47 | pam-limits-entry->string | ||
| 48 | |||
| 41 | pam-services->directory | 49 | pam-services->directory |
| 42 | unix-pam-service | 50 | unix-pam-service |
| 43 | base-pam-services | 51 | base-pam-services |
| @@ -76,6 +84,59 @@ | |||
| 76 | (arguments pam-entry-arguments ; list of string-valued g-expressions | 84 | (arguments pam-entry-arguments ; list of string-valued g-expressions |
| 77 | (default '()))) | 85 | (default '()))) |
| 78 | 86 | ||
| 87 | ;; PAM limits entries are used by the pam_limits PAM module to set or override | ||
| 88 | ;; limits on system resources for user sessions. The format is specified | ||
| 89 | ;; here: http://linux-pam.org/Linux-PAM-html/sag-pam_limits.html | ||
| 90 | (define-record-type <pam-limits-entry> | ||
| 91 | (make-pam-limits-entry domain type item value) | ||
| 92 | pam-limits-entry? | ||
| 93 | (domain pam-limits-entry-domain) ; string | ||
| 94 | (type pam-limits-entry-type) ; symbol | ||
| 95 | (item pam-limits-entry-item) ; symbol | ||
| 96 | (value pam-limits-entry-value)) ; symbol or number | ||
| 97 | |||
| 98 | (define (pam-limits-entry domain type item value) | ||
| 99 | "Construct a pam-limits-entry ensuring that the provided values are valid." | ||
| 100 | (define (valid? value) | ||
| 101 | (case item | ||
| 102 | ((priority) (number? value)) | ||
| 103 | ((nice) (and (number? value) | ||
| 104 | (>= value -20) | ||
| 105 | (<= value 19))) | ||
| 106 | (else (or (and (number? value) | ||
| 107 | (>= value -1)) | ||
| 108 | (member value '(unlimited infinity)))))) | ||
| 109 | (define items | ||
| 110 | (list 'core 'data 'fsize | ||
| 111 | 'memlock 'nofile 'rss | ||
| 112 | 'stack 'cpu 'nproc | ||
| 113 | 'as 'maxlogins 'maxsyslogins | ||
| 114 | 'priority 'locks 'sigpending | ||
| 115 | 'msgqueue 'nice 'rtprio)) | ||
| 116 | (when (not (member type '(hard soft both))) | ||
| 117 | (error "invalid limit type" type)) | ||
| 118 | (when (not (member item items)) | ||
| 119 | (error "invalid limit item" item)) | ||
| 120 | (when (not (valid? value)) | ||
| 121 | (error "invalid limit value" value)) | ||
| 122 | (make-pam-limits-entry domain type item value)) | ||
| 123 | |||
| 124 | (define (pam-limits-entry->string entry) | ||
| 125 | "Convert a pam-limits-entry record to a string." | ||
| 126 | (match entry | ||
| 127 | (($ <pam-limits-entry> domain type item value) | ||
| 128 | (string-join (list domain | ||
| 129 | (if (eq? type 'both) | ||
| 130 | "-" | ||
| 131 | (symbol->string type)) | ||
| 132 | (symbol->string item) | ||
| 133 | (cond | ||
| 134 | ((symbol? value) | ||
| 135 | (symbol->string value)) | ||
| 136 | (else | ||
| 137 | (number->string value)))) | ||
| 138 | " ")))) | ||
| 139 | |||
| 79 | (define (pam-service->configuration service) | 140 | (define (pam-service->configuration service) |
| 80 | "Return the derivation building the configuration file for SERVICE, to be | 141 | "Return the derivation building the configuration file for SERVICE, to be |
| 81 | dumped in /etc/pam.d/NAME, where NAME is the name of SERVICE." | 142 | dumped in /etc/pam.d/NAME, where NAME is the name of SERVICE." |
diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm index f09e8c24f2e..c3948900eb0 100644 --- a/gnu/system/shadow.scm +++ b/gnu/system/shadow.scm | |||
| @@ -126,17 +126,19 @@ | |||
| 126 | (name "nobody") | 126 | (name "nobody") |
| 127 | (uid 65534) | 127 | (uid 65534) |
| 128 | (group "nogroup") | 128 | (group "nogroup") |
| 129 | (home-directory "/var/empty") | 129 | (shell #~(string-append #$shadow "/sbin/nologin")) |
| 130 | (home-directory "/nonexistent") | ||
| 130 | (system? #t)))) | 131 | (system? #t)))) |
| 131 | 132 | ||
| 132 | (define (default-skeletons) | 133 | (define (default-skeletons) |
| 133 | "Return the default skeleton files for /etc/skel. These files are copied by | 134 | "Return the default skeleton files for /etc/skel. These files are copied by |
| 134 | 'useradd' in the home directory of newly created user accounts." | 135 | 'useradd' in the home directory of newly created user accounts." |
| 135 | (define copy-guile-wm | 136 | (define copy-guile-wm |
| 136 | #~(begin | 137 | (with-imported-modules '((guix build utils)) |
| 137 | (use-modules (guix build utils)) | 138 | #~(begin |
| 138 | (copy-file (car (find-files #$guile-wm "wm-init-sample.scm")) | 139 | (use-modules (guix build utils)) |
| 139 | #$output))) | 140 | (copy-file (car (find-files #$guile-wm "wm-init-sample.scm")) |
| 141 | #$output)))) | ||
| 140 | 142 | ||
| 141 | (let ((profile (plain-file "bash_profile" "\ | 143 | (let ((profile (plain-file "bash_profile" "\ |
| 142 | # Honor per-interactive-shell startup file | 144 | # Honor per-interactive-shell startup file |
| @@ -170,8 +172,7 @@ alias ll='ls -l'\n")) | |||
| 170 | (zlogin (plain-file "zlogin" "\ | 172 | (zlogin (plain-file "zlogin" "\ |
| 171 | # Honor system-wide environment variables | 173 | # Honor system-wide environment variables |
| 172 | source /etc/profile\n")) | 174 | source /etc/profile\n")) |
| 173 | (guile-wm (computed-file "guile-wm" copy-guile-wm | 175 | (guile-wm (computed-file "guile-wm" copy-guile-wm)) |
| 174 | #:modules '((guix build utils)))) | ||
| 175 | (xdefaults (plain-file "Xdefaults" "\ | 176 | (xdefaults (plain-file "Xdefaults" "\ |
| 176 | XTerm*utf8: always | 177 | XTerm*utf8: always |
| 177 | XTerm*metaSendsEscape: true\n")) | 178 | XTerm*metaSendsEscape: true\n")) |
| @@ -188,22 +189,22 @@ set debug-file-directory ~/.guix-profile/lib/debug\n"))) | |||
| 188 | (define (skeleton-directory skeletons) | 189 | (define (skeleton-directory skeletons) |
| 189 | "Return a directory containing SKELETONS, a list of name/derivation tuples." | 190 | "Return a directory containing SKELETONS, a list of name/derivation tuples." |
| 190 | (computed-file "skel" | 191 | (computed-file "skel" |
| 191 | #~(begin | 192 | (with-imported-modules '((guix build utils)) |
| 192 | (use-modules (ice-9 match) | 193 | #~(begin |
| 193 | (guix build utils)) | 194 | (use-modules (ice-9 match) |
| 194 | 195 | (guix build utils)) | |
| 195 | (mkdir #$output) | 196 | |
| 196 | (chdir #$output) | 197 | (mkdir #$output) |
| 197 | 198 | (chdir #$output) | |
| 198 | ;; Note: copy the skeletons instead of symlinking | 199 | |
| 199 | ;; them like 'file-union' does, because 'useradd' | 200 | ;; Note: copy the skeletons instead of symlinking |
| 200 | ;; would just copy the symlinks as is. | 201 | ;; them like 'file-union' does, because 'useradd' |
| 201 | (for-each (match-lambda | 202 | ;; would just copy the symlinks as is. |
| 202 | ((target source) | 203 | (for-each (match-lambda |
| 203 | (copy-recursively source target))) | 204 | ((target source) |
| 204 | '#$skeletons) | 205 | (copy-recursively source target))) |
| 205 | #t) | 206 | '#$skeletons) |
| 206 | #:modules '((guix build utils)))) | 207 | #t)))) |
| 207 | 208 | ||
| 208 | (define (assert-valid-users/groups users groups) | 209 | (define (assert-valid-users/groups users groups) |
| 209 | "Raise an error if USERS refer to groups not listed in GROUPS." | 210 | "Raise an error if USERS refer to groups not listed in GROUPS." |
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index 676e89df980..c31e3a80ef3 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm | |||
| @@ -90,6 +90,21 @@ | |||
| 90 | (options "trans=virtio") | 90 | (options "trans=virtio") |
| 91 | (check? #f)))) | 91 | (check? #f)))) |
| 92 | 92 | ||
| 93 | (define %vm-module-closure | ||
| 94 | ;; The closure of (gnu build vm), roughly. | ||
| 95 | ;; FIXME: Compute it automatically. | ||
| 96 | '((gnu build vm) | ||
| 97 | (gnu build install) | ||
| 98 | (gnu build linux-boot) | ||
| 99 | (gnu build linux-modules) | ||
| 100 | (gnu build file-systems) | ||
| 101 | (guix elf) | ||
| 102 | (guix records) | ||
| 103 | (guix build utils) | ||
| 104 | (guix build syscalls) | ||
| 105 | (guix build bournish) | ||
| 106 | (guix build store-copy))) | ||
| 107 | |||
| 93 | (define* (expression->derivation-in-linux-vm name exp | 108 | (define* (expression->derivation-in-linux-vm name exp |
| 94 | #:key | 109 | #:key |
| 95 | (system (%current-system)) | 110 | (system (%current-system)) |
| @@ -97,18 +112,6 @@ | |||
| 97 | initrd | 112 | initrd |
| 98 | (qemu qemu-minimal) | 113 | (qemu qemu-minimal) |
| 99 | (env-vars '()) | 114 | (env-vars '()) |
| 100 | (modules | ||
| 101 | '((gnu build vm) | ||
| 102 | (gnu build install) | ||
| 103 | (gnu build linux-boot) | ||
| 104 | (gnu build linux-modules) | ||
| 105 | (gnu build file-systems) | ||
| 106 | (guix elf) | ||
| 107 | (guix records) | ||
| 108 | (guix build utils) | ||
| 109 | (guix build syscalls) | ||
| 110 | (guix build bournish) | ||
| 111 | (guix build store-copy))) | ||
| 112 | (guile-for-build | 115 | (guile-for-build |
| 113 | (%guile-for-build)) | 116 | (%guile-for-build)) |
| 114 | 117 | ||
| @@ -128,23 +131,13 @@ When MAKE-DISK-IMAGE? is true, then create a QEMU disk image of type | |||
| 128 | DISK-IMAGE-FORMAT (e.g., 'qcow2' or 'raw'), of DISK-IMAGE-SIZE bytes and | 131 | DISK-IMAGE-FORMAT (e.g., 'qcow2' or 'raw'), of DISK-IMAGE-SIZE bytes and |
| 129 | return it. | 132 | return it. |
| 130 | 133 | ||
| 131 | MODULES is the set of modules imported in the execution environment of EXP. | ||
| 132 | |||
| 133 | When REFERENCES-GRAPHS is true, it must be a list of file name/store path | 134 | When REFERENCES-GRAPHS is true, it must be a list of file name/store path |
| 134 | pairs, as for `derivation'. The files containing the reference graphs are | 135 | pairs, as for `derivation'. The files containing the reference graphs are |
| 135 | made available under the /xchg CIFS share." | 136 | made available under the /xchg CIFS share." |
| 136 | (mlet* %store-monad | 137 | (mlet* %store-monad |
| 137 | ((module-dir (imported-modules modules)) | 138 | ((user-builder (gexp->file "builder-in-linux-vm" exp)) |
| 138 | (compiled (compiled-modules modules)) | ||
| 139 | (user-builder (gexp->file "builder-in-linux-vm" exp)) | ||
| 140 | (loader (gexp->file "linux-vm-loader" | 139 | (loader (gexp->file "linux-vm-loader" |
| 141 | #~(begin | 140 | #~(primitive-load #$user-builder))) |
| 142 | (set! %load-path | ||
| 143 | (cons #$module-dir %load-path)) | ||
| 144 | (set! %load-compiled-path | ||
| 145 | (cons #$compiled | ||
| 146 | %load-compiled-path)) | ||
| 147 | (primitive-load #$user-builder)))) | ||
| 148 | (coreutils -> (canonical-package coreutils)) | 141 | (coreutils -> (canonical-package coreutils)) |
| 149 | (initrd (if initrd ; use the default initrd? | 142 | (initrd (if initrd ; use the default initrd? |
| 150 | (return initrd) | 143 | (return initrd) |
| @@ -155,34 +148,34 @@ made available under the /xchg CIFS share." | |||
| 155 | 148 | ||
| 156 | (define builder | 149 | (define builder |
| 157 | ;; Code that launches the VM that evaluates EXP. | 150 | ;; Code that launches the VM that evaluates EXP. |
| 158 | #~(begin | 151 | (with-imported-modules %vm-module-closure |
| 159 | (use-modules (guix build utils) | 152 | #~(begin |
| 160 | (gnu build vm)) | 153 | (use-modules (guix build utils) |
| 161 | 154 | (gnu build vm)) | |
| 162 | (let ((inputs '#$(list qemu coreutils)) | 155 | |
| 163 | (linux (string-append #$linux "/bzImage")) | 156 | (let ((inputs '#$(list qemu coreutils)) |
| 164 | (initrd (string-append #$initrd "/initrd")) | 157 | (linux (string-append #$linux "/bzImage")) |
| 165 | (loader #$loader) | 158 | (initrd (string-append #$initrd "/initrd")) |
| 166 | (graphs '#$(match references-graphs | 159 | (loader #$loader) |
| 167 | (((graph-files . _) ...) graph-files) | 160 | (graphs '#$(match references-graphs |
| 168 | (_ #f)))) | 161 | (((graph-files . _) ...) graph-files) |
| 169 | 162 | (_ #f)))) | |
| 170 | (set-path-environment-variable "PATH" '("bin") inputs) | 163 | |
| 171 | 164 | (set-path-environment-variable "PATH" '("bin") inputs) | |
| 172 | (load-in-linux-vm loader | 165 | |
| 173 | #:output #$output | 166 | (load-in-linux-vm loader |
| 174 | #:linux linux #:initrd initrd | 167 | #:output #$output |
| 175 | #:memory-size #$memory-size | 168 | #:linux linux #:initrd initrd |
| 176 | #:make-disk-image? #$make-disk-image? | 169 | #:memory-size #$memory-size |
| 177 | #:disk-image-format #$disk-image-format | 170 | #:make-disk-image? #$make-disk-image? |
| 178 | #:disk-image-size #$disk-image-size | 171 | #:disk-image-format #$disk-image-format |
| 179 | #:references-graphs graphs)))) | 172 | #:disk-image-size #$disk-image-size |
| 173 | #:references-graphs graphs))))) | ||
| 180 | 174 | ||
| 181 | (gexp->derivation name builder | 175 | (gexp->derivation name builder |
| 182 | ;; TODO: Require the "kvm" feature. | 176 | ;; TODO: Require the "kvm" feature. |
| 183 | #:system system | 177 | #:system system |
| 184 | #:env-vars env-vars | 178 | #:env-vars env-vars |
| 185 | #:modules modules | ||
| 186 | #:guile-for-build guile-for-build | 179 | #:guile-for-build guile-for-build |
| 187 | #:references-graphs references-graphs))) | 180 | #:references-graphs references-graphs))) |
| 188 | 181 | ||
| @@ -212,45 +205,46 @@ register INPUTS in the store database of the image so that Guix can be used in | |||
| 212 | the image." | 205 | the image." |
| 213 | (expression->derivation-in-linux-vm | 206 | (expression->derivation-in-linux-vm |
| 214 | name | 207 | name |
| 215 | #~(begin | 208 | (with-imported-modules %vm-module-closure |
| 216 | (use-modules (gnu build vm) | 209 | #~(begin |
| 217 | (guix build utils)) | 210 | (use-modules (gnu build vm) |
| 218 | 211 | (guix build utils)) | |
| 219 | (let ((inputs | 212 | |
| 220 | '#$(append (list qemu parted grub e2fsprogs) | 213 | (let ((inputs |
| 221 | (map canonical-package | 214 | '#$(append (list qemu parted grub e2fsprogs) |
| 222 | (list sed grep coreutils findutils gawk)) | 215 | (map canonical-package |
| 223 | (if register-closures? (list guix) '()))) | 216 | (list sed grep coreutils findutils gawk)) |
| 224 | 217 | (if register-closures? (list guix) '()))) | |
| 225 | ;; This variable is unused but allows us to add INPUTS-TO-COPY | 218 | |
| 226 | ;; as inputs. | 219 | ;; This variable is unused but allows us to add INPUTS-TO-COPY |
| 227 | (to-register | 220 | ;; as inputs. |
| 228 | '#$(map (match-lambda | 221 | (to-register |
| 229 | ((name thing) thing) | 222 | '#$(map (match-lambda |
| 230 | ((name thing output) `(,thing ,output))) | 223 | ((name thing) thing) |
| 231 | inputs))) | 224 | ((name thing output) `(,thing ,output))) |
| 232 | 225 | inputs))) | |
| 233 | (set-path-environment-variable "PATH" '("bin" "sbin") inputs) | 226 | |
| 234 | 227 | (set-path-environment-variable "PATH" '("bin" "sbin") inputs) | |
| 235 | (let* ((graphs '#$(match inputs | 228 | |
| 236 | (((names . _) ...) | 229 | (let* ((graphs '#$(match inputs |
| 237 | names))) | 230 | (((names . _) ...) |
| 238 | (initialize (root-partition-initializer | 231 | names))) |
| 239 | #:closures graphs | 232 | (initialize (root-partition-initializer |
| 240 | #:copy-closures? #$copy-inputs? | 233 | #:closures graphs |
| 241 | #:register-closures? #$register-closures? | 234 | #:copy-closures? #$copy-inputs? |
| 242 | #:system-directory #$os-derivation)) | 235 | #:register-closures? #$register-closures? |
| 243 | (partitions (list (partition | 236 | #:system-directory #$os-derivation)) |
| 244 | (size #$(- disk-image-size | 237 | (partitions (list (partition |
| 245 | (* 10 (expt 2 20)))) | 238 | (size #$(- disk-image-size |
| 246 | (label #$file-system-label) | 239 | (* 10 (expt 2 20)))) |
| 247 | (file-system #$file-system-type) | 240 | (label #$file-system-label) |
| 248 | (bootable? #t) | 241 | (file-system #$file-system-type) |
| 249 | (initializer initialize))))) | 242 | (bootable? #t) |
| 250 | (initialize-hard-disk "/dev/vda" | 243 | (initializer initialize))))) |
| 251 | #:partitions partitions | 244 | (initialize-hard-disk "/dev/vda" |
| 252 | #:grub.cfg #$grub-configuration) | 245 | #:partitions partitions |
| 253 | (reboot)))) | 246 | #:grub.cfg #$grub-configuration) |
| 247 | (reboot))))) | ||
| 254 | #:system system | 248 | #:system system |
| 255 | #:make-disk-image? #t | 249 | #:make-disk-image? #t |
| 256 | #:disk-image-size disk-image-size | 250 | #:disk-image-size disk-image-size |
diff --git a/gnu/tests.scm b/gnu/tests.scm index ea779ed6f07..8abe6c608ba 100644 --- a/gnu/tests.scm +++ b/gnu/tests.scm | |||
| @@ -27,7 +27,13 @@ | |||
| 27 | #:use-module (srfi srfi-1) | 27 | #:use-module (srfi srfi-1) |
| 28 | #:use-module (srfi srfi-9 gnu) | 28 | #:use-module (srfi srfi-9 gnu) |
| 29 | #:use-module (ice-9 match) | 29 | #:use-module (ice-9 match) |
| 30 | #:export (marionette-service-type | 30 | #:export (marionette-configuration |
| 31 | marionette-configuration? | ||
| 32 | marionette-configuration-device | ||
| 33 | marionette-configuration-imported-modules | ||
| 34 | marionette-configuration-requirements | ||
| 35 | |||
| 36 | marionette-service-type | ||
| 31 | marionette-operating-system | 37 | marionette-operating-system |
| 32 | define-os-with-source | 38 | define-os-with-source |
| 33 | 39 | ||
| @@ -50,81 +56,93 @@ | |||
| 50 | ;;; | 56 | ;;; |
| 51 | ;;; Code: | 57 | ;;; Code: |
| 52 | 58 | ||
| 53 | (define (marionette-shepherd-service imported-modules) | 59 | (define-record-type* <marionette-configuration> |
| 60 | marionette-configuration make-marionette-configuration | ||
| 61 | marionette-configuration? | ||
| 62 | (device marionette-configuration-device ;string | ||
| 63 | (default "/dev/hvc0")) | ||
| 64 | (imported-modules marionette-configuration-imported-modules | ||
| 65 | (default '())) | ||
| 66 | (requirements marionette-configuration-requirements ;list of symbols | ||
| 67 | (default '()))) | ||
| 68 | |||
| 69 | (define (marionette-shepherd-service config) | ||
| 54 | "Return the Shepherd service for the marionette REPL" | 70 | "Return the Shepherd service for the marionette REPL" |
| 55 | (define device | 71 | (match config |
| 56 | "/dev/hvc0") | 72 | (($ <marionette-configuration> device imported-modules requirement) |
| 57 | 73 | (list (shepherd-service | |
| 58 | (list (shepherd-service | 74 | (provision '(marionette)) |
| 59 | (provision '(marionette)) | 75 | |
| 60 | (requirement '(udev)) ;so that DEVICE is available | 76 | ;; Always depend on UDEV so that DEVICE is available. |
| 61 | (modules '((ice-9 match) | 77 | (requirement `(udev ,@requirement)) |
| 62 | (srfi srfi-9 gnu) | 78 | |
| 63 | (guix build syscalls) | 79 | (modules '((ice-9 match) |
| 64 | (rnrs bytevectors))) | 80 | (srfi srfi-9 gnu) |
| 65 | (imported-modules `((guix build syscalls) | 81 | (guix build syscalls) |
| 66 | ,@imported-modules)) | 82 | (rnrs bytevectors))) |
| 67 | (start | 83 | (start |
| 68 | #~(lambda () | 84 | (with-imported-modules `((guix build syscalls) |
| 69 | (define (clear-echo termios) | 85 | ,@imported-modules) |
| 70 | (set-field termios (termios-local-flags) | 86 | #~(lambda () |
| 71 | (logand (lognot (local-flags ECHO)) | 87 | (define (clear-echo termios) |
| 72 | (termios-local-flags termios)))) | 88 | (set-field termios (termios-local-flags) |
| 73 | 89 | (logand (lognot (local-flags ECHO)) | |
| 74 | (define (self-quoting? x) | 90 | (termios-local-flags termios)))) |
| 75 | (letrec-syntax ((one-of (syntax-rules () | 91 | |
| 76 | ((_) #f) | 92 | (define (self-quoting? x) |
| 77 | ((_ pred rest ...) | 93 | (letrec-syntax ((one-of (syntax-rules () |
| 78 | (or (pred x) | 94 | ((_) #f) |
| 79 | (one-of rest ...)))))) | 95 | ((_ pred rest ...) |
| 80 | (one-of symbol? string? pair? null? vector? | 96 | (or (pred x) |
| 81 | bytevector? number? boolean?))) | 97 | (one-of rest ...)))))) |
| 82 | 98 | (one-of symbol? string? pair? null? vector? | |
| 83 | (match (primitive-fork) | 99 | bytevector? number? boolean?))) |
| 84 | (0 | 100 | |
| 85 | (dynamic-wind | 101 | (match (primitive-fork) |
| 86 | (const #t) | 102 | (0 |
| 87 | (lambda () | 103 | (dynamic-wind |
| 88 | (let* ((repl (open-file #$device "r+0")) | 104 | (const #t) |
| 89 | (termios (tcgetattr (fileno repl))) | 105 | (lambda () |
| 90 | (console (open-file "/dev/console" "r+0"))) | 106 | (let* ((repl (open-file #$device "r+0")) |
| 91 | ;; Don't echo input back. | 107 | (termios (tcgetattr (fileno repl))) |
| 92 | (tcsetattr (fileno repl) (tcsetattr-action TCSANOW) | 108 | (console (open-file "/dev/console" "r+0"))) |
| 93 | (clear-echo termios)) | 109 | ;; Don't echo input back. |
| 94 | 110 | (tcsetattr (fileno repl) (tcsetattr-action TCSANOW) | |
| 95 | ;; Redirect output to the console. | 111 | (clear-echo termios)) |
| 96 | (close-fdes 1) | 112 | |
| 97 | (close-fdes 2) | 113 | ;; Redirect output to the console. |
| 98 | (dup2 (fileno console) 1) | 114 | (close-fdes 1) |
| 99 | (dup2 (fileno console) 2) | 115 | (close-fdes 2) |
| 100 | (close-port console) | 116 | (dup2 (fileno console) 1) |
| 101 | 117 | (dup2 (fileno console) 2) | |
| 102 | (display 'ready repl) | 118 | (close-port console) |
| 103 | (let loop () | 119 | |
| 104 | (newline repl) | 120 | (display 'ready repl) |
| 105 | 121 | (let loop () | |
| 106 | (match (read repl) | 122 | (newline repl) |
| 107 | ((? eof-object?) | 123 | |
| 108 | (primitive-exit 0)) | 124 | (match (read repl) |
| 109 | (expr | 125 | ((? eof-object?) |
| 110 | (catch #t | 126 | (primitive-exit 0)) |
| 111 | (lambda () | 127 | (expr |
| 112 | (let ((result (primitive-eval expr))) | 128 | (catch #t |
| 113 | (write (if (self-quoting? result) | 129 | (lambda () |
| 114 | result | 130 | (let ((result (primitive-eval expr))) |
| 115 | (object->string result)) | 131 | (write (if (self-quoting? result) |
| 116 | repl))) | 132 | result |
| 117 | (lambda (key . args) | 133 | (object->string result)) |
| 118 | (print-exception (current-error-port) | 134 | repl))) |
| 119 | (stack-ref (make-stack #t) 1) | 135 | (lambda (key . args) |
| 120 | key args) | 136 | (print-exception (current-error-port) |
| 121 | (write #f repl))))) | 137 | (stack-ref (make-stack #t) 1) |
| 122 | (loop)))) | 138 | key args) |
| 123 | (lambda () | 139 | (write #f repl))))) |
| 124 | (primitive-exit 1)))) | 140 | (loop)))) |
| 125 | (pid | 141 | (lambda () |
| 126 | pid)))) | 142 | (primitive-exit 1)))) |
| 127 | (stop #~(make-kill-destructor))))) | 143 | (pid |
| 144 | pid))))) | ||
| 145 | (stop #~(make-kill-destructor))))))) | ||
| 128 | 146 | ||
| 129 | (define marionette-service-type | 147 | (define marionette-service-type |
| 130 | ;; This is the type of the "marionette" service, allowing a guest system to | 148 | ;; This is the type of the "marionette" service, allowing a guest system to |
| @@ -136,12 +154,19 @@ | |||
| 136 | marionette-shepherd-service))))) | 154 | marionette-shepherd-service))))) |
| 137 | 155 | ||
| 138 | (define* (marionette-operating-system os | 156 | (define* (marionette-operating-system os |
| 139 | #:key (imported-modules '())) | 157 | #:key |
| 140 | "Return a marionetteed variant of OS such that OS can be used as a marionette | 158 | (imported-modules '()) |
| 141 | in a virtual machine--i.e., controlled from the host system." | 159 | (requirements '())) |
| 160 | "Return a marionetteed variant of OS such that OS can be used as a | ||
| 161 | marionette in a virtual machine--i.e., controlled from the host system. The | ||
| 162 | marionette service in the guest is started after the Shepherd services listed | ||
| 163 | in REQUIREMENTS." | ||
| 142 | (operating-system | 164 | (operating-system |
| 143 | (inherit os) | 165 | (inherit os) |
| 144 | (services (cons (service marionette-service-type imported-modules) | 166 | (services (cons (service marionette-service-type |
| 167 | (marionette-configuration | ||
| 168 | (requirements requirements) | ||
| 169 | (imported-modules imported-modules))) | ||
| 145 | (operating-system-user-services os))))) | 170 | (operating-system-user-services os))))) |
| 146 | 171 | ||
| 147 | (define-syntax define-os-with-source | 172 | (define-syntax define-os-with-source |
diff --git a/gnu/tests/base.scm b/gnu/tests/base.scm index 4fe779802ba..479403e5c1a 100644 --- a/gnu/tests/base.scm +++ b/gnu/tests/base.scm | |||
| @@ -22,10 +22,15 @@ | |||
| 22 | #:use-module (gnu system grub) | 22 | #:use-module (gnu system grub) |
| 23 | #:use-module (gnu system file-systems) | 23 | #:use-module (gnu system file-systems) |
| 24 | #:use-module (gnu system shadow) | 24 | #:use-module (gnu system shadow) |
| 25 | #:use-module (gnu system nss) | ||
| 25 | #:use-module (gnu system vm) | 26 | #:use-module (gnu system vm) |
| 26 | #:use-module (gnu services) | 27 | #:use-module (gnu services) |
| 28 | #:use-module (gnu services base) | ||
| 29 | #:use-module (gnu services dbus) | ||
| 30 | #:use-module (gnu services avahi) | ||
| 27 | #:use-module (gnu services mcron) | 31 | #:use-module (gnu services mcron) |
| 28 | #:use-module (gnu services shepherd) | 32 | #:use-module (gnu services shepherd) |
| 33 | #:use-module (gnu services networking) | ||
| 29 | #:use-module (guix gexp) | 34 | #:use-module (guix gexp) |
| 30 | #:use-module (guix store) | 35 | #:use-module (guix store) |
| 31 | #:use-module (guix monads) | 36 | #:use-module (guix monads) |
| @@ -33,7 +38,8 @@ | |||
| 33 | #:use-module (srfi srfi-1) | 38 | #:use-module (srfi srfi-1) |
| 34 | #:export (run-basic-test | 39 | #:export (run-basic-test |
| 35 | %test-basic-os | 40 | %test-basic-os |
| 36 | %test-mcron)) | 41 | %test-mcron |
| 42 | %test-nss-mdns)) | ||
| 37 | 43 | ||
| 38 | (define %simple-os | 44 | (define %simple-os |
| 39 | (operating-system | 45 | (operating-system |
| @@ -64,104 +70,123 @@ | |||
| 64 | using COMMAND, a gexp that evaluates to a list of strings. Compare some | 70 | using COMMAND, a gexp that evaluates to a list of strings. Compare some |
| 65 | properties of running system to what's declared in OS, an <operating-system>." | 71 | properties of running system to what's declared in OS, an <operating-system>." |
| 66 | (define test | 72 | (define test |
| 67 | #~(begin | 73 | (with-imported-modules '((gnu build marionette)) |
| 68 | (use-modules (gnu build marionette) | 74 | #~(begin |
| 69 | (srfi srfi-1) | 75 | (use-modules (gnu build marionette) |
| 70 | (srfi srfi-26) | 76 | (srfi srfi-64) |
| 71 | (srfi srfi-64) | 77 | (ice-9 match)) |
| 72 | (ice-9 match)) | 78 | |
| 73 | 79 | (define marionette | |
| 74 | (define marionette | 80 | (make-marionette #$command)) |
| 75 | (make-marionette #$command)) | 81 | |
| 76 | 82 | (mkdir #$output) | |
| 77 | (mkdir #$output) | 83 | (chdir #$output) |
| 78 | (chdir #$output) | 84 | |
| 79 | 85 | (test-begin "mcron") | |
| 80 | (test-begin "basic") | 86 | |
| 81 | 87 | (test-assert "uname" | |
| 82 | (test-assert "uname" | 88 | (match (marionette-eval '(uname) marionette) |
| 83 | (match (marionette-eval '(uname) marionette) | 89 | (#("Linux" host-name version _ architecture) |
| 84 | (#("Linux" host-name version _ architecture) | 90 | (and (string=? host-name |
| 85 | (and (string=? host-name | 91 | #$(operating-system-host-name os)) |
| 86 | #$(operating-system-host-name os)) | 92 | (string-prefix? #$(package-version |
| 87 | (string-prefix? #$(package-version | 93 | (operating-system-kernel os)) |
| 88 | (operating-system-kernel os)) | 94 | version) |
| 89 | version) | 95 | (string-prefix? architecture %host-type))))) |
| 90 | (string-prefix? architecture %host-type))))) | 96 | |
| 91 | 97 | (test-assert "shell and user commands" | |
| 92 | (test-assert "shell and user commands" | 98 | ;; Is everything in $PATH? |
| 93 | ;; Is everything in $PATH? | 99 | (zero? (marionette-eval '(system " |
| 94 | (zero? (marionette-eval '(system " | ||
| 95 | . /etc/profile | 100 | . /etc/profile |
| 96 | set -e -x | 101 | set -e -x |
| 97 | guix --version | 102 | guix --version |
| 98 | ls --version | 103 | ls --version |
| 99 | grep --version | 104 | grep --version |
| 100 | info --version") | 105 | info --version") |
| 101 | marionette))) | 106 | marionette))) |
| 102 | 107 | ||
| 103 | (test-assert "accounts" | 108 | (test-assert "accounts" |
| 104 | (let ((users (marionette-eval '(begin | 109 | (let ((users (marionette-eval '(begin |
| 105 | (use-modules (ice-9 match)) | 110 | (use-modules (ice-9 match)) |
| 106 | (let loop ((result '())) | 111 | (let loop ((result '())) |
| 107 | (match (getpw) | 112 | (match (getpw) |
| 108 | (#f (reverse result)) | 113 | (#f (reverse result)) |
| 109 | (x (loop (cons x result)))))) | 114 | (x (loop (cons x result)))))) |
| 110 | marionette))) | 115 | marionette))) |
| 111 | (lset= string=? | 116 | (lset= string=? |
| 112 | (map passwd:name users) | 117 | (map passwd:name users) |
| 113 | (list | 118 | (list |
| 114 | #$@(map user-account-name | 119 | #$@(map user-account-name |
| 115 | (operating-system-user-accounts os)))))) | 120 | (operating-system-user-accounts os)))))) |
| 116 | 121 | ||
| 117 | (test-assert "shepherd services" | 122 | (test-assert "shepherd services" |
| 118 | (let ((services (marionette-eval '(begin | 123 | (let ((services (marionette-eval '(begin |
| 119 | (use-modules (gnu services herd)) | 124 | (use-modules (gnu services herd)) |
| 120 | (call-with-values current-services | 125 | (call-with-values current-services |
| 121 | append)) | 126 | append)) |
| 122 | marionette))) | 127 | marionette))) |
| 123 | (lset= eq? | 128 | (lset= eq? |
| 124 | (pk 'services services) | 129 | (pk 'services services) |
| 125 | '(root #$@(operating-system-shepherd-service-names os))))) | 130 | '(root #$@(operating-system-shepherd-service-names os))))) |
| 126 | 131 | ||
| 127 | (test-equal "login on tty1" | 132 | (test-equal "login on tty1" |
| 128 | "root\n" | 133 | "root\n" |
| 129 | (begin | 134 | (begin |
| 130 | (marionette-control "sendkey ctrl-alt-f1" marionette) | 135 | (marionette-control "sendkey ctrl-alt-f1" marionette) |
| 131 | ;; Wait for the 'term-tty1' service to be running (using | 136 | ;; Wait for the 'term-tty1' service to be running (using |
| 132 | ;; 'start-service' is the simplest and most reliable way to do | 137 | ;; 'start-service' is the simplest and most reliable way to do |
| 133 | ;; that.) | 138 | ;; that.) |
| 139 | (marionette-eval | ||
| 140 | '(begin | ||
| 141 | (use-modules (gnu services herd)) | ||
| 142 | (start-service 'term-tty1)) | ||
| 143 | marionette) | ||
| 144 | |||
| 145 | ;; Now we can type. | ||
| 146 | (marionette-type "root\n\nid -un > logged-in\n" marionette) | ||
| 147 | |||
| 148 | ;; It can take a while before the shell commands are executed. | ||
| 149 | (let loop ((i 0)) | ||
| 150 | (unless (or (file-exists? "/root/logged-in") (> i 15)) | ||
| 151 | (sleep 1) | ||
| 152 | (loop (+ i 1)))) | ||
| 153 | (marionette-eval '(use-modules (rnrs io ports)) marionette) | ||
| 154 | (marionette-eval '(call-with-input-file "/root/logged-in" | ||
| 155 | get-string-all) | ||
| 156 | marionette))) | ||
| 157 | |||
| 158 | (test-assert "host name resolution" | ||
| 159 | (match (marionette-eval | ||
| 160 | '(begin | ||
| 161 | ;; Wait for nscd or our requests go through it. | ||
| 162 | (use-modules (gnu services herd)) | ||
| 163 | (start-service 'nscd) | ||
| 164 | |||
| 165 | (list (getaddrinfo "localhost") | ||
| 166 | (getaddrinfo #$(operating-system-host-name os)))) | ||
| 167 | marionette) | ||
| 168 | ((((? vector?) ..1) ((? vector?) ..1)) | ||
| 169 | #t) | ||
| 170 | (x | ||
| 171 | (pk 'failure x #f)))) | ||
| 172 | |||
| 173 | (test-equal "host not found" | ||
| 174 | #f | ||
| 134 | (marionette-eval | 175 | (marionette-eval |
| 135 | '(begin | 176 | '(false-if-exception (getaddrinfo "does-not-exist")) |
| 136 | (use-modules (gnu services herd)) | 177 | marionette)) |
| 137 | (start-service 'term-tty1)) | 178 | |
| 138 | marionette) | 179 | (test-assert "screendump" |
| 139 | 180 | (begin | |
| 140 | ;; Now we can type. | 181 | (marionette-control (string-append "screendump " #$output |
| 141 | (marionette-type "root\n\nid -un > logged-in\n" marionette) | 182 | "/tty1.ppm") |
| 142 | 183 | marionette) | |
| 143 | ;; It can take a while before the shell commands are executed. | 184 | (file-exists? "tty1.ppm"))) |
| 144 | (let loop ((i 0)) | 185 | |
| 145 | (unless (or (file-exists? "/root/logged-in") (> i 15)) | 186 | (test-end) |
| 146 | (sleep 1) | 187 | (exit (= (test-runner-fail-count (test-runner-current)) 0))))) |
| 147 | (loop (+ i 1)))) | 188 | |
| 148 | (marionette-eval '(use-modules (rnrs io ports)) marionette) | 189 | (gexp->derivation name test)) |
| 149 | (marionette-eval '(call-with-input-file "/root/logged-in" | ||
| 150 | get-string-all) | ||
| 151 | marionette))) | ||
| 152 | |||
| 153 | (test-assert "screendump" | ||
| 154 | (begin | ||
| 155 | (marionette-control (string-append "screendump " #$output | ||
| 156 | "/tty1.ppm") | ||
| 157 | marionette) | ||
| 158 | (file-exists? "tty1.ppm"))) | ||
| 159 | |||
| 160 | (test-end) | ||
| 161 | (exit (= (test-runner-fail-count (test-runner-current)) 0)))) | ||
| 162 | |||
| 163 | (gexp->derivation name test | ||
| 164 | #:modules '((gnu build marionette)))) | ||
| 165 | 190 | ||
| 166 | (define %test-basic-os | 191 | (define %test-basic-os |
| 167 | (system-test | 192 | (system-test |
| @@ -216,70 +241,207 @@ functionality tests.") | |||
| 216 | (command (system-qemu-image/shared-store-script | 241 | (command (system-qemu-image/shared-store-script |
| 217 | os #:graphic? #f))) | 242 | os #:graphic? #f))) |
| 218 | (define test | 243 | (define test |
| 219 | #~(begin | 244 | (with-imported-modules '((gnu build marionette)) |
| 220 | (use-modules (gnu build marionette) | 245 | #~(begin |
| 221 | (srfi srfi-64) | 246 | (use-modules (gnu build marionette) |
| 222 | (ice-9 match)) | 247 | (srfi srfi-64) |
| 223 | 248 | (ice-9 match)) | |
| 224 | (define marionette | 249 | |
| 225 | (make-marionette (list #$command))) | 250 | (define marionette |
| 226 | 251 | (make-marionette (list #$command))) | |
| 227 | (define (wait-for-file file) | 252 | |
| 228 | ;; Wait until FILE exists in the guest; 'read' its content and | 253 | (define (wait-for-file file) |
| 229 | ;; return it. | 254 | ;; Wait until FILE exists in the guest; 'read' its content and |
| 230 | (marionette-eval | 255 | ;; return it. |
| 231 | `(let loop ((i 10)) | 256 | (marionette-eval |
| 232 | (cond ((file-exists? ,file) | 257 | `(let loop ((i 10)) |
| 233 | (call-with-input-file ,file read)) | 258 | (cond ((file-exists? ,file) |
| 234 | ((> i 0) | 259 | (call-with-input-file ,file read)) |
| 235 | (sleep 1) | 260 | ((> i 0) |
| 236 | (loop (- i 1))) | 261 | (sleep 1) |
| 237 | (else | 262 | (loop (- i 1))) |
| 238 | (error "file didn't show up" ,file)))) | 263 | (else |
| 239 | marionette)) | 264 | (error "file didn't show up" ,file)))) |
| 240 | 265 | marionette)) | |
| 241 | (mkdir #$output) | 266 | |
| 242 | (chdir #$output) | 267 | (mkdir #$output) |
| 243 | 268 | (chdir #$output) | |
| 244 | (test-begin "mcron") | 269 | |
| 245 | 270 | (test-begin "mcron") | |
| 246 | (test-eq "service running" | 271 | |
| 247 | 'running! | 272 | (test-eq "service running" |
| 248 | (marionette-eval | 273 | 'running! |
| 249 | '(begin | 274 | (marionette-eval |
| 250 | (use-modules (gnu services herd)) | 275 | '(begin |
| 251 | (start-service 'mcron) | 276 | (use-modules (gnu services herd)) |
| 252 | 'running!) | 277 | (start-service 'mcron) |
| 253 | marionette)) | 278 | 'running!) |
| 254 | 279 | marionette)) | |
| 255 | ;; Make sure root's mcron job runs, has its cwd set to "/root", and | 280 | |
| 256 | ;; runs with the right UID/GID. | 281 | ;; Make sure root's mcron job runs, has its cwd set to "/root", and |
| 257 | (test-equal "root's job" | 282 | ;; runs with the right UID/GID. |
| 258 | '(0 0) | 283 | (test-equal "root's job" |
| 259 | (wait-for-file "/root/witness")) | 284 | '(0 0) |
| 260 | 285 | (wait-for-file "/root/witness")) | |
| 261 | ;; Likewise for Alice's job. We cannot know what its GID is since | 286 | |
| 262 | ;; it's chosen by 'groupadd', but it's strictly positive. | 287 | ;; Likewise for Alice's job. We cannot know what its GID is since |
| 263 | (test-assert "alice's job" | 288 | ;; it's chosen by 'groupadd', but it's strictly positive. |
| 264 | (match (wait-for-file "/home/alice/witness") | 289 | (test-assert "alice's job" |
| 265 | ((1000 gid) | 290 | (match (wait-for-file "/home/alice/witness") |
| 266 | (>= gid 100)))) | 291 | ((1000 gid) |
| 267 | 292 | (>= gid 100)))) | |
| 268 | ;; Last, the job that uses a command; allows us to test whether | 293 | |
| 269 | ;; $PATH is sane. (Note that 'marionette-eval' stringifies objects | 294 | ;; Last, the job that uses a command; allows us to test whether |
| 270 | ;; that don't have a read syntax, hence the string.) | 295 | ;; $PATH is sane. (Note that 'marionette-eval' stringifies objects |
| 271 | (test-equal "root's job with command" | 296 | ;; that don't have a read syntax, hence the string.) |
| 272 | "#<eof>" | 297 | (test-equal "root's job with command" |
| 273 | (wait-for-file "/root/witness-touch")) | 298 | "#<eof>" |
| 274 | 299 | (wait-for-file "/root/witness-touch")) | |
| 275 | (test-end) | 300 | |
| 276 | (exit (= (test-runner-fail-count (test-runner-current)) 0)))) | 301 | (test-end) |
| 277 | 302 | (exit (= (test-runner-fail-count (test-runner-current)) 0))))) | |
| 278 | (gexp->derivation name test | 303 | |
| 279 | #:modules '((gnu build marionette))))) | 304 | (gexp->derivation name test))) |
| 280 | 305 | ||
| 281 | (define %test-mcron | 306 | (define %test-mcron |
| 282 | (system-test | 307 | (system-test |
| 283 | (name "mcron") | 308 | (name "mcron") |
| 284 | (description "Make sure the mcron service works as advertised.") | 309 | (description "Make sure the mcron service works as advertised.") |
| 285 | (value (run-mcron-test name)))) | 310 | (value (run-mcron-test name)))) |
| 311 | |||
| 312 | |||
| 313 | ;;; | ||
| 314 | ;;; Avahi and NSS-mDNS. | ||
| 315 | ;;; | ||
| 316 | |||
| 317 | (define %avahi-os | ||
| 318 | (operating-system | ||
| 319 | (inherit %simple-os) | ||
| 320 | (name-service-switch %mdns-host-lookup-nss) | ||
| 321 | (services (cons* (avahi-service #:debug? #t) | ||
| 322 | (dbus-service) | ||
| 323 | (dhcp-client-service) ;needed for multicast | ||
| 324 | |||
| 325 | ;; Enable heavyweight debugging output. | ||
| 326 | (modify-services (operating-system-user-services | ||
| 327 | %simple-os) | ||
| 328 | (nscd-service-type config | ||
| 329 | => (nscd-configuration | ||
| 330 | (inherit config) | ||
| 331 | (debug-level 3) | ||
| 332 | (log-file "/dev/console"))) | ||
| 333 | (syslog-service-type config | ||
| 334 | => | ||
| 335 | (plain-file | ||
| 336 | "syslog.conf" | ||
| 337 | "*.* /dev/console\n"))))))) | ||
| 338 | |||
| 339 | (define (run-nss-mdns-test) | ||
| 340 | ;; Test resolution of '.local' names via libc. Start the marionette service | ||
| 341 | ;; *after* nscd. Failing to do that, libc will try to connect to nscd, | ||
| 342 | ;; fail, then never try again (see '__nss_not_use_nscd_hosts' in libc), | ||
| 343 | ;; leading to '.local' resolution failures. | ||
| 344 | (mlet* %store-monad ((os -> (marionette-operating-system | ||
| 345 | %avahi-os | ||
| 346 | #:requirements '(nscd) | ||
| 347 | #:imported-modules '((gnu services herd) | ||
| 348 | (guix combinators)))) | ||
| 349 | (run (system-qemu-image/shared-store-script | ||
| 350 | os #:graphic? #f))) | ||
| 351 | (define mdns-host-name | ||
| 352 | (string-append (operating-system-host-name os) | ||
| 353 | ".local")) | ||
| 354 | |||
| 355 | (define test | ||
| 356 | (with-imported-modules '((gnu build marionette)) | ||
| 357 | #~(begin | ||
| 358 | (use-modules (gnu build marionette) | ||
| 359 | (srfi srfi-1) | ||
| 360 | (srfi srfi-64) | ||
| 361 | (ice-9 match)) | ||
| 362 | |||
| 363 | (define marionette | ||
| 364 | (make-marionette (list #$run))) | ||
| 365 | |||
| 366 | (mkdir #$output) | ||
| 367 | (chdir #$output) | ||
| 368 | |||
| 369 | (test-begin "avahi") | ||
| 370 | |||
| 371 | (test-assert "wait for services" | ||
| 372 | (marionette-eval | ||
| 373 | '(begin | ||
| 374 | (use-modules (gnu services herd)) | ||
| 375 | |||
| 376 | (start-service 'nscd) | ||
| 377 | |||
| 378 | ;; XXX: Work around a race condition in nscd: nscd creates its | ||
| 379 | ;; PID file before it is listening on its socket. | ||
| 380 | (let ((sock (socket PF_UNIX SOCK_STREAM 0))) | ||
| 381 | (let try () | ||
| 382 | (catch 'system-error | ||
| 383 | (lambda () | ||
| 384 | (connect sock AF_UNIX "/var/run/nscd/socket") | ||
| 385 | (close-port sock) | ||
| 386 | (format #t "nscd is ready~%")) | ||
| 387 | (lambda args | ||
| 388 | (format #t "waiting for nscd...~%") | ||
| 389 | (usleep 500000) | ||
| 390 | (try))))) | ||
| 391 | |||
| 392 | ;; Wait for the other useful things. | ||
| 393 | (start-service 'avahi-daemon) | ||
| 394 | (start-service 'networking) | ||
| 395 | |||
| 396 | #t) | ||
| 397 | marionette)) | ||
| 398 | |||
| 399 | (test-equal "avahi-resolve-host-name" | ||
| 400 | 0 | ||
| 401 | (marionette-eval | ||
| 402 | '(system* | ||
| 403 | "/run/current-system/profile/bin/avahi-resolve-host-name" | ||
| 404 | "-v" #$mdns-host-name) | ||
| 405 | marionette)) | ||
| 406 | |||
| 407 | (test-equal "avahi-browse" | ||
| 408 | 0 | ||
| 409 | (marionette-eval | ||
| 410 | '(system* "avahi-browse" "-avt") | ||
| 411 | marionette)) | ||
| 412 | |||
| 413 | (test-assert "getaddrinfo .local" | ||
| 414 | ;; Wait for the 'avahi-daemon' service and perform a resolution. | ||
| 415 | (match (marionette-eval | ||
| 416 | '(getaddrinfo #$mdns-host-name) | ||
| 417 | marionette) | ||
| 418 | (((? vector? addrinfos) ..1) | ||
| 419 | (pk 'getaddrinfo addrinfos) | ||
| 420 | (and (any (lambda (ai) | ||
| 421 | (= AF_INET (addrinfo:fam ai))) | ||
| 422 | addrinfos) | ||
| 423 | (any (lambda (ai) | ||
| 424 | (= AF_INET6 (addrinfo:fam ai))) | ||
| 425 | addrinfos))))) | ||
| 426 | |||
| 427 | (test-assert "gethostbyname .local" | ||
| 428 | (match (pk 'gethostbyname | ||
| 429 | (marionette-eval '(gethostbyname #$mdns-host-name) | ||
| 430 | marionette)) | ||
| 431 | ((? vector? result) | ||
| 432 | (and (string=? (hostent:name result) #$mdns-host-name) | ||
| 433 | (= (hostent:addrtype result) AF_INET))))) | ||
| 434 | |||
| 435 | |||
| 436 | (test-end) | ||
| 437 | (exit (= (test-runner-fail-count (test-runner-current)) 0))))) | ||
| 438 | |||
| 439 | (gexp->derivation "nss-mdns" test))) | ||
| 440 | |||
| 441 | (define %test-nss-mdns | ||
| 442 | (system-test | ||
| 443 | (name "nss-mdns") | ||
| 444 | (description | ||
| 445 | "Test Avahi's multicast-DNS implementation, and in particular, test its | ||
| 446 | glibc name service switch (NSS) module.") | ||
| 447 | (value (run-nss-mdns-test)))) | ||
diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm index 5d893deb4c1..4e79fdb2942 100644 --- a/gnu/tests/install.scm +++ b/gnu/tests/install.scm | |||
| @@ -32,7 +32,8 @@ | |||
| 32 | #:use-module (guix grafts) | 32 | #:use-module (guix grafts) |
| 33 | #:use-module (guix gexp) | 33 | #:use-module (guix gexp) |
| 34 | #:use-module (guix utils) | 34 | #:use-module (guix utils) |
| 35 | #:export (%test-installed-os)) | 35 | #:export (%test-installed-os |
| 36 | %test-encrypted-os)) | ||
| 36 | 37 | ||
| 37 | ;;; Commentary: | 38 | ;;; Commentary: |
| 38 | ;;; | 39 | ;;; |
| @@ -66,8 +67,9 @@ | |||
| 66 | (home-directory "/home/alice")) | 67 | (home-directory "/home/alice")) |
| 67 | %base-user-accounts)) | 68 | %base-user-accounts)) |
| 68 | (services (cons (service marionette-service-type | 69 | (services (cons (service marionette-service-type |
| 69 | '((gnu services herd) | 70 | (marionette-configuration |
| 70 | (guix combinators))) | 71 | (imported-modules '((gnu services herd) |
| 72 | (guix combinators))))) | ||
| 71 | %base-services)))) | 73 | %base-services)))) |
| 72 | 74 | ||
| 73 | (define (operating-system-with-current-guix os) | 75 | (define (operating-system-with-current-guix os) |
| @@ -90,7 +92,33 @@ | |||
| 90 | 92 | ||
| 91 | (define MiB (expt 2 20)) | 93 | (define MiB (expt 2 20)) |
| 92 | 94 | ||
| 93 | (define* (run-install #:key | 95 | (define %simple-installation-script |
| 96 | ;; Shell script of a simple installation. | ||
| 97 | "\ | ||
| 98 | . /etc/profile | ||
| 99 | set -e -x | ||
| 100 | guix --version | ||
| 101 | |||
| 102 | export GUIX_BUILD_OPTIONS=--no-grafts | ||
| 103 | guix build isc-dhcp | ||
| 104 | parted --script /dev/vdb mklabel gpt \\ | ||
| 105 | mkpart primary ext2 1M 3M \\ | ||
| 106 | mkpart primary ext2 3M 1G \\ | ||
| 107 | set 1 boot on \\ | ||
| 108 | set 1 bios_grub on | ||
| 109 | mkfs.ext4 -L my-root /dev/vdb2 | ||
| 110 | mount /dev/vdb2 /mnt | ||
| 111 | df -h /mnt | ||
| 112 | herd start cow-store /mnt | ||
| 113 | mkdir /mnt/etc | ||
| 114 | cp /etc/target-config.scm /mnt/etc/config.scm | ||
| 115 | guix system init /mnt/etc/config.scm /mnt --no-substitutes | ||
| 116 | sync | ||
| 117 | reboot\n") | ||
| 118 | |||
| 119 | (define* (run-install target-os target-os-source | ||
| 120 | #:key | ||
| 121 | (script %simple-installation-script) | ||
| 94 | (os (marionette-operating-system | 122 | (os (marionette-operating-system |
| 95 | ;; Since the image has no network access, use the | 123 | ;; Since the image has no network access, use the |
| 96 | ;; current Guix so the store items we need are in | 124 | ;; current Guix so the store items we need are in |
| @@ -102,12 +130,13 @@ | |||
| 102 | #:imported-modules '((gnu services herd) | 130 | #:imported-modules '((gnu services herd) |
| 103 | (guix combinators)))) | 131 | (guix combinators)))) |
| 104 | (target-size (* 1200 MiB))) | 132 | (target-size (* 1200 MiB))) |
| 105 | "Run the GuixSD installation procedure from OS and return a VM image of | 133 | "Run SCRIPT (a shell script following the GuixSD installation procedure) in |
| 106 | TARGET-SIZE bytes containing the installed system." | 134 | OS to install TARGET-OS. Return a VM image of TARGET-SIZE bytes containing |
| 135 | the installed system." | ||
| 107 | 136 | ||
| 108 | (mlet* %store-monad ((_ (set-grafting #f)) | 137 | (mlet* %store-monad ((_ (set-grafting #f)) |
| 109 | (system (current-system)) | 138 | (system (current-system)) |
| 110 | (target (operating-system-derivation %minimal-os)) | 139 | (target (operating-system-derivation target-os)) |
| 111 | 140 | ||
| 112 | ;; Since the installation system has no network access, | 141 | ;; Since the installation system has no network access, |
| 113 | ;; we cheat a little bit by adding TARGET to its GC | 142 | ;; we cheat a little bit by adding TARGET to its GC |
| @@ -118,95 +147,158 @@ TARGET-SIZE bytes containing the installed system." | |||
| 118 | os (list target)) | 147 | os (list target)) |
| 119 | #:disk-image-size (* 1500 MiB)))) | 148 | #:disk-image-size (* 1500 MiB)))) |
| 120 | (define install | 149 | (define install |
| 121 | #~(begin | 150 | (with-imported-modules '((guix build utils) |
| 122 | (use-modules (guix build utils) | 151 | (gnu build marionette)) |
| 123 | (gnu build marionette)) | 152 | #~(begin |
| 124 | 153 | (use-modules (guix build utils) | |
| 125 | (set-path-environment-variable "PATH" '("bin") | 154 | (gnu build marionette)) |
| 126 | (list #$qemu-minimal)) | 155 | |
| 127 | 156 | (set-path-environment-variable "PATH" '("bin") | |
| 128 | (system* "qemu-img" "create" "-f" "qcow2" | 157 | (list #$qemu-minimal)) |
| 129 | #$output #$(number->string target-size)) | 158 | |
| 130 | 159 | (system* "qemu-img" "create" "-f" "qcow2" | |
| 131 | (define marionette | 160 | #$output #$(number->string target-size)) |
| 132 | (make-marionette | 161 | |
| 133 | (cons (which #$(qemu-command system)) | 162 | (define marionette |
| 134 | (cons* "-no-reboot" "-m" "800" | 163 | (make-marionette |
| 135 | "-drive" | 164 | (cons (which #$(qemu-command system)) |
| 136 | (string-append "file=" #$image | 165 | (cons* "-no-reboot" "-m" "800" |
| 137 | ",if=virtio,readonly") | 166 | "-drive" |
| 138 | "-drive" | 167 | (string-append "file=" #$image |
| 139 | (string-append "file=" #$output ",if=virtio") | 168 | ",if=virtio,readonly") |
| 140 | (if (file-exists? "/dev/kvm") | 169 | "-drive" |
| 141 | '("-enable-kvm") | 170 | (string-append "file=" #$output ",if=virtio") |
| 142 | '()))))) | 171 | (if (file-exists? "/dev/kvm") |
| 143 | 172 | '("-enable-kvm") | |
| 144 | (pk 'uname (marionette-eval '(uname) marionette)) | 173 | '()))))) |
| 145 | 174 | ||
| 146 | ;; Wait for tty1. | 175 | (pk 'uname (marionette-eval '(uname) marionette)) |
| 147 | (marionette-eval '(begin | 176 | |
| 148 | (use-modules (gnu services herd)) | 177 | ;; Wait for tty1. |
| 149 | (start 'term-tty1)) | 178 | (marionette-eval '(begin |
| 150 | marionette) | 179 | (use-modules (gnu services herd)) |
| 151 | 180 | (start 'term-tty1)) | |
| 152 | (marionette-eval '(call-with-output-file "/etc/litl-config.scm" | 181 | marionette) |
| 153 | (lambda (port) | 182 | |
| 154 | (write '#$%minimal-os-source port))) | 183 | (marionette-eval '(call-with-output-file "/etc/target-config.scm" |
| 155 | marionette) | 184 | (lambda (port) |
| 156 | 185 | (write '#$target-os-source port))) | |
| 157 | (exit (marionette-eval '(zero? (system " | 186 | marionette) |
| 187 | |||
| 188 | (exit (marionette-eval '(zero? (system #$script)) | ||
| 189 | marionette))))) | ||
| 190 | |||
| 191 | (gexp->derivation "installation" install))) | ||
| 192 | |||
| 193 | (define (qemu-command/writable-image image) | ||
| 194 | "Return as a monadic value the command to run QEMU on a writable copy of | ||
| 195 | IMAGE, a disk image." | ||
| 196 | (mlet %store-monad ((system (current-system))) | ||
| 197 | (return #~(let ((image #$image)) | ||
| 198 | ;; First we need a writable copy of the image. | ||
| 199 | (format #t "copying image '~a'...~%" image) | ||
| 200 | (copy-file image "disk.img") | ||
| 201 | (chmod "disk.img" #o644) | ||
| 202 | `(,(string-append #$qemu-minimal "/bin/" | ||
| 203 | #$(qemu-command system)) | ||
| 204 | ,@(if (file-exists? "/dev/kvm") | ||
| 205 | '("-enable-kvm") | ||
| 206 | '()) | ||
| 207 | "-no-reboot" "-m" "256" | ||
| 208 | "-drive" "file=disk.img,if=virtio"))))) | ||
| 209 | |||
| 210 | |||
| 211 | (define %test-installed-os | ||
| 212 | (system-test | ||
| 213 | (name "installed-os") | ||
| 214 | (description | ||
| 215 | "Test basic functionality of an OS installed like one would do by hand. | ||
| 216 | This test is expensive in terms of CPU and storage usage since we need to | ||
| 217 | build (current-guix) and then store a couple of full system images.") | ||
| 218 | (value | ||
| 219 | (mlet* %store-monad ((image (run-install %minimal-os %minimal-os-source)) | ||
| 220 | (command (qemu-command/writable-image image))) | ||
| 221 | (run-basic-test %minimal-os command | ||
| 222 | "installed-os"))))) | ||
| 223 | |||
| 224 | |||
| 225 | (define-os-with-source (%encrypted-root-os %encrypted-root-os-source) | ||
| 226 | ;; The OS we want to install. | ||
| 227 | (use-modules (gnu) (gnu tests) (srfi srfi-1)) | ||
| 228 | |||
| 229 | (operating-system | ||
| 230 | (host-name "liberigilo") | ||
| 231 | (timezone "Europe/Paris") | ||
| 232 | (locale "en_US.UTF-8") | ||
| 233 | |||
| 234 | (bootloader (grub-configuration (device "/dev/vdb"))) | ||
| 235 | (kernel-arguments '("console=ttyS0")) | ||
| 236 | (file-systems (cons (file-system | ||
| 237 | (device "/dev/mapper/the-root-device") | ||
| 238 | (title 'device) | ||
| 239 | (mount-point "/") | ||
| 240 | (type "ext4")) | ||
| 241 | %base-file-systems)) | ||
| 242 | (mapped-devices (list (mapped-device | ||
| 243 | (source "REPLACE-WITH-LUKS-UUID") | ||
| 244 | (target "the-root-device") | ||
| 245 | (type luks-device-mapping)))) | ||
| 246 | (users (cons (user-account | ||
| 247 | (name "charlie") | ||
| 248 | (group "users") | ||
| 249 | (home-directory "/home/charlie") | ||
| 250 | (supplementary-groups '("wheel" "audio" "video"))) | ||
| 251 | %base-user-accounts)) | ||
| 252 | (services (cons (service marionette-service-type | ||
| 253 | (marionette-configuration | ||
| 254 | (imported-modules '((gnu services herd) | ||
| 255 | (guix combinators))))) | ||
| 256 | %base-services)))) | ||
| 257 | |||
| 258 | (define %encrypted-root-installation-script | ||
| 259 | ;; Shell script of a simple installation. | ||
| 260 | "\ | ||
| 158 | . /etc/profile | 261 | . /etc/profile |
| 159 | set -e -x; | 262 | set -e -x |
| 160 | guix --version | 263 | guix --version |
| 161 | guix gc --list-live | grep isc-dhcp | ||
| 162 | 264 | ||
| 163 | export GUIX_BUILD_OPTIONS=--no-grafts | 265 | export GUIX_BUILD_OPTIONS=--no-grafts |
| 164 | guix build isc-dhcp | 266 | ls -l /run/current-system/gc-roots |
| 165 | parted --script /dev/vdb mklabel gpt \\ | 267 | parted --script /dev/vdb mklabel gpt \\ |
| 166 | mkpart primary ext2 1M 3M \\ | 268 | mkpart primary ext2 1M 3M \\ |
| 167 | mkpart primary ext2 3M 1G \\ | 269 | mkpart primary ext2 3M 1G \\ |
| 168 | set 1 boot on \\ | 270 | set 1 boot on \\ |
| 169 | set 1 bios_grub on | 271 | set 1 bios_grub on |
| 170 | mkfs.ext4 -L my-root /dev/vdb2 | 272 | echo -n thepassphrase | cryptsetup luksFormat -q /dev/vdb2 - |
| 171 | ls -l /dev/vdb | 273 | echo -n thepassphrase | \\ |
| 172 | mount /dev/vdb2 /mnt | 274 | cryptsetup open --type luks --key-file - /dev/vdb2 the-root-device |
| 173 | df -h /mnt | 275 | mkfs.ext4 -L my-root /dev/mapper/the-root-device |
| 276 | mount LABEL=my-root /mnt | ||
| 174 | herd start cow-store /mnt | 277 | herd start cow-store /mnt |
| 175 | mkdir /mnt/etc | 278 | mkdir /mnt/etc |
| 176 | cp /etc/litl-config.scm /mnt/etc/config.scm | 279 | cp /etc/target-config.scm /mnt/etc/config.scm |
| 280 | cat /mnt/etc/config | ||
| 281 | luks_uuid=`cryptsetup luksUUID /dev/vdb2` | ||
| 282 | sed -i /mnt/etc/config.scm \\ | ||
| 283 | -e \"s/\\\"REPLACE-WITH-LUKS-UUID\\\"/(uuid \\\"$luks_uuid\\\")/g\" | ||
| 284 | guix system build /mnt/etc/config.scm | ||
| 177 | guix system init /mnt/etc/config.scm /mnt --no-substitutes | 285 | guix system init /mnt/etc/config.scm /mnt --no-substitutes |
| 178 | sync | 286 | sync |
| 179 | reboot\n")) | 287 | reboot\n") |
| 180 | marionette)))) | ||
| 181 | |||
| 182 | (gexp->derivation "installation" install | ||
| 183 | #:modules '((guix build utils) | ||
| 184 | (gnu build marionette))))) | ||
| 185 | 288 | ||
| 186 | 289 | (define %test-encrypted-os | |
| 187 | (define %test-installed-os | ||
| 188 | (system-test | 290 | (system-test |
| 189 | (name "installed-os") | 291 | (name "encrypted-root-os") |
| 190 | (description | 292 | (description |
| 191 | "Test basic functionality of an OS installed like one would do by hand. | 293 | "Test basic functionality of an OS installed like one would do by hand. |
| 192 | This test is expensive in terms of CPU and storage usage since we need to | 294 | This test is expensive in terms of CPU and storage usage since we need to |
| 193 | build (current-guix) and then store a couple of full system images.") | 295 | build (current-guix) and then store a couple of full system images.") |
| 194 | (value | 296 | (value |
| 195 | (mlet %store-monad ((image (run-install)) | 297 | (mlet* %store-monad ((image (run-install %encrypted-root-os |
| 196 | (system (current-system))) | 298 | %encrypted-root-os-source |
| 197 | (run-basic-test %minimal-os | 299 | #:script |
| 198 | #~(let ((image #$image)) | 300 | %encrypted-root-installation-script)) |
| 199 | ;; First we need a writable copy of the image. | 301 | (command (qemu-command/writable-image image))) |
| 200 | (format #t "copying image '~a'...~%" image) | 302 | (run-basic-test %encrypted-root-os command "encrypted-root-os"))))) |
| 201 | (copy-file image "disk.img") | ||
| 202 | (chmod "disk.img" #o644) | ||
| 203 | `(,(string-append #$qemu-minimal "/bin/" | ||
| 204 | #$(qemu-command system)) | ||
| 205 | ,@(if (file-exists? "/dev/kvm") | ||
| 206 | '("-enable-kvm") | ||
| 207 | '()) | ||
| 208 | "-no-reboot" "-m" "256" | ||
| 209 | "-drive" "file=disk.img,if=virtio")) | ||
| 210 | "installed-os"))))) | ||
| 211 | 303 | ||
| 212 | ;;; install.scm ends here | 304 | ;;; install.scm ends here |
diff --git a/guix/build/download.scm b/guix/build/download.scm index bd011ce8784..103e784bb13 100644 --- a/guix/build/download.scm +++ b/guix/build/download.scm | |||
| @@ -23,9 +23,11 @@ | |||
| 23 | #:use-module (web http) | 23 | #:use-module (web http) |
| 24 | #:use-module ((web client) #:hide (open-socket-for-uri)) | 24 | #:use-module ((web client) #:hide (open-socket-for-uri)) |
| 25 | #:use-module (web response) | 25 | #:use-module (web response) |
| 26 | #:use-module (guix base64) | ||
| 26 | #:use-module (guix ftp-client) | 27 | #:use-module (guix ftp-client) |
| 27 | #:use-module (guix build utils) | 28 | #:use-module (guix build utils) |
| 28 | #:use-module (rnrs io ports) | 29 | #:use-module (rnrs io ports) |
| 30 | #:use-module (rnrs bytevectors) | ||
| 29 | #:use-module (srfi srfi-1) | 31 | #:use-module (srfi srfi-1) |
| 30 | #:use-module (srfi srfi-11) | 32 | #:use-module (srfi srfi-11) |
| 31 | #:use-module (srfi srfi-19) | 33 | #:use-module (srfi srfi-19) |
| @@ -598,14 +600,22 @@ FILE on success." | |||
| 598 | (string>? (version) "2.0.7"))) | 600 | (string>? (version) "2.0.7"))) |
| 599 | 601 | ||
| 600 | (define headers | 602 | (define headers |
| 601 | '(;; Some web sites, such as http://dist.schmorp.de, would block you if | 603 | `(;; Some web sites, such as http://dist.schmorp.de, would block you if |
| 602 | ;; there's no 'User-Agent' header, presumably on the assumption that | 604 | ;; there's no 'User-Agent' header, presumably on the assumption that |
| 603 | ;; you're a spammer. So work around that. | 605 | ;; you're a spammer. So work around that. |
| 604 | (User-Agent . "GNU Guile") | 606 | (User-Agent . "GNU Guile") |
| 605 | 607 | ||
| 606 | ;; Some servers, such as https://alioth.debian.org, return "406 Not | 608 | ;; Some servers, such as https://alioth.debian.org, return "406 Not |
| 607 | ;; Acceptable" when not explicitly told that everything is accepted. | 609 | ;; Acceptable" when not explicitly told that everything is accepted. |
| 608 | (Accept . "*/*"))) | 610 | (Accept . "*/*") |
| 611 | |||
| 612 | ;; Basic authentication, if needed. | ||
| 613 | ,@(match (uri-userinfo uri) | ||
| 614 | ((? string? str) | ||
| 615 | `((Authorization . ,(string-append "Basic " | ||
| 616 | (base64-encode | ||
| 617 | (string->utf8 str)))))) | ||
| 618 | (_ '())))) | ||
| 609 | 619 | ||
| 610 | (let*-values (((connection) | 620 | (let*-values (((connection) |
| 611 | (open-connection-for-uri uri #:timeout timeout)) | 621 | (open-connection-for-uri uri #:timeout timeout)) |
diff --git a/guix/build/svn.scm b/guix/build/svn.scm index 74fe084da5c..31c30edaf58 100644 --- a/guix/build/svn.scm +++ b/guix/build/svn.scm | |||
| @@ -29,15 +29,22 @@ | |||
| 29 | ;;; Code: | 29 | ;;; Code: |
| 30 | 30 | ||
| 31 | (define* (svn-fetch url revision directory | 31 | (define* (svn-fetch url revision directory |
| 32 | #:key (svn-command "svn")) | 32 | #:key (svn-command "svn") |
| 33 | (user-name #f) | ||
| 34 | (password #f)) | ||
| 33 | "Fetch REVISION from URL into DIRECTORY. REVISION must be an integer, and a | 35 | "Fetch REVISION from URL into DIRECTORY. REVISION must be an integer, and a |
| 34 | valid Subversion revision. Return #t on success, #f otherwise." | 36 | valid Subversion revision. Return #t on success, #f otherwise." |
| 35 | (and (zero? (system* svn-command "checkout" "--non-interactive" | 37 | (and (zero? (apply system* svn-command |
| 36 | ;; Trust the server certificate. This is OK as we | 38 | "checkout" "--non-interactive" |
| 37 | ;; verify the checksum later. This can be removed when | 39 | ;; Trust the server certificate. This is OK as we |
| 38 | ;; ca-certificates package is added. | 40 | ;; verify the checksum later. This can be removed when |
| 39 | "--trust-server-cert" "-r" (number->string revision) | 41 | ;; ca-certificates package is added. |
| 40 | url directory)) | 42 | "--trust-server-cert" "-r" (number->string revision) |
| 43 | `(,@(if (and user-name password) | ||
| 44 | (list (string-append "--username=" user-name) | ||
| 45 | (string-append "--password=" password)) | ||
| 46 | '()) | ||
| 47 | ,url ,directory))) | ||
| 41 | (with-directory-excursion directory | 48 | (with-directory-excursion directory |
| 42 | (begin | 49 | (begin |
| 43 | ;; The contents of '.svn' vary as a function of the current status | 50 | ;; The contents of '.svn' vary as a function of the current status |
diff --git a/guix/config.scm.in b/guix/config.scm.in index adffa0cfec6..6d42cf233c3 100644 --- a/guix/config.scm.in +++ b/guix/config.scm.in | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> | 2 | ;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> |
| 3 | ;;; | 3 | ;;; |
| 4 | ;;; This file is part of GNU Guix. | 4 | ;;; This file is part of GNU Guix. |
| 5 | ;;; | 5 | ;;; |
| @@ -27,6 +27,7 @@ | |||
| 27 | %guix-register-program | 27 | %guix-register-program |
| 28 | %system | 28 | %system |
| 29 | %libgcrypt | 29 | %libgcrypt |
| 30 | %libz | ||
| 30 | %nix-instantiate | 31 | %nix-instantiate |
| 31 | %gzip | 32 | %gzip |
| 32 | %bzip2 | 33 | %bzip2 |
| @@ -72,6 +73,9 @@ | |||
| 72 | (define %libgcrypt | 73 | (define %libgcrypt |
| 73 | "@LIBGCRYPT@") | 74 | "@LIBGCRYPT@") |
| 74 | 75 | ||
| 76 | (define %libz | ||
| 77 | "@LIBZ@") | ||
| 78 | |||
| 75 | (define %nix-instantiate | 79 | (define %nix-instantiate |
| 76 | "@NIX_INSTANTIATE@") | 80 | "@NIX_INSTANTIATE@") |
| 77 | 81 | ||
diff --git a/guix/cvs-download.scm b/guix/cvs-download.scm index 72478dd2c24..85744c5b557 100644 --- a/guix/cvs-download.scm +++ b/guix/cvs-download.scm | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org> | 2 | ;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> |
| 3 | ;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in> | 3 | ;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in> |
| 4 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> | 4 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> |
| 5 | ;;; | 5 | ;;; |
| @@ -60,13 +60,15 @@ | |||
| 60 | object. The output is expected to have recursive hash HASH of type | 60 | object. The output is expected to have recursive hash HASH of type |
| 61 | HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." | 61 | HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." |
| 62 | (define build | 62 | (define build |
| 63 | #~(begin | 63 | (with-imported-modules '((guix build cvs) |
| 64 | (use-modules (guix build cvs)) | 64 | (guix build utils)) |
| 65 | (cvs-fetch '#$(cvs-reference-root-directory ref) | 65 | #~(begin |
| 66 | '#$(cvs-reference-module ref) | 66 | (use-modules (guix build cvs)) |
| 67 | '#$(cvs-reference-revision ref) | 67 | (cvs-fetch '#$(cvs-reference-root-directory ref) |
| 68 | #$output | 68 | '#$(cvs-reference-module ref) |
| 69 | #:cvs-command (string-append #+cvs "/bin/cvs")))) | 69 | '#$(cvs-reference-revision ref) |
| 70 | #$output | ||
| 71 | #:cvs-command (string-append #+cvs "/bin/cvs"))))) | ||
| 70 | 72 | ||
| 71 | (mlet %store-monad ((guile (package->derivation guile system))) | 73 | (mlet %store-monad ((guile (package->derivation guile system))) |
| 72 | (gexp->derivation (or name "cvs-checkout") build | 74 | (gexp->derivation (or name "cvs-checkout") build |
| @@ -74,8 +76,6 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." | |||
| 74 | #:hash-algo hash-algo | 76 | #:hash-algo hash-algo |
| 75 | #:hash hash | 77 | #:hash hash |
| 76 | #:recursive? #t | 78 | #:recursive? #t |
| 77 | #:modules '((guix build cvs) | ||
| 78 | (guix build utils)) | ||
| 79 | #:guile-for-build guile | 79 | #:guile-for-build guile |
| 80 | #:local-build? #t))) | 80 | #:local-build? #t))) |
| 81 | 81 | ||
diff --git a/guix/download.scm b/guix/download.scm index 9b238dcbdfd..bcb043ba805 100644 --- a/guix/download.scm +++ b/guix/download.scm | |||
| @@ -99,27 +99,23 @@ | |||
| 99 | "http://www.centervenus.com/mirrors/nongnu/" | 99 | "http://www.centervenus.com/mirrors/nongnu/" |
| 100 | "http://download.savannah.gnu.org/releases-noredirect/") | 100 | "http://download.savannah.gnu.org/releases-noredirect/") |
| 101 | (sourceforge ; https://sourceforge.net/p/forge/documentation/Mirrors/ | 101 | (sourceforge ; https://sourceforge.net/p/forge/documentation/Mirrors/ |
| 102 | "http://prdownloads.sourceforge.net/" | 102 | "http://ufpr.dl.sourceforge.net/project/" |
| 103 | "http://heanet.dl.sourceforge.net/sourceforge/" | 103 | "http://heanet.dl.sourceforge.net/project/" |
| 104 | "http://dfn.dl.sourceforge.net/sourceforge/" | 104 | "http://freefr.dl.sourceforge.net/project/" |
| 105 | "http://freefr.dl.sourceforge.net/sourceforge/" | 105 | "http://internode.dl.sourceforge.net/project/" |
| 106 | "http://internode.dl.sourceforge.net/sourceforge/" | 106 | "http://jaist.dl.sourceforge.net/project/" |
| 107 | "http://iweb.dl.sourceforge.net/sourceforge/" | 107 | "http://kent.dl.sourceforge.net/project/" |
| 108 | "http://jaist.dl.sourceforge.net/sourceforge/" | 108 | "http://liquidtelecom.dl.sourceforge.net/project/" |
| 109 | "http://kaz.dl.sourceforge.net/sourceforge/" | 109 | "http://nbtelecom.dl.sourceforge.net/project/" |
| 110 | "http://kent.dl.sourceforge.net/sourceforge/" | 110 | "http://nchc.dl.sourceforge.net/project/" |
| 111 | "http://liquidtelecom.dl.sourceforge.net/sourceforge/" | 111 | "http://ncu.dl.sourceforge.net/project/" |
| 112 | "http://nbtelecom.dl.sourceforge.net/sourceforge/" | 112 | "http://netcologne.dl.sourceforge.net/project/" |
| 113 | "http://nchc.dl.sourceforge.net/sourceforge/" | 113 | "http://netix.dl.sourceforge.net/project/" |
| 114 | "http://ncu.dl.sourceforge.net/sourceforge/" | 114 | "http://pilotfiber.dl.sourceforge.net/project/" |
| 115 | "http://netcologne.dl.sourceforge.net/sourceforge/" | 115 | "http://superb-sea2.dl.sourceforge.net/project/" |
| 116 | "http://netix.dl.sourceforge.net/sourceforge/" | 116 | "http://tenet.dl.sourceforge.net/project/" |
| 117 | "http://pilotfiber.dl.sourceforge.net/sourceforge/" | 117 | "http://vorboss.dl.sourceforge.net/project/" |
| 118 | "http://superb-sea2.dl.sourceforge.net/sourceforge/" | 118 | "http://netassist.dl.sourceforge.net/project/") |
| 119 | "http://tenet.dl.sourceforge.net/sourceforge/" | ||
| 120 | "http://ufpr.dl.sourceforge.net/sourceforge/" | ||
| 121 | "http://vorboss.dl.sourceforge.net/sourceforge/" | ||
| 122 | "http://netassist.dl.sourceforge.net/sourceforge/") | ||
| 123 | (kernel.org | 119 | (kernel.org |
| 124 | "http://www.all.kernel.org/pub/" | 120 | "http://www.all.kernel.org/pub/" |
| 125 | "http://ramses.wh2.tu-dresden.de/pub/mirrors/kernel.org/" | 121 | "http://ramses.wh2.tu-dresden.de/pub/mirrors/kernel.org/" |
| @@ -168,7 +164,7 @@ | |||
| 168 | "http://x.cs.pu.edu.tw/" | 164 | "http://x.cs.pu.edu.tw/" |
| 169 | "ftp://ftp.is.co.za/pub/x.org") ; South Africa | 165 | "ftp://ftp.is.co.za/pub/x.org") ; South Africa |
| 170 | (cpan ; from http://www.cpan.org/SITES.html | 166 | (cpan ; from http://www.cpan.org/SITES.html |
| 171 | "http://cpan.enstimac.fr/" | 167 | "http://mirror.ibcp.fr/pub/CPAN/" |
| 172 | "ftp://ftp.ciril.fr/pub/cpan/" | 168 | "ftp://ftp.ciril.fr/pub/cpan/" |
| 173 | "ftp://artfiles.org/cpan.org/" | 169 | "ftp://artfiles.org/cpan.org/" |
| 174 | "http://www.cpan.org/" | 170 | "http://www.cpan.org/" |
| @@ -286,33 +282,39 @@ in the store." | |||
| 286 | (any https? url))))) | 282 | (any https? url))))) |
| 287 | 283 | ||
| 288 | (define builder | 284 | (define builder |
| 289 | #~(begin | 285 | (with-imported-modules '((guix build download) |
| 290 | #+(if need-gnutls? | 286 | (guix build utils) |
| 287 | (guix ftp-client) | ||
| 288 | (guix base32) | ||
| 289 | (guix base64)) | ||
| 290 | #~(begin | ||
| 291 | #+(if need-gnutls? | ||
| 291 | 292 | ||
| 292 | ;; Add GnuTLS to the inputs and to the load path. | 293 | ;; Add GnuTLS to the inputs and to the load path. |
| 293 | #~(eval-when (load expand eval) | 294 | #~(eval-when (load expand eval) |
| 294 | (set! %load-path | 295 | (set! %load-path |
| 295 | (cons (string-append #+(gnutls-package) | 296 | (cons (string-append #+(gnutls-package) |
| 296 | "/share/guile/site/" | 297 | "/share/guile/site/" |
| 297 | (effective-version)) | 298 | (effective-version)) |
| 298 | %load-path))) | 299 | %load-path))) |
| 299 | #~#t) | 300 | #~#t) |
| 300 | 301 | ||
| 301 | (use-modules (guix build download) | 302 | (use-modules (guix build download) |
| 302 | (guix base32)) | 303 | (guix base32)) |
| 303 | 304 | ||
| 304 | (let ((value-from-environment (lambda (variable) | 305 | (let ((value-from-environment (lambda (variable) |
| 305 | (call-with-input-string | 306 | (call-with-input-string |
| 306 | (getenv variable) | 307 | (getenv variable) |
| 307 | read)))) | 308 | read)))) |
| 308 | (url-fetch (value-from-environment "guix download url") | 309 | (url-fetch (value-from-environment "guix download url") |
| 309 | #$output | 310 | #$output |
| 310 | #:mirrors (call-with-input-file #$%mirror-file read) | 311 | #:mirrors (call-with-input-file #$%mirror-file read) |
| 311 | 312 | ||
| 312 | ;; Content-addressed mirrors. | 313 | ;; Content-addressed mirrors. |
| 313 | #:hashes (value-from-environment "guix download hashes") | 314 | #:hashes |
| 314 | #:content-addressed-mirrors | 315 | (value-from-environment "guix download hashes") |
| 315 | (primitive-load #$%content-addressed-mirror-file))))) | 316 | #:content-addressed-mirrors |
| 317 | (primitive-load #$%content-addressed-mirror-file)))))) | ||
| 316 | 318 | ||
| 317 | (let ((uri (and (string? url) (string->uri url)))) | 319 | (let ((uri (and (string? url) (string->uri url)))) |
| 318 | (if (or (and (string? url) (not uri)) | 320 | (if (or (and (string? url) (not uri)) |
| @@ -325,10 +327,6 @@ in the store." | |||
| 325 | #:system system | 327 | #:system system |
| 326 | #:hash-algo hash-algo | 328 | #:hash-algo hash-algo |
| 327 | #:hash hash | 329 | #:hash hash |
| 328 | #:modules '((guix build download) | ||
| 329 | (guix build utils) | ||
| 330 | (guix ftp-client) | ||
| 331 | (guix base32)) | ||
| 332 | 330 | ||
| 333 | ;; Use environment variables and a fixed script | 331 | ;; Use environment variables and a fixed script |
| 334 | ;; name so there's only one script in store for | 332 | ;; name so there's only one script in store for |
diff --git a/guix/gexp.scm b/guix/gexp.scm index b929b79c26c..302879fb427 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm | |||
| @@ -29,6 +29,7 @@ | |||
| 29 | #:use-module (ice-9 match) | 29 | #:use-module (ice-9 match) |
| 30 | #:export (gexp | 30 | #:export (gexp |
| 31 | gexp? | 31 | gexp? |
| 32 | with-imported-modules | ||
| 32 | 33 | ||
| 33 | gexp-input | 34 | gexp-input |
| 34 | gexp-input? | 35 | gexp-input? |
| @@ -49,14 +50,12 @@ | |||
| 49 | computed-file? | 50 | computed-file? |
| 50 | computed-file-name | 51 | computed-file-name |
| 51 | computed-file-gexp | 52 | computed-file-gexp |
| 52 | computed-file-modules | ||
| 53 | computed-file-options | 53 | computed-file-options |
| 54 | 54 | ||
| 55 | program-file | 55 | program-file |
| 56 | program-file? | 56 | program-file? |
| 57 | program-file-name | 57 | program-file-name |
| 58 | program-file-gexp | 58 | program-file-gexp |
| 59 | program-file-modules | ||
| 60 | program-file-guile | 59 | program-file-guile |
| 61 | 60 | ||
| 62 | scheme-file | 61 | scheme-file |
| @@ -98,11 +97,11 @@ | |||
| 98 | 97 | ||
| 99 | ;; "G expressions". | 98 | ;; "G expressions". |
| 100 | (define-record-type <gexp> | 99 | (define-record-type <gexp> |
| 101 | (make-gexp references natives proc) | 100 | (make-gexp references modules proc) |
| 102 | gexp? | 101 | gexp? |
| 103 | (references gexp-references) ; ((DRV-OR-PKG OUTPUT) ...) | 102 | (references gexp-references) ;list of <gexp-input> |
| 104 | (natives gexp-native-references) ; ((DRV-OR-PKG OUTPUT) ...) | 103 | (modules gexp-self-modules) ;list of module names |
| 105 | (proc gexp-proc)) ; procedure | 104 | (proc gexp-proc)) ;procedure |
| 106 | 105 | ||
| 107 | (define (write-gexp gexp port) | 106 | (define (write-gexp gexp port) |
| 108 | "Write GEXP on PORT." | 107 | "Write GEXP on PORT." |
| @@ -113,8 +112,7 @@ | |||
| 113 | ;; tries to use 'append' on that, which fails with wrong-type-arg. | 112 | ;; tries to use 'append' on that, which fails with wrong-type-arg. |
| 114 | (false-if-exception | 113 | (false-if-exception |
| 115 | (write (apply (gexp-proc gexp) | 114 | (write (apply (gexp-proc gexp) |
| 116 | (append (gexp-references gexp) | 115 | (gexp-references gexp)) |
| 117 | (gexp-native-references gexp))) | ||
| 118 | port)) | 116 | port)) |
| 119 | (format port " ~a>" | 117 | (format port " ~a>" |
| 120 | (number->string (object-address gexp) 16))) | 118 | (number->string (object-address gexp) 16))) |
| @@ -273,55 +271,49 @@ This is the declarative counterpart of 'text-file'." | |||
| 273 | (text-file name content references)))) | 271 | (text-file name content references)))) |
| 274 | 272 | ||
| 275 | (define-record-type <computed-file> | 273 | (define-record-type <computed-file> |
| 276 | (%computed-file name gexp modules options) | 274 | (%computed-file name gexp options) |
| 277 | computed-file? | 275 | computed-file? |
| 278 | (name computed-file-name) ;string | 276 | (name computed-file-name) ;string |
| 279 | (gexp computed-file-gexp) ;gexp | 277 | (gexp computed-file-gexp) ;gexp |
| 280 | (modules computed-file-modules) ;list of module names | ||
| 281 | (options computed-file-options)) ;list of arguments | 278 | (options computed-file-options)) ;list of arguments |
| 282 | 279 | ||
| 283 | (define* (computed-file name gexp | 280 | (define* (computed-file name gexp |
| 284 | #:key (modules '()) (options '(#:local-build? #t))) | 281 | #:key (options '(#:local-build? #t))) |
| 285 | "Return an object representing the store item NAME, a file or directory | 282 | "Return an object representing the store item NAME, a file or directory |
| 286 | computed by GEXP. MODULES specifies the set of modules visible in the | 283 | computed by GEXP. OPTIONS is a list of additional arguments to pass |
| 287 | execution context of GEXP. OPTIONS is a list of additional arguments to pass | ||
| 288 | to 'gexp->derivation'. | 284 | to 'gexp->derivation'. |
| 289 | 285 | ||
| 290 | This is the declarative counterpart of 'gexp->derivation'." | 286 | This is the declarative counterpart of 'gexp->derivation'." |
| 291 | (%computed-file name gexp modules options)) | 287 | (%computed-file name gexp options)) |
| 292 | 288 | ||
| 293 | (define-gexp-compiler (computed-file-compiler (file computed-file?) | 289 | (define-gexp-compiler (computed-file-compiler (file computed-file?) |
| 294 | system target) | 290 | system target) |
| 295 | ;; Compile FILE by returning a derivation whose build expression is its | 291 | ;; Compile FILE by returning a derivation whose build expression is its |
| 296 | ;; gexp. | 292 | ;; gexp. |
| 297 | (match file | 293 | (match file |
| 298 | (($ <computed-file> name gexp modules options) | 294 | (($ <computed-file> name gexp options) |
| 299 | (apply gexp->derivation name gexp #:modules modules options)))) | 295 | (apply gexp->derivation name gexp options)))) |
| 300 | 296 | ||
| 301 | (define-record-type <program-file> | 297 | (define-record-type <program-file> |
| 302 | (%program-file name gexp modules guile) | 298 | (%program-file name gexp guile) |
| 303 | program-file? | 299 | program-file? |
| 304 | (name program-file-name) ;string | 300 | (name program-file-name) ;string |
| 305 | (gexp program-file-gexp) ;gexp | 301 | (gexp program-file-gexp) ;gexp |
| 306 | (modules program-file-modules) ;list of module names | ||
| 307 | (guile program-file-guile)) ;package | 302 | (guile program-file-guile)) ;package |
| 308 | 303 | ||
| 309 | (define* (program-file name gexp | 304 | (define* (program-file name gexp #:key (guile #f)) |
| 310 | #:key (modules '()) (guile #f)) | ||
| 311 | "Return an object representing the executable store item NAME that runs | 305 | "Return an object representing the executable store item NAME that runs |
| 312 | GEXP. GUILE is the Guile package used to execute that script, and MODULES is | 306 | GEXP. GUILE is the Guile package used to execute that script. |
| 313 | the list of modules visible to that script. | ||
| 314 | 307 | ||
| 315 | This is the declarative counterpart of 'gexp->script'." | 308 | This is the declarative counterpart of 'gexp->script'." |
| 316 | (%program-file name gexp modules guile)) | 309 | (%program-file name gexp guile)) |
| 317 | 310 | ||
| 318 | (define-gexp-compiler (program-file-compiler (file program-file?) | 311 | (define-gexp-compiler (program-file-compiler (file program-file?) |
| 319 | system target) | 312 | system target) |
| 320 | ;; Compile FILE by returning a derivation that builds the script. | 313 | ;; Compile FILE by returning a derivation that builds the script. |
| 321 | (match file | 314 | (match file |
| 322 | (($ <program-file> name gexp modules guile) | 315 | (($ <program-file> name gexp guile) |
| 323 | (gexp->script name gexp | 316 | (gexp->script name gexp |
| 324 | #:modules modules | ||
| 325 | #:guile (or guile (default-guile)))))) | 317 | #:guile (or guile (default-guile)))))) |
| 326 | 318 | ||
| 327 | (define-record-type <scheme-file> | 319 | (define-record-type <scheme-file> |
| @@ -386,6 +378,23 @@ whether this should be considered a \"native\" input or not." | |||
| 386 | 378 | ||
| 387 | (set-record-type-printer! <gexp-output> write-gexp-output) | 379 | (set-record-type-printer! <gexp-output> write-gexp-output) |
| 388 | 380 | ||
| 381 | (define (gexp-modules gexp) | ||
| 382 | "Return the list of Guile module names GEXP relies on." | ||
| 383 | (delete-duplicates | ||
| 384 | (append (gexp-self-modules gexp) | ||
| 385 | (append-map (match-lambda | ||
| 386 | (($ <gexp-input> (? gexp? exp)) | ||
| 387 | (gexp-modules exp)) | ||
| 388 | (($ <gexp-input> (lst ...)) | ||
| 389 | (append-map (lambda (item) | ||
| 390 | (if (gexp? item) | ||
| 391 | (gexp-modules item) | ||
| 392 | '())) | ||
| 393 | lst)) | ||
| 394 | (_ | ||
| 395 | '())) | ||
| 396 | (gexp-references gexp))))) | ||
| 397 | |||
| 389 | (define raw-derivation | 398 | (define raw-derivation |
| 390 | (store-lift derivation)) | 399 | (store-lift derivation)) |
| 391 | 400 | ||
| @@ -467,7 +476,8 @@ derivation) on SYSTEM; EXP is stored in a file called SCRIPT-NAME. When | |||
| 467 | TARGET is true, it is used as the cross-compilation target triplet for | 476 | TARGET is true, it is used as the cross-compilation target triplet for |
| 468 | packages referred to by EXP. | 477 | packages referred to by EXP. |
| 469 | 478 | ||
| 470 | Make MODULES available in the evaluation context of EXP; MODULES is a list of | 479 | MODULES is deprecated in favor of 'with-imported-modules'. Its meaning is to |
| 480 | make MODULES available in the evaluation context of EXP; MODULES is a list of | ||
| 471 | names of Guile modules searched in MODULE-PATH to be copied in the store, | 481 | names of Guile modules searched in MODULE-PATH to be copied in the store, |
| 472 | compiled, and made available in the load path during the execution of | 482 | compiled, and made available in the load path during the execution of |
| 473 | EXP---e.g., '((guix build utils) (guix build gnu-build-system)). | 483 | EXP---e.g., '((guix build utils) (guix build gnu-build-system)). |
| @@ -496,7 +506,9 @@ Similarly for DISALLOWED-REFERENCES, which can list items that must not be | |||
| 496 | referenced by the outputs. | 506 | referenced by the outputs. |
| 497 | 507 | ||
| 498 | The other arguments are as for 'derivation'." | 508 | The other arguments are as for 'derivation'." |
| 499 | (define %modules modules) | 509 | (define %modules |
| 510 | (delete-duplicates | ||
| 511 | (append modules (gexp-modules exp)))) | ||
| 500 | (define outputs (gexp-outputs exp)) | 512 | (define outputs (gexp-outputs exp)) |
| 501 | 513 | ||
| 502 | (define (graphs-file-names graphs) | 514 | (define (graphs-file-names graphs) |
| @@ -630,11 +642,15 @@ references; otherwise, return only non-native references." | |||
| 630 | ;; Ignore references to other kinds of objects. | 642 | ;; Ignore references to other kinds of objects. |
| 631 | result))) | 643 | result))) |
| 632 | 644 | ||
| 645 | (define (native-input? x) | ||
| 646 | (and (gexp-input? x) | ||
| 647 | (gexp-input-native? x))) | ||
| 648 | |||
| 633 | (fold-right add-reference-inputs | 649 | (fold-right add-reference-inputs |
| 634 | '() | 650 | '() |
| 635 | (if native? | 651 | (if native? |
| 636 | (gexp-native-references exp) | 652 | (filter native-input? (gexp-references exp)) |
| 637 | (gexp-references exp)))) | 653 | (remove native-input? (gexp-references exp))))) |
| 638 | 654 | ||
| 639 | (define gexp-native-inputs | 655 | (define gexp-native-inputs |
| 640 | (cut gexp-inputs <> #:native? #t)) | 656 | (cut gexp-inputs <> #:native? #t)) |
| @@ -687,7 +703,7 @@ and in the current monad setting (system type, etc.)" | |||
| 687 | (if (gexp-input? ref) | 703 | (if (gexp-input? ref) |
| 688 | ref | 704 | ref |
| 689 | (%gexp-input ref "out" n?)) | 705 | (%gexp-input ref "out" n?)) |
| 690 | native?)) | 706 | (or n? native?))) |
| 691 | refs))) | 707 | refs))) |
| 692 | (($ <gexp-input> (? struct? thing) output n?) | 708 | (($ <gexp-input> (? struct? thing) output n?) |
| 693 | (let ((target (if (or n? native?) #f target))) | 709 | (let ((target (if (or n? native?) #f target))) |
| @@ -706,9 +722,7 @@ and in the current monad setting (system type, etc.)" | |||
| 706 | 722 | ||
| 707 | (mlet %store-monad | 723 | (mlet %store-monad |
| 708 | ((args (sequence %store-monad | 724 | ((args (sequence %store-monad |
| 709 | (append (map reference->sexp (gexp-references exp)) | 725 | (map reference->sexp (gexp-references exp))))) |
| 710 | (map (cut reference->sexp <> #t) | ||
| 711 | (gexp-native-references exp)))))) | ||
| 712 | (return (apply (gexp-proc exp) args)))) | 726 | (return (apply (gexp-proc exp) args)))) |
| 713 | 727 | ||
| 714 | (define (syntax-location-string s) | 728 | (define (syntax-location-string s) |
| @@ -724,6 +738,17 @@ and in the current monad setting (system type, etc.)" | |||
| 724 | (simple-format #f "~a:~a" line column))) | 738 | (simple-format #f "~a:~a" line column))) |
| 725 | "<unknown location>"))) | 739 | "<unknown location>"))) |
| 726 | 740 | ||
| 741 | (define-syntax-parameter current-imported-modules | ||
| 742 | ;; Current list of imported modules. | ||
| 743 | (identifier-syntax '())) | ||
| 744 | |||
| 745 | (define-syntax-rule (with-imported-modules modules body ...) | ||
| 746 | "Mark the gexps defined in BODY... as requiring MODULES in their execution | ||
| 747 | environment." | ||
| 748 | (syntax-parameterize ((current-imported-modules | ||
| 749 | (identifier-syntax modules))) | ||
| 750 | body ...)) | ||
| 751 | |||
| 727 | (define-syntax gexp | 752 | (define-syntax gexp |
| 728 | (lambda (s) | 753 | (lambda (s) |
| 729 | (define (collect-escapes exp) | 754 | (define (collect-escapes exp) |
| @@ -741,33 +766,9 @@ and in the current monad setting (system type, etc.)" | |||
| 741 | ((ungexp-splicing _ ...) | 766 | ((ungexp-splicing _ ...) |
| 742 | (cons exp result)) | 767 | (cons exp result)) |
| 743 | ((ungexp-native _ ...) | 768 | ((ungexp-native _ ...) |
| 744 | result) | ||
| 745 | ((ungexp-native-splicing _ ...) | ||
| 746 | result) | ||
| 747 | ((exp0 exp ...) | ||
| 748 | (let ((result (loop #'exp0 result))) | ||
| 749 | (fold loop result #'(exp ...)))) | ||
| 750 | (_ | ||
| 751 | result)))) | ||
| 752 | |||
| 753 | (define (collect-native-escapes exp) | ||
| 754 | ;; Return all the 'ungexp-native' forms present in EXP. | ||
| 755 | (let loop ((exp exp) | ||
| 756 | (result '())) | ||
| 757 | (syntax-case exp (ungexp | ||
| 758 | ungexp-splicing | ||
| 759 | ungexp-native | ||
| 760 | ungexp-native-splicing) | ||
| 761 | ((ungexp-native _) | ||
| 762 | (cons exp result)) | ||
| 763 | ((ungexp-native _ _) | ||
| 764 | (cons exp result)) | 769 | (cons exp result)) |
| 765 | ((ungexp-native-splicing _ ...) | 770 | ((ungexp-native-splicing _ ...) |
| 766 | (cons exp result)) | 771 | (cons exp result)) |
| 767 | ((ungexp _ ...) | ||
| 768 | result) | ||
| 769 | ((ungexp-splicing _ ...) | ||
| 770 | result) | ||
| 771 | ((exp0 exp ...) | 772 | ((exp0 exp ...) |
| 772 | (let ((result (loop #'exp0 result))) | 773 | (let ((result (loop #'exp0 result))) |
| 773 | (fold loop result #'(exp ...)))) | 774 | (fold loop result #'(exp ...)))) |
| @@ -838,14 +839,12 @@ and in the current monad setting (system type, etc.)" | |||
| 838 | 839 | ||
| 839 | (syntax-case s (ungexp output) | 840 | (syntax-case s (ungexp output) |
| 840 | ((_ exp) | 841 | ((_ exp) |
| 841 | (let* ((normals (delete-duplicates (collect-escapes #'exp))) | 842 | (let* ((escapes (delete-duplicates (collect-escapes #'exp))) |
| 842 | (natives (delete-duplicates (collect-native-escapes #'exp))) | ||
| 843 | (escapes (append normals natives)) | ||
| 844 | (formals (generate-temporaries escapes)) | 843 | (formals (generate-temporaries escapes)) |
| 845 | (sexp (substitute-references #'exp (zip escapes formals))) | 844 | (sexp (substitute-references #'exp (zip escapes formals))) |
| 846 | (refs (map escape->ref normals)) | 845 | (refs (map escape->ref escapes))) |
| 847 | (nrefs (map escape->ref natives))) | 846 | #`(make-gexp (list #,@refs) |
| 848 | #`(make-gexp (list #,@refs) (list #,@nrefs) | 847 | current-imported-modules |
| 849 | (lambda #,formals | 848 | (lambda #,formals |
| 850 | #,sexp))))))) | 849 | #,sexp))))))) |
| 851 | 850 | ||
| @@ -983,12 +982,24 @@ they can refer to each other." | |||
| 983 | (module-ref (resolve-interface '(gnu packages commencement)) | 982 | (module-ref (resolve-interface '(gnu packages commencement)) |
| 984 | 'guile-final)) | 983 | 'guile-final)) |
| 985 | 984 | ||
| 986 | (define* (gexp->script name exp | 985 | (define (load-path-expression modules) |
| 987 | #:key (modules '()) (guile (default-guile))) | 986 | "Return as a monadic value a gexp that sets '%load-path' and |
| 988 | "Return an executable script NAME that runs EXP using GUILE with MODULES in | 987 | '%load-compiled-path' to point to MODULES, a list of module names." |
| 989 | its search path." | ||
| 990 | (mlet %store-monad ((modules (imported-modules modules)) | 988 | (mlet %store-monad ((modules (imported-modules modules)) |
| 991 | (compiled (compiled-modules modules))) | 989 | (compiled (compiled-modules modules))) |
| 990 | (return (gexp (eval-when (expand load eval) | ||
| 991 | (set! %load-path | ||
| 992 | (cons (ungexp modules) %load-path)) | ||
| 993 | (set! %load-compiled-path | ||
| 994 | (cons (ungexp compiled) | ||
| 995 | %load-compiled-path))))))) | ||
| 996 | |||
| 997 | (define* (gexp->script name exp | ||
| 998 | #:key (guile (default-guile))) | ||
| 999 | "Return an executable script NAME that runs EXP using GUILE, with EXP's | ||
| 1000 | imported modules in its search path." | ||
| 1001 | (mlet %store-monad ((set-load-path | ||
| 1002 | (load-path-expression (gexp-modules exp)))) | ||
| 992 | (gexp->derivation name | 1003 | (gexp->derivation name |
| 993 | (gexp | 1004 | (gexp |
| 994 | (call-with-output-file (ungexp output) | 1005 | (call-with-output-file (ungexp output) |
| @@ -1001,28 +1012,33 @@ its search path." | |||
| 1001 | "#!~a/bin/guile --no-auto-compile~%!#~%" | 1012 | "#!~a/bin/guile --no-auto-compile~%!#~%" |
| 1002 | (ungexp guile)) | 1013 | (ungexp guile)) |
| 1003 | 1014 | ||
| 1004 | ;; Write the 'eval-when' form so that it can be | 1015 | (write '(ungexp set-load-path) port) |
| 1005 | ;; compiled. | ||
| 1006 | (write | ||
| 1007 | '(eval-when (expand load eval) | ||
| 1008 | (set! %load-path | ||
| 1009 | (cons (ungexp modules) %load-path)) | ||
| 1010 | (set! %load-compiled-path | ||
| 1011 | (cons (ungexp compiled) | ||
| 1012 | %load-compiled-path))) | ||
| 1013 | port) | ||
| 1014 | (write '(ungexp exp) port) | 1016 | (write '(ungexp exp) port) |
| 1015 | (chmod port #o555))))))) | 1017 | (chmod port #o555))))))) |
| 1016 | 1018 | ||
| 1017 | (define (gexp->file name exp) | 1019 | (define* (gexp->file name exp #:key (set-load-path? #t)) |
| 1018 | "Return a derivation that builds a file NAME containing EXP." | 1020 | "Return a derivation that builds a file NAME containing EXP. When |
| 1019 | (gexp->derivation name | 1021 | SET-LOAD-PATH? is true, emit code in the resulting file to set '%load-path' |
| 1020 | (gexp | 1022 | and '%load-compiled-path' to honor EXP's imported modules." |
| 1021 | (call-with-output-file (ungexp output) | 1023 | (match (if set-load-path? (gexp-modules exp) '()) |
| 1022 | (lambda (port) | 1024 | (() ;zero modules |
| 1023 | (write '(ungexp exp) port)))) | 1025 | (gexp->derivation name |
| 1024 | #:local-build? #t | 1026 | (gexp |
| 1025 | #:substitutable? #f)) | 1027 | (call-with-output-file (ungexp output) |
| 1028 | (lambda (port) | ||
| 1029 | (write '(ungexp exp) port)))) | ||
| 1030 | #:local-build? #t | ||
| 1031 | #:substitutable? #f)) | ||
| 1032 | ((modules ...) | ||
| 1033 | (mlet %store-monad ((set-load-path (load-path-expression modules))) | ||
| 1034 | (gexp->derivation name | ||
| 1035 | (gexp | ||
| 1036 | (call-with-output-file (ungexp output) | ||
| 1037 | (lambda (port) | ||
| 1038 | (write '(ungexp set-load-path) port) | ||
| 1039 | (write '(ungexp exp) port)))) | ||
| 1040 | #:local-build? #t | ||
| 1041 | #:substitutable? #f))))) | ||
| 1026 | 1042 | ||
| 1027 | (define* (text-file* name #:rest text) | 1043 | (define* (text-file* name #:rest text) |
| 1028 | "Return as a monadic value a derivation that builds a text file containing | 1044 | "Return as a monadic value a derivation that builds a text file containing |
diff --git a/guix/git-download.scm b/guix/git-download.scm index 1e5c845e346..9cc6dd3d947 100644 --- a/guix/git-download.scm +++ b/guix/git-download.scm | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org> | 2 | ;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> |
| 3 | ;;; | 3 | ;;; |
| 4 | ;;; This file is part of GNU Guix. | 4 | ;;; This file is part of GNU Guix. |
| 5 | ;;; | 5 | ;;; |
| @@ -68,23 +68,25 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." | |||
| 68 | '())) | 68 | '())) |
| 69 | 69 | ||
| 70 | (define build | 70 | (define build |
| 71 | #~(begin | 71 | (with-imported-modules '((guix build git) |
| 72 | (use-modules (guix build git) | 72 | (guix build utils)) |
| 73 | (guix build utils) | 73 | #~(begin |
| 74 | (ice-9 match)) | 74 | (use-modules (guix build git) |
| 75 | (guix build utils) | ||
| 76 | (ice-9 match)) | ||
| 75 | 77 | ||
| 76 | ;; The 'git submodule' commands expects Coreutils, sed, | 78 | ;; The 'git submodule' commands expects Coreutils, sed, |
| 77 | ;; grep, etc. to be in $PATH. | 79 | ;; grep, etc. to be in $PATH. |
| 78 | (set-path-environment-variable "PATH" '("bin") | 80 | (set-path-environment-variable "PATH" '("bin") |
| 79 | (match '#+inputs | 81 | (match '#+inputs |
| 80 | (((names dirs) ...) | 82 | (((names dirs) ...) |
| 81 | dirs))) | 83 | dirs))) |
| 82 | 84 | ||
| 83 | (git-fetch '#$(git-reference-url ref) | 85 | (git-fetch '#$(git-reference-url ref) |
| 84 | '#$(git-reference-commit ref) | 86 | '#$(git-reference-commit ref) |
| 85 | #$output | 87 | #$output |
| 86 | #:recursive? '#$(git-reference-recursive? ref) | 88 | #:recursive? '#$(git-reference-recursive? ref) |
| 87 | #:git-command (string-append #+git "/bin/git")))) | 89 | #:git-command (string-append #+git "/bin/git"))))) |
| 88 | 90 | ||
| 89 | (mlet %store-monad ((guile (package->derivation guile system))) | 91 | (mlet %store-monad ((guile (package->derivation guile system))) |
| 90 | (gexp->derivation (or name "git-checkout") build | 92 | (gexp->derivation (or name "git-checkout") build |
| @@ -93,8 +95,6 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." | |||
| 93 | #:hash-algo hash-algo | 95 | #:hash-algo hash-algo |
| 94 | #:hash hash | 96 | #:hash hash |
| 95 | #:recursive? #t | 97 | #:recursive? #t |
| 96 | #:modules '((guix build git) | ||
| 97 | (guix build utils)) | ||
| 98 | #:guile-for-build guile | 98 | #:guile-for-build guile |
| 99 | #:local-build? #t))) | 99 | #:local-build? #t))) |
| 100 | 100 | ||
diff --git a/guix/hg-download.scm b/guix/hg-download.scm index f3e1d2906af..84209809058 100644 --- a/guix/hg-download.scm +++ b/guix/hg-download.scm | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org> | 2 | ;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> |
| 3 | ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> | 3 | ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> |
| 4 | ;;; | 4 | ;;; |
| 5 | ;;; This file is part of GNU Guix. | 5 | ;;; This file is part of GNU Guix. |
| @@ -60,15 +60,17 @@ | |||
| 60 | object. The output is expected to have recursive hash HASH of type | 60 | object. The output is expected to have recursive hash HASH of type |
| 61 | HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." | 61 | HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." |
| 62 | (define build | 62 | (define build |
| 63 | #~(begin | 63 | (with-imported-modules '((guix build hg) |
| 64 | (use-modules (guix build hg) | 64 | (guix build utils)) |
| 65 | (guix build utils) | 65 | #~(begin |
| 66 | (ice-9 match)) | 66 | (use-modules (guix build hg) |
| 67 | (guix build utils) | ||
| 68 | (ice-9 match)) | ||
| 67 | 69 | ||
| 68 | (hg-fetch '#$(hg-reference-url ref) | 70 | (hg-fetch '#$(hg-reference-url ref) |
| 69 | '#$(hg-reference-changeset ref) | 71 | '#$(hg-reference-changeset ref) |
| 70 | #$output | 72 | #$output |
| 71 | #:hg-command (string-append #+hg "/bin/hg")))) | 73 | #:hg-command (string-append #+hg "/bin/hg"))))) |
| 72 | 74 | ||
| 73 | (mlet %store-monad ((guile (package->derivation guile system))) | 75 | (mlet %store-monad ((guile (package->derivation guile system))) |
| 74 | (gexp->derivation (or name "hg-checkout") build | 76 | (gexp->derivation (or name "hg-checkout") build |
| @@ -77,8 +79,6 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." | |||
| 77 | #:hash-algo hash-algo | 79 | #:hash-algo hash-algo |
| 78 | #:hash hash | 80 | #:hash hash |
| 79 | #:recursive? #t | 81 | #:recursive? #t |
| 80 | #:modules '((guix build hg) | ||
| 81 | (guix build utils)) | ||
| 82 | #:guile-for-build guile))) | 82 | #:guile-for-build guile))) |
| 83 | 83 | ||
| 84 | ;;; hg-download.scm ends here | 84 | ;;; hg-download.scm ends here |
diff --git a/guix/import/cpan.scm b/guix/import/cpan.scm index ad61ee7916e..213a155fd64 100644 --- a/guix/import/cpan.scm +++ b/guix/import/cpan.scm | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> | 2 | ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> |
| 3 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> | 3 | ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> |
| 4 | ;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co> | ||
| 4 | ;;; | 5 | ;;; |
| 5 | ;;; This file is part of GNU Guix. | 6 | ;;; This file is part of GNU Guix. |
| 6 | ;;; | 7 | ;;; |
| @@ -99,6 +100,13 @@ or #f on failure. MODULE should be e.g. \"Test::Script\"" | |||
| 99 | (define (cpan-home name) | 100 | (define (cpan-home name) |
| 100 | (string-append "http://search.cpan.org/dist/" name)) | 101 | (string-append "http://search.cpan.org/dist/" name)) |
| 101 | 102 | ||
| 103 | (define (fix-source-url download-url) | ||
| 104 | "Return a new download URL based on DOWNLOAD-URL which now uses our mirrors, | ||
| 105 | if the original's domain was metacpan." | ||
| 106 | (regexp-substitute/global #f "http[s]?://cpan.metacpan.org" download-url | ||
| 107 | 'pre "mirror://cpan" 'post)) | ||
| 108 | |||
| 109 | |||
| 102 | (define %corelist | 110 | (define %corelist |
| 103 | (delay | 111 | (delay |
| 104 | (let* ((perl (with-store store | 112 | (let* ((perl (with-store store |
| @@ -183,10 +191,7 @@ META." | |||
| 183 | (list (list guix-name | 191 | (list (list guix-name |
| 184 | (list 'quasiquote inputs)))))) | 192 | (list 'quasiquote inputs)))))) |
| 185 | 193 | ||
| 186 | (define source-url | 194 | (define source-url (fix-source-url (assoc-ref meta "download_url"))) |
| 187 | (regexp-substitute/global #f "http://cpan.metacpan.org" | ||
| 188 | (assoc-ref meta "download_url") | ||
| 189 | 'pre "mirror://cpan" 'post)) | ||
| 190 | 195 | ||
| 191 | (let ((tarball (with-store store | 196 | (let ((tarball (with-store store |
| 192 | (download-to-store store source-url)))) | 197 | (download-to-store store source-url)))) |
diff --git a/guix/packages.scm b/guix/packages.scm index acb8f34417e..bfb4c557ab7 100644 --- a/guix/packages.scm +++ b/guix/packages.scm | |||
| @@ -56,7 +56,6 @@ | |||
| 56 | origin-patch-guile | 56 | origin-patch-guile |
| 57 | origin-snippet | 57 | origin-snippet |
| 58 | origin-modules | 58 | origin-modules |
| 59 | origin-imported-modules | ||
| 60 | base32 | 59 | base32 |
| 61 | 60 | ||
| 62 | package | 61 | package |
| @@ -164,8 +163,7 @@ | |||
| 164 | (default #f)) | 163 | (default #f)) |
| 165 | (modules origin-modules ; list of module names | 164 | (modules origin-modules ; list of module names |
| 166 | (default '())) | 165 | (default '())) |
| 167 | (imported-modules origin-imported-modules ; list of module names | 166 | |
| 168 | (default '())) | ||
| 169 | (patch-guile origin-patch-guile ; package or #f | 167 | (patch-guile origin-patch-guile ; package or #f |
| 170 | (default #f))) | 168 | (default #f))) |
| 171 | 169 | ||
| @@ -381,14 +379,13 @@ the build code of derivation." | |||
| 381 | (snippet #f) | 379 | (snippet #f) |
| 382 | (flags '("-p1")) | 380 | (flags '("-p1")) |
| 383 | (modules '()) | 381 | (modules '()) |
| 384 | (imported-modules '()) | ||
| 385 | (guile-for-build (%guile-for-build)) | 382 | (guile-for-build (%guile-for-build)) |
| 386 | (system (%current-system))) | 383 | (system (%current-system))) |
| 387 | "Unpack SOURCE (a derivation or store path), apply all of PATCHES, and | 384 | "Unpack SOURCE (a derivation or store path), apply all of PATCHES, and |
| 388 | repack the tarball using the tools listed in INPUTS. When SNIPPET is true, | 385 | repack the tarball using the tools listed in INPUTS. When SNIPPET is true, |
| 389 | it must be an s-expression that will run from within the directory where | 386 | it must be an s-expression that will run from within the directory where |
| 390 | SOURCE was unpacked, after all of PATCHES have been applied. MODULES and | 387 | SOURCE was unpacked, after all of PATCHES have been applied. MODULES |
| 391 | IMPORTED-MODULES specify modules to use/import for use by SNIPPET." | 388 | specifies modules in scope when evaluating SNIPPET." |
| 392 | (define source-file-name | 389 | (define source-file-name |
| 393 | ;; SOURCE is usually a derivation, but it could be a store file. | 390 | ;; SOURCE is usually a derivation, but it could be a store file. |
| 394 | (if (derivation? source) | 391 | (if (derivation? source) |
| @@ -449,107 +446,107 @@ IMPORTED-MODULES specify modules to use/import for use by SNIPPET." | |||
| 449 | (patches (sequence %store-monad | 446 | (patches (sequence %store-monad |
| 450 | (map instantiate-patch patches)))) | 447 | (map instantiate-patch patches)))) |
| 451 | (define build | 448 | (define build |
| 452 | #~(begin | 449 | (with-imported-modules '((guix build utils)) |
| 453 | (use-modules (ice-9 ftw) | 450 | #~(begin |
| 454 | (srfi srfi-1) | 451 | (use-modules (ice-9 ftw) |
| 455 | (guix build utils)) | 452 | (srfi srfi-1) |
| 456 | 453 | (guix build utils)) | |
| 457 | ;; The --sort option was added to GNU tar in version 1.28, released | 454 | |
| 458 | ;; 2014-07-28. During bootstrap we must cope with older versions. | 455 | ;; The --sort option was added to GNU tar in version 1.28, released |
| 459 | (define tar-supports-sort? | 456 | ;; 2014-07-28. During bootstrap we must cope with older versions. |
| 460 | (zero? (system* (string-append #+tar "/bin/tar") | 457 | (define tar-supports-sort? |
| 461 | "cf" "/dev/null" "--files-from=/dev/null" | 458 | (zero? (system* (string-append #+tar "/bin/tar") |
| 462 | "--sort=name"))) | 459 | "cf" "/dev/null" "--files-from=/dev/null" |
| 463 | 460 | "--sort=name"))) | |
| 464 | (define (apply-patch patch) | 461 | |
| 465 | (format (current-error-port) "applying '~a'...~%" patch) | 462 | (define (apply-patch patch) |
| 466 | 463 | (format (current-error-port) "applying '~a'...~%" patch) | |
| 467 | ;; Use '--force' so that patches that do not apply perfectly are | 464 | |
| 468 | ;; rejected. | 465 | ;; Use '--force' so that patches that do not apply perfectly are |
| 469 | (zero? (system* (string-append #+patch "/bin/patch") | 466 | ;; rejected. |
| 470 | "--force" #+@flags "--input" patch))) | 467 | (zero? (system* (string-append #+patch "/bin/patch") |
| 471 | 468 | "--force" #+@flags "--input" patch))) | |
| 472 | (define (first-file directory) | 469 | |
| 473 | ;; Return the name of the first file in DIRECTORY. | 470 | (define (first-file directory) |
| 474 | (car (scandir directory | 471 | ;; Return the name of the first file in DIRECTORY. |
| 475 | (lambda (name) | 472 | (car (scandir directory |
| 476 | (not (member name '("." ".."))))))) | 473 | (lambda (name) |
| 477 | 474 | (not (member name '("." ".."))))))) | |
| 478 | ;; Encoding/decoding errors shouldn't be silent. | 475 | |
| 479 | (fluid-set! %default-port-conversion-strategy 'error) | 476 | ;; Encoding/decoding errors shouldn't be silent. |
| 480 | 477 | (fluid-set! %default-port-conversion-strategy 'error) | |
| 481 | (when #+locales | 478 | |
| 482 | ;; First of all, install a UTF-8 locale so that UTF-8 file names | 479 | (when #+locales |
| 483 | ;; are correctly interpreted. During bootstrap, LOCALES is #f. | 480 | ;; First of all, install a UTF-8 locale so that UTF-8 file names |
| 484 | (setenv "LOCPATH" | 481 | ;; are correctly interpreted. During bootstrap, LOCALES is #f. |
| 485 | (string-append #+locales "/lib/locale/" | 482 | (setenv "LOCPATH" |
| 486 | #+(and locales | 483 | (string-append #+locales "/lib/locale/" |
| 487 | (package-version locales)))) | 484 | #+(and locales |
| 488 | (setlocale LC_ALL "en_US.utf8")) | 485 | (package-version locales)))) |
| 489 | 486 | (setlocale LC_ALL "en_US.utf8")) | |
| 490 | (setenv "PATH" (string-append #+xz "/bin" ":" | 487 | |
| 491 | #+decomp "/bin")) | 488 | (setenv "PATH" (string-append #+xz "/bin" ":" |
| 492 | 489 | #+decomp "/bin")) | |
| 493 | ;; SOURCE may be either a directory or a tarball. | 490 | |
| 494 | (and (if (file-is-directory? #+source) | 491 | ;; SOURCE may be either a directory or a tarball. |
| 495 | (let* ((store (%store-directory)) | 492 | (and (if (file-is-directory? #+source) |
| 496 | (len (+ 1 (string-length store))) | 493 | (let* ((store (%store-directory)) |
| 497 | (base (string-drop #+source len)) | 494 | (len (+ 1 (string-length store))) |
| 498 | (dash (string-index base #\-)) | 495 | (base (string-drop #+source len)) |
| 499 | (directory (string-drop base (+ 1 dash)))) | 496 | (dash (string-index base #\-)) |
| 500 | (mkdir directory) | 497 | (directory (string-drop base (+ 1 dash)))) |
| 501 | (copy-recursively #+source directory) | 498 | (mkdir directory) |
| 502 | #t) | 499 | (copy-recursively #+source directory) |
| 503 | #+(if (string=? decompression-type "unzip") | 500 | #t) |
| 504 | #~(zero? (system* "unzip" #+source)) | 501 | #+(if (string=? decompression-type "unzip") |
| 505 | #~(zero? (system* (string-append #+tar "/bin/tar") | 502 | #~(zero? (system* "unzip" #+source)) |
| 506 | "xvf" #+source)))) | 503 | #~(zero? (system* (string-append #+tar "/bin/tar") |
| 507 | (let ((directory (first-file "."))) | 504 | "xvf" #+source)))) |
| 508 | (format (current-error-port) | 505 | (let ((directory (first-file "."))) |
| 509 | "source is under '~a'~%" directory) | 506 | (format (current-error-port) |
| 510 | (chdir directory) | 507 | "source is under '~a'~%" directory) |
| 511 | 508 | (chdir directory) | |
| 512 | (and (every apply-patch '#+patches) | 509 | |
| 513 | #+@(if snippet | 510 | (and (every apply-patch '#+patches) |
| 514 | #~((let ((module (make-fresh-user-module))) | 511 | #+@(if snippet |
| 515 | (module-use-interfaces! module | 512 | #~((let ((module (make-fresh-user-module))) |
| 516 | (map resolve-interface | 513 | (module-use-interfaces! |
| 517 | '#+modules)) | 514 | module |
| 518 | ((@ (system base compile) compile) | 515 | (map resolve-interface '#+modules)) |
| 519 | '#+snippet | 516 | ((@ (system base compile) compile) |
| 520 | #:to 'value | 517 | '#+snippet |
| 521 | #:opts %auto-compilation-options | 518 | #:to 'value |
| 522 | #:env module))) | 519 | #:opts %auto-compilation-options |
| 523 | #~()) | 520 | #:env module))) |
| 524 | 521 | #~()) | |
| 525 | (begin (chdir "..") #t) | 522 | |
| 526 | 523 | (begin (chdir "..") #t) | |
| 527 | (unless tar-supports-sort? | 524 | |
| 528 | (call-with-output-file ".file_list" | 525 | (unless tar-supports-sort? |
| 529 | (lambda (port) | 526 | (call-with-output-file ".file_list" |
| 530 | (for-each (lambda (name) (format port "~a~%" name)) | 527 | (lambda (port) |
| 531 | (find-files directory | 528 | (for-each (lambda (name) |
| 532 | #:directories? #t | 529 | (format port "~a~%" name)) |
| 533 | #:fail-on-error? #t))))) | 530 | (find-files directory |
| 534 | (zero? (apply system* (string-append #+tar "/bin/tar") | 531 | #:directories? #t |
| 535 | "cvfa" #$output | 532 | #:fail-on-error? #t))))) |
| 536 | ;; avoid non-determinism in the archive | 533 | (zero? (apply system* |
| 537 | "--mtime=@0" | 534 | (string-append #+tar "/bin/tar") |
| 538 | "--owner=root:0" | 535 | "cvfa" #$output |
| 539 | "--group=root:0" | 536 | ;; avoid non-determinism in the archive |
| 540 | (if tar-supports-sort? | 537 | "--mtime=@0" |
| 541 | `("--sort=name" | 538 | "--owner=root:0" |
| 542 | ,directory) | 539 | "--group=root:0" |
| 543 | '("--no-recursion" | 540 | (if tar-supports-sort? |
| 544 | "--files-from=.file_list"))))))))) | 541 | `("--sort=name" |
| 545 | 542 | ,directory) | |
| 546 | (let ((name (tarxz-name original-file-name)) | 543 | '("--no-recursion" |
| 547 | (modules (delete-duplicates (cons '(guix build utils) | 544 | "--files-from=.file_list")))))))))) |
| 548 | imported-modules)))) | 545 | |
| 546 | (let ((name (tarxz-name original-file-name))) | ||
| 549 | (gexp->derivation name build | 547 | (gexp->derivation name build |
| 550 | #:graft? #f | 548 | #:graft? #f |
| 551 | #:system system | 549 | #:system system |
| 552 | #:modules modules | ||
| 553 | #:guile-for-build guile-for-build)))) | 550 | #:guile-for-build guile-for-build)))) |
| 554 | 551 | ||
| 555 | (define (transitive-inputs inputs) | 552 | (define (transitive-inputs inputs) |
| @@ -1138,8 +1135,7 @@ cross-compilation target triplet." | |||
| 1138 | ;; No patches, no snippet: this is a fixed-output derivation. | 1135 | ;; No patches, no snippet: this is a fixed-output derivation. |
| 1139 | (method uri 'sha256 sha256 name #:system system)) | 1136 | (method uri 'sha256 sha256 name #:system system)) |
| 1140 | (($ <origin> uri method sha256 name (= force (patches ...)) snippet | 1137 | (($ <origin> uri method sha256 name (= force (patches ...)) snippet |
| 1141 | (flags ...) inputs (modules ...) (imported-modules ...) | 1138 | (flags ...) inputs (modules ...) guile-for-build) |
| 1142 | guile-for-build) | ||
| 1143 | ;; Patches and/or a snippet. | 1139 | ;; Patches and/or a snippet. |
| 1144 | (mlet %store-monad ((source (method uri 'sha256 sha256 name | 1140 | (mlet %store-monad ((source (method uri 'sha256 sha256 name |
| 1145 | #:system system)) | 1141 | #:system system)) |
| @@ -1153,7 +1149,6 @@ cross-compilation target triplet." | |||
| 1153 | #:flags flags | 1149 | #:flags flags |
| 1154 | #:system system | 1150 | #:system system |
| 1155 | #:modules modules | 1151 | #:modules modules |
| 1156 | #:imported-modules imported-modules | ||
| 1157 | #:guile-for-build guile))))) | 1152 | #:guile-for-build guile))))) |
| 1158 | 1153 | ||
| 1159 | (define-gexp-compiler (origin-compiler (origin origin?) system target) | 1154 | (define-gexp-compiler (origin-compiler (origin origin?) system target) |
diff --git a/guix/profiles.scm b/guix/profiles.scm index 90c43325a02..77df6ad1857 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm | |||
| @@ -489,87 +489,87 @@ MANIFEST." | |||
| 489 | (module-ref (resolve-interface '(gnu packages compression)) 'gzip)) | 489 | (module-ref (resolve-interface '(gnu packages compression)) 'gzip)) |
| 490 | 490 | ||
| 491 | (define build | 491 | (define build |
| 492 | #~(begin | 492 | (with-imported-modules '((guix build utils)) |
| 493 | (use-modules (guix build utils) | 493 | #~(begin |
| 494 | (srfi srfi-1) (srfi srfi-26) | 494 | (use-modules (guix build utils) |
| 495 | (ice-9 ftw)) | 495 | (srfi srfi-1) (srfi srfi-26) |
| 496 | 496 | (ice-9 ftw)) | |
| 497 | (define (info-file? file) | 497 | |
| 498 | (or (string-suffix? ".info" file) | 498 | (define (info-file? file) |
| 499 | (string-suffix? ".info.gz" file))) | 499 | (or (string-suffix? ".info" file) |
| 500 | 500 | (string-suffix? ".info.gz" file))) | |
| 501 | (define (info-files top) | 501 | |
| 502 | (let ((infodir (string-append top "/share/info"))) | 502 | (define (info-files top) |
| 503 | (map (cut string-append infodir "/" <>) | 503 | (let ((infodir (string-append top "/share/info"))) |
| 504 | (or (scandir infodir info-file?) '())))) | 504 | (map (cut string-append infodir "/" <>) |
| 505 | 505 | (or (scandir infodir info-file?) '())))) | |
| 506 | (define (install-info info) | 506 | |
| 507 | (setenv "PATH" (string-append #+gzip "/bin")) ;for info.gz files | 507 | (define (install-info info) |
| 508 | (zero? | 508 | (setenv "PATH" (string-append #+gzip "/bin")) ;for info.gz files |
| 509 | (system* (string-append #+texinfo "/bin/install-info") "--silent" | 509 | (zero? |
| 510 | info (string-append #$output "/share/info/dir")))) | 510 | (system* (string-append #+texinfo "/bin/install-info") "--silent" |
| 511 | 511 | info (string-append #$output "/share/info/dir")))) | |
| 512 | (mkdir-p (string-append #$output "/share/info")) | 512 | |
| 513 | (exit (every install-info | 513 | (mkdir-p (string-append #$output "/share/info")) |
| 514 | (append-map info-files | 514 | (exit (every install-info |
| 515 | '#$(manifest-inputs manifest)))))) | 515 | (append-map info-files |
| 516 | '#$(manifest-inputs manifest))))))) | ||
| 516 | 517 | ||
| 517 | (gexp->derivation "info-dir" build | 518 | (gexp->derivation "info-dir" build |
| 518 | #:modules '((guix build utils)) | ||
| 519 | #:local-build? #t | 519 | #:local-build? #t |
| 520 | #:substitutable? #f)) | 520 | #:substitutable? #f)) |
| 521 | 521 | ||
| 522 | (define (ghc-package-cache-file manifest) | 522 | (define (ghc-package-cache-file manifest) |
| 523 | "Return a derivation that builds the GHC 'package.cache' file for all the | 523 | "Return a derivation that builds the GHC 'package.cache' file for all the |
| 524 | entries of MANIFEST, or #f if MANIFEST does not have any GHC packages." | 524 | entries of MANIFEST, or #f if MANIFEST does not have any GHC packages." |
| 525 | (define ghc ;lazy reference | 525 | (define ghc ;lazy reference |
| 526 | (module-ref (resolve-interface '(gnu packages haskell)) 'ghc)) | 526 | (module-ref (resolve-interface '(gnu packages haskell)) 'ghc)) |
| 527 | 527 | ||
| 528 | (define build | 528 | (define build |
| 529 | #~(begin | 529 | (with-imported-modules '((guix build utils)) |
| 530 | (use-modules (guix build utils) | 530 | #~(begin |
| 531 | (srfi srfi-1) (srfi srfi-26) | 531 | (use-modules (guix build utils) |
| 532 | (ice-9 ftw)) | 532 | (srfi srfi-1) (srfi srfi-26) |
| 533 | 533 | (ice-9 ftw)) | |
| 534 | (define ghc-name-version | 534 | |
| 535 | (let* ((base (basename #+ghc))) | 535 | (define ghc-name-version |
| 536 | (string-drop base | 536 | (let* ((base (basename #+ghc))) |
| 537 | (+ 1 (string-index base #\-))))) | 537 | (string-drop base |
| 538 | 538 | (+ 1 (string-index base #\-))))) | |
| 539 | (define db-subdir | 539 | |
| 540 | (string-append "lib/" ghc-name-version "/package.conf.d")) | 540 | (define db-subdir |
| 541 | 541 | (string-append "lib/" ghc-name-version "/package.conf.d")) | |
| 542 | (define db-dir | 542 | |
| 543 | (string-append #$output "/" db-subdir)) | 543 | (define db-dir |
| 544 | 544 | (string-append #$output "/" db-subdir)) | |
| 545 | (define (conf-files top) | 545 | |
| 546 | (let ((db (string-append top "/" db-subdir))) | 546 | (define (conf-files top) |
| 547 | (if (file-exists? db) | 547 | (let ((db (string-append top "/" db-subdir))) |
| 548 | (find-files db "\\.conf$") | 548 | (if (file-exists? db) |
| 549 | '()))) | 549 | (find-files db "\\.conf$") |
| 550 | 550 | '()))) | |
| 551 | (define (copy-conf-file conf) | 551 | |
| 552 | (let ((base (basename conf))) | 552 | (define (copy-conf-file conf) |
| 553 | (copy-file conf (string-append db-dir "/" base)))) | 553 | (let ((base (basename conf))) |
| 554 | 554 | (copy-file conf (string-append db-dir "/" base)))) | |
| 555 | (system* (string-append #+ghc "/bin/ghc-pkg") "init" db-dir) | 555 | |
| 556 | (for-each copy-conf-file | 556 | (system* (string-append #+ghc "/bin/ghc-pkg") "init" db-dir) |
| 557 | (append-map conf-files | 557 | (for-each copy-conf-file |
| 558 | (delete-duplicates | 558 | (append-map conf-files |
| 559 | '#$(manifest-inputs manifest)))) | 559 | (delete-duplicates |
| 560 | (let ((success | 560 | '#$(manifest-inputs manifest)))) |
| 561 | (zero? | 561 | (let ((success |
| 562 | (system* (string-append #+ghc "/bin/ghc-pkg") "recache" | 562 | (zero? |
| 563 | (string-append "--package-db=" db-dir))))) | 563 | (system* (string-append #+ghc "/bin/ghc-pkg") "recache" |
| 564 | (for-each delete-file (find-files db-dir "\\.conf$")) | 564 | (string-append "--package-db=" db-dir))))) |
| 565 | (exit success)))) | 565 | (for-each delete-file (find-files db-dir "\\.conf$")) |
| 566 | (exit success))))) | ||
| 566 | 567 | ||
| 567 | (with-monad %store-monad | 568 | (with-monad %store-monad |
| 568 | ;; Don't depend on GHC when there's nothing to do. | 569 | ;; Don't depend on GHC when there's nothing to do. |
| 569 | (if (any (cut string-prefix? "ghc" <>) | 570 | (if (any (cut string-prefix? "ghc" <>) |
| 570 | (map manifest-entry-name (manifest-entries manifest))) | 571 | (map manifest-entry-name (manifest-entries manifest))) |
| 571 | (gexp->derivation "ghc-package-cache" build | 572 | (gexp->derivation "ghc-package-cache" build |
| 572 | #:modules '((guix build utils)) | ||
| 573 | #:local-build? #t | 573 | #:local-build? #t |
| 574 | #:substitutable? #f) | 574 | #:substitutable? #f) |
| 575 | (return #f)))) | 575 | (return #f)))) |
| @@ -585,58 +585,58 @@ MANIFEST. Single-file bundles are required by programs such as Git and Lynx." | |||
| 585 | (module-ref (resolve-interface '(gnu packages base)) 'glibc-utf8-locales)) | 585 | (module-ref (resolve-interface '(gnu packages base)) 'glibc-utf8-locales)) |
| 586 | 586 | ||
| 587 | (define build | 587 | (define build |
| 588 | #~(begin | 588 | (with-imported-modules '((guix build utils)) |
| 589 | (use-modules (guix build utils) | 589 | #~(begin |
| 590 | (rnrs io ports) | 590 | (use-modules (guix build utils) |
| 591 | (srfi srfi-1) | 591 | (rnrs io ports) |
| 592 | (srfi srfi-26) | 592 | (srfi srfi-1) |
| 593 | (ice-9 ftw) | 593 | (srfi srfi-26) |
| 594 | (ice-9 match)) | 594 | (ice-9 ftw) |
| 595 | 595 | (ice-9 match)) | |
| 596 | (define (pem-file? file) | 596 | |
| 597 | (string-suffix? ".pem" file)) | 597 | (define (pem-file? file) |
| 598 | 598 | (string-suffix? ".pem" file)) | |
| 599 | (define (ca-files top) | 599 | |
| 600 | (let ((cert-dir (string-append top "/etc/ssl/certs"))) | 600 | (define (ca-files top) |
| 601 | (map (cut string-append cert-dir "/" <>) | 601 | (let ((cert-dir (string-append top "/etc/ssl/certs"))) |
| 602 | (or (scandir cert-dir pem-file?) '())))) | 602 | (map (cut string-append cert-dir "/" <>) |
| 603 | 603 | (or (scandir cert-dir pem-file?) '())))) | |
| 604 | (define (concatenate-files files result) | 604 | |
| 605 | "Make RESULT the concatenation of all of FILES." | 605 | (define (concatenate-files files result) |
| 606 | (define (dump file port) | 606 | "Make RESULT the concatenation of all of FILES." |
| 607 | (display (call-with-input-file file get-string-all) | 607 | (define (dump file port) |
| 608 | port) | 608 | (display (call-with-input-file file get-string-all) |
| 609 | (newline port)) ;required, see <https://bugs.debian.org/635570> | 609 | port) |
| 610 | 610 | (newline port)) ;required, see <https://bugs.debian.org/635570> | |
| 611 | (call-with-output-file result | 611 | |
| 612 | (lambda (port) | 612 | (call-with-output-file result |
| 613 | (for-each (cut dump <> port) files)))) | 613 | (lambda (port) |
| 614 | 614 | (for-each (cut dump <> port) files)))) | |
| 615 | ;; Some file names in the NSS certificates are UTF-8 encoded so | 615 | |
| 616 | ;; install a UTF-8 locale. | 616 | ;; Some file names in the NSS certificates are UTF-8 encoded so |
| 617 | (setenv "LOCPATH" | 617 | ;; install a UTF-8 locale. |
| 618 | (string-append #+glibc-utf8-locales "/lib/locale/" | 618 | (setenv "LOCPATH" |
| 619 | #+(package-version glibc-utf8-locales))) | 619 | (string-append #+glibc-utf8-locales "/lib/locale/" |
| 620 | (setlocale LC_ALL "en_US.utf8") | 620 | #+(package-version glibc-utf8-locales))) |
| 621 | 621 | (setlocale LC_ALL "en_US.utf8") | |
| 622 | (match (append-map ca-files '#$(manifest-inputs manifest)) | 622 | |
| 623 | (() | 623 | (match (append-map ca-files '#$(manifest-inputs manifest)) |
| 624 | ;; Since there are no CA files, just create an empty directory. Do | 624 | (() |
| 625 | ;; not create the etc/ssl/certs sub-directory, since that would | 625 | ;; Since there are no CA files, just create an empty directory. Do |
| 626 | ;; wrongfully lead to a message about 'SSL_CERT_DIR' needing to be | 626 | ;; not create the etc/ssl/certs sub-directory, since that would |
| 627 | ;; defined. | 627 | ;; wrongfully lead to a message about 'SSL_CERT_DIR' needing to be |
| 628 | (mkdir #$output) | 628 | ;; defined. |
| 629 | #t) | 629 | (mkdir #$output) |
| 630 | ((ca-files ...) | 630 | #t) |
| 631 | (let ((result (string-append #$output "/etc/ssl/certs"))) | 631 | ((ca-files ...) |
| 632 | (mkdir-p result) | 632 | (let ((result (string-append #$output "/etc/ssl/certs"))) |
| 633 | (concatenate-files ca-files | 633 | (mkdir-p result) |
| 634 | (string-append result | 634 | (concatenate-files ca-files |
| 635 | "/ca-certificates.crt")) | 635 | (string-append result |
| 636 | #t))))) | 636 | "/ca-certificates.crt")) |
| 637 | #t)))))) | ||
| 637 | 638 | ||
| 638 | (gexp->derivation "ca-certificate-bundle" build | 639 | (gexp->derivation "ca-certificate-bundle" build |
| 639 | #:modules '((guix build utils)) | ||
| 640 | #:local-build? #t | 640 | #:local-build? #t |
| 641 | #:substitutable? #f)) | 641 | #:substitutable? #f)) |
| 642 | 642 | ||
| @@ -645,44 +645,44 @@ MANIFEST. Single-file bundles are required by programs such as Git and Lynx." | |||
| 645 | creates the GTK+ 'icon-theme.cache' file for each theme." | 645 | creates the GTK+ 'icon-theme.cache' file for each theme." |
| 646 | (mlet %store-monad ((gtk+ (manifest-lookup-package manifest "gtk+"))) | 646 | (mlet %store-monad ((gtk+ (manifest-lookup-package manifest "gtk+"))) |
| 647 | (define build | 647 | (define build |
| 648 | #~(begin | 648 | (with-imported-modules '((guix build utils) |
| 649 | (use-modules (guix build utils) | 649 | (guix build union) |
| 650 | (guix build union) | 650 | (guix build profiles) |
| 651 | (guix build profiles) | 651 | (guix search-paths) |
| 652 | (srfi srfi-26) | 652 | (guix records)) |
| 653 | (ice-9 ftw)) | 653 | #~(begin |
| 654 | 654 | (use-modules (guix build utils) | |
| 655 | (let* ((destdir (string-append #$output "/share/icons")) | 655 | (guix build union) |
| 656 | (icondirs (filter file-exists? | 656 | (guix build profiles) |
| 657 | (map (cut string-append <> "/share/icons") | 657 | (srfi srfi-26) |
| 658 | '#$(manifest-inputs manifest)))) | 658 | (ice-9 ftw)) |
| 659 | (update-icon-cache (string-append | 659 | |
| 660 | #+gtk+ "/bin/gtk-update-icon-cache"))) | 660 | (let* ((destdir (string-append #$output "/share/icons")) |
| 661 | 661 | (icondirs (filter file-exists? | |
| 662 | ;; Union all the icons. | 662 | (map (cut string-append <> "/share/icons") |
| 663 | (mkdir-p (string-append #$output "/share")) | 663 | '#$(manifest-inputs manifest)))) |
| 664 | (union-build destdir icondirs | 664 | (update-icon-cache (string-append |
| 665 | #:log-port (%make-void-port "w")) | 665 | #+gtk+ "/bin/gtk-update-icon-cache"))) |
| 666 | 666 | ||
| 667 | ;; Update the 'icon-theme.cache' file for each icon theme. | 667 | ;; Union all the icons. |
| 668 | (for-each | 668 | (mkdir-p (string-append #$output "/share")) |
| 669 | (lambda (theme) | 669 | (union-build destdir icondirs |
| 670 | (let ((dir (string-append destdir "/" theme))) | 670 | #:log-port (%make-void-port "w")) |
| 671 | ;; Occasionally DESTDIR contains plain files, such as | 671 | |
| 672 | ;; "abiword_48.png". Ignore these. | 672 | ;; Update the 'icon-theme.cache' file for each icon theme. |
| 673 | (when (file-is-directory? dir) | 673 | (for-each |
| 674 | (ensure-writable-directory dir) | 674 | (lambda (theme) |
| 675 | (system* update-icon-cache "-t" dir "--quiet")))) | 675 | (let ((dir (string-append destdir "/" theme))) |
| 676 | (scandir destdir (negate (cut member <> '("." "..")))))))) | 676 | ;; Occasionally DESTDIR contains plain files, such as |
| 677 | ;; "abiword_48.png". Ignore these. | ||
| 678 | (when (file-is-directory? dir) | ||
| 679 | (ensure-writable-directory dir) | ||
| 680 | (system* update-icon-cache "-t" dir "--quiet")))) | ||
| 681 | (scandir destdir (negate (cut member <> '("." ".."))))))))) | ||
| 677 | 682 | ||
| 678 | ;; Don't run the hook when there's nothing to do. | 683 | ;; Don't run the hook when there's nothing to do. |
| 679 | (if gtk+ | 684 | (if gtk+ |
| 680 | (gexp->derivation "gtk-icon-themes" build | 685 | (gexp->derivation "gtk-icon-themes" build |
| 681 | #:modules '((guix build utils) | ||
| 682 | (guix build union) | ||
| 683 | (guix build profiles) | ||
| 684 | (guix search-paths) | ||
| 685 | (guix records)) | ||
| 686 | #:local-build? #t | 686 | #:local-build? #t |
| 687 | #:substitutable? #f) | 687 | #:substitutable? #f) |
| 688 | (return #f)))) | 688 | (return #f)))) |
| @@ -695,28 +695,28 @@ MIME type." | |||
| 695 | (manifest-lookup-package | 695 | (manifest-lookup-package |
| 696 | manifest "desktop-file-utils"))) | 696 | manifest "desktop-file-utils"))) |
| 697 | (define build | 697 | (define build |
| 698 | #~(begin | 698 | (with-imported-modules '((guix build utils) |
| 699 | (use-modules (srfi srfi-26) | 699 | (guix build union)) |
| 700 | (guix build utils) | 700 | #~(begin |
| 701 | (guix build union)) | 701 | (use-modules (srfi srfi-26) |
| 702 | (let* ((destdir (string-append #$output "/share/applications")) | 702 | (guix build utils) |
| 703 | (appdirs (filter file-exists? | 703 | (guix build union)) |
| 704 | (map (cut string-append <> | 704 | (let* ((destdir (string-append #$output "/share/applications")) |
| 705 | "/share/applications") | 705 | (appdirs (filter file-exists? |
| 706 | '#$(manifest-inputs manifest)))) | 706 | (map (cut string-append <> |
| 707 | (update-desktop-database (string-append | 707 | "/share/applications") |
| 708 | #+desktop-file-utils | 708 | '#$(manifest-inputs manifest)))) |
| 709 | "/bin/update-desktop-database"))) | 709 | (update-desktop-database (string-append |
| 710 | (mkdir-p (string-append #$output "/share")) | 710 | #+desktop-file-utils |
| 711 | (union-build destdir appdirs | 711 | "/bin/update-desktop-database"))) |
| 712 | #:log-port (%make-void-port "w")) | 712 | (mkdir-p (string-append #$output "/share")) |
| 713 | (exit (zero? (system* update-desktop-database destdir)))))) | 713 | (union-build destdir appdirs |
| 714 | #:log-port (%make-void-port "w")) | ||
| 715 | (exit (zero? (system* update-desktop-database destdir))))))) | ||
| 714 | 716 | ||
| 715 | ;; Don't run the hook when 'desktop-file-utils' is not referenced. | 717 | ;; Don't run the hook when 'desktop-file-utils' is not referenced. |
| 716 | (if desktop-file-utils | 718 | (if desktop-file-utils |
| 717 | (gexp->derivation "xdg-desktop-database" build | 719 | (gexp->derivation "xdg-desktop-database" build |
| 718 | #:modules '((guix build utils) | ||
| 719 | (guix build union)) | ||
| 720 | #:local-build? #t | 720 | #:local-build? #t |
| 721 | #:substitutable? #f) | 721 | #:substitutable? #f) |
| 722 | (return #f)))) | 722 | (return #f)))) |
| @@ -728,30 +728,30 @@ entries. It's used to query the MIME type of a given file." | |||
| 728 | (manifest-lookup-package | 728 | (manifest-lookup-package |
| 729 | manifest "shared-mime-info"))) | 729 | manifest "shared-mime-info"))) |
| 730 | (define build | 730 | (define build |
| 731 | #~(begin | 731 | (with-imported-modules '((guix build utils) |
| 732 | (use-modules (srfi srfi-26) | 732 | (guix build union)) |
| 733 | (guix build utils) | 733 | #~(begin |
| 734 | (guix build union)) | 734 | (use-modules (srfi srfi-26) |
| 735 | (let* ((datadir (string-append #$output "/share")) | 735 | (guix build utils) |
| 736 | (destdir (string-append datadir "/mime")) | 736 | (guix build union)) |
| 737 | (pkgdirs (filter file-exists? | 737 | (let* ((datadir (string-append #$output "/share")) |
| 738 | (map (cut string-append <> | 738 | (destdir (string-append datadir "/mime")) |
| 739 | "/share/mime/packages") | 739 | (pkgdirs (filter file-exists? |
| 740 | '#$(manifest-inputs manifest)))) | 740 | (map (cut string-append <> |
| 741 | (update-mime-database (string-append | 741 | "/share/mime/packages") |
| 742 | #+shared-mime-info | 742 | '#$(manifest-inputs manifest)))) |
| 743 | "/bin/update-mime-database"))) | 743 | (update-mime-database (string-append |
| 744 | (mkdir-p destdir) | 744 | #+shared-mime-info |
| 745 | (union-build (string-append destdir "/packages") pkgdirs | 745 | "/bin/update-mime-database"))) |
| 746 | #:log-port (%make-void-port "w")) | 746 | (mkdir-p destdir) |
| 747 | (setenv "XDG_DATA_HOME" datadir) | 747 | (union-build (string-append destdir "/packages") pkgdirs |
| 748 | (exit (zero? (system* update-mime-database destdir)))))) | 748 | #:log-port (%make-void-port "w")) |
| 749 | (setenv "XDG_DATA_HOME" datadir) | ||
| 750 | (exit (zero? (system* update-mime-database destdir))))))) | ||
| 749 | 751 | ||
| 750 | ;; Don't run the hook when 'shared-mime-info' is referenced. | 752 | ;; Don't run the hook when 'shared-mime-info' is referenced. |
| 751 | (if shared-mime-info | 753 | (if shared-mime-info |
| 752 | (gexp->derivation "xdg-mime-database" build | 754 | (gexp->derivation "xdg-mime-database" build |
| 753 | #:modules '((guix build utils) | ||
| 754 | (guix build union)) | ||
| 755 | #:local-build? #t | 755 | #:local-build? #t |
| 756 | #:substitutable? #f) | 756 | #:substitutable? #f) |
| 757 | (return #f)))) | 757 | (return #f)))) |
| @@ -790,34 +790,34 @@ the monadic procedures listed in HOOKS--such as an Info 'dir' file, etc." | |||
| 790 | (manifest-inputs manifest))) | 790 | (manifest-inputs manifest))) |
| 791 | 791 | ||
| 792 | (define builder | 792 | (define builder |
| 793 | #~(begin | 793 | (with-imported-modules '((guix build profiles) |
| 794 | (use-modules (guix build profiles) | 794 | (guix build union) |
| 795 | (guix search-paths) | 795 | (guix build utils) |
| 796 | (srfi srfi-1)) | 796 | (guix search-paths) |
| 797 | 797 | (guix records)) | |
| 798 | (setvbuf (current-output-port) _IOLBF) | 798 | #~(begin |
| 799 | (setvbuf (current-error-port) _IOLBF) | 799 | (use-modules (guix build profiles) |
| 800 | 800 | (guix search-paths) | |
| 801 | (define search-paths | 801 | (srfi srfi-1)) |
| 802 | ;; Search paths of MANIFEST's packages, converted back to their | 802 | |
| 803 | ;; record form. | 803 | (setvbuf (current-output-port) _IOLBF) |
| 804 | (map sexp->search-path-specification | 804 | (setvbuf (current-error-port) _IOLBF) |
| 805 | (delete-duplicates | 805 | |
| 806 | '#$(map search-path-specification->sexp | 806 | (define search-paths |
| 807 | (append-map manifest-entry-search-paths | 807 | ;; Search paths of MANIFEST's packages, converted back to their |
| 808 | (manifest-entries manifest)))))) | 808 | ;; record form. |
| 809 | 809 | (map sexp->search-path-specification | |
| 810 | (build-profile #$output '#$inputs | 810 | (delete-duplicates |
| 811 | #:manifest '#$(manifest->gexp manifest) | 811 | '#$(map search-path-specification->sexp |
| 812 | #:search-paths search-paths))) | 812 | (append-map manifest-entry-search-paths |
| 813 | (manifest-entries manifest)))))) | ||
| 814 | |||
| 815 | (build-profile #$output '#$inputs | ||
| 816 | #:manifest '#$(manifest->gexp manifest) | ||
| 817 | #:search-paths search-paths)))) | ||
| 813 | 818 | ||
| 814 | (gexp->derivation "profile" builder | 819 | (gexp->derivation "profile" builder |
| 815 | #:system system | 820 | #:system system |
| 816 | #:modules '((guix build profiles) | ||
| 817 | (guix build union) | ||
| 818 | (guix build utils) | ||
| 819 | (guix search-paths) | ||
| 820 | (guix records)) | ||
| 821 | 821 | ||
| 822 | ;; Not worth offloading. | 822 | ;; Not worth offloading. |
| 823 | #:local-build? #t | 823 | #:local-build? #t |
diff --git a/guix/records.scm b/guix/records.scm index 0d35a747b00..f3f3aafb045 100644 --- a/guix/records.scm +++ b/guix/records.scm | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> | 2 | ;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> |
| 3 | ;;; | 3 | ;;; |
| 4 | ;;; This file is part of GNU Guix. | 4 | ;;; This file is part of GNU Guix. |
| 5 | ;;; | 5 | ;;; |
| @@ -42,6 +42,15 @@ | |||
| 42 | (format #f fmt args ...) | 42 | (format #f fmt args ...) |
| 43 | form)))) | 43 | form)))) |
| 44 | 44 | ||
| 45 | (define (report-invalid-field-specifier name bindings) | ||
| 46 | "Report the first invalid binding among BINDINGS." | ||
| 47 | (let loop ((bindings bindings)) | ||
| 48 | (syntax-case bindings () | ||
| 49 | (((field value) rest ...) ;good | ||
| 50 | (loop #'(rest ...))) | ||
| 51 | ((weird _ ...) ;weird! | ||
| 52 | (syntax-violation name "invalid field specifier" #'weird))))) | ||
| 53 | |||
| 45 | (define-syntax make-syntactic-constructor | 54 | (define-syntax make-syntactic-constructor |
| 46 | (syntax-rules () | 55 | (syntax-rules () |
| 47 | "Make the syntactic constructor NAME for TYPE, that calls CTOR, and | 56 | "Make the syntactic constructor NAME for TYPE, that calls CTOR, and |
| @@ -147,7 +156,13 @@ fields, and DELAYED is the list of identifiers of delayed fields." | |||
| 147 | "missing field initializers ~a" | 156 | "missing field initializers ~a" |
| 148 | (lset-difference eq? | 157 | (lset-difference eq? |
| 149 | '(expected ...) | 158 | '(expected ...) |
| 150 | fields))))))))))))) | 159 | fields))))))) |
| 160 | ((_ bindings (... ...)) | ||
| 161 | ;; One of BINDINGS doesn't match the (field value) pattern. | ||
| 162 | ;; Report precisely which one is faulty, instead of letting the | ||
| 163 | ;; "source expression failed to match any pattern" error. | ||
| 164 | (report-invalid-field-specifier 'name | ||
| 165 | #'(bindings (... ...)))))))))) | ||
| 151 | 166 | ||
| 152 | (define-syntax-rule (define-field-property-predicate predicate property) | 167 | (define-syntax-rule (define-field-property-predicate predicate property) |
| 153 | "Define PREDICATE as a procedure that takes a syntax object and, when passed | 168 | "Define PREDICATE as a procedure that takes a syntax object and, when passed |
diff --git a/guix/scripts/challenge.scm b/guix/scripts/challenge.scm index 149647cfdf7..590d8f10993 100644 --- a/guix/scripts/challenge.scm +++ b/guix/scripts/challenge.scm | |||
| @@ -21,6 +21,7 @@ | |||
| 21 | #:use-module (guix scripts) | 21 | #:use-module (guix scripts) |
| 22 | #:use-module (guix store) | 22 | #:use-module (guix store) |
| 23 | #:use-module (guix utils) | 23 | #:use-module (guix utils) |
| 24 | #:use-module (guix grafts) | ||
| 24 | #:use-module (guix monads) | 25 | #:use-module (guix monads) |
| 25 | #:use-module (guix base32) | 26 | #:use-module (guix base32) |
| 26 | #:use-module (guix packages) | 27 | #:use-module (guix packages) |
| @@ -222,23 +223,26 @@ Challenge the substitutes for PACKAGE... provided by one or more servers.\n")) | |||
| 222 | (urls (assoc-ref opts 'substitute-urls))) | 223 | (urls (assoc-ref opts 'substitute-urls))) |
| 223 | (leave-on-EPIPE | 224 | (leave-on-EPIPE |
| 224 | (with-store store | 225 | (with-store store |
| 225 | (let ((files (match files | 226 | ;; Disable grafts since substitute servers normally provide only |
| 226 | (() | 227 | ;; ungrafted stuff. |
| 227 | (filter (cut locally-built? store <>) | 228 | (parameterize ((%graft? #f)) |
| 228 | (live-paths store))) | 229 | (let ((files (match files |
| 229 | (x | 230 | (() |
| 230 | files)))) | 231 | (filter (cut locally-built? store <>) |
| 231 | (set-build-options store | 232 | (live-paths store))) |
| 232 | #:use-substitutes? #f) | 233 | (x |
| 233 | 234 | files)))) | |
| 234 | (run-with-store store | 235 | (set-build-options store |
| 235 | (mlet* %store-monad ((items (mapm %store-monad | 236 | #:use-substitutes? #f) |
| 236 | ensure-store-item files)) | 237 | |
| 237 | (issues (discrepancies items urls))) | 238 | (run-with-store store |
| 238 | (for-each summarize-discrepancy issues) | 239 | (mlet* %store-monad ((items (mapm %store-monad |
| 239 | (unless (null? issues) | 240 | ensure-store-item files)) |
| 240 | (exit 2)) | 241 | (issues (discrepancies items urls))) |
| 241 | (return (null? issues))) | 242 | (for-each summarize-discrepancy issues) |
| 242 | #:system system))))))) | 243 | (unless (null? issues) |
| 244 | (exit 2)) | ||
| 245 | (return (null? issues))) | ||
| 246 | #:system system)))))))) | ||
| 243 | 247 | ||
| 244 | ;;; challenge.scm ends here | 248 | ;;; challenge.scm ends here |
diff --git a/guix/scripts/gc.scm b/guix/scripts/gc.scm index 8db28138c84..bdfee4308cb 100644 --- a/guix/scripts/gc.scm +++ b/guix/scripts/gc.scm | |||
| @@ -24,6 +24,7 @@ | |||
| 24 | #:use-module (ice-9 match) | 24 | #:use-module (ice-9 match) |
| 25 | #:use-module (ice-9 regex) | 25 | #:use-module (ice-9 regex) |
| 26 | #:use-module (srfi srfi-1) | 26 | #:use-module (srfi srfi-1) |
| 27 | #:use-module (srfi srfi-11) | ||
| 27 | #:use-module (srfi srfi-26) | 28 | #:use-module (srfi srfi-26) |
| 28 | #:use-module (srfi srfi-37) | 29 | #:use-module (srfi srfi-37) |
| 29 | #:export (guix-gc)) | 30 | #:export (guix-gc)) |
| @@ -221,9 +222,11 @@ Invoke the garbage collector.\n")) | |||
| 221 | (free-space | 222 | (free-space |
| 222 | (ensure-free-space store free-space)) | 223 | (ensure-free-space store free-space)) |
| 223 | (min-freed | 224 | (min-freed |
| 224 | (collect-garbage store min-freed)) | 225 | (let-values (((paths freed) (collect-garbage store min-freed))) |
| 226 | (info (_ "freed ~h bytes~%") freed))) | ||
| 225 | (else | 227 | (else |
| 226 | (collect-garbage store))))) | 228 | (let-values (((paths freed) (collect-garbage store))) |
| 229 | (info (_ "freed ~h bytes~%") freed)))))) | ||
| 227 | ((delete) | 230 | ((delete) |
| 228 | (delete-paths store (map direct-store-path paths))) | 231 | (delete-paths store (map direct-store-path paths))) |
| 229 | ((list-references) | 232 | ((list-references) |
diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm index b4fdb6f9050..d5e9197cc95 100644 --- a/guix/scripts/lint.scm +++ b/guix/scripts/lint.scm | |||
| @@ -359,7 +359,22 @@ warning for PACKAGE mentionning the FIELD." | |||
| 359 | (probe-uri uri #:timeout 3))) ;wait at most 3 seconds | 359 | (probe-uri uri #:timeout 3))) ;wait at most 3 seconds |
| 360 | (case status | 360 | (case status |
| 361 | ((http-response) | 361 | ((http-response) |
| 362 | (or (= 200 (response-code argument)) | 362 | (if (= 200 (response-code argument)) |
| 363 | (match (response-content-length argument) | ||
| 364 | ((? number? length) | ||
| 365 | ;; As of July 2016, SourceForge returns 200 (instead of 404) | ||
| 366 | ;; with a small HTML page upon failure. Attempt to detect such | ||
| 367 | ;; malicious behavior. | ||
| 368 | (or (> length 1000) | ||
| 369 | (begin | ||
| 370 | (emit-warning package | ||
| 371 | (format #f | ||
| 372 | (_ "URI ~a returned \ | ||
| 373 | suspiciously small file (~a bytes)") | ||
| 374 | (uri->string uri) | ||
| 375 | length)) | ||
| 376 | #f))) | ||
| 377 | (_ #t)) | ||
| 363 | (begin | 378 | (begin |
| 364 | (emit-warning package | 379 | (emit-warning package |
| 365 | (format #f | 380 | (format #f |
diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm index 4c0aa8e4199..3baceaf6455 100644 --- a/guix/scripts/publish.scm +++ b/guix/scripts/publish.scm | |||
| @@ -27,6 +27,7 @@ | |||
| 27 | #:use-module (rnrs bytevectors) | 27 | #:use-module (rnrs bytevectors) |
| 28 | #:use-module (srfi srfi-1) | 28 | #:use-module (srfi srfi-1) |
| 29 | #:use-module (srfi srfi-2) | 29 | #:use-module (srfi srfi-2) |
| 30 | #:use-module (srfi srfi-9) | ||
| 30 | #:use-module (srfi srfi-9 gnu) | 31 | #:use-module (srfi srfi-9 gnu) |
| 31 | #:use-module (srfi srfi-19) | 32 | #:use-module (srfi srfi-19) |
| 32 | #:use-module (srfi srfi-26) | 33 | #:use-module (srfi srfi-26) |
| @@ -45,6 +46,7 @@ | |||
| 45 | #:use-module (guix pk-crypto) | 46 | #:use-module (guix pk-crypto) |
| 46 | #:use-module (guix store) | 47 | #:use-module (guix store) |
| 47 | #:use-module (guix serialization) | 48 | #:use-module (guix serialization) |
| 49 | #:use-module (guix zlib) | ||
| 48 | #:use-module (guix ui) | 50 | #:use-module (guix ui) |
| 49 | #:use-module (guix scripts) | 51 | #:use-module (guix scripts) |
| 50 | #:export (guix-publish)) | 52 | #:export (guix-publish)) |
| @@ -59,6 +61,9 @@ Publish ~a over HTTP.\n") %store-directory) | |||
| 59 | (display (_ " | 61 | (display (_ " |
| 60 | -u, --user=USER change privileges to USER as soon as possible")) | 62 | -u, --user=USER change privileges to USER as soon as possible")) |
| 61 | (display (_ " | 63 | (display (_ " |
| 64 | -C, --compression[=LEVEL] | ||
| 65 | compress archives at LEVEL")) | ||
| 66 | (display (_ " | ||
| 62 | --ttl=TTL announce narinfos can be cached for TTL seconds")) | 67 | --ttl=TTL announce narinfos can be cached for TTL seconds")) |
| 63 | (display (_ " | 68 | (display (_ " |
| 64 | -r, --repl[=PORT] spawn REPL server on PORT")) | 69 | -r, --repl[=PORT] spawn REPL server on PORT")) |
| @@ -79,6 +84,20 @@ Publish ~a over HTTP.\n") %store-directory) | |||
| 79 | (leave (_ "lookup of host '~a' failed: ~a~%") | 84 | (leave (_ "lookup of host '~a' failed: ~a~%") |
| 80 | host (gai-strerror error))))) | 85 | host (gai-strerror error))))) |
| 81 | 86 | ||
| 87 | ;; Nar compression parameters. | ||
| 88 | (define-record-type <compression> | ||
| 89 | (compression type level) | ||
| 90 | compression? | ||
| 91 | (type compression-type) | ||
| 92 | (level compression-level)) | ||
| 93 | |||
| 94 | (define %no-compression | ||
| 95 | (compression 'none 0)) | ||
| 96 | |||
| 97 | (define %default-gzip-compression | ||
| 98 | ;; Since we compress on the fly, default to fast compression. | ||
| 99 | (compression 'gzip 3)) | ||
| 100 | |||
| 82 | (define %options | 101 | (define %options |
| 83 | (list (option '(#\h "help") #f #f | 102 | (list (option '(#\h "help") #f #f |
| 84 | (lambda _ | 103 | (lambda _ |
| @@ -102,6 +121,20 @@ Publish ~a over HTTP.\n") %store-directory) | |||
| 102 | (() | 121 | (() |
| 103 | (leave (_ "lookup of host '~a' returned nothing") | 122 | (leave (_ "lookup of host '~a' returned nothing") |
| 104 | name))))) | 123 | name))))) |
| 124 | (option '(#\C "compression") #f #t | ||
| 125 | (lambda (opt name arg result) | ||
| 126 | (match (if arg (string->number* arg) 3) | ||
| 127 | (0 | ||
| 128 | (alist-cons 'compression %no-compression result)) | ||
| 129 | (level | ||
| 130 | (if (zlib-available?) | ||
| 131 | (alist-cons 'compression | ||
| 132 | (compression 'gzip level) | ||
| 133 | result) | ||
| 134 | (begin | ||
| 135 | (warning (_ "zlib support is missing; \ | ||
| 136 | compression disabled~%")) | ||
| 137 | result)))))) | ||
| 105 | (option '("ttl") #t #f | 138 | (option '("ttl") #t #f |
| 106 | (lambda (opt name arg result) | 139 | (lambda (opt name arg result) |
| 107 | (let ((duration (string->duration arg))) | 140 | (let ((duration (string->duration arg))) |
| @@ -117,6 +150,12 @@ Publish ~a over HTTP.\n") %store-directory) | |||
| 117 | 150 | ||
| 118 | (define %default-options | 151 | (define %default-options |
| 119 | `((port . 8080) | 152 | `((port . 8080) |
| 153 | |||
| 154 | ;; Default to fast & low compression. | ||
| 155 | (compression . ,(if (zlib-available?) | ||
| 156 | %default-gzip-compression | ||
| 157 | %no-compression)) | ||
| 158 | |||
| 120 | (address . ,(make-socket-address AF_INET INADDR_ANY 0)) | 159 | (address . ,(make-socket-address AF_INET INADDR_ANY 0)) |
| 121 | (repl . #f))) | 160 | (repl . #f))) |
| 122 | 161 | ||
| @@ -152,12 +191,20 @@ Publish ~a over HTTP.\n") %store-directory) | |||
| 152 | (define base64-encode-string | 191 | (define base64-encode-string |
| 153 | (compose base64-encode string->utf8)) | 192 | (compose base64-encode string->utf8)) |
| 154 | 193 | ||
| 155 | (define (narinfo-string store store-path key) | 194 | (define* (narinfo-string store store-path key |
| 195 | #:key (compression %no-compression)) | ||
| 156 | "Generate a narinfo key/value string for STORE-PATH; an exception is raised | 196 | "Generate a narinfo key/value string for STORE-PATH; an exception is raised |
| 157 | if STORE-PATH is invalid. The narinfo is signed with KEY." | 197 | if STORE-PATH is invalid. Produce a URL that corresponds to COMPRESSION. The |
| 198 | narinfo is signed with KEY." | ||
| 158 | (let* ((path-info (query-path-info store store-path)) | 199 | (let* ((path-info (query-path-info store store-path)) |
| 159 | (url (encode-and-join-uri-path (list "nar" | 200 | (url (encode-and-join-uri-path |
| 160 | (basename store-path)))) | 201 | `("nar" |
| 202 | ,@(match compression | ||
| 203 | (($ <compression> 'none) | ||
| 204 | '()) | ||
| 205 | (($ <compression> type) | ||
| 206 | (list (symbol->string type)))) | ||
| 207 | ,(basename store-path)))) | ||
| 161 | (hash (bytevector->nix-base32-string | 208 | (hash (bytevector->nix-base32-string |
| 162 | (path-info-hash path-info))) | 209 | (path-info-hash path-info))) |
| 163 | (size (path-info-nar-size path-info)) | 210 | (size (path-info-nar-size path-info)) |
| @@ -166,13 +213,16 @@ if STORE-PATH is invalid. The narinfo is signed with KEY." | |||
| 166 | " ")) | 213 | " ")) |
| 167 | (deriver (path-info-deriver path-info)) | 214 | (deriver (path-info-deriver path-info)) |
| 168 | (base-info (format #f | 215 | (base-info (format #f |
| 169 | "StorePath: ~a | 216 | "\ |
| 217 | StorePath: ~a | ||
| 170 | URL: ~a | 218 | URL: ~a |
| 171 | Compression: none | 219 | Compression: ~a |
| 172 | NarHash: sha256:~a | 220 | NarHash: sha256:~a |
| 173 | NarSize: ~d | 221 | NarSize: ~d |
| 174 | References: ~a~%" | 222 | References: ~a~%" |
| 175 | store-path url hash size references)) | 223 | store-path url |
| 224 | (compression-type compression) | ||
| 225 | hash size references)) | ||
| 176 | ;; Do not render a "Deriver" or "System" line if we are rendering | 226 | ;; Do not render a "Deriver" or "System" line if we are rendering |
| 177 | ;; info for a derivation. | 227 | ;; info for a derivation. |
| 178 | (info (if (not deriver) | 228 | (info (if (not deriver) |
| @@ -209,7 +259,8 @@ References: ~a~%" | |||
| 209 | (format port "~a: ~a~%" key value))) | 259 | (format port "~a: ~a~%" key value))) |
| 210 | %nix-cache-info)))) | 260 | %nix-cache-info)))) |
| 211 | 261 | ||
| 212 | (define* (render-narinfo store request hash #:key ttl) | 262 | (define* (render-narinfo store request hash |
| 263 | #:key ttl (compression %no-compression)) | ||
| 213 | "Render metadata for the store path corresponding to HASH. If TTL is true, | 264 | "Render metadata for the store path corresponding to HASH. If TTL is true, |
| 214 | advertise it as the maximum validity period (in seconds) via the | 265 | advertise it as the maximum validity period (in seconds) via the |
| 215 | 'Cache-Control' header. This allows 'guix substitute' to cache it for an | 266 | 'Cache-Control' header. This allows 'guix substitute' to cache it for an |
| @@ -222,18 +273,35 @@ appropriate duration." | |||
| 222 | `((cache-control (max-age . ,ttl))) | 273 | `((cache-control (max-age . ,ttl))) |
| 223 | '())) | 274 | '())) |
| 224 | (cut display | 275 | (cut display |
| 225 | (narinfo-string store store-path (force %private-key)) | 276 | (narinfo-string store store-path (force %private-key) |
| 226 | <>))))) | 277 | #:compression compression) |
| 227 | 278 | <>))))) | |
| 228 | (define (render-nar store request store-item) | 279 | |
| 280 | ;; XXX: Declare the 'Guix-Compression' HTTP header, which is in fact for | ||
| 281 | ;; internal consumption: it allows us to pass the compression info to | ||
| 282 | ;; 'http-write', as part of the workaround to <http://bugs.gnu.org/21093>. | ||
| 283 | (declare-header! "Guix-Nar-Compression" | ||
| 284 | (lambda (str) | ||
| 285 | (match (call-with-input-string str read) | ||
| 286 | (('compression type level) | ||
| 287 | (compression type level)))) | ||
| 288 | compression? | ||
| 289 | (lambda (compression port) | ||
| 290 | (match compression | ||
| 291 | (($ <compression> type level) | ||
| 292 | (write `(compression ,type ,level) port))))) | ||
| 293 | |||
| 294 | (define* (render-nar store request store-item | ||
| 295 | #:key (compression %no-compression)) | ||
| 229 | "Render archive of the store path corresponding to STORE-ITEM." | 296 | "Render archive of the store path corresponding to STORE-ITEM." |
| 230 | (let ((store-path (string-append %store-directory "/" store-item))) | 297 | (let ((store-path (string-append %store-directory "/" store-item))) |
| 231 | ;; The ISO-8859-1 charset *must* be used otherwise HTTP clients will | 298 | ;; The ISO-8859-1 charset *must* be used otherwise HTTP clients will |
| 232 | ;; interpret the byte stream as UTF-8 and arbitrarily change invalid byte | 299 | ;; interpret the byte stream as UTF-8 and arbitrarily change invalid byte |
| 233 | ;; sequences. | 300 | ;; sequences. |
| 234 | (if (valid-path? store store-path) | 301 | (if (valid-path? store store-path) |
| 235 | (values '((content-type . (application/x-nix-archive | 302 | (values `((content-type . (application/x-nix-archive |
| 236 | (charset . "ISO-8859-1")))) | 303 | (charset . "ISO-8859-1"))) |
| 304 | (guix-nar-compression . ,compression)) | ||
| 237 | ;; XXX: We're not returning the actual contents, deferring | 305 | ;; XXX: We're not returning the actual contents, deferring |
| 238 | ;; instead to 'http-write'. This is a hack to work around | 306 | ;; instead to 'http-write'. This is a hack to work around |
| 239 | ;; <http://bugs.gnu.org/21093>. | 307 | ;; <http://bugs.gnu.org/21093>. |
| @@ -282,6 +350,28 @@ example: \"/foo/bar\" yields '(\"foo\" \"bar\")." | |||
| 282 | (values) | 350 | (values) |
| 283 | (apply throw args))))) | 351 | (apply throw args))))) |
| 284 | 352 | ||
| 353 | (define-syntax-rule (swallow-zlib-error exp ...) | ||
| 354 | "Swallow 'zlib-error' exceptions raised by EXP..." | ||
| 355 | (catch 'zlib-error | ||
| 356 | (lambda () | ||
| 357 | exp ...) | ||
| 358 | (const #f))) | ||
| 359 | |||
| 360 | (define (nar-response-port response) | ||
| 361 | "Return a port on which to write the body of RESPONSE, the response of a | ||
| 362 | /nar request, according to COMPRESSION." | ||
| 363 | (match (assoc-ref (response-headers response) 'guix-nar-compression) | ||
| 364 | (($ <compression> 'gzip level) | ||
| 365 | ;; Note: We cannot used chunked encoding here because | ||
| 366 | ;; 'make-gzip-output-port' wants a file port. | ||
| 367 | (make-gzip-output-port (response-port response) | ||
| 368 | #:level level | ||
| 369 | #:buffer-size (* 64 1024))) | ||
| 370 | (($ <compression> 'none) | ||
| 371 | (response-port response)) | ||
| 372 | (#f | ||
| 373 | (response-port response)))) | ||
| 374 | |||
| 285 | (define (http-write server client response body) | 375 | (define (http-write server client response body) |
| 286 | "Write RESPONSE and BODY to CLIENT, possibly in a separate thread to avoid | 376 | "Write RESPONSE and BODY to CLIENT, possibly in a separate thread to avoid |
| 287 | blocking." | 377 | blocking." |
| @@ -293,16 +383,20 @@ blocking." | |||
| 293 | (lambda () | 383 | (lambda () |
| 294 | (let* ((response (write-response (sans-content-length response) | 384 | (let* ((response (write-response (sans-content-length response) |
| 295 | client)) | 385 | client)) |
| 296 | (port (response-port response))) | 386 | (port (begin |
| 387 | (force-output client) | ||
| 388 | (nar-response-port response)))) | ||
| 297 | ;; XXX: Given our ugly workaround for <http://bugs.gnu.org/21093> in | 389 | ;; XXX: Given our ugly workaround for <http://bugs.gnu.org/21093> in |
| 298 | ;; 'render-nar', BODY here is just the file name of the store item. | 390 | ;; 'render-nar', BODY here is just the file name of the store item. |
| 299 | ;; We call 'write-file' from here because we know that's the only | 391 | ;; We call 'write-file' from here because we know that's the only |
| 300 | ;; way to avoid building the whole nar in memory, which could | 392 | ;; way to avoid building the whole nar in memory, which could |
| 301 | ;; quickly become a real problem. As a bonus, we even do | 393 | ;; quickly become a real problem. As a bonus, we even do |
| 302 | ;; sendfile(2) directly from the store files to the socket. | 394 | ;; sendfile(2) directly from the store files to the socket. |
| 303 | (swallow-EPIPE | 395 | (swallow-zlib-error |
| 304 | (write-file (utf8->string body) port)) | 396 | (swallow-EPIPE |
| 305 | (close-port port) | 397 | (write-file (utf8->string body) port))) |
| 398 | (swallow-zlib-error | ||
| 399 | (close-port port)) | ||
| 306 | (values))))) | 400 | (values))))) |
| 307 | (_ | 401 | (_ |
| 308 | ;; Handle other responses sequentially. | 402 | ;; Handle other responses sequentially. |
| @@ -316,7 +410,10 @@ blocking." | |||
| 316 | http-write | 410 | http-write |
| 317 | (@@ (web server http) http-close)) | 411 | (@@ (web server http) http-close)) |
| 318 | 412 | ||
| 319 | (define* (make-request-handler store #:key narinfo-ttl) | 413 | (define* (make-request-handler store |
| 414 | #:key | ||
| 415 | narinfo-ttl | ||
| 416 | (compression %no-compression)) | ||
| 320 | (lambda (request body) | 417 | (lambda (request body) |
| 321 | (format #t "~a ~a~%" | 418 | (format #t "~a ~a~%" |
| 322 | (request-method request) | 419 | (request-method request) |
| @@ -330,16 +427,37 @@ blocking." | |||
| 330 | (((= extract-narinfo-hash (? string? hash))) | 427 | (((= extract-narinfo-hash (? string? hash))) |
| 331 | ;; TODO: Register roots for HASH that will somehow remain for | 428 | ;; TODO: Register roots for HASH that will somehow remain for |
| 332 | ;; NARINFO-TTL. | 429 | ;; NARINFO-TTL. |
| 333 | (render-narinfo store request hash #:ttl narinfo-ttl)) | 430 | (render-narinfo store request hash |
| 431 | #:ttl narinfo-ttl | ||
| 432 | #:compression compression)) | ||
| 433 | |||
| 434 | ;; Use different URLs depending on the compression type. This | ||
| 435 | ;; guarantees that /nar URLs remain valid even when 'guix publish' | ||
| 436 | ;; is restarted with different compression parameters. | ||
| 437 | |||
| 334 | ;; /nar/<store-item> | 438 | ;; /nar/<store-item> |
| 335 | (("nar" store-item) | 439 | (("nar" store-item) |
| 336 | (render-nar store request store-item)) | 440 | (render-nar store request store-item |
| 441 | #:compression %no-compression)) | ||
| 442 | ;; /nar/gzip/<store-item> | ||
| 443 | (("nar" "gzip" store-item) | ||
| 444 | (if (zlib-available?) | ||
| 445 | (render-nar store request store-item | ||
| 446 | #:compression | ||
| 447 | (match compression | ||
| 448 | (($ <compression> 'gzip) | ||
| 449 | compression) | ||
| 450 | (_ | ||
| 451 | %default-gzip-compression))) | ||
| 452 | (not-found request))) | ||
| 337 | (_ (not-found request))) | 453 | (_ (not-found request))) |
| 338 | (not-found request)))) | 454 | (not-found request)))) |
| 339 | 455 | ||
| 340 | (define* (run-publish-server socket store | 456 | (define* (run-publish-server socket store |
| 341 | #:key narinfo-ttl) | 457 | #:key (compression %no-compression) narinfo-ttl) |
| 342 | (run-server (make-request-handler store #:narinfo-ttl narinfo-ttl) | 458 | (run-server (make-request-handler store |
| 459 | #:narinfo-ttl narinfo-ttl | ||
| 460 | #:compression compression) | ||
| 343 | concurrent-http-server | 461 | concurrent-http-server |
| 344 | `(#:socket ,socket))) | 462 | `(#:socket ,socket))) |
| 345 | 463 | ||
| @@ -378,6 +496,7 @@ blocking." | |||
| 378 | (user (assoc-ref opts 'user)) | 496 | (user (assoc-ref opts 'user)) |
| 379 | (port (assoc-ref opts 'port)) | 497 | (port (assoc-ref opts 'port)) |
| 380 | (ttl (assoc-ref opts 'narinfo-ttl)) | 498 | (ttl (assoc-ref opts 'narinfo-ttl)) |
| 499 | (compression (assoc-ref opts 'compression)) | ||
| 381 | (address (let ((addr (assoc-ref opts 'address))) | 500 | (address (let ((addr (assoc-ref opts 'address))) |
| 382 | (make-socket-address (sockaddr:fam addr) | 501 | (make-socket-address (sockaddr:fam addr) |
| 383 | (sockaddr:addr addr) | 502 | (sockaddr:addr addr) |
| @@ -404,4 +523,6 @@ consider using the '--user' option!~%"))) | |||
| 404 | (when repl-port | 523 | (when repl-port |
| 405 | (repl:spawn-server (repl:make-tcp-server-socket #:port repl-port))) | 524 | (repl:spawn-server (repl:make-tcp-server-socket #:port repl-port))) |
| 406 | (with-store store | 525 | (with-store store |
| 407 | (run-publish-server socket store #:narinfo-ttl ttl))))) | 526 | (run-publish-server socket store |
| 527 | #:compression compression | ||
| 528 | #:narinfo-ttl ttl))))) | ||
diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm index 5722aa821d7..8827c45fb81 100755 --- a/guix/scripts/substitute.scm +++ b/guix/scripts/substitute.scm | |||
| @@ -610,7 +610,8 @@ if file doesn't exist, and the narinfo otherwise." | |||
| 610 | (update-progress!) | 610 | (update-progress!) |
| 611 | (cons narinfo result)) | 611 | (cons narinfo result)) |
| 612 | (let* ((path (uri-path (request-uri request))) | 612 | (let* ((path (uri-path (request-uri request))) |
| 613 | (hash-part (string-drop-right path 8))) ; drop ".narinfo" | 613 | (hash-part (basename |
| 614 | (string-drop-right path 8)))) ;drop ".narinfo" | ||
| 614 | (if len | 615 | (if len |
| 615 | (get-bytevector-n port len) | 616 | (get-bytevector-n port len) |
| 616 | (read-to-eof port)) | 617 | (read-to-eof port)) |
diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index dd1e534c9b3..e2c6b2efee5 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm | |||
| @@ -362,7 +362,7 @@ it atomically, and then run OS's activation script." | |||
| 362 | ;; The activation script may modify '%load-path' & co., so protect | 362 | ;; The activation script may modify '%load-path' & co., so protect |
| 363 | ;; against that. This is necessary to ensure that | 363 | ;; against that. This is necessary to ensure that |
| 364 | ;; 'upgrade-shepherd-services' gets to see the right modules when it | 364 | ;; 'upgrade-shepherd-services' gets to see the right modules when it |
| 365 | ;; computes derivations with (gexp->derivation #:modules …). | 365 | ;; computes derivations with 'gexp->derivation'. |
| 366 | (save-load-path-excursion | 366 | (save-load-path-excursion |
| 367 | (primitive-load (derivation->output-path script)))) | 367 | (primitive-load (derivation->output-path script)))) |
| 368 | 368 | ||
diff --git a/guix/store.scm b/guix/store.scm index 276684e2fbe..9f409b42097 100644 --- a/guix/store.scm +++ b/guix/store.scm | |||
| @@ -510,7 +510,7 @@ encoding conversion errors." | |||
| 510 | (map (if (false-if-exception (resolve-interface '(gnutls))) | 510 | (map (if (false-if-exception (resolve-interface '(gnutls))) |
| 511 | (cut string-append "https://" <>) | 511 | (cut string-append "https://" <>) |
| 512 | (cut string-append "http://" <>)) | 512 | (cut string-append "http://" <>)) |
| 513 | '("mirror.hydra.gnu.org" "hydra.gnu.org"))) | 513 | '("mirror.hydra.gnu.org"))) |
| 514 | 514 | ||
| 515 | (define* (set-build-options server | 515 | (define* (set-build-options server |
| 516 | #:key keep-failed? keep-going? fallback? | 516 | #:key keep-failed? keep-going? fallback? |
diff --git a/guix/svn-download.scm b/guix/svn-download.scm index d6853ca861b..c1200fa0c5f 100644 --- a/guix/svn-download.scm +++ b/guix/svn-download.scm | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org> | 2 | ;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> |
| 3 | ;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in> | 3 | ;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in> |
| 4 | ;;; | 4 | ;;; |
| 5 | ;;; This file is part of GNU Guix. | 5 | ;;; This file is part of GNU Guix. |
| @@ -41,8 +41,10 @@ | |||
| 41 | (define-record-type* <svn-reference> | 41 | (define-record-type* <svn-reference> |
| 42 | svn-reference make-svn-reference | 42 | svn-reference make-svn-reference |
| 43 | svn-reference? | 43 | svn-reference? |
| 44 | (url svn-reference-url) ; string | 44 | (url svn-reference-url) ; string |
| 45 | (revision svn-reference-revision)) ; number | 45 | (revision svn-reference-revision) ; number |
| 46 | (user-name svn-reference-user-name (default #f)) | ||
| 47 | (password svn-reference-password (default #f))) | ||
| 46 | 48 | ||
| 47 | (define (subversion-package) | 49 | (define (subversion-package) |
| 48 | "Return the default Subversion package." | 50 | "Return the default Subversion package." |
| @@ -57,12 +59,16 @@ | |||
| 57 | object. The output is expected to have recursive hash HASH of type | 59 | object. The output is expected to have recursive hash HASH of type |
| 58 | HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." | 60 | HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." |
| 59 | (define build | 61 | (define build |
| 60 | #~(begin | 62 | (with-imported-modules '((guix build svn) |
| 61 | (use-modules (guix build svn)) | 63 | (guix build utils)) |
| 62 | (svn-fetch '#$(svn-reference-url ref) | 64 | #~(begin |
| 63 | '#$(svn-reference-revision ref) | 65 | (use-modules (guix build svn)) |
| 64 | #$output | 66 | (svn-fetch '#$(svn-reference-url ref) |
| 65 | #:svn-command (string-append #+svn "/bin/svn")))) | 67 | '#$(svn-reference-revision ref) |
| 68 | #$output | ||
| 69 | #:svn-command (string-append #+svn "/bin/svn") | ||
| 70 | #:user-name #$(svn-reference-user-name ref) | ||
| 71 | #:password #$(svn-reference-password ref))))) | ||
| 66 | 72 | ||
| 67 | (mlet %store-monad ((guile (package->derivation guile system))) | 73 | (mlet %store-monad ((guile (package->derivation guile system))) |
| 68 | (gexp->derivation (or name "svn-checkout") build | 74 | (gexp->derivation (or name "svn-checkout") build |
| @@ -70,8 +76,6 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f." | |||
| 70 | #:hash-algo hash-algo | 76 | #:hash-algo hash-algo |
| 71 | #:hash hash | 77 | #:hash hash |
| 72 | #:recursive? #t | 78 | #:recursive? #t |
| 73 | #:modules '((guix build svn) | ||
| 74 | (guix build utils)) | ||
| 75 | #:guile-for-build guile | 79 | #:guile-for-build guile |
| 76 | #:local-build? #t))) | 80 | #:local-build? #t))) |
| 77 | 81 | ||
diff --git a/guix/zlib.scm b/guix/zlib.scm new file mode 100644 index 00000000000..51e5e9e4263 --- /dev/null +++ b/guix/zlib.scm | |||
| @@ -0,0 +1,234 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | ||
| 2 | ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> | ||
| 3 | ;;; | ||
| 4 | ;;; This file is part of GNU Guix. | ||
| 5 | ;;; | ||
| 6 | ;;; GNU Guix is free software; you can redistribute it and/or modify it | ||
| 7 | ;;; under the terms of the GNU General Public License as published by | ||
| 8 | ;;; the Free Software Foundation; either version 3 of the License, or (at | ||
| 9 | ;;; your option) any later version. | ||
| 10 | ;;; | ||
| 11 | ;;; GNU Guix is distributed in the hope that it will be useful, but | ||
| 12 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 13 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 14 | ;;; GNU General Public License for more details. | ||
| 15 | ;;; | ||
| 16 | ;;; You should have received a copy of the GNU General Public License | ||
| 17 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | ||
| 18 | |||
| 19 | (define-module (guix zlib) | ||
| 20 | #:use-module (rnrs bytevectors) | ||
| 21 | #:use-module (ice-9 binary-ports) | ||
| 22 | #:use-module (ice-9 match) | ||
| 23 | #:use-module (system foreign) | ||
| 24 | #:use-module (guix config) | ||
| 25 | #:export (zlib-available? | ||
| 26 | make-gzip-input-port | ||
| 27 | make-gzip-output-port | ||
| 28 | call-with-gzip-input-port | ||
| 29 | call-with-gzip-output-port | ||
| 30 | %default-buffer-size | ||
| 31 | %default-compression-level)) | ||
| 32 | |||
| 33 | ;;; Commentary: | ||
| 34 | ;;; | ||
| 35 | ;;; Bindings to the gzip-related part of zlib's API. The main limitation of | ||
| 36 | ;;; this API is that it requires a file descriptor as the source or sink. | ||
| 37 | ;;; | ||
| 38 | ;;; Code: | ||
| 39 | |||
| 40 | (define %zlib | ||
| 41 | ;; File name of zlib's shared library. When updating via 'guix pull', | ||
| 42 | ;; '%libz' might be undefined so protect against it. | ||
| 43 | (delay (dynamic-link (if (defined? '%libz) | ||
| 44 | %libz | ||
| 45 | "libz")))) | ||
| 46 | |||
| 47 | (define (zlib-available?) | ||
| 48 | "Return true if zlib is available, #f otherwise." | ||
| 49 | (false-if-exception (force %zlib))) | ||
| 50 | |||
| 51 | (define (zlib-procedure ret name parameters) | ||
| 52 | "Return a procedure corresponding to C function NAME in libz, or #f if | ||
| 53 | either zlib or the function could not be found." | ||
| 54 | (match (false-if-exception (dynamic-func name (force %zlib))) | ||
| 55 | ((? pointer? ptr) | ||
| 56 | (pointer->procedure ret ptr parameters)) | ||
| 57 | (#f | ||
| 58 | #f))) | ||
| 59 | |||
| 60 | (define-wrapped-pointer-type <gzip-file> | ||
| 61 | ;; Scheme counterpart of the 'gzFile' opaque type. | ||
| 62 | gzip-file? | ||
| 63 | pointer->gzip-file | ||
| 64 | gzip-file->pointer | ||
| 65 | (lambda (obj port) | ||
| 66 | (format port "#<gzip-file ~a>" | ||
| 67 | (number->string (object-address obj) 16)))) | ||
| 68 | |||
| 69 | (define gzerror | ||
| 70 | (let ((proc (zlib-procedure '* "gzerror" '(* *)))) | ||
| 71 | (lambda (gzfile) | ||
| 72 | (let* ((errnum* (make-bytevector (sizeof int))) | ||
| 73 | (ptr (proc (gzip-file->pointer gzfile) | ||
| 74 | (bytevector->pointer errnum*)))) | ||
| 75 | (values (bytevector-sint-ref errnum* 0 | ||
| 76 | (native-endianness) (sizeof int)) | ||
| 77 | (pointer->string ptr)))))) | ||
| 78 | |||
| 79 | (define gzdopen | ||
| 80 | (let ((proc (zlib-procedure '* "gzdopen" (list int '*)))) | ||
| 81 | (lambda (fd mode) | ||
| 82 | "Open file descriptor FD as a gzip stream with the given MODE. MODE must | ||
| 83 | be a string denoting the how FD is to be opened, such as \"r\" for reading or | ||
| 84 | \"w9\" for writing data compressed at level 9 to FD. Calling 'gzclose' also | ||
| 85 | closes FD." | ||
| 86 | (let ((result (proc fd (string->pointer mode)))) | ||
| 87 | (if (null-pointer? result) | ||
| 88 | (throw 'zlib-error 'gzdopen) | ||
| 89 | (pointer->gzip-file result)))))) | ||
| 90 | |||
| 91 | (define gzread! | ||
| 92 | (let ((proc (zlib-procedure int "gzread" (list '* '* unsigned-int)))) | ||
| 93 | (lambda* (gzfile bv #:optional (start 0) (count (bytevector-length bv))) | ||
| 94 | "Read up to COUNT bytes from GZFILE into BV at offset START. Return the | ||
| 95 | number of uncompressed bytes actually read." | ||
| 96 | (let ((ret (proc (gzip-file->pointer gzfile) | ||
| 97 | (bytevector->pointer bv start) | ||
| 98 | count))) | ||
| 99 | (if (< ret 0) | ||
| 100 | (throw 'zlib-error 'gzread! ret) | ||
| 101 | ret))))) | ||
| 102 | |||
| 103 | (define gzwrite | ||
| 104 | (let ((proc (zlib-procedure int "gzwrite" (list '* '* unsigned-int)))) | ||
| 105 | (lambda* (gzfile bv #:optional (start 0) (count (bytevector-length bv))) | ||
| 106 | "Write up to COUNT bytes from BV at offset START into GZFILE. Return | ||
| 107 | the number of uncompressed bytes written, a strictly positive integer." | ||
| 108 | (let ((ret (proc (gzip-file->pointer gzfile) | ||
| 109 | (bytevector->pointer bv start) | ||
| 110 | count))) | ||
| 111 | (if (<= ret 0) | ||
| 112 | (throw 'zlib-error 'gzwrite ret) | ||
| 113 | ret))))) | ||
| 114 | |||
| 115 | (define gzbuffer! | ||
| 116 | (let ((proc (zlib-procedure int "gzbuffer" (list '* unsigned-int)))) | ||
| 117 | (lambda (gzfile size) | ||
| 118 | "Change the internal buffer size of GZFILE to SIZE bytes." | ||
| 119 | (let ((ret (proc (gzip-file->pointer gzfile) size))) | ||
| 120 | (unless (zero? ret) | ||
| 121 | (throw 'zlib-error 'gzbuffer! ret)))))) | ||
| 122 | |||
| 123 | (define gzeof? | ||
| 124 | (let ((proc (zlib-procedure int "gzeof" '(*)))) | ||
| 125 | (lambda (gzfile) | ||
| 126 | "Return true if the end-of-file has been reached on GZFILE." | ||
| 127 | (not (zero? (proc (gzip-file->pointer gzfile))))))) | ||
| 128 | |||
| 129 | (define gzclose | ||
| 130 | (let ((proc (zlib-procedure int "gzclose" '(*)))) | ||
| 131 | (lambda (gzfile) | ||
| 132 | "Close GZFILE." | ||
| 133 | (let ((ret (proc (gzip-file->pointer gzfile)))) | ||
| 134 | (unless (zero? ret) | ||
| 135 | (throw 'zlib-error 'gzclose ret (gzerror gzfile))))))) | ||
| 136 | |||
| 137 | |||
| 138 | |||
| 139 | ;;; | ||
| 140 | ;;; Port interface. | ||
| 141 | ;;; | ||
| 142 | |||
| 143 | (define %default-buffer-size | ||
| 144 | ;; Default buffer size, as documented in <zlib.h>. | ||
| 145 | 8192) | ||
| 146 | |||
| 147 | (define %default-compression-level | ||
| 148 | ;; Z_DEFAULT_COMPRESSION. | ||
| 149 | -1) | ||
| 150 | |||
| 151 | (define (close-procedure gzfile port) | ||
| 152 | "Return a procedure that closes GZFILE, ensuring its underlying PORT is | ||
| 153 | closed even if closing GZFILE triggers an exception." | ||
| 154 | (lambda () | ||
| 155 | (catch 'zlib-error | ||
| 156 | (lambda () | ||
| 157 | ;; 'gzclose' closes the underlying file descriptor. 'close-port' | ||
| 158 | ;; calls close(2), gets EBADF, which is ignores. | ||
| 159 | (gzclose gzfile) | ||
| 160 | (close-port port)) | ||
| 161 | (lambda args | ||
| 162 | ;; Make sure PORT is closed despite the zlib error. | ||
| 163 | (close-port port) | ||
| 164 | (apply throw args))))) | ||
| 165 | |||
| 166 | (define* (make-gzip-input-port port #:key (buffer-size %default-buffer-size)) | ||
| 167 | "Return an input port that decompresses data read from PORT, a file port. | ||
| 168 | PORT is automatically closed when the resulting port is closed. BUFFER-SIZE | ||
| 169 | is the size in bytes of the internal buffer, 8 KiB by default; using a larger | ||
| 170 | buffer increases decompression speed." | ||
| 171 | (define gzfile | ||
| 172 | (gzdopen (fileno port) "r")) | ||
| 173 | |||
| 174 | (define (read! bv start count) | ||
| 175 | ;; XXX: Can 'gzread!' return zero even though we haven't reached the EOF? | ||
| 176 | (gzread! gzfile bv start count)) | ||
| 177 | |||
| 178 | (unless (= buffer-size %default-buffer-size) | ||
| 179 | (gzbuffer! gzfile buffer-size)) | ||
| 180 | |||
| 181 | (make-custom-binary-input-port "gzip-input" read! #f #f | ||
| 182 | (close-procedure gzfile port))) | ||
| 183 | |||
| 184 | (define* (make-gzip-output-port port | ||
| 185 | #:key | ||
| 186 | (level %default-compression-level) | ||
| 187 | (buffer-size %default-buffer-size)) | ||
| 188 | "Return an output port that compresses data at the given LEVEL, using PORT, | ||
| 189 | a file port, as its sink. PORT is automatically closed when the resulting | ||
| 190 | port is closed." | ||
| 191 | (define gzfile | ||
| 192 | (gzdopen (fileno port) | ||
| 193 | (string-append "w" (number->string level)))) | ||
| 194 | |||
| 195 | (define (write! bv start count) | ||
| 196 | (gzwrite gzfile bv start count)) | ||
| 197 | |||
| 198 | (unless (= buffer-size %default-buffer-size) | ||
| 199 | (gzbuffer! gzfile buffer-size)) | ||
| 200 | |||
| 201 | (make-custom-binary-output-port "gzip-output" write! #f #f | ||
| 202 | (close-procedure gzfile port))) | ||
| 203 | |||
| 204 | (define* (call-with-gzip-input-port port proc | ||
| 205 | #:key (buffer-size %default-buffer-size)) | ||
| 206 | "Call PROC with a port that wraps PORT and decompresses data read from it. | ||
| 207 | PORT is closed upon completion. The gzip internal buffer size is set to | ||
| 208 | BUFFER-SIZE bytes." | ||
| 209 | (let ((gzip (make-gzip-input-port port #:buffer-size buffer-size))) | ||
| 210 | (dynamic-wind | ||
| 211 | (const #t) | ||
| 212 | (lambda () | ||
| 213 | (proc gzip)) | ||
| 214 | (lambda () | ||
| 215 | (close-port gzip))))) | ||
| 216 | |||
| 217 | (define* (call-with-gzip-output-port port proc | ||
| 218 | #:key | ||
| 219 | (level %default-compression-level) | ||
| 220 | (buffer-size %default-buffer-size)) | ||
| 221 | "Call PROC with an output port that wraps PORT and compresses data. PORT is | ||
| 222 | close upon completion. The gzip internal buffer size is set to BUFFER-SIZE | ||
| 223 | bytes." | ||
| 224 | (let ((gzip (make-gzip-output-port port | ||
| 225 | #:level level | ||
| 226 | #:buffer-size buffer-size))) | ||
| 227 | (dynamic-wind | ||
| 228 | (const #t) | ||
| 229 | (lambda () | ||
| 230 | (proc gzip)) | ||
| 231 | (lambda () | ||
| 232 | (close-port gzip))))) | ||
| 233 | |||
| 234 | ;;; zlib.scm ends here | ||
diff --git a/m4/guix.m4 b/m4/guix.m4 index 654789e1d9b..949ae4ca7c6 100644 --- a/m4/guix.m4 +++ b/m4/guix.m4 | |||
| @@ -295,6 +295,17 @@ AC_DEFUN([GUIX_LIBGCRYPT_LIBDIR], [ | |||
| 295 | $1="$guix_cv_libgcrypt_libdir" | 295 | $1="$guix_cv_libgcrypt_libdir" |
| 296 | ]) | 296 | ]) |
| 297 | 297 | ||
| 298 | dnl GUIX_LIBZ_LIBDIR VAR | ||
| 299 | dnl | ||
| 300 | dnl Attempt to determine libz's LIBDIR; store the result in VAR. | ||
| 301 | AC_DEFUN([GUIX_LIBZ_LIBDIR], [ | ||
| 302 | AC_REQUIRE([PKG_PROG_PKG_CONFIG]) | ||
| 303 | AC_CACHE_CHECK([zlib's library directory], | ||
| 304 | [guix_cv_libz_libdir], | ||
| 305 | [guix_cv_libz_libdir="`$PKG_CONFIG zlib --variable=libdir 2> /dev/null`"]) | ||
| 306 | $1="$guix_cv_libz_libdir" | ||
| 307 | ]) | ||
| 308 | |||
| 298 | dnl GUIX_CURRENT_LOCALSTATEDIR | 309 | dnl GUIX_CURRENT_LOCALSTATEDIR |
| 299 | dnl | 310 | dnl |
| 300 | dnl Determine the localstatedir of an existing Guix installation and set | 311 | dnl Determine the localstatedir of an existing Guix installation and set |
diff --git a/tests/cpan.scm b/tests/cpan.scm index 5d56f0bd2b4..898081b3e5a 100644 --- a/tests/cpan.scm +++ b/tests/cpan.scm | |||
| @@ -1,5 +1,6 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org> | 2 | ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org> |
| 3 | ;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co> | ||
| 3 | ;;; | 4 | ;;; |
| 4 | ;;; This file is part of GNU Guix. | 5 | ;;; This file is part of GNU Guix. |
| 5 | ;;; | 6 | ;;; |
| @@ -97,4 +98,14 @@ | |||
| 97 | (x | 98 | (x |
| 98 | (pk 'fail x #f))))) | 99 | (pk 'fail x #f))))) |
| 99 | 100 | ||
| 101 | (test-equal "source-url-http" | ||
| 102 | ((@@ (guix import cpan) fix-source-url) | ||
| 103 | "http://cpan.metacpan.org/authors/id/T/TE/TEST/Foo-Bar-0.1.tar.gz") | ||
| 104 | "mirror://cpan/authors/id/T/TE/TEST/Foo-Bar-0.1.tar.gz") | ||
| 105 | |||
| 106 | (test-equal "source-url-https" | ||
| 107 | ((@@ (guix import cpan) fix-source-url) | ||
| 108 | "https://cpan.metacpan.org/authors/id/T/TE/TEST/Foo-Bar-0.1.tar.gz") | ||
| 109 | "mirror://cpan/authors/id/T/TE/TEST/Foo-Bar-0.1.tar.gz") | ||
| 110 | |||
| 100 | (test-end "cpan") | 111 | (test-end "cpan") |
diff --git a/tests/gexp.scm b/tests/gexp.scm index f44f0eaf9ad..03a64fa6bb5 100644 --- a/tests/gexp.scm +++ b/tests/gexp.scm | |||
| @@ -526,6 +526,18 @@ | |||
| 526 | get-bytevector-all)))) | 526 | get-bytevector-all)))) |
| 527 | files)))))) | 527 | files)))))) |
| 528 | 528 | ||
| 529 | (test-equal "gexp-modules & ungexp" | ||
| 530 | '((bar) (foo)) | ||
| 531 | ((@@ (guix gexp) gexp-modules) | ||
| 532 | #~(foo #$(with-imported-modules '((foo)) #~+) | ||
| 533 | #+(with-imported-modules '((bar)) #~-)))) | ||
| 534 | |||
| 535 | (test-equal "gexp-modules & ungexp-splicing" | ||
| 536 | '((foo) (bar)) | ||
| 537 | ((@@ (guix gexp) gexp-modules) | ||
| 538 | #~(foo #$@(list (with-imported-modules '((foo)) #~+) | ||
| 539 | (with-imported-modules '((bar)) #~-))))) | ||
| 540 | |||
| 529 | (test-assertm "gexp->derivation #:modules" | 541 | (test-assertm "gexp->derivation #:modules" |
| 530 | (mlet* %store-monad | 542 | (mlet* %store-monad |
| 531 | ((build -> #~(begin | 543 | ((build -> #~(begin |
| @@ -540,31 +552,75 @@ | |||
| 540 | (s (stat (string-append p "/guile/guix/nix")))) | 552 | (s (stat (string-append p "/guile/guix/nix")))) |
| 541 | (return (eq? (stat:type s) 'directory)))))) | 553 | (return (eq? (stat:type s) 'directory)))))) |
| 542 | 554 | ||
| 555 | (test-assertm "gexp->derivation & with-imported-modules" | ||
| 556 | ;; Same test as above, but using 'with-imported-modules'. | ||
| 557 | (mlet* %store-monad | ||
| 558 | ((build -> (with-imported-modules '((guix build utils)) | ||
| 559 | #~(begin | ||
| 560 | (use-modules (guix build utils)) | ||
| 561 | (mkdir-p (string-append #$output "/guile/guix/nix")) | ||
| 562 | #t))) | ||
| 563 | (drv (gexp->derivation "test-with-modules" build))) | ||
| 564 | (mbegin %store-monad | ||
| 565 | (built-derivations (list drv)) | ||
| 566 | (let* ((p (derivation->output-path drv)) | ||
| 567 | (s (stat (string-append p "/guile/guix/nix")))) | ||
| 568 | (return (eq? (stat:type s) 'directory)))))) | ||
| 569 | |||
| 570 | (test-assertm "gexp->derivation & nested with-imported-modules" | ||
| 571 | (mlet* %store-monad | ||
| 572 | ((build1 -> (with-imported-modules '((guix build utils)) | ||
| 573 | #~(begin | ||
| 574 | (use-modules (guix build utils)) | ||
| 575 | (mkdir-p (string-append #$output "/guile/guix/nix")) | ||
| 576 | #t))) | ||
| 577 | (build2 -> (with-imported-modules '((guix build bournish)) | ||
| 578 | #~(begin | ||
| 579 | (use-modules (guix build bournish) | ||
| 580 | (system base compile)) | ||
| 581 | #+build1 | ||
| 582 | (call-with-output-file (string-append #$output "/b") | ||
| 583 | (lambda (port) | ||
| 584 | (write | ||
| 585 | (read-and-compile (open-input-string "cd /foo") | ||
| 586 | #:from %bournish-language | ||
| 587 | #:to 'scheme) | ||
| 588 | port)))))) | ||
| 589 | (drv (gexp->derivation "test-with-modules" build2))) | ||
| 590 | (mbegin %store-monad | ||
| 591 | (built-derivations (list drv)) | ||
| 592 | (let* ((p (derivation->output-path drv)) | ||
| 593 | (s (stat (string-append p "/guile/guix/nix"))) | ||
| 594 | (b (string-append p "/b"))) | ||
| 595 | (return (and (eq? (stat:type s) 'directory) | ||
| 596 | (equal? '(chdir "/foo") | ||
| 597 | (call-with-input-file b read)))))))) | ||
| 598 | |||
| 543 | (test-assertm "gexp->derivation #:references-graphs" | 599 | (test-assertm "gexp->derivation #:references-graphs" |
| 544 | (mlet* %store-monad | 600 | (mlet* %store-monad |
| 545 | ((one (text-file "one" (random-text))) | 601 | ((one (text-file "one" (random-text))) |
| 546 | (two (gexp->derivation "two" | 602 | (two (gexp->derivation "two" |
| 547 | #~(symlink #$one #$output:chbouib))) | 603 | #~(symlink #$one #$output:chbouib))) |
| 548 | (drv (gexp->derivation "ref-graphs" | 604 | (build -> (with-imported-modules '((guix build store-copy) |
| 549 | #~(begin | 605 | (guix build utils)) |
| 550 | (use-modules (guix build store-copy)) | 606 | #~(begin |
| 551 | (with-output-to-file #$output | 607 | (use-modules (guix build store-copy)) |
| 552 | (lambda () | 608 | (with-output-to-file #$output |
| 553 | (write (call-with-input-file "guile" | 609 | (lambda () |
| 554 | read-reference-graph)))) | 610 | (write (call-with-input-file "guile" |
| 555 | (with-output-to-file #$output:one | 611 | read-reference-graph)))) |
| 556 | (lambda () | 612 | (with-output-to-file #$output:one |
| 557 | (write (call-with-input-file "one" | 613 | (lambda () |
| 558 | read-reference-graph)))) | 614 | (write (call-with-input-file "one" |
| 559 | (with-output-to-file #$output:two | 615 | read-reference-graph)))) |
| 560 | (lambda () | 616 | (with-output-to-file #$output:two |
| 561 | (write (call-with-input-file "two" | 617 | (lambda () |
| 562 | read-reference-graph))))) | 618 | (write (call-with-input-file "two" |
| 619 | read-reference-graph))))))) | ||
| 620 | (drv (gexp->derivation "ref-graphs" build | ||
| 563 | #:references-graphs `(("one" ,one) | 621 | #:references-graphs `(("one" ,one) |
| 564 | ("two" ,two "chbouib") | 622 | ("two" ,two "chbouib") |
| 565 | ("guile" ,%bootstrap-guile)) | 623 | ("guile" ,%bootstrap-guile)))) |
| 566 | #:modules '((guix build store-copy) | ||
| 567 | (guix build utils)))) | ||
| 568 | (ok? (built-derivations (list drv))) | 624 | (ok? (built-derivations (list drv))) |
| 569 | (guile-drv (package->derivation %bootstrap-guile)) | 625 | (guile-drv (package->derivation %bootstrap-guile)) |
| 570 | (bash (interned-file (search-bootstrap-binary "bash" | 626 | (bash (interned-file (search-bootstrap-binary "bash" |
| @@ -676,11 +732,11 @@ | |||
| 676 | 732 | ||
| 677 | (test-assertm "program-file" | 733 | (test-assertm "program-file" |
| 678 | (let* ((n (random (expt 2 50))) | 734 | (let* ((n (random (expt 2 50))) |
| 679 | (exp (gexp (begin | 735 | (exp (with-imported-modules '((guix build utils)) |
| 680 | (use-modules (guix build utils)) | 736 | (gexp (begin |
| 681 | (display (ungexp n))))) | 737 | (use-modules (guix build utils)) |
| 738 | (display (ungexp n)))))) | ||
| 682 | (file (program-file "program" exp | 739 | (file (program-file "program" exp |
| 683 | #:modules '((guix build utils)) | ||
| 684 | #:guile %bootstrap-guile))) | 740 | #:guile %bootstrap-guile))) |
| 685 | (mlet* %store-monad ((drv (lower-object file)) | 741 | (mlet* %store-monad ((drv (lower-object file)) |
| 686 | (out -> (derivation->output-path drv))) | 742 | (out -> (derivation->output-path drv))) |
diff --git a/tests/grafts.scm b/tests/grafts.scm index 8cd048552c7..13c56750ed8 100644 --- a/tests/grafts.scm +++ b/tests/grafts.scm | |||
| @@ -135,14 +135,14 @@ | |||
| 135 | (replacement fake))) | 135 | (replacement fake))) |
| 136 | (drv (gexp->derivation | 136 | (drv (gexp->derivation |
| 137 | "to-graft" | 137 | "to-graft" |
| 138 | #~(begin | 138 | (with-imported-modules '((guix build utils)) |
| 139 | (use-modules (guix build utils)) | 139 | #~(begin |
| 140 | (mkdir-p (string-append #$output | 140 | (use-modules (guix build utils)) |
| 141 | "/a/b/c/d")) | 141 | (mkdir-p (string-append #$output |
| 142 | (symlink #$%bash | 142 | "/a/b/c/d")) |
| 143 | (string-append #$output | 143 | (symlink #$%bash |
| 144 | "/bash"))) | 144 | (string-append #$output |
| 145 | #:modules '((guix build utils)))) | 145 | "/bash")))))) |
| 146 | (grafted ((store-lift graft-derivation) drv | 146 | (grafted ((store-lift graft-derivation) drv |
| 147 | (list graft))) | 147 | (list graft))) |
| 148 | (_ (built-derivations (list grafted))) | 148 | (_ (built-derivations (list grafted))) |
diff --git a/tests/lint.scm b/tests/lint.scm index 1f1b0c95e99..ce751c42c9f 100644 --- a/tests/lint.scm +++ b/tests/lint.scm | |||
| @@ -102,14 +102,14 @@ | |||
| 102 | http-write | 102 | http-write |
| 103 | (@@ (web server http) http-close)) | 103 | (@@ (web server http) http-close)) |
| 104 | 104 | ||
| 105 | (define (call-with-http-server code thunk) | 105 | (define (call-with-http-server code data thunk) |
| 106 | "Call THUNK with an HTTP server running and returning CODE on HTTP | 106 | "Call THUNK with an HTTP server running and returning CODE and DATA (a |
| 107 | requests." | 107 | string) on HTTP requests." |
| 108 | (define (server-body) | 108 | (define (server-body) |
| 109 | (define (handle request body) | 109 | (define (handle request body) |
| 110 | (values (build-response #:code code | 110 | (values (build-response #:code code |
| 111 | #:reason-phrase "Such is life") | 111 | #:reason-phrase "Such is life") |
| 112 | "Hello, world.")) | 112 | data)) |
| 113 | 113 | ||
| 114 | (catch 'quit | 114 | (catch 'quit |
| 115 | (lambda () | 115 | (lambda () |
| @@ -123,8 +123,11 @@ requests." | |||
| 123 | ;; Normally SERVER exits automatically once it has received a request. | 123 | ;; Normally SERVER exits automatically once it has received a request. |
| 124 | (thunk)))) | 124 | (thunk)))) |
| 125 | 125 | ||
| 126 | (define-syntax-rule (with-http-server code body ...) | 126 | (define-syntax-rule (with-http-server code data body ...) |
| 127 | (call-with-http-server code (lambda () body ...))) | 127 | (call-with-http-server code data (lambda () body ...))) |
| 128 | |||
| 129 | (define %long-string | ||
| 130 | (make-string 2000 #\a)) | ||
| 128 | 131 | ||
| 129 | 132 | ||
| 130 | (test-begin "lint") | 133 | (test-begin "lint") |
| @@ -402,18 +405,30 @@ requests." | |||
| 402 | (test-equal "home-page: 200" | 405 | (test-equal "home-page: 200" |
| 403 | "" | 406 | "" |
| 404 | (with-warnings | 407 | (with-warnings |
| 405 | (with-http-server 200 | 408 | (with-http-server 200 %long-string |
| 406 | (let ((pkg (package | 409 | (let ((pkg (package |
| 407 | (inherit (dummy-package "x")) | 410 | (inherit (dummy-package "x")) |
| 408 | (home-page %local-url)))) | 411 | (home-page %local-url)))) |
| 409 | (check-home-page pkg))))) | 412 | (check-home-page pkg))))) |
| 410 | 413 | ||
| 411 | (test-skip (if %http-server-socket 0 1)) | 414 | (test-skip (if %http-server-socket 0 1)) |
| 415 | (test-assert "home-page: 200 but short length" | ||
| 416 | (->bool | ||
| 417 | (string-contains | ||
| 418 | (with-warnings | ||
| 419 | (with-http-server 200 "This is too small." | ||
| 420 | (let ((pkg (package | ||
| 421 | (inherit (dummy-package "x")) | ||
| 422 | (home-page %local-url)))) | ||
| 423 | (check-home-page pkg)))) | ||
| 424 | "suspiciously small"))) | ||
| 425 | |||
| 426 | (test-skip (if %http-server-socket 0 1)) | ||
| 412 | (test-assert "home-page: 404" | 427 | (test-assert "home-page: 404" |
| 413 | (->bool | 428 | (->bool |
| 414 | (string-contains | 429 | (string-contains |
| 415 | (with-warnings | 430 | (with-warnings |
| 416 | (with-http-server 404 | 431 | (with-http-server 404 %long-string |
| 417 | (let ((pkg (package | 432 | (let ((pkg (package |
| 418 | (inherit (dummy-package "x")) | 433 | (inherit (dummy-package "x")) |
| 419 | (home-page %local-url)))) | 434 | (home-page %local-url)))) |
| @@ -501,7 +516,7 @@ requests." | |||
| 501 | (test-equal "source: 200" | 516 | (test-equal "source: 200" |
| 502 | "" | 517 | "" |
| 503 | (with-warnings | 518 | (with-warnings |
| 504 | (with-http-server 200 | 519 | (with-http-server 200 %long-string |
| 505 | (let ((pkg (package | 520 | (let ((pkg (package |
| 506 | (inherit (dummy-package "x")) | 521 | (inherit (dummy-package "x")) |
| 507 | (source (origin | 522 | (source (origin |
| @@ -511,11 +526,26 @@ requests." | |||
| 511 | (check-source pkg))))) | 526 | (check-source pkg))))) |
| 512 | 527 | ||
| 513 | (test-skip (if %http-server-socket 0 1)) | 528 | (test-skip (if %http-server-socket 0 1)) |
| 529 | (test-assert "source: 200 but short length" | ||
| 530 | (->bool | ||
| 531 | (string-contains | ||
| 532 | (with-warnings | ||
| 533 | (with-http-server 200 "This is too small." | ||
| 534 | (let ((pkg (package | ||
| 535 | (inherit (dummy-package "x")) | ||
| 536 | (source (origin | ||
| 537 | (method url-fetch) | ||
| 538 | (uri %local-url) | ||
| 539 | (sha256 %null-sha256)))))) | ||
| 540 | (check-source pkg)))) | ||
| 541 | "suspiciously small"))) | ||
| 542 | |||
| 543 | (test-skip (if %http-server-socket 0 1)) | ||
| 514 | (test-assert "source: 404" | 544 | (test-assert "source: 404" |
| 515 | (->bool | 545 | (->bool |
| 516 | (string-contains | 546 | (string-contains |
| 517 | (with-warnings | 547 | (with-warnings |
| 518 | (with-http-server 404 | 548 | (with-http-server 404 %long-string |
| 519 | (let ((pkg (package | 549 | (let ((pkg (package |
| 520 | (inherit (dummy-package "x")) | 550 | (inherit (dummy-package "x")) |
| 521 | (source (origin | 551 | (source (origin |
| @@ -617,6 +647,6 @@ requests." | |||
| 617 | (test-end "lint") | 647 | (test-end "lint") |
| 618 | 648 | ||
| 619 | ;; Local Variables: | 649 | ;; Local Variables: |
| 620 | ;; eval: (put 'with-http-server 'scheme-indent-function 1) | 650 | ;; eval: (put 'with-http-server 'scheme-indent-function 2) |
| 621 | ;; eval: (put 'with-warnings 'scheme-indent-function 0) | 651 | ;; eval: (put 'with-warnings 'scheme-indent-function 0) |
| 622 | ;; End: | 652 | ;; End: |
diff --git a/tests/packages.scm b/tests/packages.scm index 94f5ea71a52..fc75e38730a 100644 --- a/tests/packages.scm +++ b/tests/packages.scm | |||
| @@ -335,7 +335,6 @@ | |||
| 335 | ("patch" ,%bootstrap-coreutils&co))) | 335 | ("patch" ,%bootstrap-coreutils&co))) |
| 336 | (patch-guile %bootstrap-guile) | 336 | (patch-guile %bootstrap-guile) |
| 337 | (modules '((guix build utils))) | 337 | (modules '((guix build utils))) |
| 338 | (imported-modules modules) | ||
| 339 | (snippet '(begin | 338 | (snippet '(begin |
| 340 | ;; We end up in 'bin', because it's the first | 339 | ;; We end up in 'bin', because it's the first |
| 341 | ;; directory, alphabetically. Not a very good | 340 | ;; directory, alphabetically. Not a very good |
diff --git a/tests/publish.scm b/tests/publish.scm index d6d537c58a6..9bf181f1fc5 100644 --- a/tests/publish.scm +++ b/tests/publish.scm | |||
| @@ -28,12 +28,15 @@ | |||
| 28 | #:use-module (guix store) | 28 | #:use-module (guix store) |
| 29 | #:use-module (guix base32) | 29 | #:use-module (guix base32) |
| 30 | #:use-module (guix base64) | 30 | #:use-module (guix base64) |
| 31 | #:use-module ((guix records) #:select (recutils->alist)) | ||
| 31 | #:use-module ((guix serialization) #:select (restore-file)) | 32 | #:use-module ((guix serialization) #:select (restore-file)) |
| 32 | #:use-module (guix pk-crypto) | 33 | #:use-module (guix pk-crypto) |
| 34 | #:use-module (guix zlib) | ||
| 33 | #:use-module (web uri) | 35 | #:use-module (web uri) |
| 34 | #:use-module (web client) | 36 | #:use-module (web client) |
| 35 | #:use-module (web response) | 37 | #:use-module (web response) |
| 36 | #:use-module (rnrs bytevectors) | 38 | #:use-module (rnrs bytevectors) |
| 39 | #:use-module (ice-9 binary-ports) | ||
| 37 | #:use-module (srfi srfi-1) | 40 | #:use-module (srfi srfi-1) |
| 38 | #:use-module (srfi srfi-26) | 41 | #:use-module (srfi srfi-26) |
| 39 | #:use-module (srfi srfi-64) | 42 | #:use-module (srfi srfi-64) |
| @@ -52,20 +55,28 @@ | |||
| 52 | (call-with-values (lambda () (http-get uri)) | 55 | (call-with-values (lambda () (http-get uri)) |
| 53 | (lambda (response body) body))) | 56 | (lambda (response body) body))) |
| 54 | 57 | ||
| 58 | (define (http-get-port uri) | ||
| 59 | (call-with-values (lambda () (http-get uri #:streaming? #t)) | ||
| 60 | (lambda (response port) port))) | ||
| 61 | |||
| 55 | (define (publish-uri route) | 62 | (define (publish-uri route) |
| 56 | (string-append "http://localhost:6789" route)) | 63 | (string-append "http://localhost:6789" route)) |
| 57 | 64 | ||
| 58 | ;; Run a local publishing server in a separate thread. | 65 | ;; Run a local publishing server in a separate thread. |
| 59 | (call-with-new-thread | 66 | (call-with-new-thread |
| 60 | (lambda () | 67 | (lambda () |
| 61 | (guix-publish "--port=6789"))) ; attempt to avoid port collision | 68 | (guix-publish "--port=6789" "-C0"))) ;attempt to avoid port collision |
| 69 | |||
| 70 | (define (wait-until-ready port) | ||
| 71 | ;; Wait until the server is accepting connections. | ||
| 72 | (let ((conn (socket PF_INET SOCK_STREAM 0))) | ||
| 73 | (let loop () | ||
| 74 | (unless (false-if-exception | ||
| 75 | (connect conn AF_INET (inet-pton AF_INET "127.0.0.1") port)) | ||
| 76 | (loop))))) | ||
| 62 | 77 | ||
| 63 | ;; Wait until the server is accepting connections. | 78 | ;; Wait until the two servers are ready. |
| 64 | (let ((conn (socket PF_INET SOCK_STREAM 0))) | 79 | (wait-until-ready 6789) |
| 65 | (let loop () | ||
| 66 | (unless (false-if-exception | ||
| 67 | (connect conn AF_INET (inet-pton AF_INET "127.0.0.1") 6789)) | ||
| 68 | (loop)))) | ||
| 69 | 80 | ||
| 70 | 81 | ||
| 71 | (test-begin "publish") | 82 | (test-begin "publish") |
| @@ -145,6 +156,40 @@ References: ~%" | |||
| 145 | (call-with-input-string nar (cut restore-file <> temp))) | 156 | (call-with-input-string nar (cut restore-file <> temp))) |
| 146 | (call-with-input-file temp read-string)))) | 157 | (call-with-input-file temp read-string)))) |
| 147 | 158 | ||
| 159 | (unless (zlib-available?) | ||
| 160 | (test-skip 1)) | ||
| 161 | (test-equal "/nar/gzip/*" | ||
| 162 | "bar" | ||
| 163 | (call-with-temporary-output-file | ||
| 164 | (lambda (temp port) | ||
| 165 | (let ((nar (http-get-port | ||
| 166 | (publish-uri | ||
| 167 | (string-append "/nar/gzip/" (basename %item)))))) | ||
| 168 | (call-with-gzip-input-port nar | ||
| 169 | (cut restore-file <> temp))) | ||
| 170 | (call-with-input-file temp read-string)))) | ||
| 171 | |||
| 172 | (unless (zlib-available?) | ||
| 173 | (test-skip 1)) | ||
| 174 | (test-equal "/*.narinfo with compression" | ||
| 175 | `(("StorePath" . ,%item) | ||
| 176 | ("URL" . ,(string-append "nar/gzip/" (basename %item))) | ||
| 177 | ("Compression" . "gzip")) | ||
| 178 | (let ((thread (call-with-new-thread | ||
| 179 | (lambda () | ||
| 180 | (guix-publish "--port=6799" "-C5"))))) | ||
| 181 | (wait-until-ready 6799) | ||
| 182 | (let* ((url (string-append "http://localhost:6799/" | ||
| 183 | (store-path-hash-part %item) ".narinfo")) | ||
| 184 | (body (http-get-port url))) | ||
| 185 | (filter (lambda (item) | ||
| 186 | (match item | ||
| 187 | (("Compression" . _) #t) | ||
| 188 | (("StorePath" . _) #t) | ||
| 189 | (("URL" . _) #t) | ||
| 190 | (_ #f))) | ||
| 191 | (recutils->alist body))))) | ||
| 192 | |||
| 148 | (test-equal "/nar/ with properly encoded '+' sign" | 193 | (test-equal "/nar/ with properly encoded '+' sign" |
| 149 | "Congrats!" | 194 | "Congrats!" |
| 150 | (let ((item (add-text-to-store %store "fake-gtk+" "Congrats!"))) | 195 | (let ((item (add-text-to-store %store "fake-gtk+" "Congrats!"))) |
diff --git a/tests/records.scm b/tests/records.scm index c6f85d4a81d..d6d27bb96a6 100644 --- a/tests/records.scm +++ b/tests/records.scm | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> | 2 | ;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> |
| 3 | ;;; | 3 | ;;; |
| 4 | ;;; This file is part of GNU Guix. | 4 | ;;; This file is part of GNU Guix. |
| 5 | ;;; | 5 | ;;; |
| @@ -17,6 +17,7 @@ | |||
| 17 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | 17 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. |
| 18 | 18 | ||
| 19 | (define-module (test-records) | 19 | (define-module (test-records) |
| 20 | #:use-module (srfi srfi-1) | ||
| 20 | #:use-module (srfi srfi-64) | 21 | #:use-module (srfi srfi-64) |
| 21 | #:use-module (ice-9 match) | 22 | #:use-module (ice-9 match) |
| 22 | #:use-module (ice-9 regex) | 23 | #:use-module (ice-9 regex) |
| @@ -214,6 +215,32 @@ | |||
| 214 | (equal? (foo-bar y) 1)) ;promise was already forced | 215 | (equal? (foo-bar y) 1)) ;promise was already forced |
| 215 | (eq? (foo-baz y) 'b))))) | 216 | (eq? (foo-baz y) 'b))))) |
| 216 | 217 | ||
| 218 | (test-assert "define-record-type* & wrong field specifier" | ||
| 219 | (let ((exp '(begin | ||
| 220 | (define-record-type* <foo> foo make-foo | ||
| 221 | foo? | ||
| 222 | (bar foo-bar (default 42)) | ||
| 223 | (baz foo-baz)) | ||
| 224 | |||
| 225 | (foo (baz 1 2 3 4 5)))) ;syntax error | ||
| 226 | (loc (current-source-location))) ;keep this alignment! | ||
| 227 | (catch 'syntax-error | ||
| 228 | (lambda () | ||
| 229 | (eval exp (test-module)) | ||
| 230 | #f) | ||
| 231 | (lambda (key proc message location form . args) | ||
| 232 | (and (eq? proc 'foo) | ||
| 233 | (string-match "invalid field" message) | ||
| 234 | (equal? form '(baz 1 2 3 4 5)) | ||
| 235 | |||
| 236 | ;; Make sure the location is that of the field specifier. | ||
| 237 | ;; See <http://bugs.gnu.org/23969>. | ||
| 238 | (lset= equal? | ||
| 239 | (pk 'expected-loc | ||
| 240 | `((line . ,(- (assq-ref loc 'line) 1)) | ||
| 241 | ,@(alist-delete 'line loc))) | ||
| 242 | (pk 'actual-loc location))))))) | ||
| 243 | |||
| 217 | (test-assert "define-record-type* & missing initializers" | 244 | (test-assert "define-record-type* & missing initializers" |
| 218 | (catch 'syntax-error | 245 | (catch 'syntax-error |
| 219 | (lambda () | 246 | (lambda () |
diff --git a/tests/system.scm b/tests/system.scm index b935bd07ebc..b5bb9af016d 100644 --- a/tests/system.scm +++ b/tests/system.scm | |||
| @@ -41,6 +41,25 @@ | |||
| 41 | 41 | ||
| 42 | (users %base-user-accounts))) | 42 | (users %base-user-accounts))) |
| 43 | 43 | ||
| 44 | (define %luks-device | ||
| 45 | (mapped-device | ||
| 46 | (source "/dev/foo") (target "my-luks-device") | ||
| 47 | (type luks-device-mapping))) | ||
| 48 | |||
| 49 | (define %os-with-mapped-device | ||
| 50 | (operating-system | ||
| 51 | (host-name "komputilo") | ||
| 52 | (timezone "Europe/Berlin") | ||
| 53 | (locale "en_US.utf8") | ||
| 54 | (bootloader (grub-configuration (device "/dev/sdX"))) | ||
| 55 | (mapped-devices (list %luks-device)) | ||
| 56 | (file-systems (cons (file-system | ||
| 57 | (inherit %root-fs) | ||
| 58 | (dependencies (list %luks-device))) | ||
| 59 | %base-file-systems)) | ||
| 60 | (users %base-user-accounts))) | ||
| 61 | |||
| 62 | |||
| 44 | (test-begin "system") | 63 | (test-begin "system") |
| 45 | 64 | ||
| 46 | (test-assert "operating-system-store-file-system" | 65 | (test-assert "operating-system-store-file-system" |
| @@ -71,4 +90,28 @@ | |||
| 71 | %base-file-systems))))) | 90 | %base-file-systems))))) |
| 72 | (eq? gnu (operating-system-store-file-system os)))) | 91 | (eq? gnu (operating-system-store-file-system os)))) |
| 73 | 92 | ||
| 93 | (test-equal "operating-system-user-mapped-devices" | ||
| 94 | '() | ||
| 95 | (operating-system-user-mapped-devices %os-with-mapped-device)) | ||
| 96 | |||
| 97 | (test-equal "operating-system-boot-mapped-devices" | ||
| 98 | (list %luks-device) | ||
| 99 | (operating-system-boot-mapped-devices %os-with-mapped-device)) | ||
| 100 | |||
| 101 | (test-equal "operating-system-boot-mapped-devices, implicit dependency" | ||
| 102 | (list %luks-device) | ||
| 103 | |||
| 104 | ;; Here we expect the implicit dependency between "/" and | ||
| 105 | ;; "/dev/mapper/my-luks-device" to be found, in spite of the lack of a | ||
| 106 | ;; 'dependencies' field in the root file system. | ||
| 107 | (operating-system-boot-mapped-devices | ||
| 108 | (operating-system | ||
| 109 | (inherit %os-with-mapped-device) | ||
| 110 | (file-systems (cons (file-system | ||
| 111 | (device "/dev/mapper/my-luks-device") | ||
| 112 | (title 'device) | ||
| 113 | (mount-point "/") | ||
| 114 | (type "ext4")) | ||
| 115 | %base-file-systems))))) | ||
| 116 | |||
| 74 | (test-end) | 117 | (test-end) |
diff --git a/tests/zlib.scm b/tests/zlib.scm new file mode 100644 index 00000000000..5455240a719 --- /dev/null +++ b/tests/zlib.scm | |||
| @@ -0,0 +1,63 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | ||
| 2 | ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> | ||
| 3 | ;;; | ||
| 4 | ;;; This file is part of GNU Guix. | ||
| 5 | ;;; | ||
| 6 | ;;; GNU Guix is free software; you can redistribute it and/or modify it | ||
| 7 | ;;; under the terms of the GNU General Public License as published by | ||
| 8 | ;;; the Free Software Foundation; either version 3 of the License, or (at | ||
| 9 | ;;; your option) any later version. | ||
| 10 | ;;; | ||
| 11 | ;;; GNU Guix is distributed in the hope that it will be useful, but | ||
| 12 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 13 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 14 | ;;; GNU General Public License for more details. | ||
| 15 | ;;; | ||
| 16 | ;;; You should have received a copy of the GNU General Public License | ||
| 17 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | ||
| 18 | |||
| 19 | (define-module (test-zlib) | ||
| 20 | #:use-module (guix zlib) | ||
| 21 | #:use-module (guix tests) | ||
| 22 | #:use-module (srfi srfi-64) | ||
| 23 | #:use-module (rnrs bytevectors) | ||
| 24 | #:use-module (rnrs io ports) | ||
| 25 | #:use-module (ice-9 match)) | ||
| 26 | |||
| 27 | ;; Test the (guix zlib) module. | ||
| 28 | |||
| 29 | (unless (zlib-available?) | ||
| 30 | (exit 77)) | ||
| 31 | |||
| 32 | (test-begin "zlib") | ||
| 33 | |||
| 34 | (test-assert "compression/decompression pipe" | ||
| 35 | (let ((data (random-bytevector (+ (random 10000) | ||
| 36 | (* 20 1024))))) | ||
| 37 | (match (pipe) | ||
| 38 | ((parent . child) | ||
| 39 | (match (primitive-fork) | ||
| 40 | (0 ;compress | ||
| 41 | (dynamic-wind | ||
| 42 | (const #t) | ||
| 43 | (lambda () | ||
| 44 | (close-port parent) | ||
| 45 | (call-with-gzip-output-port child | ||
| 46 | (lambda (port) | ||
| 47 | (put-bytevector port data)))) | ||
| 48 | (lambda () | ||
| 49 | (primitive-exit 0)))) | ||
| 50 | (pid ;decompress | ||
| 51 | (begin | ||
| 52 | (close-port child) | ||
| 53 | (let ((received (call-with-gzip-input-port parent | ||
| 54 | (lambda (port) | ||
| 55 | (get-bytevector-all port)) | ||
| 56 | #:buffer-size (* 64 1024)))) | ||
| 57 | (match (waitpid pid) | ||
| 58 | ((_ . status) | ||
| 59 | (and (zero? status) | ||
| 60 | (port-closed? parent) | ||
| 61 | (bytevector=? received data)))))))))))) | ||
| 62 | |||
| 63 | (test-end) | ||
