diff options
52 files changed, 1557 insertions, 750 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index f1848a1c5d..df8b5a9241 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -187,6 +187,7 @@ System Installation * USB Stick Installation:: Preparing the installation medium. * Preparing for Installation:: Networking, partitioning, etc. * Proceeding with the Installation:: The real thing. +* Installing GuixSD in a VM:: GuixSD playground. * Building the Installation Image:: How this comes to be. System Configuration @@ -1240,7 +1241,7 @@ programs to authenticate Web servers accessed over HTTPS. When using Guix on a foreign distro, you can install this package and define the relevant environment variables so that packages know where to -look for certificates. @pxref{X.509 Certificates}, for detailed +look for certificates. @xref{X.509 Certificates}, for detailed information. @subsection Emacs Packages @@ -4985,6 +4986,8 @@ list of updaters). Currently, @var{updater} may be one of: the updater for GNU packages; @item gnome the updater for GNOME packages; +@item kde +the updater for KDE packages; @item xorg the updater for X.org packages; @item elpa @@ -6027,7 +6030,7 @@ to join! @xref{Contributing}, for information about how you can help. @section System Installation @cindex Guix System Distribution -This section explains how to install the Guix System Distribution +This section explains how to install the Guix System Distribution (GuixSD) on a machine. The Guix package manager can also be installed on top of a running GNU/Linux system, @pxref{Installation}. @@ -6052,6 +6055,7 @@ available. * USB Stick Installation:: Preparing the installation medium. * Preparing for Installation:: Networking, partitioning, etc. * Proceeding with the Installation:: The real thing. +* Installing GuixSD in a VM:: GuixSD playground. * Building the Installation Image:: How this comes to be. @end menu @@ -6197,6 +6201,9 @@ Once this is done, you should be able to reboot the system and boot from the USB stick. The latter usually requires you to get in the BIOS' boot menu, where you can choose to boot from the USB stick. +@xref{Installing GuixSD in a VM}, if, instead, you would like to install +GuixSD in a virtual machine (VM). + @node Preparing for Installation @subsection Preparing for Installation @@ -6454,6 +6461,54 @@ Join us on @code{#guix} on the Freenode IRC network or on @file{guix-devel@@gnu.org} to share your experience---good or not so good. +@node Installing GuixSD in a VM +@subsection Installing GuixSD in a Virtual Machine + +@cindex virtual machine, GuixSD installation +If you'd like to install GuixSD in a virtual machine (VM) rather than on +your beloved machine, this section is for you. + +To boot a @uref{http://qemu.org/,QEMU} VM for installing GuixSD in a +disk image, follow these steps: + +@enumerate +@item +First, retrieve the GuixSD installation image as described previously +(@pxref{USB Stick Installation}). + +@item +Create a disk image that will hold the installed system. To make a +qcow2-formatted disk image, use the @command{qemu-img} command: + +@example +qemu-img create -f qcow2 guixsd.img 5G +@end example + +This will create a 5GB file. + +@item +Boot the USB installation image in an VM: + +@example +qemu-system-x86_64 -m 1024 -smp 1 \ + -net default -net nic,model=virtio -boot menu=on \ + -drive file=guixsd.img \ + -drive file=guixsd-usb-install-@value{VERSION}.@var{system} +@end example + +In the VM console, quickly press the @kbd{F12} key to enter the boot +menu. Then press the @kbd{2} key and the @kbd{RET} key to validate your +selection. + +@item +You're now root in the VM, proceed with the installation process. +@xref{Preparing for Installation}, and follow the instructions. +@end enumerate + +Once installation is complete, you can boot the system that's on your +@file{guixsd.img} image. @xref{Running GuixSD in a VM}, for how to do +that. + @node Building the Installation Image @subsection Building the Installation Image @@ -7347,7 +7402,7 @@ read locale data produced with libc 2.22; worse, that program data@footnote{Versions 2.23 and later of GNU@tie{}libc will simply skip the incompatible locale data, which is already an improvement.}. Similarly, a program linked against libc 2.22 can read most, but not -all, the locale data from libc 2.21 (specifically, @code{LC_COLLATE} +all, of the locale data from libc 2.21 (specifically, @code{LC_COLLATE} data is incompatible); thus calls to @code{setlocale} may fail, but programs will not abort. @@ -7390,11 +7445,12 @@ Configuration System}). System services are typically daemons launched when the system boots, or other actions needed at that time---e.g., configuring network access. -Services are managed by the GNU@tie{}Shepherd (@pxref{Introduction,,, -shepherd, The GNU Shepherd Manual}). On a running system, the -@command{herd} command allows you to list the available services, show -their status, start and stop them, or do other specific operations -(@pxref{Jump Start,,, shepherd, The GNU Shepherd Manual}). For example: +GuixSD has a broad definition of ``service'' (@pxref{Service +Composition}), but many services are managed by the GNU@tie{}Shepherd +(@pxref{Shepherd Services}). On a running system, the @command{herd} +command allows you to list the available services, show their status, +start and stop them, or do other specific operations (@pxref{Jump +Start,,, shepherd, The GNU Shepherd Manual}). For example: @example # herd status @@ -7780,7 +7836,7 @@ gexps to introduce job definitions that are passed to mcron #~(job "5 0 * * *" ;Vixie cron syntax "guix gc -F 1G")) -(define idutils-jobs +(define idutils-job ;; Update the index database as user "charlie" at 12:15PM ;; and 19:15PM. This runs from the user's home directory. #~(job '(next-minute-from (next-hour '(12 19)) '(15)) @@ -7805,8 +7861,8 @@ list of gexps denoting mcron job specifications. This is a shorthand for: @example - (service mcron-service-type - (mcron-configuration (mcron mcron) (jobs jobs))) +(service mcron-service-type + (mcron-configuration (mcron mcron) (jobs jobs))) @end example @end deffn @@ -7816,7 +7872,7 @@ This is the type of the @code{mcron} service, whose value is an This service type can be the target of a service extension that provides it additional job specifications (@pxref{Service Composition}). In -other words, it is possible to define services that provide addition +other words, it is possible to define services that provide additional mcron jobs to run. @end defvr diff --git a/doc/htmlxref.cnf b/doc/htmlxref.cnf index 559cdce5aa..bd2eb5f147 100644 --- a/doc/htmlxref.cnf +++ b/doc/htmlxref.cnf @@ -1,7 +1,7 @@ # htmlxref.cnf - reference file for free Texinfo manuals on the web. # Modified by Ludovic Courtès <ludo@gnu.org> for the GNU Guix manual. -htmlxrefversion=2016-03-30.07; # UTC +htmlxrefversion=2016-08-03.13; # UTC # Copyright 2010, 2011, 2012, 2013, 2014, 2015 Free Software Foundation, Inc. # @@ -224,6 +224,9 @@ emacs-muse node ${GS}/emacs-muse/manual/html_node/ emms node ${GS}/emms/manual/ +# The file is called 'find.info' but the package is 'findutils'. +find mono ${GS}/findutils/manual/html_mono/find.html +find node ${GS}/findutils/manual/html_node/find_html findutils mono ${GS}/findutils/manual/html_mono/find.html findutils node ${GS}/findutils/manual/html_node/find_html @@ -468,6 +471,9 @@ mailutils node ${GS}/mailutils/manual/html_node/ make mono ${GS}/make/manual/make.html make node ${GS}/make/manual/html_node/ +mcron mono ${GS}/mcron/manual/mcron.html +mcron node ${GS}/mcron/manual/html_node/ + mdk mono ${GS}/mdk/manual/mdk.html mdk node ${GS}/mdk/manual/html_node/ diff --git a/gnu/local.mk b/gnu/local.mk index 0428cd3a66..4a19e33414 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -105,6 +105,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/ed.scm \ %D%/packages/education.scm \ %D%/packages/elf.scm \ + %D%/packages/elixir.scm \ %D%/packages/emacs.scm \ %D%/packages/enchant.scm \ %D%/packages/engineering.scm \ @@ -117,7 +118,6 @@ GNU_SYSTEM_MODULES = \ %D%/packages/file.scm \ %D%/packages/finance.scm \ %D%/packages/firmware.scm \ - %D%/packages/fish.scm \ %D%/packages/flashing-tools.scm \ %D%/packages/flex.scm \ %D%/packages/fltk.scm \ @@ -291,7 +291,6 @@ GNU_SYSTEM_MODULES = \ %D%/packages/ragel.scm \ %D%/packages/rails.scm \ %D%/packages/ratpoison.scm \ - %D%/packages/rc.scm \ %D%/packages/rdesktop.scm \ %D%/packages/rdf.scm \ %D%/packages/readline.scm \ @@ -309,6 +308,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/search.scm \ %D%/packages/serialization.scm \ %D%/packages/serveez.scm \ + %D%/packages/shells.scm \ %D%/packages/shellutils.scm \ %D%/packages/shishi.scm \ %D%/packages/skarnet.scm \ @@ -328,7 +328,6 @@ GNU_SYSTEM_MODULES = \ %D%/packages/task-management.scm \ %D%/packages/tbb.scm \ %D%/packages/tcl.scm \ - %D%/packages/tcsh.scm \ %D%/packages/telephony.scm \ %D%/packages/terminals.scm \ %D%/packages/texinfo.scm \ @@ -481,6 +480,7 @@ dist_patch_DATA = \ %D%/packages/patches/duplicity-piped-password.patch \ %D%/packages/patches/duplicity-test_selection-tmp.patch \ %D%/packages/patches/elfutils-tests-ptrace.patch \ + %D%/packages/patches/elixir-disable-failing-tests.patch \ %D%/packages/patches/einstein-build.patch \ %D%/packages/patches/emacs-exec-path.patch \ %D%/packages/patches/emacs-fix-scheme-indent-function.patch \ @@ -681,10 +681,6 @@ dist_patch_DATA = \ %D%/packages/patches/openexr-missing-samples.patch \ %D%/packages/patches/openjpeg-CVE-2015-6581.patch \ %D%/packages/patches/openjpeg-use-after-free-fix.patch \ - %D%/packages/patches/openssh-CVE-2015-8325.patch \ - %D%/packages/patches/openssh-CVE-2016-6210-1.patch \ - %D%/packages/patches/openssh-CVE-2016-6210-2.patch \ - %D%/packages/patches/openssh-CVE-2016-6210-3.patch \ %D%/packages/patches/openssl-runpath.patch \ %D%/packages/patches/openssl-c-rehash-in.patch \ %D%/packages/patches/openssl-CVE-2016-2177.patch \ @@ -724,6 +720,7 @@ dist_patch_DATA = \ %D%/packages/patches/portmidi-modular-build.patch \ %D%/packages/patches/procmail-ambiguous-getline-debian.patch \ %D%/packages/patches/procmail-CVE-2014-3618.patch \ + %D%/packages/patches/procps-non-linux.patch \ %D%/packages/patches/pt-scotch-build-parallelism.patch \ %D%/packages/patches/pulseaudio-fix-mult-test.patch \ %D%/packages/patches/pulseaudio-longer-test-timeout.patch \ @@ -743,6 +740,7 @@ dist_patch_DATA = \ %D%/packages/patches/python-ipython-inputhook-ctype.patch \ %D%/packages/patches/python-rarfile-fix-tests.patch \ %D%/packages/patches/python2-rdflib-drop-sparqlwrapper.patch \ + %D%/packages/patches/python-statsmodels-fix-tests.patch \ %D%/packages/patches/python-configobj-setuptools.patch \ %D%/packages/patches/python-paste-remove-website-test.patch \ %D%/packages/patches/python-paste-remove-timing-test.patch \ diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 195959efd1..eada7962d2 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -183,14 +183,14 @@ graphs and can export its output to different formats.") (define-public htop (package (name "htop") - (version "2.0.1") + (version "2.0.2") (source (origin (method url-fetch) (uri (string-append "http://hisham.hm/htop/releases/" version "/htop-" version ".tar.gz")) (sha256 (base32 - "0rjn9ybqx5sav7z4gn18f1q6k23nmqyb6yydfgghzdznz9nn447l")))) + "11zlwadm6dpkrlfvf3z3xll26yyffa7qrxd1w72y1kl0rgffk6qp")))) (build-system gnu-build-system) (inputs `(("ncurses" ,ncurses))) @@ -981,18 +981,18 @@ network, which causes enabled computers to power on.") (define-public dmidecode (package (name "dmidecode") - (version "2.12") + (version "3.0") (source (origin (method url-fetch) (uri (string-append "mirror://savannah/dmidecode/dmidecode-" - version ".tar.bz2")) + version ".tar.xz")) (sha256 (base32 - "122hgaw8mpqdfra159lfl6pyk3837giqx6vq42j64fjnbl2z6gwi")))) + "0iby0xfk5x3cdr0x0gxj5888jjyjhafvaq0l79civ73jjfqmphvy")))) (build-system gnu-build-system) (arguments - '(#:phases (alist-delete 'configure %standard-phases) + '(#:phases (modify-phases %standard-phases (delete 'configure)) #:tests? #f ; no 'check' target #:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out"))))) diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm index 92b4d4c27e..4fb15c6471 100644 --- a/gnu/packages/algebra.scm +++ b/gnu/packages/algebra.scm @@ -36,7 +36,7 @@ #:use-module (gnu packages readline) #:use-module (gnu packages flex) #:use-module (gnu packages python) - #:use-module (gnu packages tcsh) + #:use-module (gnu packages shells) #:use-module (gnu packages tex) #:use-module (gnu packages xiph) #:use-module (gnu packages xorg) diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 5edf3eb493..a476837102 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -535,6 +535,7 @@ store.") ;; ;; `--localedir' is not honored, so work around it. ;; See <http://sourceware.org/ml/libc-alpha/2013-03/msg00093.html>. + ;; FIXME: This hack no longer works on 2.23! (string-append "libc_cv_localedir=/run/current-system/locale/" ,version) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 9cdc692d07..c3ba9634ba 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -51,7 +51,9 @@ #:use-module (gnu packages gawk) #:use-module (gnu packages gcc) #:use-module (gnu packages gd) + #:use-module (gnu packages gtk) #:use-module (gnu packages image) + #:use-module (gnu packages imagemagick) #:use-module (gnu packages java) #:use-module (gnu packages linux) #:use-module (gnu packages logging) @@ -70,6 +72,7 @@ #:use-module (gnu packages ruby) #:use-module (gnu packages statistics) #:use-module (gnu packages tbb) + #:use-module (gnu packages tex) #:use-module (gnu packages textutils) #:use-module (gnu packages time) #:use-module (gnu packages tls) @@ -1603,6 +1606,33 @@ data and settings.") (license (license:non-copyleft "file://src/COPYING" "See src/COPYING in the distribution.")))) +(define-public discrover + (package + (name "discrover") + (version "1.6.0") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/maaskola/discrover/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0rah9ja4m0rl5mldd6vag9rwrivw1zrqxssfq8qx64m7961fp68k")))) + (build-system cmake-build-system) + (arguments `(#:tests? #f)) ; there are no tests + (inputs + `(("boost" ,boost) + ("cairo" ,cairo))) + (native-inputs + `(("texlive" ,texlive) + ("imagemagick" ,imagemagick))) + (home-page "http://dorina.mdc-berlin.de/public/rajewsky/discrover/") + (synopsis "Discover discriminative nucleotide sequence motifs") + (description "Discrover is a motif discovery method to find binding sites +of nucleic acid binding proteins.") + (license license:gpl3+))) + (define-public eigensoft (let ((revision "1") (commit "b14d1e202e21e532536ff8004f0419cd5e259dc7")) @@ -2108,6 +2138,8 @@ basic tasks but can change to using POSIX regular expressions, PCRE, hash lookups or multi-pattern searching as required. By default fxtract looks in the sequence of each record but can also be told to look in the header, comment or quality sections.") + ;; 'util' requires SSE instructions. + (supported-systems '("x86_64-linux")) (license license:expat)))) (define-public grit @@ -4645,13 +4677,13 @@ CAGE.") (define-public r-variantannotation (package (name "r-variantannotation") - (version "1.18.1") + (version "1.18.6") (source (origin (method url-fetch) (uri (bioconductor-uri "VariantAnnotation" version)) (sha256 (base32 - "1jdpdnp7l81xfprba2ykfnj6i64fd84vxaax0wvrz6qahxvnjzyw")))) + "17q2b3wlv3250v6qm114srkarxykpd5rqmg4kzymmqsn1b8hynhv")))) (properties `((upstream-name . "VariantAnnotation"))) (inputs @@ -5273,7 +5305,7 @@ genomic intervals. In addition, it can use BAM or BigWig files as input.") (define-public r-genomationdata (package (name "r-genomationdata") - (version "1.4.0") + (version "1.4.2") (source (origin (method url-fetch) ;; We cannot use bioconductor-uri here because this tarball is @@ -5283,7 +5315,7 @@ genomic intervals. In addition, it can use BAM or BigWig files as input.") "genomationData_" version ".tar.gz")) (sha256 (base32 - "1xzq2j722d8lcn5bc3aq3yb34xwis2d0bpsf6jsq4xw1bg0bsy79")))) + "1zl7gg144fs7zfycsmq5492sm1bqy7l527xbc2zj04schd9wsan2")))) (build-system r-build-system) ;; As this package provides little more than large data files, it doesn't ;; make sense to build substitutes. diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm index fd8f4e80e3..8fe8c8e899 100644 --- a/gnu/packages/boost.scm +++ b/gnu/packages/boost.scm @@ -28,7 +28,7 @@ #:use-module (gnu packages) #:use-module (gnu packages compression) #:use-module (gnu packages python) - #:use-module (gnu packages tcsh) + #:use-module (gnu packages shells) #:use-module (gnu packages perl)) (define-public boost diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm index 64df95ded6..63a9280708 100644 --- a/gnu/packages/code.scm +++ b/gnu/packages/code.scm @@ -229,6 +229,29 @@ files, but compared to grep is much faster and respects files like .gitignore, .hgignore, etc.") (license license:asl2.0))) +(define-public trio + (package + (name "trio") + (version "1.16") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/ctrio/trio/trio-" + version ".tar.gz")) + (sha256 + (base32 + "02pwd5m5vq7hbrffgm2na1dfc249z50yyr5jv73vdw15bd7ygl44")))) + (build-system gnu-build-system) + (home-page "http://daniel.haxx.se/projects/trio/") + (synopsis "Portable and extendable printf and string functions") + (description + "Trio is a set of @code{printf} and string functions designed be used by +applications with a focus on portability or with the need for additional +features that are not supported by the standard @code{stdio} implementation.") + ;; This license is very similar to the ISC license, but the wording is + ;; slightly different. + (license (license:non-copyleft + "http://sourceforge.net/p/ctrio/git/ci/master/tree/README")))) + (define-public withershins (package (name "withershins") diff --git a/gnu/packages/dav.scm b/gnu/packages/dav.scm index 4aa954bd6f..7d3e43d7cd 100644 --- a/gnu/packages/dav.scm +++ b/gnu/packages/dav.scm @@ -52,16 +52,13 @@ clients.") (define-public vdirsyncer (package (name "vdirsyncer") - (version "0.11.2") + (version "0.11.3") (source (origin (method url-fetch) - (uri (string-append - "https://pypi.python.org/packages/" - "6c/fb/20c32861134579fdce67060bf4cc074e171d30c70590137adc73924f94a6/" - name "-" version ".tar.gz")) + (uri (pypi-uri name version)) (sha256 (base32 - "15isw2jhjfxi213wdj9d8mwq2m58k8bwf831qnxrjcz7j7bwy7mj")))) + "10majl58vdpxgbddjqgwblvl7akvvr4c2c8iaxnf3kgyh01jq6k9")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm index fde1e1b342..14c1bac322 100644 --- a/gnu/packages/education.scm +++ b/gnu/packages/education.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org> +;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -21,8 +22,17 @@ #:use-module (gnu packages) #:use-module (gnu packages qt) #:use-module (gnu packages compression) + #:use-module (gnu packages databases) #:use-module (gnu packages gettext) + #:use-module (gnu packages glib) + #:use-module (gnu packages gnome) + #:use-module (gnu packages gtk) #:use-module (gnu packages perl) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python) + #:use-module (gnu packages sdl) + #:use-module (gnu packages texinfo) + #:use-module (gnu packages xml) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) @@ -69,3 +79,62 @@ can be used to control telescopes over a serial port for tracking celestial objects.") (license license:gpl2+))) + +(define-public gcompris + (package + (name "gcompris") + (version "15.10") + (source (origin + (method url-fetch) + (uri (string-append "http://gcompris.net/download/gtk/src/gcompris-" + version ".tar.bz2")) + (sha256 + (base32 + "0f7wa27vvpn9ansp2aald1pajqlx5d51mvj07ba503yvl7i77fka")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + ;; Use SDL mixer because otherwise GCompris would need an old version + ;; of Gstreamer. + (list "--enable-sdlmixer" + "LDFLAGS=-lgmodule-2.0") + #:phases + (modify-phases %standard-phases + (add-after 'set-paths 'set-sdl-paths + (lambda* (#:key inputs #:allow-other-keys) + (setenv "CPATH" + (string-append (assoc-ref inputs "sdl-mixer") + "/include/SDL")) + #t))))) + (inputs + `(("gtk+" ,gtk+-2) + ("librsvg" ,librsvg) + ("libxml2" ,libxml2) + ("sdl-mixer" ,sdl-mixer) + ("sqlite" ,sqlite) + ("glib:bin" ,glib) + ("python" ,python))) + (native-inputs + `(("intltool" ,intltool) + ("texinfo" ,texinfo) + ("texi2html" ,texi2html) + ("glib:bin" ,glib "bin") + ("pkg-config" ,pkg-config))) + (home-page "http://gcompris.net") + (synopsis "Educational software suite") + (description "GCompris is an educational software suite comprising of +numerous activities for children aged 2 to 10. Some of the activities are +game orientated, but nonetheless still educational. Below you can find a list +of categories with some of the activities available in that category. + +@enumerate +@item computer discovery: keyboard, mouse, different mouse gestures, ... +@item arithmetic: table memory, enumeration, double entry table, mirror image, ... +@item science: the canal lock, the water cycle, the submarine, electric simulation ... +@item geography: place the country on the map +@item games: chess, memory, connect 4, oware, sudoku ... +@item reading: reading practice +@item other: learn to tell time, puzzle of famous paintings, vector drawing, cartoon making, ... +@end enumerate +") + (license license:gpl3+))) diff --git a/gnu/packages/elixir.scm b/gnu/packages/elixir.scm new file mode 100644 index 0000000000..4e430b323f --- /dev/null +++ b/gnu/packages/elixir.scm @@ -0,0 +1,99 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2016 Leo Famulari <leo@famulari.name> +;;; Copyright © 2016 Pjotr Prins <pjotr.public12@thebird.nl> +;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages elixir) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix build-system gnu) + #:use-module (guix download) + #:use-module (guix packages) + #:use-module (gnu packages) + #:use-module (gnu packages erlang) + #:use-module (gnu packages version-control)) + +(define-public elixir + (package + (name "elixir") + (version "1.3.2") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/elixir-lang/elixir" + "/archive/v" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0jsc6kl7f74yszcypdv3w3vhyc9qfqav8nwc41in082m0vpfy95y")) + ;; FIXME: Some tests had to be disabled as they fail in the + ;; build environment. Common failures are: + ;; - Mix.Shell.cmd() fails with error 130 + ;; - The git_repo fixture cannot be found + ;; - Communication with spawned processes fails with EPIPE + ;; - Failure to copy files + (patches (search-patches "elixir-disable-failing-tests.patch")))) + (build-system gnu-build-system) + (arguments + `(#:test-target "test" + #:make-flags (list (string-append "PREFIX=" + (assoc-ref %outputs "out"))) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'replace-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* '("lib/elixir/lib/system.ex" + "lib/mix/lib/mix/scm/git.ex") + (("(cmd\\(['\"])git" _ prefix) + (string-append prefix (which "git")))) + (substitute* "bin/elixir" + (("ERL_EXEC=\"erl\"") + (string-append "ERL_EXEC=" (which "erl")))) + #t)) + (add-after 'unpack 'fix-or-disable-tests + (lambda* (#:key inputs #:allow-other-keys) + ;; Some tests require access to a home directory. + (setenv "HOME" "/tmp") + + ;; FIXME: These tests fail because the "git_repo" fixture does + ;; not exist or cannot be found. + (delete-file "lib/mix/test/mix/tasks/deps.git_test.exs") + + ;; FIXME: Mix.Shell.cmd() always fails with error code 130. + (delete-file "lib/mix/test/mix/shell_test.exs") + #t)) + (add-before 'build 'make-current + ;; The Elixir compiler checks whether or not to compile files by + ;; inspecting their timestamps. When the timestamp is equal to the + ;; epoch no compilation will be performed. Some tests fail when + ;; files are older than Jan 1, 2000. + (lambda _ + (for-each (lambda (file) + (let ((recent 1400000000)) + (utime file recent recent 0 0))) + (find-files "." ".*")) + #t)) + (delete 'configure)))) + (inputs + `(("erlang" ,erlang) + ("git" ,git))) + (home-page "http://elixir-lang.org/") + (synopsis "Elixir programming language") + (description "Elixir is a dynamic, functional language used to build +scalable and maintainable applications. Elixir leverages the Erlang VM, known +for running low-latency, distributed and fault-tolerant systems, while also +being successfully used in web development and the embedded software domain.") + (license license:asl2.0))) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index 97c21f1bc0..825a355d63 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -2697,6 +2697,30 @@ identifiers based on their names. Each identifier gets a color based on a hash of its name.") (license license:bsd-2))) +(define-public emacs-visual-fill-column + (package + (name "emacs-visual-fill-column") + (version "1.7") + (source (origin + (method url-fetch) + (uri (string-append "https://codeload.github.com/joostkremers/" + "visual-fill-column/tar.gz/" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "12vn7kdq2mpz9hgibbn1vhpf23lcm7c26k3fkz8nidhygwl5x5lq")))) + (build-system emacs-build-system) + (home-page "https://github.com/joostkremers/visual-fill-column") + (synopsis "Fill-column for visual-line-mode") + (description + "@code{visual-fill-column-mode} is a small Emacs minor mode that mimics +the effect of @code{fill-column} in @code{visual-line-mode}. Instead of +wrapping lines at the window edge, which is the standard behaviour of +@code{visual-line-mode}, it wraps lines at @code{fill-column}. If +@code{fill-column} is too large for the window, the text is wrapped at the +window edge.") + (license license:gpl3+))) + (define-public emacs-ido-completing-read+ (package (name "emacs-ido-completing-read+") diff --git a/gnu/packages/fish.scm b/gnu/packages/fish.scm deleted file mode 100644 index a8b88e7c10..0000000000 --- a/gnu/packages/fish.scm +++ /dev/null @@ -1,65 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org> -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. - -(define-module (gnu packages fish) - #:use-module (guix licenses) - #:use-module (gnu packages documentation) - #:use-module (gnu packages ncurses) - #:use-module (gnu packages python) - #:use-module (guix packages) - #:use-module (guix download) - #:use-module (guix utils) - #:use-module (guix build-system gnu)) - -(define-public fish - (package - (name "fish") - (version "2.3.1") - (source (origin - (method url-fetch) - (uri (string-append "https://fishshell.com/files/" - version "/fish-" version ".tar.gz")) - (sha256 - (base32 - "0r46p64lg6da3v6chsa4gisvl04kd3rpy60yih8r870kbp9wm2ij")) - (modules '((guix build utils))) - ;; Don't try to install /etc/fish/config.fish. - (snippet - '(substitute* "Makefile.in" - ((".*INSTALL.*sysconfdir.*fish.*") ""))))) - (build-system gnu-build-system) - (native-inputs - `(("doxygen" ,doxygen))) - (inputs - `(("ncurses" ,ncurses) - ("python" ,python-wrapper))) ;for fish_config and manpage completions - (arguments - '(#:tests? #f ; no check target - #:configure-flags '("--sysconfdir=/etc"))) - (synopsis "The friendly interactive shell") - (description - "Fish (friendly interactive shell) is a shell focused on interactive use, -discoverability, and friendliness. Fish has very user-friendly and powerful -tab-completion, including descriptions of every completion, completion of -strings with wildcards, and many completions for specific commands. It also -has extensive and discoverable help. A special help command gives access to -all the fish documentation in your web browser. Other features include smart -terminal handling based on terminfo, an easy to search history, and syntax -highlighting.") - (home-page "https://fishshell.com/") - (license gpl2))) diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 07a419a8ca..e467dbe04c 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -2088,7 +2088,7 @@ is attributed to Albert Einstein.") (source (origin (method url-fetch) (uri (string-append - "http://www.hoopajoo.net/static/projects/powwow-" + "https://www.hoopajoo.net/static/projects/powwow-" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz")) (sha256 @@ -2108,42 +2108,42 @@ http://lavachat.symlynx.com/unix/") (define-public red-eclipse (let ((data-sources - '(("acerspyro" "0gxxr6nbac918b49x1cp72nw951hqm5m4iyi2shb1612ly384w8q") - ("actors" "1jq9q82m6nx07nwpb5cnpdcwa33jrcgg0j2yir8zk6zpnxdmp0il") - ("appleflap" "1cn41c6xs68l88rmphqh4rlsh6h04xnkkvklxdpqpvvr4zlsmi85") - ("blendbrush" "0wjbgnniirl9arv274m8mpdqbbq7d09g0pq1z9dl56sazmbk5yy0") - ("caustics" "0gxv1pqhi6c27mqi9mwqyfnzv9rq5sva1vgxhb9ljh231rmkdc15") - ("crosshairs" "0vlyhd10mly2qnjpwvss9ani7dg3v2njpf7457ilx7fk9a3hlbkk") - ("elyvisions" "0s0l77rd9fd09imvj05pwcz4bqrn3j8qsw8prv5pi5bqa50mbn19") - ("fonts" "0apn8j9lf43nmnidq1f0azhrr1n896g7si4djbix1bwll6ild0mq") - ("freezurbern" "0y60s3g8v8bl2m6pk2yr9fzl67ymv821x6l2f9hszzydlcjwlscn") - ("john" "1lmwn0r7qpyac2qrnkv9llhsbyzqpgr27hxq2qn1rfbq12fja0ld") - ("jojo" "0sh3ricqlqw868a0mz2n9iw7lhp650pysd2wkcdizhcmw2hlayx9") - ("jwin" "1r459jhxx64j3vdw886ypkm6zg0yg6cr2qark54i1zdskjhp762k") - ("luckystrike" "08xq87crcz0jq45q1g6p8h4xrm1bcqzd019zp7n0f9c3p9j6al91") - ("maps" "1f0hqh8mbd4nzqi4hja4k5f380nszhx8igajg5ini4p9cp39x9vi") - ("mayhem" "1hn9jp64aiz8k6p2nxyg82h2nc8fadgghzhrm26y7i4bz9xwxacm") - ("mikeplus64" "1kj2zznxykgm3f1h1fvd8xzim5f292lyh96l2gj5km1nynzjmaap") - ("misc" "1phmzjs5rmika3568b7jb6ywbsi40r711rhg8cbsflllcp7hdidf") - ("nobiax" "08in9c24m2pq7x371q10ny4q3l1l3zb8m029iypy2lx9gr99i7hm") - ("particles" "0wcd3s6vhrjknffnfqrcpkcqk1r01f1fiz6q7n4srhpdv3i4d6vm") - ("philipk" "1s0kmap8iv5sddanrhycblskj3ywvz9xg2m11f6vnfy108palkga") - ("projectiles" "0xdhrs9rsncd1f88s5igdbfksli7h0irg5jdbj6p2a3rgdzb3gnj") - ("props" "1sbh3a94pmzic78bil0dvdh4fd8s6gh52f77jdram3w0gwv79x3r") - ("skyboxes" "0hy95a6ps0fk4cq8j6pjipk8rnsjna9bm0ly2l373gbshlfg6zgi") - ("sounds" "1pnyd7acm19sj1k1cy9hq3n3dnzzaiak7j5f0h7fikiybq5rdk7b") - ("textures" "0gxfnc4xm0kp3pd7lhd4yy1dqq00g727h21l64nyiw2b2d6n1755") - ("torley" "1cri5mf8ls8mvpn1x1p9hacyg9ibilaiz07gqv2hl2q8ww5xc1s6") - ("trak" "0xyk5z59kn9ym9n5fdcrwhqig6gjcjgnrgi9rqbbai713w9vpsbq") - ("ulukai" "0ziv9c4inmza40mas1w9dp048y6f646x00bs7kqv33hd1snbg3v3") - ("unnamed" "0hm291k9azilnp0m04zhm52vml1rhxk1z4l74v66spbikr6s2zdx") - ("vanities" "1qbc2v67kdrlvq10miw3dfmg3j9w9bq1hgqrzjcbph0l4gra1ndw") - ("vegetation" "13928yw0wflcj620cmp8rqwplaw8508f3j4zi32vxida1ksz6xn0") - ("weapons" "1ghn6nfcnd5lyl8dnj22csldvf9hrb32wjzpab4sjjz3iyv0zmr3") - ("wicked" "0q9badvg6ix5rhl05s83kw2v6a49jpnbkqk4ls89qahaddfagi8g")))) + '(("acerspyro" "0s6q56i5marpm67lx70g5109lir5d6r45y45i8kbz6arc1spa7pp") + ("actors" "0jclmciz64i81ngxwbag8x5m8wvxkhraa9c7plix566y6rh28fv1") + ("appleflap" "1iz5igzdksamldhy0zh4vdjkxqhmg5c0n5g64pd3kan6h8vlbkq4") + ("blendbrush" "1hz3x5npp25dixcadp020xyahmd1i3ihs4cdf77iy84i9njbp7bv") + ("caustics" "05sbj46lrc6lkf7j6ls6jwc21n0qzxvfhfy9j7hdw482p9gvz54h") + ("crosshairs" "05vfxc6vm91dyf1kzig550fglgydp9szl9135q677lk4g60w5dfh") + ("elyvisions" "0fzdbxc40ggqmv4v1llx6sys2gjc6l1nxsbi5scpxqvm86dbddi9") + ("fonts" "0sbvnd96aip49dy1ja01s36p8fwwczibpic7myfw1frs110m0zgr") + ("freezurbern" "0k60dzzq42mfq360qf7bsf4alhy6k5gjfaidg2i1wsz5zssgmqwn") + ("john" "1ln9v8vfm0ggavvdyl438cy4mizzm1i87r9msx1sbja30q8f57c1") + ("jojo" "0cdgl82s4bm6qlv07fsq5l7anbywvvw13d0mng831yn6scf0hxb1") + ("jwin" "0yg5vriffyckgfjmi4487sw07hsp44b3gfw90f0v4jsgbjjm2v20") + ("luckystrike" "0f82caq09znsr9m08qnlbh3jl9j5w0ysga0b7d5ayqr5lpqxfk9k") + ("maps" "14m23h3mip12anhx7i9k5xlapwkjbw4n0l7lj1b7dfcimf71gjll") + ("mayhem" "0dxrr6craqi7ag724qfj9y0lb0pmwyrfpap02cndmjbbacdya0ra") + ("mikeplus64" "040giyrk3hdd26sxhdx37q4mk923g5v3jbrinq1fw2yfvsl6n1cs") + ("misc" "07xfs9hngshg27rl2vf65nyxilgnak3534h8msaan0fjgmzvlk0q") + ("nobiax" "1n3nghi5426r2zav4rsfih8gn37sfa85absvhdwhir8wycsvbkh6") + ("particles" "0yj0nykal3fgxx50278xl2zn2bfz09wbrjcvng56aa6hhfiwp8gd") + ("philipk" "1m3krkxq9hsknbmxg1g5sgnpcv7c8c2q7zpbizw2wb3dir8snvcj") + ("projectiles" "05swvalja7vzqc3dlk136n5b5kdzn3a8il6bg1h12alcaa0k9rba") + ("props" "1cqi6gw5s4z5pj06x6kiiilh4if0hm1yrbqys5dln23mcvw8f0ny") + ("skyboxes" "1mm6xl89b0l98l2h3qn99id7svmpwr940bydgjbcrvlx21yqdric") + ("sounds" "03q7jazf0chszyiaa9cxirbwdnckcp5fl812sj42lv0z4sqz222l") + ("textures" "1caqyxa9xkrwpyhac65akdv1l7nqychgz7zfivasnskk2yy6jani") + ("torley" "1hp8lkzqmdqyq3jn9rains32diw11gg1w3dxxlln5pc041cd7vil") + ("trak" "0wlczjax33q0hz75lgc4qnxlm592pcxgnbkin5qrglv59nrxzxyr") + ("ulukai" "0dkn7qxf92sidhsy4sm4v5z54n449a2z2w9qax5cfgzs78kb5c34") + ("unnamed" "0p9mmfp0vplmswyxh8qab33phcl8lzmzh3mms4f7i587hppdg6db") + ("vanities" "1w23853lmvj4kx5cbxvb5dk598jiqz7ml2bm0qiy7idkf5mcd2lv") + ("vegetation" "0jw1ljhmv62fzvklid6i8syiacmrs075cp7r3gc069bg4fg47cpn") + ("weapons" "1p64ry1s4y7hkgm6i2rdk2x78368359wvx8v81gg179p3sjnjkww") + ("wicked" "1kmpy2n15lyh50rqjspyfg3qrc72jf0n3dx2y3ian7pjfp6ldxd9")))) (package (name "red-eclipse") - (version "1.5.3") + (version "1.5.5") (source (origin (method url-fetch) (uri (string-append "https://github.com/red-eclipse/base" @@ -2151,7 +2151,7 @@ http://lavachat.symlynx.com/unix/") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1y0jv5lz69zisiw8sd5z9a9v21zc83by1sx9b7dly78ngif4gc4l")))) + "0xl3655876i8j5nixy0yp73s0yw9nwysj68fyhqs2agmvshryy96")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; no check target @@ -2170,7 +2170,7 @@ http://lavachat.symlynx.com/unix/") "-Cdata" "--transform" (string-append "s/" - name "-1.5.3/" + name "-" ,version "/" name "/"))) (list ,@(map car data-sources))) #t)) @@ -2179,13 +2179,15 @@ http://lavachat.symlynx.com/unix/") (lambda* (#:key inputs #:allow-other-keys) (setenv "CPATH" (string-append (assoc-ref inputs "sdl-union") - "/include/SDL")) + "/include/SDL2")) #t)) (add-after 'install 'copy-data (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) (copy-recursively "config" (string-append out "/config")) + (copy-file "doc/examples/servinit.cfg" + (string-append out "/config/servinit.cfg")) (copy-recursively "data" (string-append out "/data"))) #t)) @@ -2223,7 +2225,9 @@ exec -a \"$0\" ~a/.redeclipse_server_linux-real~%" (inputs `(("curl" ,curl) ("glu" ,glu) - ("sdl-union" ,(sdl-union)) + ("sdl-union" ,(sdl-union (list sdl2 + sdl2-image + sdl2-mixer))) ;; Create origin records for the many separate data packages. ,@(map (match-lambda ((name hash) @@ -2693,3 +2697,37 @@ with the \"Stamp\" tool within Tux Paint.") (description "Tux Paint Config is a graphical configuration editor for Tux Paint.") (license license:gpl2))) ;no "or later" present + +(define-public supertux + (package + (name "supertux") + (version "0.4.0") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/SuperTux/supertux/releases/" + "download/v" version + "/supertux-" version ".tar.bz2")) + (sha256 + (base32 + "10ppmy6w77lxj8bdzjahc9bidgl4qgzr9rimn15rnqay84ydx3fi")))) + (arguments '(#:tests? #f + #:configure-flags '("-DINSTALL_SUBDIR_BIN=bin"))) + (build-system cmake-build-system) + (inputs `(("sdl2" ,sdl2) + ("sdl2-image" ,sdl2-image) + ("sdl2-mixer" ,sdl2-mixer) + ("openal" ,openal) + ("mesa" ,mesa) + ("glew" ,glew) + ("libvorbis" ,libvorbis) + ("libogg" ,libogg) + ("physfs" ,physfs) + ("curl" ,curl) + ("boost" ,boost))) + (native-inputs `(("pkg-config" ,pkg-config))) + (synopsis "2D platformer game") + (description "SuperTux is a free classic 2D jump'n run sidescroller game +in a style similar to the original Super Mario games covered under +the GNU GPL.") + (home-page "https://supertuxproject.org/") + (license license:gpl3+))) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 445e94a67e..2038f8f7bc 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -4423,6 +4423,8 @@ users.") "rundir=/tmp" "statedir=/tmp" "install"))))))) + (propagated-inputs + `(("glib" ,glib))) (native-inputs `(("glib:bin" ,glib "bin") ; for gdbus-codegen ("gobject-introspection" ,gobject-introspection) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index e237c6a66d..21365b9197 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -1189,7 +1189,7 @@ information.") (define-public gtk-doc (package (name "gtk-doc") - (version "1.24") + (version "1.25") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -1197,10 +1197,11 @@ information.") name "-" version ".tar.xz")) (sha256 (base32 - "12xmmcnq4138dlbhmqa45wqza8dky4lf856sp80h6xjwl2g7a85l")))) + "0hpxcij9xx9ny3gs9p0iz4r8zslw8wqymbyababiyl7603a6x90y")))) (build-system gnu-build-system) (arguments - `(#:phases + `(#:parallel-tests? #f + #:phases (modify-phases %standard-phases (add-before 'configure 'fix-docbook diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm index 74fbac2635..57727accbc 100644 --- a/gnu/packages/kde-frameworks.scm +++ b/gnu/packages/kde-frameworks.scm @@ -27,12 +27,10 @@ #:use-module (gnu packages qt) #:use-module (gnu packages xorg)) -(define kde-frameworks-version "5.21.0") - (define-public extra-cmake-modules (package (name "extra-cmake-modules") - (version kde-frameworks-version) + (version "5.21.0") (source (origin (method url-fetch) @@ -57,7 +55,7 @@ common build settings used in software produced by the KDE community.") (define-public kwindowsystem (package (name "kwindowsystem") - (version kde-frameworks-version) + (version "5.21.0") (source (origin (method url-fetch) @@ -95,7 +93,7 @@ lower level classes for interaction with the X Windowing System.") (define-public oxygen-icons (package (name "oxygen-icons") - (version kde-frameworks-version) + (version "5.21.0") (source (origin (method url-fetch) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index e65327c61d..f6352da486 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -2363,7 +2363,15 @@ MPEG-2 and audio over Linux IEEE 1394.") (substitute* "udev-md-raid-arrays.rules" (("/usr/bin/(readlink|basename)" all program) (string-append coreutils "/bin/" program))))) - (alist-delete 'configure %standard-phases)) + (alist-cons-before + 'build 'remove-W-error + (lambda _ + ;; We cannot build with -Werror on i686 due to a + ;; 'sign-compare' warning in util.c. + (substitute* "Makefile" + (("-Werror") "")) + #t) + (alist-delete 'configure %standard-phases))) ;;tests must be done as root #:tests? #f)) (home-page "http://neil.brown.name/blog/mdadm") diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm index 177278080d..8ee249d397 100644 --- a/gnu/packages/lisp.scm +++ b/gnu/packages/lisp.scm @@ -328,7 +328,7 @@ statistical profiler, a code coverage tool, and many other extensions.") (define-public ccl (package (name "ccl") - (version "1.10") + (version "1.11") (source #f) (build-system gnu-build-system) ;; CCL consists of a "lisp kernel" and "heap image", both of which are @@ -341,7 +341,8 @@ statistical profiler, a code coverage tool, and many other extensions.") ,(origin (method url-fetch) (uri (string-append - "ftp://ftp.clozure.com/pub/release/1.10/ccl-" version "-" + "ftp://ftp.clozure.com/pub/release/" version + "/ccl-" version "-" (match (%current-system) ((or "i686-linux" "x86_64-linux") "linuxx86") ("armhf-linux" "linuxarm") @@ -353,9 +354,9 @@ statistical profiler, a code coverage tool, and many other extensions.") (base32 (match (%current-system) ((or "i686-linux" "x86_64-linux") - "0mr653q5px05lr11z2mk551m5g47b4wq96vbfibpp0qlc9jp58lc") + "0w3dmj7q9kqyra3yrf1lxclnjz151yvf5s5q8ayllvmvqbl8bs08") ("armhf-linux" - "1py02irpmi2qz5rq3h33wfv6impf15z8i2rign6hvhlqn7s99wwh") + "1x487aaz2rqcb6k301sy2p39a1m4qdhg6z9p9fb76ssipqgr38b4") (_ "")))))))) (native-inputs `(("m4" ,m4) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index ea7575abb2..fcea0bca0e 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -79,7 +79,7 @@ #:use-module (gnu packages python) #:use-module (gnu packages readline) #:use-module (gnu packages tbb) - #:use-module (gnu packages tcsh) + #:use-module (gnu packages shells) #:use-module (gnu packages tcl) #:use-module (gnu packages texinfo) #:use-module (gnu packages tex) diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 5b8aabd05b..1421c7ea0a 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -67,17 +67,17 @@ arch "-linux" "/20131110/guile-2.0.9.tar.xz"))) -(define-public guix-0.10.0 +(define-public guix-0.11.0 (package (name "guix") - (version "0.10.0") + (version "0.11.0") (source (origin (method url-fetch) (uri (string-append "ftp://alpha.gnu.org/gnu/guix/guix-" version ".tar.gz")) (sha256 (base32 - "0d4afwy7bpqi4k4bzvwc4ga4shwssis1nrvdw53qjyg9bw1a8lbn")))) + "1cwrbpv4dq7aczwksmcfw9w8r2bzrb5ld9zvjcr90i804hjpcb93")))) (build-system gnu-build-system) (arguments `(#:configure-flags (list @@ -212,9 +212,9 @@ the Nix package manager.") ;; ;; Note: use a very short commit id; with a longer one, the limit on ;; hash-bang lines would be exceeded while running the tests. - (let ((commit "97c8aef15de89799ac01b62dd9b91245c23eefcb")) - (package (inherit guix-0.10.0) - (version (string-append "0.10.0-1." (string-take commit 4))) + (let ((commit "4420940f20a2f36f29519f686bca7b85be6be5c9")) + (package (inherit guix-0.11.0) + (version (string-append "0.11.0-1." (string-take commit 4))) (source (origin (method git-fetch) (uri (git-reference @@ -224,10 +224,10 @@ the Nix package manager.") (commit commit))) (sha256 (base32 - "0sdxq87mbvig7785gzf52ywmvl3p1q1qgsczmkzrlw988xkma1dr")) + "1c1rqsfc4vrclkk03aj1m8r1lzk9pfa61ax9hhhj5nw23bilsixc")) (file-name (string-append "guix-" version "-checkout")))) (arguments - (substitute-keyword-arguments (package-arguments guix-0.10.0) + (substitute-keyword-arguments (package-arguments guix-0.11.0) ((#:configure-flags flags) ;; Set 'DOT_USER_PROGRAM' to the empty string so we don't keep a ;; reference to Graphviz, whose closure is pretty big (too big for @@ -251,7 +251,7 @@ the Nix package manager.") ("texinfo" ,texinfo) ("graphviz" ,graphviz) ("help2man" ,help2man) - ,@(package-native-inputs guix-0.10.0)))))) + ,@(package-native-inputs guix-0.11.0)))))) (define-public guix guix-devel) diff --git a/gnu/packages/patches/elixir-disable-failing-tests.patch b/gnu/packages/patches/elixir-disable-failing-tests.patch new file mode 100644 index 0000000000..0c67562f8d --- /dev/null +++ b/gnu/packages/patches/elixir-disable-failing-tests.patch @@ -0,0 +1,261 @@ +Most of these tests fail for unknown reasons when run in the chroot +environment of a Guix build process. + +Common failures are: + + * Mix.Shell.cmd() fails with error 130 + * The git_repo fixture cannot be found + * Communication with spawned processes fails with EPIPE + * Failure to copy files + + +diff --git a/lib/elixir/test/elixir/kernel/cli_test.exs b/lib/elixir/test/elixir/kernel/cli_test.exs +index 3ffd56c..1232d19 100644 +--- a/lib/elixir/test/elixir/kernel/cli_test.exs ++++ b/lib/elixir/test/elixir/kernel/cli_test.exs +@@ -39,6 +39,7 @@ end + defmodule Kernel.CLI.OptionParsingTest do + use ExUnit.Case, async: true + ++ @tag :skip + test "properly parses paths" do + root = fixture_path("../../..") |> to_charlist + list = elixir('-pa "#{root}/*" -pz "#{root}/lib/*" -e "IO.inspect(:code.get_path, limit: :infinity)"') +@@ -57,6 +58,7 @@ end + defmodule Kernel.CLI.AtExitTest do + use ExUnit.Case, async: true + ++ @tag :skip + test "invokes at_exit callbacks" do + assert elixir(fixture_path("at_exit.exs") |> to_charlist) == + 'goodbye cruel world with status 1\n' +@@ -66,6 +68,7 @@ end + defmodule Kernel.CLI.ErrorTest do + use ExUnit.Case, async: true + ++ @tag :skip + test "properly format errors" do + assert :string.str('** (throw) 1', elixir('-e "throw 1"')) == 0 + assert :string.str('** (ErlangError) erlang error: 1', elixir('-e "error 1"')) == 0 +@@ -86,6 +89,7 @@ defmodule Kernel.CLI.CompileTest do + {:ok, [tmp_dir_path: tmp_dir_path, beam_file_path: beam_file_path, fixture: fixture]} + end + ++ @tag :skip + test "compiles code", context do + assert elixirc('#{context[:fixture]} -o #{context[:tmp_dir_path]}') == '' + assert File.regular?(context[:beam_file_path]) +@@ -96,6 +100,7 @@ defmodule Kernel.CLI.CompileTest do + Code.delete_path context[:tmp_dir_path] + end + ++ @tag :skip + test "fails on missing patterns", context do + output = elixirc('#{context[:fixture]} non_existing.ex -o #{context[:tmp_dir_path]}') + assert :string.str(output, 'non_existing.ex') > 0, "expected non_existing.ex to be mentioned" +@@ -103,6 +108,7 @@ defmodule Kernel.CLI.CompileTest do + refute File.exists?(context[:beam_file_path]), "expected the sample to not be compiled" + end + ++ @tag :skip + test "fails on missing write access to .beam file", context do + compilation_args = '#{context[:fixture]} -o #{context[:tmp_dir_path]}' + +diff --git a/lib/elixir/test/elixir/kernel/dialyzer_test.exs b/lib/elixir/test/elixir/kernel/dialyzer_test.exs +index 801d852..40fc5bc 100644 +--- a/lib/elixir/test/elixir/kernel/dialyzer_test.exs ++++ b/lib/elixir/test/elixir/kernel/dialyzer_test.exs +@@ -60,16 +60,19 @@ defmodule Kernel.DialyzerTest do + assert_dialyze_no_warnings! context + end + ++ @tag :skip + test "no warnings on rewrites", context do + copy_beam! context, Dialyzer.Rewrite + assert_dialyze_no_warnings! context + end + ++ @tag :skip + test "no warnings on raise", context do + copy_beam! context, Dialyzer.Raise + assert_dialyze_no_warnings! context + end + ++ @tag :skip + test "no warnings on macrocallback", context do + copy_beam! context, Dialyzer.Macrocallback + copy_beam! context, Dialyzer.Macrocallback.Impl +diff --git a/lib/elixir/test/elixir/system_test.exs b/lib/elixir/test/elixir/system_test.exs +index aafa559..0f9c178 100644 +--- a/lib/elixir/test/elixir/system_test.exs ++++ b/lib/elixir/test/elixir/system_test.exs +@@ -53,7 +53,8 @@ defmodule SystemTest do + assert System.endianness in [:little, :big] + assert System.endianness == System.compiled_endianness + end +- ++ ++ @tag :skip + test "argv/0" do + list = elixir('-e "IO.inspect System.argv" -- -o opt arg1 arg2 --long-opt 10') + {args, _} = Code.eval_string list, [] +diff --git a/lib/mix/test/mix/dep_test.exs b/lib/mix/test/mix/dep_test.exs +index fff3351..d6ed1b3 100644 +--- a/lib/mix/test/mix/dep_test.exs ++++ b/lib/mix/test/mix/dep_test.exs +@@ -244,6 +244,7 @@ defmodule Mix.DepTest do + end + end + ++ @tag :skip + test "remote converger" do + deps = [{:deps_repo, "0.1.0", path: "custom/deps_repo"}, + {:git_repo, "0.2.0", git: MixTest.Case.fixture_path("git_repo")}] +@@ -301,6 +302,7 @@ defmodule Mix.DepTest do + end + end + ++ @tag :skip + test "remote converger is not invoked if deps diverge" do + deps = [{:deps_repo, "0.1.0", path: "custom/deps_repo"}, + {:git_repo, "0.2.0", git: MixTest.Case.fixture_path("git_repo"), only: :test}] +diff --git a/lib/mix/test/mix/rebar_test.exs b/lib/mix/test/mix/rebar_test.exs +index d2dd098..12cef15 100644 +--- a/lib/mix/test/mix/rebar_test.exs ++++ b/lib/mix/test/mix/rebar_test.exs +@@ -120,6 +120,7 @@ defmodule Mix.RebarTest do + assert Enum.all?(deps, &(&1.manager == :rebar3)) + end + ++ @tag :skip + test "Rebar overrides" do + Mix.Project.push(RebarOverrideAsDep) + +@@ -150,6 +151,7 @@ defmodule Mix.RebarTest do + end + end + ++ @tag :skip + test "get and compile dependencies for Rebar" do + Mix.Project.push(RebarAsDep) + +@@ -180,6 +182,7 @@ defmodule Mix.RebarTest do + end + end + ++ @tag :skip + test "get and compile dependencies for rebar3" do + Mix.Project.push(Rebar3AsDep) + +diff --git a/lib/mix/test/mix/shell/io_test.exs b/lib/mix/test/mix/shell/io_test.exs +index 9bfb6b4..d982ef3 100644 +--- a/lib/mix/test/mix/shell/io_test.exs ++++ b/lib/mix/test/mix/shell/io_test.exs +@@ -29,6 +29,7 @@ defmodule Mix.Shell.IOTest do + assert capture_io("", fn -> refute yes?("Ok?") end) + end + ++ @tag :skip + test "runs a given command" do + assert capture_io("", fn -> assert cmd("echo hello") == 0 end) == "hello\n" + +diff --git a/lib/mix/test/mix/shell/quiet_test.exs b/lib/mix/test/mix/shell/quiet_test.exs +index 626429b..99fab35 100644 +--- a/lib/mix/test/mix/shell/quiet_test.exs ++++ b/lib/mix/test/mix/shell/quiet_test.exs +@@ -29,6 +29,7 @@ defmodule Mix.Shell.QuietTest do + assert capture_io("", fn -> refute yes?("Ok?") end) + end + ++ @tag :skip + test "runs a given command" do + assert capture_io("", fn -> assert cmd("echo hello") == 0 end) == "" + +diff --git a/lib/mix/test/mix/tasks/cmd_test.exs b/lib/mix/test/mix/tasks/cmd_test.exs +index db4bf06..4d441f7 100644 +--- a/lib/mix/test/mix/tasks/cmd_test.exs ++++ b/lib/mix/test/mix/tasks/cmd_test.exs +@@ -3,6 +3,7 @@ Code.require_file "../../test_helper.exs", __DIR__ + defmodule Mix.Tasks.CmdTest do + use MixTest.Case + ++ @tag :skip + test "runs the command for each app" do + in_fixture "umbrella_dep/deps/umbrella", fn -> + Mix.Project.in_project(:umbrella, ".", fn _ -> +diff --git a/lib/mix/test/mix/tasks/deps.tree_test.exs b/lib/mix/test/mix/tasks/deps.tree_test.exs +index 4f09ff3..c371997 100644 +--- a/lib/mix/test/mix/tasks/deps.tree_test.exs ++++ b/lib/mix/test/mix/tasks/deps.tree_test.exs +@@ -29,6 +29,7 @@ defmodule Mix.Tasks.Deps.TreeTest do + end + end + ++ @tag :skip + test "shows the dependency tree", context do + Mix.Project.push ConvergedDepsApp + +@@ -109,6 +110,7 @@ defmodule Mix.Tasks.Deps.TreeTest do + end + end + ++ @tag :skip + test "shows the dependency tree in DOT graph format", context do + Mix.Project.push ConvergedDepsApp + +diff --git a/lib/mix/test/mix/tasks/deps_test.exs b/lib/mix/test/mix/tasks/deps_test.exs +index b061777..cc45cf8 100644 +--- a/lib/mix/test/mix/tasks/deps_test.exs ++++ b/lib/mix/test/mix/tasks/deps_test.exs +@@ -96,6 +96,7 @@ + end + end + ++ @tag :skip + test "prints list of dependencies and their lock status" do + Mix.Project.push DepsApp + +@@ -409,6 +409,7 @@ defmodule Mix.Tasks.DepsTest do + end + end + ++ @tag :skip + test "fails on diverged dependencies by requirement" do + Mix.Project.push ConvergedDepsApp + +@@ -440,6 +441,7 @@ defmodule Mix.Tasks.DepsTest do + end + end + ++ @tag :skip + test "fails on diverged dependencies even when optional" do + Mix.Project.push ConvergedDepsApp + +@@ -469,6 +471,7 @@ defmodule Mix.Tasks.DepsTest do + end + end + ++ @tag :skip + test "works with converged dependencies" do + Mix.Project.push ConvergedDepsApp + +@@ -491,6 +494,7 @@ defmodule Mix.Tasks.DepsTest do + purge [GitRepo, GitRepo.Mixfile] + end + ++ @tag :skip + test "works with overridden dependencies" do + Mix.Project.push OverriddenDepsApp + +diff --git a/lib/mix/test/mix/umbrella_test.exs b/lib/mix/test/mix/umbrella_test.exs +index 69f9428..406668a 100644 +--- a/lib/mix/test/mix/umbrella_test.exs ++++ b/lib/mix/test/mix/umbrella_test.exs +@@ -98,6 +98,7 @@ defmodule Mix.UmbrellaTest do + end + end + ++ @tag :skip + test "loads umbrella child dependencies in all environments" do + in_fixture "umbrella_dep/deps/umbrella", fn -> + Mix.Project.in_project :umbrella, ".", fn _ -> diff --git a/gnu/packages/patches/openssh-CVE-2015-8325.patch b/gnu/packages/patches/openssh-CVE-2015-8325.patch deleted file mode 100644 index 8063e64ea7..0000000000 --- a/gnu/packages/patches/openssh-CVE-2015-8325.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 85bdcd7c92fe7ff133bbc4e10a65c91810f88755 Mon Sep 17 00:00:00 2001 -From: Damien Miller <djm@mindrot.org> -Date: Wed, 13 Apr 2016 10:39:57 +1000 -Subject: ignore PAM environment vars when UseLogin=yes - -If PAM is configured to read user-specified environment variables -and UseLogin=yes in sshd_config, then a hostile local user may -attack /bin/login via LD_PRELOAD or similar environment variables -set via PAM. - -CVE-2015-8325, found by Shayan Sadigh, via Colin Watson ---- - session.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/session.c b/session.c -index 4859245..4653b09 100644 ---- a/session.c -+++ b/session.c -@@ -1322,7 +1322,7 @@ do_setup_env(Session *s, const char *shell) - * Pull in any environment variables that may have - * been set by PAM. - */ -- if (options.use_pam) { -+ if (options.use_pam && !options.use_login) { - char **p; - - p = fetch_pam_child_environment(); --- -cgit v0.11.2 - diff --git a/gnu/packages/patches/openssh-CVE-2016-6210-1.patch b/gnu/packages/patches/openssh-CVE-2016-6210-1.patch deleted file mode 100644 index 9b46ec12a9..0000000000 --- a/gnu/packages/patches/openssh-CVE-2016-6210-1.patch +++ /dev/null @@ -1,114 +0,0 @@ -From e5ef9d3942cebda819a6fd81647b51c8d87d23df Mon Sep 17 00:00:00 2001 -From: Darren Tucker <dtucker@zip.com.au> -Date: Fri, 15 Jul 2016 13:32:45 +1000 -Subject: Determine appropriate salt for invalid users. - -When sshd is processing a non-PAM login for a non-existent user it uses -the string from the fakepw structure as the salt for crypt(3)ing the -password supplied by the client. That string has a Blowfish prefix, so on -systems that don't understand that crypt will fail fast due to an invalid -salt, and even on those that do it may have significantly different timing -from the hash methods used for real accounts (eg sha512). This allows -user enumeration by, eg, sending large password strings. This was noted -by EddieEzra.Harari at verint.com (CVE-2016-6210). - -To mitigate, use the same hash algorithm that root uses for hashing -passwords for users that do not exist on the system. ok djm@ - -Origin: upstream, https://anongit.mindrot.org/openssh.git/commit/?id=9286875a73b2de7736b5e50692739d314cd8d9dc -Bug-Debian: https://bugs.debian.org/831902 -Last-Update: 2016-07-22 - -Patch-Name: CVE-2016-6210-1.patch ---- - auth-passwd.c | 12 ++++++++---- - openbsd-compat/xcrypt.c | 34 ++++++++++++++++++++++++++++++++++ - 2 files changed, 42 insertions(+), 4 deletions(-) - -diff --git a/auth-passwd.c b/auth-passwd.c -index 63ccf3c..530b5d4 100644 ---- a/auth-passwd.c -+++ b/auth-passwd.c -@@ -193,7 +193,7 @@ int - sys_auth_passwd(Authctxt *authctxt, const char *password) - { - struct passwd *pw = authctxt->pw; -- char *encrypted_password; -+ char *encrypted_password, *salt = NULL; - - /* Just use the supplied fake password if authctxt is invalid */ - char *pw_password = authctxt->valid ? shadow_pw(pw) : pw->pw_passwd; -@@ -202,9 +202,13 @@ sys_auth_passwd(Authctxt *authctxt, const char *password) - if (strcmp(pw_password, "") == 0 && strcmp(password, "") == 0) - return (1); - -- /* Encrypt the candidate password using the proper salt. */ -- encrypted_password = xcrypt(password, -- (pw_password[0] && pw_password[1]) ? pw_password : "xx"); -+ /* -+ * Encrypt the candidate password using the proper salt, or pass a -+ * NULL and let xcrypt pick one. -+ */ -+ if (authctxt->valid && pw_password[0] && pw_password[1]) -+ salt = pw_password; -+ encrypted_password = xcrypt(password, salt); - - /* - * Authentication is accepted if the encrypted passwords -diff --git a/openbsd-compat/xcrypt.c b/openbsd-compat/xcrypt.c -index 8577cbd..8913bb8 100644 ---- a/openbsd-compat/xcrypt.c -+++ b/openbsd-compat/xcrypt.c -@@ -25,6 +25,7 @@ - #include "includes.h" - - #include <sys/types.h> -+#include <string.h> - #include <unistd.h> - #include <pwd.h> - -@@ -62,11 +63,44 @@ - # define crypt DES_crypt - # endif - -+/* -+ * Pick an appropriate password encryption type and salt for the running -+ * system. -+ */ -+static const char * -+pick_salt(void) -+{ -+ struct passwd *pw; -+ char *passwd, *p; -+ size_t typelen; -+ static char salt[32]; -+ -+ if (salt[0] != '\0') -+ return salt; -+ strlcpy(salt, "xx", sizeof(salt)); -+ if ((pw = getpwuid(0)) == NULL) -+ return salt; -+ passwd = shadow_pw(pw); -+ if (passwd[0] != '$' || (p = strrchr(passwd + 1, '$')) == NULL) -+ return salt; /* no $, DES */ -+ typelen = p - passwd + 1; -+ strlcpy(salt, passwd, MIN(typelen, sizeof(salt))); -+ explicit_bzero(passwd, strlen(passwd)); -+ return salt; -+} -+ - char * - xcrypt(const char *password, const char *salt) - { - char *crypted; - -+ /* -+ * If we don't have a salt we are encrypting a fake password for -+ * for timing purposes. Pick an appropriate salt. -+ */ -+ if (salt == NULL) -+ salt = pick_salt(); -+ - # ifdef HAVE_MD5_PASSWORDS - if (is_md5_salt(salt)) - crypted = md5_crypt(password, salt); diff --git a/gnu/packages/patches/openssh-CVE-2016-6210-2.patch b/gnu/packages/patches/openssh-CVE-2016-6210-2.patch deleted file mode 100644 index 1c580f90b9..0000000000 --- a/gnu/packages/patches/openssh-CVE-2016-6210-2.patch +++ /dev/null @@ -1,111 +0,0 @@ -From dde63f7f998ac3812a26bbb2c1b2947f24fcd060 Mon Sep 17 00:00:00 2001 -From: Darren Tucker <dtucker@zip.com.au> -Date: Fri, 15 Jul 2016 13:49:44 +1000 -Subject: Mitigate timing of disallowed users PAM logins. - -When sshd decides to not allow a login (eg PermitRootLogin=no) and -it's using PAM, it sends a fake password to PAM so that the timing for -the failure is not noticeably different whether or not the password -is correct. This behaviour can be detected by sending a very long -password string which is slower to hash than the fake password. - -Mitigate by constructing an invalid password that is the same length -as the one from the client and thus takes the same time to hash. -Diff from djm@ - -Origin: upstream, https://anongit.mindrot.org/openssh.git/commit/?id=283b97ff33ea2c641161950849931bd578de6946 -Bug-Debian: https://bugs.debian.org/831902 -Last-Update: 2016-07-22 - -Patch-Name: CVE-2016-6210-2.patch ---- - auth-pam.c | 35 +++++++++++++++++++++++++++++++---- - 1 file changed, 31 insertions(+), 4 deletions(-) - -diff --git a/auth-pam.c b/auth-pam.c -index 8425af1..abd6a5e 100644 ---- a/auth-pam.c -+++ b/auth-pam.c -@@ -232,7 +232,6 @@ static int sshpam_account_status = -1; - static char **sshpam_env = NULL; - static Authctxt *sshpam_authctxt = NULL; - static const char *sshpam_password = NULL; --static char badpw[] = "\b\n\r\177INCORRECT"; - - /* Some PAM implementations don't implement this */ - #ifndef HAVE_PAM_GETENVLIST -@@ -810,12 +809,35 @@ sshpam_query(void *ctx, char **name, char **info, - return (-1); - } - -+/* -+ * Returns a junk password of identical length to that the user supplied. -+ * Used to mitigate timing attacks against crypt(3)/PAM stacks that -+ * vary processing time in proportion to password length. -+ */ -+static char * -+fake_password(const char *wire_password) -+{ -+ const char junk[] = "\b\n\r\177INCORRECT"; -+ char *ret = NULL; -+ size_t i, l = wire_password != NULL ? strlen(wire_password) : 0; -+ -+ if (l >= INT_MAX) -+ fatal("%s: password length too long: %zu", __func__, l); -+ -+ ret = malloc(l + 1); -+ for (i = 0; i < l; i++) -+ ret[i] = junk[i % (sizeof(junk) - 1)]; -+ ret[i] = '\0'; -+ return ret; -+} -+ - /* XXX - see also comment in auth-chall.c:verify_response */ - static int - sshpam_respond(void *ctx, u_int num, char **resp) - { - Buffer buffer; - struct pam_ctxt *ctxt = ctx; -+ char *fake; - - debug2("PAM: %s entering, %u responses", __func__, num); - switch (ctxt->pam_done) { -@@ -836,8 +858,11 @@ sshpam_respond(void *ctx, u_int num, char **resp) - (sshpam_authctxt->pw->pw_uid != 0 || - options.permit_root_login == PERMIT_YES)) - buffer_put_cstring(&buffer, *resp); -- else -- buffer_put_cstring(&buffer, badpw); -+ else { -+ fake = fake_password(*resp); -+ buffer_put_cstring(&buffer, fake); -+ free(fake); -+ } - if (ssh_msg_send(ctxt->pam_psock, PAM_AUTHTOK, &buffer) == -1) { - buffer_free(&buffer); - return (-1); -@@ -1181,6 +1206,7 @@ sshpam_auth_passwd(Authctxt *authctxt, const char *password) - { - int flags = (options.permit_empty_passwd == 0 ? - PAM_DISALLOW_NULL_AUTHTOK : 0); -+ char *fake = NULL; - - if (!options.use_pam || sshpam_handle == NULL) - fatal("PAM: %s called when PAM disabled or failed to " -@@ -1196,7 +1222,7 @@ sshpam_auth_passwd(Authctxt *authctxt, const char *password) - */ - if (!authctxt->valid || (authctxt->pw->pw_uid == 0 && - options.permit_root_login != PERMIT_YES)) -- sshpam_password = badpw; -+ sshpam_password = fake = fake_password(password); - - sshpam_err = pam_set_item(sshpam_handle, PAM_CONV, - (const void *)&passwd_conv); -@@ -1206,6 +1232,7 @@ sshpam_auth_passwd(Authctxt *authctxt, const char *password) - - sshpam_err = pam_authenticate(sshpam_handle, flags); - sshpam_password = NULL; -+ free(fake); - if (sshpam_err == PAM_SUCCESS && authctxt->valid) { - debug("PAM: password authentication accepted for %.100s", - authctxt->user); diff --git a/gnu/packages/patches/openssh-CVE-2016-6210-3.patch b/gnu/packages/patches/openssh-CVE-2016-6210-3.patch deleted file mode 100644 index 303c34ee1b..0000000000 --- a/gnu/packages/patches/openssh-CVE-2016-6210-3.patch +++ /dev/null @@ -1,60 +0,0 @@ -From abde8dda29c2db2405d6fbca2fe022430e2c1177 Mon Sep 17 00:00:00 2001 -From: Darren Tucker <dtucker@zip.com.au> -Date: Thu, 21 Jul 2016 14:17:31 +1000 -Subject: Search users for one with a valid salt. - -If the root account is locked (eg password "!!" or "*LK*") keep looking -until we find a user with a valid salt to use for crypting passwords of -invalid users. ok djm@ - -Origin: upstream, https://anongit.mindrot.org/openssh.git/commit/?id=dbf788b4d9d9490a5fff08a7b09888272bb10fcc -Bug-Debian: https://bugs.debian.org/831902 -Last-Update: 2016-07-22 - -Patch-Name: CVE-2016-6210-3.patch ---- - openbsd-compat/xcrypt.c | 24 +++++++++++++++--------- - 1 file changed, 15 insertions(+), 9 deletions(-) - -diff --git a/openbsd-compat/xcrypt.c b/openbsd-compat/xcrypt.c -index 8913bb8..cf6a9b9 100644 ---- a/openbsd-compat/xcrypt.c -+++ b/openbsd-compat/xcrypt.c -@@ -65,7 +65,9 @@ - - /* - * Pick an appropriate password encryption type and salt for the running -- * system. -+ * system by searching through accounts until we find one that has a valid -+ * salt. Usually this will be root unless the root account is locked out. -+ * If we don't find one we return a traditional DES-based salt. - */ - static const char * - pick_salt(void) -@@ -78,14 +80,18 @@ pick_salt(void) - if (salt[0] != '\0') - return salt; - strlcpy(salt, "xx", sizeof(salt)); -- if ((pw = getpwuid(0)) == NULL) -- return salt; -- passwd = shadow_pw(pw); -- if (passwd[0] != '$' || (p = strrchr(passwd + 1, '$')) == NULL) -- return salt; /* no $, DES */ -- typelen = p - passwd + 1; -- strlcpy(salt, passwd, MIN(typelen, sizeof(salt))); -- explicit_bzero(passwd, strlen(passwd)); -+ setpwent(); -+ while ((pw = getpwent()) != NULL) { -+ passwd = shadow_pw(pw); -+ if (passwd[0] == '$' && (p = strrchr(passwd+1, '$')) != NULL) { -+ typelen = p - passwd + 1; -+ strlcpy(salt, passwd, MIN(typelen, sizeof(salt))); -+ explicit_bzero(passwd, strlen(passwd)); -+ goto out; -+ } -+ } -+ out: -+ endpwent(); - return salt; - } - diff --git a/gnu/packages/patches/python-statsmodels-fix-tests.patch b/gnu/packages/patches/python-statsmodels-fix-tests.patch new file mode 100644 index 0000000000..3315ddbd5f --- /dev/null +++ b/gnu/packages/patches/python-statsmodels-fix-tests.patch @@ -0,0 +1,196 @@ +This patch fixes a couple of test failures introduced by changes to the pandas +package. It was extracted from this pull request: + +https://github.com/statsmodels/statsmodels/pull/2675 + + +From c9ef60a7bc4407766ab9e9f12c8a6b89013046ee Mon Sep 17 00:00:00 2001 +From: Ralf Gommers <ralf.gommers@gmail.com> +Date: Tue, 20 Oct 2015 07:34:11 +0200 +Subject: [PATCH 1/4] MAINT: fix use of old_behavior kw for numpy.correlate. + Was removed in 1.10.0 + +Numpy PR that removed it: https://github.com/numpy/numpy/pull/5991 + +Closes gh-2667. +--- + statsmodels/tsa/ar_model.py | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/statsmodels/tsa/ar_model.py b/statsmodels/tsa/ar_model.py +index 087a9e0..02984bd 100644 +--- a/statsmodels/tsa/ar_model.py ++++ b/statsmodels/tsa/ar_model.py +@@ -261,10 +261,8 @@ def _presample_varcov(self, params): + + Vpinv = np.zeros((p, p), dtype=params.dtype) + for i in range(1, p1): +- Vpinv[i-1, i-1:] = np.correlate(params0, params0[:i], +- old_behavior=False)[:-1] +- Vpinv[i-1, i-1:] -= np.correlate(params0[-i:], params0, +- old_behavior=False)[:-1] ++ Vpinv[i-1, i-1:] = np.correlate(params0, params0[:i],)[:-1] ++ Vpinv[i-1, i-1:] -= np.correlate(params0[-i:], params0,)[:-1] + + Vpinv = Vpinv + Vpinv.T - np.diag(Vpinv.diagonal()) + return Vpinv + +From f1dc8979b09bc1736149993f895943b3158ee2db Mon Sep 17 00:00:00 2001 +From: Ralf Gommers <ralf.gommers@gmail.com> +Date: Wed, 21 Oct 2015 22:05:52 +0200 +Subject: [PATCH 2/4] MAINT: fix graphics module for changes in recent pandas + versions. + +--- + statsmodels/graphics/tests/test_mosaicplot.py | 2 +- + statsmodels/graphics/tests/test_tsaplots.py | 6 +++--- + statsmodels/graphics/tsaplots.py | 2 +- + 3 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/statsmodels/graphics/tests/test_mosaicplot.py b/statsmodels/graphics/tests/test_mosaicplot.py +index cb9bbbe..e41020e 100644 +--- a/statsmodels/graphics/tests/test_mosaicplot.py ++++ b/statsmodels/graphics/tests/test_mosaicplot.py +@@ -113,7 +113,7 @@ def test_mosaic(): + # sort by the marriage quality and give meaningful name + # [rate_marriage, age, yrs_married, children, + # religious, educ, occupation, occupation_husb] +- datas = datas.sort(['rate_marriage', 'religious']) ++ datas = datas.sort_values(by=['rate_marriage', 'religious']) + num_to_desc = {1: 'awful', 2: 'bad', 3: 'intermediate', + 4: 'good', 5: 'wonderful'} + datas['rate_marriage'] = datas['rate_marriage'].map(num_to_desc) +diff --git a/statsmodels/graphics/tests/test_tsaplots.py b/statsmodels/graphics/tests/test_tsaplots.py +index 511f18f..365be82 100644 +--- a/statsmodels/graphics/tests/test_tsaplots.py ++++ b/statsmodels/graphics/tests/test_tsaplots.py +@@ -1,4 +1,4 @@ +-from statsmodels.compat.python import lmap, lzip, map ++from statsmodels.compat.python import lmap, map + import numpy as np + import pandas as pd + from numpy.testing import dec +@@ -51,8 +51,8 @@ def test_plot_month(): + dta = sm.datasets.elnino.load_pandas().data + dta['YEAR'] = dta.YEAR.astype(int).apply(str) + dta = dta.set_index('YEAR').T.unstack() +- dates = lmap(lambda x : pd.datetools.parse('1 '+' '.join(x)), +- dta.index.values) ++ dates = lmap(lambda x : pd.datetools.parse_time_string('1 '+' '.join(x))[0], ++ dta.index.values) + + # test dates argument + fig = month_plot(dta.values, dates=dates, ylabel='el nino') +diff --git a/statsmodels/graphics/tsaplots.py b/statsmodels/graphics/tsaplots.py +index 3d04692..94626c9 100644 +--- a/statsmodels/graphics/tsaplots.py ++++ b/statsmodels/graphics/tsaplots.py +@@ -200,7 +200,7 @@ def seasonal_plot(grouped_x, xticklabels, ylabel=None, ax=None): + ticks = [] + for season, df in grouped_x: + df = df.copy() # or sort balks for series. may be better way +- df.sort() ++ df.sort_values(inplace=True) + nobs = len(df) + x_plot = np.arange(start, start + nobs) + ticks.append(x_plot.mean()) + +From 4cfbef6af137629c6953f1f025d9cfc781874256 Mon Sep 17 00:00:00 2001 +From: Ralf Gommers <ralf.gommers@gmail.com> +Date: Wed, 21 Oct 2015 22:15:25 +0200 +Subject: [PATCH 3/4] MAINT: work around pandas breaking backwards compat for + pandas.version + +--- + setup.py | 5 ++++- + statsmodels/tools/testing.py | 6 ++---- + 2 files changed, 6 insertions(+), 5 deletions(-) + +diff --git a/setup.py b/setup.py +index 0002840..74aefb8 100644 +--- a/setup.py ++++ b/setup.py +@@ -134,7 +134,10 @@ def check_dependency_versions(min_versions): + (spversion, min_versions['scipy'])) + + try: +- from pandas.version import short_version as pversion ++ import pandas ++ #FIXME: this will break for pandas 1.0.0. Needs elaborate parsing now, ++ # due to pandas removing version.short_version ++ pversion = pandas.__version__[:6] + except ImportError: + install_requires.append('pandas') + else: +diff --git a/statsmodels/tools/testing.py b/statsmodels/tools/testing.py +index e207e44..643f79f 100644 +--- a/statsmodels/tools/testing.py ++++ b/statsmodels/tools/testing.py +@@ -16,10 +16,8 @@ def strip_rc(version): + + + def is_pandas_min_version(min_version): +- '''check whether pandas is at least min_version +- ''' +- from pandas.version import short_version as pversion +- return StrictVersion(strip_rc(pversion)) >= min_version ++ '''check whether pandas is at least min_version ''' ++ return StrictVersion((pandas.__version__[:6])) >= min_version + + + # local copies, all unchanged + +From c894c3f4882d570efb517950069d83afa9794db8 Mon Sep 17 00:00:00 2001 +From: Ralf Gommers <ralf.gommers@gmail.com> +Date: Mon, 26 Oct 2015 20:47:51 +0100 +Subject: [PATCH 4/4] BUG: fix use of Series.sort_values for older pandas. + +Some failing tests in the previous commits because older ``pandas`` versions +don't have ``Series.sort_values``. That method was only added in pandas 0.17, +in https://github.com/pydata/pandas/pull/10726 +--- + statsmodels/graphics/tests/test_mosaicplot.py | 6 +++++- + statsmodels/graphics/tsaplots.py | 6 +++++- + 2 files changed, 10 insertions(+), 2 deletions(-) + +diff --git a/statsmodels/graphics/tests/test_mosaicplot.py b/statsmodels/graphics/tests/test_mosaicplot.py +index e41020e..2a873e7 100644 +--- a/statsmodels/graphics/tests/test_mosaicplot.py ++++ b/statsmodels/graphics/tests/test_mosaicplot.py +@@ -113,7 +113,11 @@ def test_mosaic(): + # sort by the marriage quality and give meaningful name + # [rate_marriage, age, yrs_married, children, + # religious, educ, occupation, occupation_husb] +- datas = datas.sort_values(by=['rate_marriage', 'religious']) ++ if pandas.__version__ < '0.17.0': ++ datas = datas.sort(['rate_marriage', 'religious']) ++ else: ++ datas = datas.sort_values(by=['rate_marriage', 'religious']) ++ + num_to_desc = {1: 'awful', 2: 'bad', 3: 'intermediate', + 4: 'good', 5: 'wonderful'} + datas['rate_marriage'] = datas['rate_marriage'].map(num_to_desc) +diff --git a/statsmodels/graphics/tsaplots.py b/statsmodels/graphics/tsaplots.py +index 94626c9..217724f 100644 +--- a/statsmodels/graphics/tsaplots.py ++++ b/statsmodels/graphics/tsaplots.py +@@ -2,6 +2,7 @@ + + + import numpy as np ++import pandas + + from statsmodels.graphics import utils + from statsmodels.tsa.stattools import acf, pacf +@@ -200,7 +201,10 @@ def seasonal_plot(grouped_x, xticklabels, ylabel=None, ax=None): + ticks = [] + for season, df in grouped_x: + df = df.copy() # or sort balks for series. may be better way +- df.sort_values(inplace=True) ++ if pandas.__version__ < '0.17.0': ++ df.sort() ++ else: ++ df.sort_values(inplace=True) + nobs = len(df) + x_plot = np.arange(start, start + nobs) + ticks.append(x_plot.mean()) diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 52734f5624..4423c77bbd 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -2958,6 +2958,85 @@ either uses the first module it finds or throws an error.") versa.") (license (package-license perl)))) +(define-public perl-log-any + (package + (name "perl-log-any") + (version "1.040") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/Log-Any-" + version ".tar.gz")) + (sha256 + (base32 + "0r1q7cclgwl24gzdnjzvd8y0r7j17dngjk492x35w198zhdj2ncp")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/Log-Any") + (synopsis "Bringing loggers and listeners together") + (description "@code{Log::Any} provides a standard log production API for +modules. @code{Log::Any::Adapter} allows applications to choose the mechanism +for log consumption, whether screen, file or another logging mechanism like +@code{Log::Dispatch} or @code{Log::Log4perl}. + +A CPAN module uses @code{Log::Any} to get a log producer object. An +application, in turn, may choose one or more logging mechanisms via +@code{Log::Any::Adapter}, or none at all. + +@code{Log::Any} has a very tiny footprint and no dependencies beyond Perl +itself, which makes it appropriate for even small CPAN modules to use. It +defaults to 'null' logging activity, so a module can safely log without +worrying about whether the application has chosen (or will ever choose) a +logging mechanism.") + (license (package-license perl)))) + +(define-public perl-log-any-adapter-log4perl + (package + (name "perl-log-any-adapter-log4perl") + (version "0.08") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/D/DA/DAGOLDEN/Log-Any-Adapter-Log4perl-" + version + ".tar.gz")) + (sha256 + (base32 + "0xf4fnrsznvg0hf36q481124ja1hp3lybki1xjgnk82z9990jmxn")))) + (build-system perl-build-system) + (propagated-inputs + `(("perl-log-any" ,perl-log-any) + ("perl-log-log4perl" ,perl-log-log4perl))) + (home-page + "http://search.cpan.org/dist/Log-Any-Adapter-Log4perl") + (synopsis "Log::Any adapter for Log::Log4perl") + (description "@code{Log::Any::Adapter::Log4perl} provides a +@code{Log::Any} adapter using @code{Log::Log4perl} for logging.") + (license (package-license perl)))) + +(define-public perl-log-log4perl + (package + (name "perl-log-log4perl") + (version "1.47") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/M/MS/MSCHILLI/Log-Log4perl-" + version + ".tar.gz")) + (sha256 + (base32 + "0vxraq9navx5mgf8y8g6l5rbl3dv2ml8bishka5m69hj07nxs0ch")))) + (build-system perl-build-system) + (home-page + "http://search.cpan.org/dist/Log-Log4perl") + (synopsis "Log4j implementation for Perl") + (description "@code{Log::Log4perl} lets you remote-control and fine-tune +the logging behaviour of your system from the outside. It implements the +widely popular (Java-based) Log4j logging package in pure Perl.") + (license (package-license perl)))) + (define-public perl-log-report-optional (package (name "perl-log-report-optional") diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 5ba92b2aa3..470bad84ff 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -6936,13 +6936,13 @@ WebSocket usage in Python programs.") (define-public python-atomicwrites (package (name "python-atomicwrites") - (version "1.0.0") + (version "1.1.0") (source (origin (method url-fetch) (uri (pypi-uri "atomicwrites" version)) (sha256 (base32 - "019fa4771q7fb1167yfbh6msdzcqini6v7i59rmf72mzdjd7x5qv")))) + "1s01dci8arsl9d9vr5nz1fk9znldp1z3l4yl43f0c27z12b8yxl0")))) (build-system python-build-system) (synopsis "Atomic file writes in Python") (description "Library for atomic file writes using platform dependent tools @@ -8836,12 +8836,7 @@ LDFLAGS and parse the output to build extensions with setup.py.") "126s53fkpx04f33a829yqqk8fj4png3qwg4m66cvlmhmwc8zihb4")))) (build-system python-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - ;; python setup.py test does not work as of 0.98 - ;; but there is only the one test file - (replace 'check - (lambda _ (zero? (system* "python" "test_bz2file.py"))))))) + `(#:tests? #f)) ; Tests use deprecated python modules. (home-page "https://github.com/nvawda/bz2file") (synopsis "Read and write bzip2-compressed files") (description @@ -8858,7 +8853,16 @@ development version of CPython that are not available in older releases.") (package (inherit base) (native-inputs - `(("python2-setuptools" ,python2-setuptools)))))) + `(("python2-setuptools" ,python2-setuptools))) + (arguments + `(#:python ,python-2 + #:phases + (modify-phases %standard-phases + ;; 'python setup.py test' does not work as of 0.98. + ;; There is only the one test file, so we run it directly. + (replace 'check + (lambda _ (zero? (system* "python" + "test_bz2file.py")))))))))) (define-public python-cysignals (package diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index f2465509ec..9f59cf684d 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -60,7 +60,7 @@ (define-public qt (package (name "qt") - (version "5.5.1") + (version "5.6.1-1") (source (origin (method url-fetch) (uri @@ -72,7 +72,7 @@ version ".tar.xz")) (sha256 (base32 - "0615cn4n3n78v48lnmapqz2jizm2pzrjwvsjlnsf4awrsiiqw0kg")) + "1nrn2wivjwdxc9q03gpsi336gcl9l2axi0xjbzsha5v6akmsf26f")) (modules '((guix build utils))) (snippet '(begin @@ -151,46 +151,53 @@ ;; A more structural fix is needed. #:parallel-build? #f #:phases - (alist-replace - 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (substitute* '("configure" "qtbase/configure") - (("/bin/pwd") (which "pwd"))) - (substitute* "qtbase/src/corelib/global/global.pri" - (("/bin/ls") (which "ls"))) - ;; do not pass "--enable-fast-install", which makes the - ;; configure process fail - (zero? (system* - "./configure" - "-verbose" - "-prefix" out - "-opensource" - "-confirm-license" - ;; Most "-system-..." are automatic, but some use - ;; the bundled copy by default. - "-system-sqlite" - "-system-harfbuzz" - ;; explicitly link with openssl instead of dlopening it - "-openssl-linked" - ;; explicitly link with dbus instead of dlopening it - "-dbus-linked" - ;; drop special machine instructions not supported - ;; on all instances of the target - ,@(if (string-prefix? "x86_64" - (or (%current-target-system) - (%current-system))) - '() - '("-no-sse2")) - "-no-sse3" - "-no-ssse3" - "-no-sse4.1" - "-no-sse4.2" - "-no-avx" - "-no-avx2" - "-no-mips_dsp" - "-no-mips_dspr2")))) - %standard-phases))) + (modify-phases %standard-phases + (add-after 'configure 'patch-bin-sh + (lambda _ + (substitute* '("qtbase/config.status" + "qtbase/configure" + "qtbase/mkspecs/features/qt_functions.prf" + "qtbase/qmake/library/qmakebuiltins.cpp") + (("/bin/sh") (which "sh"))) + #t)) + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* '("configure" "qtbase/configure") + (("/bin/pwd") (which "pwd"))) + (substitute* "qtbase/src/corelib/global/global.pri" + (("/bin/ls") (which "ls"))) + ;; do not pass "--enable-fast-install", which makes the + ;; configure process fail + (zero? (system* + "./configure" + "-verbose" + "-prefix" out + "-opensource" + "-confirm-license" + ;; Most "-system-..." are automatic, but some use + ;; the bundled copy by default. + "-system-sqlite" + "-system-harfbuzz" + ;; explicitly link with openssl instead of dlopening it + "-openssl-linked" + ;; explicitly link with dbus instead of dlopening it + "-dbus-linked" + ;; drop special machine instructions not supported + ;; on all instances of the target + ,@(if (string-prefix? "x86_64" + (or (%current-target-system) + (%current-system))) + '() + '("-no-sse2")) + "-no-sse3" + "-no-ssse3" + "-no-sse4.1" + "-no-sse4.2" + "-no-avx" + "-no-avx2" + "-no-mips_dsp" + "-no-mips_dspr2")))))))) (home-page "http://qt-project.org/") (synopsis "Cross-platform GUI library") (description "Qt is a cross-platform application and UI framework for @@ -393,6 +400,13 @@ developers using C++ or QML, a CSS & JavaScript like language.") (("/bin/pwd") (which "pwd"))) (substitute* "src/corelib/global/global.pri" (("/bin/ls") (which "ls"))) + ;; The configuration files for other Qt5 packages are searched + ;; through a call to "find_package" in Qt5Config.cmake, which + ;; disables the use of CMAKE_PREFIX_PATH via the parameter + ;; "NO_DEFAULT_PATH". Re-enable it so that the different + ;; components can be installed in different places. + (substitute* (find-files "." ".*\\.cmake") + (("NO_DEFAULT_PATH") "")) ;; do not pass "--enable-fast-install", which makes the ;; configure process fail (zero? (system* diff --git a/gnu/packages/rc.scm b/gnu/packages/rc.scm deleted file mode 100644 index d3edf9e997..0000000000 --- a/gnu/packages/rc.scm +++ /dev/null @@ -1,72 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015 Jeff Mickey <j@codemac.net> -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. - -(define-module (gnu packages rc) - #:use-module (gnu packages autotools) - #:use-module (gnu packages perl) - #:use-module (gnu packages pkg-config) - #:use-module (gnu packages readline) - #:use-module (guix build-system gnu) - #:use-module (guix git-download) - #:use-module (guix licenses) - #:use-module (guix packages)) - -(define-public rc - (package - (name "rc") - (version "1.7.4") - (source (origin - (method git-fetch) - (uri (git-reference - (url "git://github.com/rakitzis/rc.git") - ;; commit name 'release: rc-1.7.4' - (commit "c884da53a7c885d46ace2b92de78946855b18e92"))) - (sha256 - (base32 - "00mgzvrrh9w96xa85g4gjbsvq02f08k4jwjcdnxq7kyh5xgiw95l")) - (file-name (string-append name "-" version "-checkout")))) - (build-system gnu-build-system) - (arguments - `(#:configure-flags - '("--with-edit=gnu") - #:phases - (modify-phases %standard-phases - (add-after - 'unpack 'autoreconf - (lambda _ (zero? (system* "autoreconf" "-vfi")))) - (add-before - 'autoreconf 'patch-trip.rc - (lambda _ - (substitute* "trip.rc" - (("/bin/pwd") (which "pwd")) - (("/bin/sh") (which "sh")) - (("/bin/rm") (which "rm")) - (("/bin\\)") (string-append (dirname (which "rm")) ")"))) - #t))))) - (inputs `(("readline" ,readline) - ("perl" ,perl))) - (native-inputs `(("autoconf" ,autoconf) - ("automake" ,automake) - ("libtool" ,libtool) - ("pkg-config" ,pkg-config))) - (synopsis "Alternative implementation of the rc shell by Byron Rakitzis") - (description - "This is a reimplementation by Byron Rakitzis of the Plan 9 shell. It -has a small feature set similar to a traditional Bourne shell.") - (home-page "http://github.com/rakitzis/rc") - (license zlib))) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 028b82daaf..53e183b377 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -908,13 +908,13 @@ Ruby Gems.") (define-public ruby-ffi (package (name "ruby-ffi") - (version "1.9.10") + (version "1.9.14") (source (origin (method url-fetch) (uri (rubygems-uri "ffi" version)) (sha256 (base32 - "1m5mprppw0xcrv2mkim5zsk70v089ajzqiq5hpyb0xg96fcyzyxj")))) + "1nkcrmxqr0vb1y4rwliclwlj2ajsi4ddpdx2gvzjy0xbkk5iqzfp")))) (build-system ruby-build-system) ;; FIXME: Before running tests the build system attempts to build libffi ;; from sources. @@ -1909,37 +1909,48 @@ to reproduce user environments.") (define-public ruby-nokogiri (package (name "ruby-nokogiri") - (version "1.6.7.2") + (version "1.6.8") (source (origin (method url-fetch) (uri (rubygems-uri "nokogiri" version)) (sha256 (base32 - "11sbmpy60ynak6s3794q32lc99hs448msjy8rkp84ay7mq7zqspv")))) + "17pjhvm4yigriizxbbpx266nnh6nckdm33m3j4ws9dcg99daz91p")))) (build-system ruby-build-system) (arguments ;; Tests fail because Nokogiri can only test with an installed extension, ;; and also because many test framework dependencies are missing. - '(#:tests? #f + `(#:tests? #f #:gem-flags (list "--" "--use-system-libraries" (string-append "--with-xml2-include=" (assoc-ref %build-inputs "libxml2") "/include/libxml2" )) #:phases (modify-phases %standard-phases - (add-after 'extract-gemspec 'update-dependency - (lambda _ - (substitute* ".gemspec" (("2.0.0.rc2") "2.0")) + (add-before 'build 'patch-extconf + ;; 'pkg-config' is not included in the GEM_PATH during + ;; installation, so we add it directly to the load path. + (lambda* (#:key inputs #:allow-other-keys) + (let* ((pkg-config (assoc-ref inputs "ruby-pkg-config")) + (pkg-config-home (gem-home pkg-config + ,(package-version ruby)))) + (substitute* "ext/nokogiri/extconf.rb" + (("gem 'pkg-config'.*") + (string-append "$:.unshift '" + pkg-config-home + "/gems/pkg-config-" + ,(package-version ruby-pkg-config) + "/lib'\n")))) #t))))) (native-inputs - `(("ruby-hoe" ,ruby-hoe) - ("ruby-rake-compiler" ,ruby-rake-compiler))) + `(("ruby-hoe" ,ruby-hoe))) (inputs `(("zlib" ,zlib) ("libxml2" ,libxml2) ("libxslt" ,libxslt))) (propagated-inputs - `(("ruby-mini-portile" ,ruby-mini-portile-2))) + `(("ruby-mini-portile" ,ruby-mini-portile-2) + ("ruby-pkg-config" ,ruby-pkg-config))) (synopsis "HTML, XML, SAX, and Reader parser for Ruby") (description "Nokogiri (鋸) parses and searches XML/HTML, and features both CSS3 selector and XPath 1.0 support.") @@ -4116,3 +4127,25 @@ inspired by Erlang, Clojure, Go, JavaScript, actors and classic concurrency patterns.") (home-page "http://www.concurrent-ruby.com") (license license:expat))) + +(define-public ruby-pkg-config + (package + (name "ruby-pkg-config") + (version "1.1.7") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "pkg-config" version)) + (sha256 + (base32 + "0lljiqnm0b4z6iy87lzapwrdfa6ps63x2z5zbs038iig8dqx2g0z")))) + (build-system ruby-build-system) + (arguments + ;; Tests require extra files not included in the gem. + `(#:tests? #f)) + (synopsis "Detect libraries for compiling Ruby native extensions") + (description + "@code{pkg-config} can be used in your extconf.rb to properly detect need +libraries for compiling Ruby native extensions.") + (home-page "https://github.com/ruby-gnome2/pkg-config") + (license license:lgpl2.0+))) diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm new file mode 100644 index 0000000000..b3fd5fa1cd --- /dev/null +++ b/gnu/packages/shells.scm @@ -0,0 +1,215 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com> +;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org> +;;; Copyright © 2015 Jeff Mickey <j@codemac.net> +;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages shells) + #:use-module (gnu packages) + #:use-module (gnu packages autotools) + #:use-module (gnu packages base) + #:use-module (gnu packages documentation) + #:use-module (gnu packages libedit) + #:use-module (gnu packages ncurses) + #:use-module (gnu packages perl) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python) + #:use-module (gnu packages readline) + #:use-module (guix build-system gnu) + #:use-module (guix download) + #:use-module (guix git-download) + #:use-module (guix licenses) + #:use-module (guix packages)) + +(define-public dash + (package + (name "dash") + (version "0.5.9") + (source + (origin + (method url-fetch) + (uri (string-append "http://gondor.apana.org.au/~herbert/dash/files/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "17328wd9n5krr5wd37smrk0y7fdf8aa3hmhm02br5mqpq0a3nycj")) + (modules '((guix build utils))) + (snippet + '(begin + ;; The man page hails from BSD, where (d)ash is the default shell. + ;; This isn't the case on Guix or indeed most other GNU systems. + (substitute* "src/dash.1" + (("the standard command interpreter for the system") + "a command interpreter based on the original Bourne shell")) + #t)))) + (build-system gnu-build-system) + (inputs + `(("libedit" ,libedit))) + (arguments + `(#:configure-flags '("--with-libedit"))) + (home-page "http://gondor.apana.org.au/~herbert/dash") + (synopsis "POSIX-compliant shell optimised for size") + (description + "dash is a POSIX-compliant @command{/bin/sh} implementation that aims to be +as small as possible, often without sacrificing speed. It is faster than the +GNU Bourne-Again Shell (@command{bash}) at most scripted tasks. dash is a +direct descendant of NetBSD's Almquist Shell (@command{ash}).") + (license (list bsd-3 + gpl2+)))) ; mksignames.c + +(define-public fish + (package + (name "fish") + (version "2.3.1") + (source (origin + (method url-fetch) + (uri (string-append "https://fishshell.com/files/" + version "/fish-" version ".tar.gz")) + (sha256 + (base32 + "0r46p64lg6da3v6chsa4gisvl04kd3rpy60yih8r870kbp9wm2ij")) + (modules '((guix build utils))) + ;; Don't try to install /etc/fish/config.fish. + (snippet + '(substitute* "Makefile.in" + ((".*INSTALL.*sysconfdir.*fish.*") ""))))) + (build-system gnu-build-system) + (native-inputs + `(("doxygen" ,doxygen))) + (inputs + `(("ncurses" ,ncurses) + ("python" ,python-wrapper))) ;for fish_config and manpage completions + (arguments + '(#:tests? #f ; no check target + #:configure-flags '("--sysconfdir=/etc"))) + (synopsis "The friendly interactive shell") + (description + "Fish (friendly interactive shell) is a shell focused on interactive use, +discoverability, and friendliness. Fish has very user-friendly and powerful +tab-completion, including descriptions of every completion, completion of +strings with wildcards, and many completions for specific commands. It also +has extensive and discoverable help. A special help command gives access to +all the fish documentation in your web browser. Other features include smart +terminal handling based on terminfo, an easy to search history, and syntax +highlighting.") + (home-page "https://fishshell.com/") + (license gpl2))) + +(define-public rc + (package + (name "rc") + (version "1.7.4") + (source (origin + (method git-fetch) + (uri (git-reference + (url "git://github.com/rakitzis/rc.git") + ;; commit name 'release: rc-1.7.4' + (commit "c884da53a7c885d46ace2b92de78946855b18e92"))) + (sha256 + (base32 + "00mgzvrrh9w96xa85g4gjbsvq02f08k4jwjcdnxq7kyh5xgiw95l")) + (file-name (string-append name "-" version "-checkout")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + '("--with-edit=gnu") + #:phases + (modify-phases %standard-phases + (add-after + 'unpack 'autoreconf + (lambda _ (zero? (system* "autoreconf" "-vfi")))) + (add-before + 'autoreconf 'patch-trip.rc + (lambda _ + (substitute* "trip.rc" + (("/bin/pwd") (which "pwd")) + (("/bin/sh") (which "sh")) + (("/bin/rm") (which "rm")) + (("/bin\\)") (string-append (dirname (which "rm")) ")"))) + #t))))) + (inputs `(("readline" ,readline) + ("perl" ,perl))) + (native-inputs `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config))) + (synopsis "Alternative implementation of the rc shell by Byron Rakitzis") + (description + "This is a reimplementation by Byron Rakitzis of the Plan 9 shell. It +has a small feature set similar to a traditional Bourne shell.") + (home-page "http://github.com/rakitzis/rc") + (license zlib))) + +(define-public tcsh + (package + (name "tcsh") + (version "6.18.01") + (source (origin + (method url-fetch) + ;; Old tarballs are moved to old/. + (uri (list (string-append "ftp://ftp.astron.com/pub/tcsh/" + "tcsh-" version ".tar.gz") + (string-append "ftp://ftp.astron.com/pub/tcsh/" + "old/tcsh-" version ".tar.gz"))) + (sha256 + (base32 + "1a4z9kwgx1iqqzvv64si34m60gj34p7lp6rrcrb59s7ka5wa476q")) + (patches (search-patches "tcsh-fix-autotest.patch")) + (patch-flags '("-p0")))) + (build-system gnu-build-system) + (inputs + `(("autoconf" ,autoconf) + ("coreutils" ,coreutils) + ("ncurses" ,ncurses))) + (arguments + `(#:phases + (alist-cons-before + 'check 'patch-test-scripts + (lambda _ + ;; Take care of pwd + (substitute* '("tests/commands.at" "tests/variables.at") + (("/bin/pwd") (which "pwd"))) + ;; The .at files create shell scripts without shebangs. Erk. + (substitute* "tests/commands.at" + (("./output.sh") "/bin/sh output.sh")) + (substitute* "tests/syntax.at" + (("; other_script.csh") "; /bin/sh other_script.csh")) + ;; Now, let's generate the test suite and patch it + (system* "make" "tests/testsuite") + + ;; This file is ISO-8859-1 encoded. + (with-fluids ((%default-port-encoding #f)) + (substitute* "tests/testsuite" + (("/bin/sh") (which "sh"))))) + (alist-cons-after + 'install 'post-install + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref %outputs "out")) + (bin (string-append out "/bin"))) + (with-directory-excursion bin + (symlink "tcsh" "csh")))) + %standard-phases)))) + (home-page "http://www.tcsh.org/") + (synopsis "Unix shell based on csh") + (description + "Tcsh is an enhanced, but completely compatible version of the Berkeley +UNIX C shell (csh). It is a command language interpreter usable both as an +interactive login shell and a shell script command processor. It includes a +command-line editor, programmable word completion, spelling correction, a +history mechanism, job control and a C-like syntax.") + (license bsd-4))) diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index a669ccfc9b..bca443390d 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -124,7 +124,7 @@ a server that supports the SSH-2 protocol.") (define-public openssh (package (name "openssh") - (version "7.2p2") + (version "7.3p1") (source (origin (method url-fetch) (uri (let ((tail (string-append name "-" version ".tar.gz"))) @@ -135,15 +135,12 @@ a server that supports the SSH-2 protocol.") (string-append "http://ftp2.fr.openbsd.org/pub/OpenBSD/OpenSSH/portable/" tail)))) (sha256 (base32 - "132lh9aanb0wkisji1d6cmsxi520m8nh7c7i9wi6m1s3l38q29x7")) - (patches (search-patches "openssh-CVE-2015-8325.patch" - "openssh-CVE-2016-6210-1.patch" - "openssh-CVE-2016-6210-2.patch" - "openssh-CVE-2016-6210-3.patch")))) + "1k5y1wi29d47cgizbryxrhc1fbjsba2x8l5mqfa9b9nadnd9iyrz")))) (build-system gnu-build-system) (inputs `(("groff" ,groff) ("openssl" ,openssl) - ("zlib" ,zlib))) + ("zlib" ,zlib) + ("xauth" ,xauth))) ;for 'ssh -X' and 'ssh -Y' (arguments `(#:test-target "tests" #:phases diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 2365149fad..990f2fc132 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -1331,7 +1331,8 @@ building design matrices.") "s/statsmodels/statsmodels-" version ".tar.gz")) (sha256 (base32 - "0xn67sqr0cc1lmlhzm71352hrb4hw7g318p5ff5q97pc98vl8kmy")))) + "0xn67sqr0cc1lmlhzm71352hrb4hw7g318p5ff5q97pc98vl8kmy")) + (patches (search-patches "python-statsmodels-fix-tests.patch")))) (build-system python-build-system) (arguments `(#:phases @@ -1375,7 +1376,8 @@ inference for statistical models.") (let ((stats (package-with-python2 python-statsmodels))) (package (inherit stats) (propagated-inputs - `(("python2-numpy" ,python2-numpy) + `(("python2-pytz" ,python2-pytz) + ("python2-numpy" ,python2-numpy) ("python2-scipy" ,python2-scipy) ("python2-pandas" ,python2-pandas) ("python2-patsy" ,python2-patsy) diff --git a/gnu/packages/tcsh.scm b/gnu/packages/tcsh.scm deleted file mode 100644 index 5e3df2ba3f..0000000000 --- a/gnu/packages/tcsh.scm +++ /dev/null @@ -1,86 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com> -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. - -(define-module (gnu packages tcsh) - #:use-module (guix licenses) - #:use-module (guix packages) - #:use-module (guix download) - #:use-module (guix build-system gnu) - #:use-module (gnu packages) - #:use-module (gnu packages autotools) - #:use-module (gnu packages base) - #:use-module (gnu packages ncurses)) - -(define-public tcsh - (package - (name "tcsh") - (version "6.18.01") - (source (origin - (method url-fetch) - ;; Old tarballs are moved to old/. - (uri (list (string-append "ftp://ftp.astron.com/pub/tcsh/" - "tcsh-" version ".tar.gz") - (string-append "ftp://ftp.astron.com/pub/tcsh/" - "old/tcsh-" version ".tar.gz"))) - (sha256 - (base32 - "1a4z9kwgx1iqqzvv64si34m60gj34p7lp6rrcrb59s7ka5wa476q")) - (patches (search-patches "tcsh-fix-autotest.patch")) - (patch-flags '("-p0")))) - (build-system gnu-build-system) - (inputs - `(("autoconf" ,autoconf) - ("coreutils" ,coreutils) - ("ncurses" ,ncurses))) - (arguments - `(#:phases - (alist-cons-before - 'check 'patch-test-scripts - (lambda _ - ;; Take care of pwd - (substitute* '("tests/commands.at" "tests/variables.at") - (("/bin/pwd") (which "pwd"))) - ;; The .at files create shell scripts without shebangs. Erk. - (substitute* "tests/commands.at" - (("./output.sh") "/bin/sh output.sh")) - (substitute* "tests/syntax.at" - (("; other_script.csh") "; /bin/sh other_script.csh")) - ;; Now, let's generate the test suite and patch it - (system* "make" "tests/testsuite") - - ;; This file is ISO-8859-1 encoded. - (with-fluids ((%default-port-encoding #f)) - (substitute* "tests/testsuite" - (("/bin/sh") (which "sh"))))) - (alist-cons-after - 'install 'post-install - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref %outputs "out")) - (bin (string-append out "/bin"))) - (with-directory-excursion bin - (symlink "tcsh" "csh")))) - %standard-phases)))) - (home-page "http://www.tcsh.org/") - (synopsis "Unix shell based on csh") - (description - "Tcsh is an enhanced, but completely compatible version of the Berkeley -UNIX C shell (csh). It is a command language interpreter usable both as an -interactive login shell and a shell script command processor. It includes a -command-line editor, programmable word completion, spelling correction, a -history mechanism, job control and a C-like syntax.") - (license bsd-4))) diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm index b27dd1f6d6..d8a33ddf3d 100644 --- a/gnu/packages/telephony.scm +++ b/gnu/packages/telephony.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com> ;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org> +;;; Copyright © 2016 Francesco Frassinelli <fraph24@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,8 +26,11 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages gnupg) #:use-module (gnu packages linux) + #:use-module (gnu packages multiprecision) + #:use-module (gnu packages ncurses) #:use-module (gnu packages pkg-config) #:use-module (gnu packages tls) + #:use-module (gnu packages xiph) #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) @@ -252,3 +256,33 @@ Voice-over-IP (VoIP) communications.") ;; covered under the 'GPL'. ;; The package as a whole is distributed under the LGPL 2.0. (license (list lgpl2.0 public-domain gpl2+))))) + +(define-public seren + (package + (name "seren") + (version "0.0.21") + (source (origin + (method url-fetch) + (uri (string-append "http://holdenc.altervista.org/" + "seren/downloads/seren-" version + ".tar.gz")) + (sha256 + (base32 + "06mams6bng7ib7p2zpfq88kdr4ffril9svzc9lprkb0wjgmkglk9")))) + (build-system gnu-build-system) + (arguments '(#:tests? #f)) ; no "check" target + (inputs + `(("alsa-lib" ,alsa-lib) + ("gmp" ,gmp) + ("libogg" ,libogg) + ("ncurses" ,ncurses) + ("opus" ,opus))) + (synopsis "Simple VoIP program to create conferences from the terminal") + (description + "Seren is a simple VoIP program based on the Opus codec that allows you +to create a voice conference from the terminal, with up to 10 participants, +without having to register accounts, exchange emails, or add people to contact +lists. All you need to join an existing conference is the host name or IP +address of one of the participants.") + (home-page "http://holdenc.altervista.org/seren/") + (license gpl3+))) diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm index 8501792250..9dde8a9eab 100644 --- a/gnu/packages/tex.scm +++ b/gnu/packages/tex.scm @@ -45,7 +45,7 @@ #:use-module (gnu packages python) #:use-module (gnu packages qt) #:use-module (gnu packages ruby) - #:use-module (gnu packages tcsh) + #:use-module (gnu packages shells) #:use-module (gnu packages base) #:use-module (gnu packages xorg) #:use-module (gnu packages xdisorg) diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index 9abaabad89..92564ba24d 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -326,7 +326,7 @@ required structures.") (define-public libressl (package (name "libressl") - (version "2.3.6") + (version "2.4.2") (source (origin (method url-fetch) @@ -335,7 +335,7 @@ required structures.") version ".tar.gz")) (sha256 (base32 - "1yipsp1ici207nbminbf1knh252kzvqg036v0xpx0fw1wrwlg2im")))) + "1qyrcyzrrn6r9cqvm66ib72qyr65q4hrdyiq1vb24a6nwmwdg1sz")))) (build-system gnu-build-system) (native-search-paths ;; FIXME: These two variables must designate a single file or directory diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm index 73433e955f..44f94ff49e 100644 --- a/gnu/packages/vim.scm +++ b/gnu/packages/vim.scm @@ -26,7 +26,7 @@ #:use-module (gnu packages ncurses) #:use-module (gnu packages perl) #:use-module (gnu packages admin) ; For GNU hostname - #:use-module (gnu packages tcsh)) + #:use-module (gnu packages shells)) (define-public vim (package diff --git a/gnu/system.scm b/gnu/system.scm index 04dd7a845c..d6bf6c413c 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -545,7 +545,12 @@ use 'plain-file' instead~%") ;; By default, applications that use D-Bus, such as Emacs, abort at startup ;; when /etc/machine-id is missing. Make sure these warnings are non-fatal. - ("DBUS_FATAL_WARNINGS" . "0"))) + ("DBUS_FATAL_WARNINGS" . "0") + + ;; XXX: Normally we wouldn't need to do this, but our glibc@2.23 package + ;; looks things up in 'PREFIX/lib/locale' instead of + ;; '/run/current-system/locale' as was intended. + ("GUIX_LOCPATH" . "/run/current-system/locale"))) (define %setuid-programs ;; Default set of setuid-root programs. diff --git a/gnu/system/mapped-devices.scm b/gnu/system/mapped-devices.scm index d0a9f0288f..7b91fcfc41 100644 --- a/gnu/system/mapped-devices.scm +++ b/gnu/system/mapped-devices.scm @@ -81,14 +81,7 @@ (documentation "Map a device node using Linux's device mapper.") (start #~(lambda () #$(open source target))) (stop #~(lambda _ (not #$(close source target)))) - (respawn? #f) - - ;; Add the modules needed by LUKS-DEVICE-MAPPING. - ;; FIXME: This info should be propagated via gexps. - (modules `((rnrs bytevectors) ;bytevector? - ((gnu build file-systems) - #:select (find-partition-by-luks-uuid)) - ,@%default-modules))))))) + (respawn? #f)))))) (define (device-mapping-service mapped-device) "Return a service that sets up @var{mapped-device}." @@ -105,6 +98,11 @@ (with-imported-modules '((gnu build file-systems) (guix build bournish)) #~(let ((source #$source)) + ;; XXX: 'use-modules' should be at the top level. + (use-modules (rnrs bytevectors) ;bytevector? + ((gnu build file-systems) + #:select (find-partition-by-luks-uuid))) + (zero? (system* (string-append #$cryptsetup "/sbin/cryptsetup") "open" "--type" "luks" @@ -130,20 +128,31 @@ (open open-luks-device) (close close-luks-device))) -(define (open-raid-device source target) - "Return a gexp that assembles SOURCE (a list of devices) to the RAID device -TARGET, using 'mdadm'." - #~(let ((every (@ (srfi srfi-1) every))) - (let loop () - (unless (every file-exists? '#$source) - (format #t "waiting a bit...~%") +(define (open-raid-device sources target) + "Return a gexp that assembles SOURCES (a list of devices) to the RAID device +TARGET (e.g., \"/dev/md0\"), using 'mdadm'." + #~(let ((sources '#$sources) + + ;; XXX: We're not at the top level here. We could use a + ;; non-top-level 'use-modules' form but that doesn't work when the + ;; code is eval'd, like the Shepherd does. + (every (@ (srfi srfi-1) every)) + (format (@ (ice-9 format) format))) + (let loop ((attempts 0)) + (unless (every file-exists? sources) + (when (> attempts 20) + (error "RAID devices did not show up; bailing out" + sources)) + + (format #t "waiting for RAID source devices~{ ~a~}...~%" + sources) (sleep 1) - (loop))) - (zero? (system* (string-append #$mdadm "/sbin/mdadm") - "--assemble" #$target - #$@source)))) + (loop (+ 1 attempts)))) + + (zero? (system* (string-append #$mdadm "/sbin/mdadm") + "--assemble" #$target sources)))) -(define (close-raid-device source target) +(define (close-raid-device sources target) "Return a gexp that stops the RAID device TARGET." #~(zero? (system* (string-append #$mdadm "/sbin/mdadm") "--stop" #$target))) diff --git a/gnu/tests/base.scm b/gnu/tests/base.scm index a6278b25d4..7170ab1e38 100644 --- a/gnu/tests/base.scm +++ b/gnu/tests/base.scm @@ -178,6 +178,18 @@ info --version") '(false-if-exception (getaddrinfo "does-not-exist")) marionette)) + (test-equal "locale" + "en_US.utf8" + (marionette-eval '(begin + ;; XXX: This 'setenv' call wouldn't be needed + ;; but our glibc@2.23 currently ignores + ;; /run/current-system/locale. + (setenv "GUIX_LOCPATH" + "/run/current-system/locale") + (let ((before (setlocale LC_ALL "en_US.utf8"))) + (setlocale LC_ALL before))) + marionette)) + (test-assert "screendump" (begin (marionette-control (string-append "screendump " #$output diff --git a/guix/download.scm b/guix/download.scm index b2dcdc88f9..f1422bebc0 100644 --- a/guix/download.scm +++ b/guix/download.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch> ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> +;;; Copyright © 2016 David Craven <david@craven.ch> ;;; ;;; This file is part of GNU Guix. ;;; @@ -224,7 +225,52 @@ "http://ftp.de.debian.org/debian/" "http://ftp.fr.debian.org/debian/" "http://ftp.debian.org/debian/" - "http://archive.debian.org/debian/")))) + "http://archive.debian.org/debian/") + (kde + ;; Mirrors from http://files.kde.org/extra/mirrors.html + ;; Europe + "http://mirror.easyname.at/kde" + "http://mirror.karneval.cz/pub/kde" + "http://ftp.fi.muni.cz/pub/kde/" + "http://mirror.oss.maxcdn.com/kde/" + "http://ftp5.gwdg.de/pub/linux/kde/" + "http://ftp-stud.fht-esslingen.de/Mirrors/ftp.kde.org/pub/kde/" + "http://mirror.klaus-uwe.me/kde/ftp/" + "http://kde.beta.mirror.ga/" + "http://kde.alpha.mirror.ga/" + "http://mirror.netcologne.de/kde" + "http://vesta.informatik.rwth-aachen.de/ftp/pub/mirror/kde/" + "http://ftp.rz.uni-wuerzburg.de/pub/unix/kde/" + "http://mirrors.dotsrc.org/kde/" + "http://ftp.funet.fi/pub/mirrors/ftp.kde.org/pub/kde/" + "http://kde-mirror.freenux.org/" + "http://mirrors.ircam.fr/pub/KDE/" + "http://www-ftp.lip6.fr/pub/X11/kde/" + "http://fr2.rpmfind.net/linux/KDE/" + "http://kde.mirror.anlx.net/" + "http://www.mirrorservice.org/sites/ftp.kde.org/pub/kde/" + "http://ftp.heanet.ie/mirrors/ftp.kde.org/" + "http://ftp.nluug.nl/pub/windowing/kde/" + "http://ftp.surfnet.nl/windowing/kde/" + "http://ftp.icm.edu.pl/pub/unix/kde/" + "http://ftp.pbone.net/pub/kde/" + "http://piotrkosoft.net/pub/mirrors/ftp.kde.org/" + "http://mirrors.fe.up.pt/pub/kde/" + "http://ftp.iasi.roedu.net/pub/mirrors/ftp.kde.org/" + "http://ftp.acc.umu.se/mirror/kde.org/ftp/" + "http://kde.ip-connect.vn.ua/" + ;; North America + "http://mirror.its.dal.ca/kde/" + "http://mirror.csclub.uwaterloo.ca/kde/" + "http://mirror.cc.columbia.edu/pub/software/kde/" + "http://mirrors-usa.go-parts.com/kde" + "http://kde.mirrors.hoobly.com/" + "http://ftp.ussg.iu.edu/kde/" + "http://mirrors.mit.edu/kde/" + "http://kde.mirrors.tds.net/pub/kde/" + ;; Oceania + "http://ftp.kddlabs.co.jp/pub/X11/kde/" + "http://kde.mirror.uber.com.au/")))) (define %mirror-file ;; Copy of the list of mirrors to a file. This allows us to keep a single diff --git a/guix/gnu-maintenance.scm b/guix/gnu-maintenance.scm index 0dd08bf535..20f08027da 100644 --- a/guix/gnu-maintenance.scm +++ b/guix/gnu-maintenance.scm @@ -59,6 +59,7 @@ %gnu-updater %gnome-updater + %kde-updater %xorg-updater)) ;;; Commentary: @@ -500,6 +501,33 @@ elpa.gnu.org, and all the GNOME packages." ;; checksums. #:file->signature (const #f)))) +(define (kde-package? package) + "Return true if PACKAGE is a KDE package, developed by KDE.org." + (define kde-uri? + (match-lambda + ((? string? uri) + (string-prefix? "mirror://kde/" uri)) + (_ + #f))) + + (match (package-source package) + ((? origin? origin) + (match (origin-uri origin) + ((? kde-uri?) #t) + (_ #f))) + (_ #f))) + +(define (latest-kde-release package) + "Return the latest release of PACKAGE, the name of an KDE.org package." + (let ((uri (string->uri (origin-uri (package-source package))))) + (false-if-ftp-error + (latest-ftp-release + (package-name package) + #:server "mirrors.mit.edu" + #:directory + (string-append "/kde" (dirname (dirname (uri-path uri)))) + #:file->signature (const #f))))) + (define (xorg-package? package) "Return true if PACKAGE is an X.org package, developed by X.org." (define xorg-uri? @@ -540,6 +568,13 @@ elpa.gnu.org, and all the GNOME packages." (pred gnome-package?) (latest latest-gnome-release))) +(define %kde-updater + (upstream-updater + (name 'kde) + (description "Updater for KDE packages") + (pred kde-package?) + (latest latest-kde-release))) + (define %xorg-updater (upstream-updater (name 'xorg) diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm index 8aab1febb2..51191e7e7b 100644 --- a/guix/scripts/lint.scm +++ b/guix/scripts/lint.scm @@ -205,7 +205,13 @@ by two spaces; possible infraction~p at ~{~a~^, ~}") ;; native inputs. (let ((linted package) (inputs (package-inputs package)) - (native-inputs '("pkg-config" "glib:bin" "intltool" "itstool"))) + (native-inputs + '("pkg-config" + "extra-cmake-modules" + "glib:bin" + "intltool" + "itstool" + "qttools"))) (match inputs (((labels packages . outputs) ...) (for-each (lambda (package output) diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm index 2ca2aeebe3..8404e540f8 100644 --- a/guix/scripts/publish.scm +++ b/guix/scripts/publish.scm @@ -50,6 +50,7 @@ #:use-module (guix zlib) #:use-module (guix ui) #:use-module (guix scripts) + #:use-module ((guix utils) #:select (compressed-file?)) #:use-module ((guix build utils) #:select (dump-port)) #:export (guix-publish)) @@ -199,6 +200,9 @@ compression disabled~%")) if STORE-PATH is invalid. Produce a URL that corresponds to COMPRESSION. The narinfo is signed with KEY." (let* ((path-info (query-path-info store store-path)) + (compression (if (compressed-file? store-path) + %no-compression + compression)) (url (encode-and-join-uri-path `("nar" ,@(match compression diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm index 209f0d8be9..b00ac98c96 100644 --- a/guix/scripts/refresh.scm +++ b/guix/scripts/refresh.scm @@ -32,7 +32,10 @@ #:use-module (guix scripts graph) #:use-module (guix monads) #:use-module ((guix gnu-maintenance) - #:select (%gnu-updater %gnome-updater %xorg-updater)) + #:select (%gnu-updater + %gnome-updater + %kde-updater + %xorg-updater)) #:use-module (guix import elpa) #:use-module (guix import cran) #:use-module (guix import hackage) @@ -195,6 +198,7 @@ unavailable optional dependencies such as Guile-JSON." ;; List of "updaters" used by default. They are consulted in this order. (list-updaters %gnu-updater %gnome-updater + %kde-updater %xorg-updater %elpa-updater %cran-updater diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index e2c6b2efee..209ebf9752 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -236,11 +236,15 @@ BODY..., and restore them." (with-monad %store-monad (return #f))))) -(define-syntax-rule (with-shepherd-error-handling body ...) - (warn-on-system-error - (guard (c ((shepherd-error? c) - (report-shepherd-error c))) - body ...))) +(define-syntax-rule (with-shepherd-error-handling mbody ...) + "Catch and report Shepherd errors that arise when binding MBODY, a monadic +expression in %STORE-MONAD." + (lambda (store) + (warn-on-system-error + (guard (c ((shepherd-error? c) + (values (report-shepherd-error c) store))) + (values (run-with-store store (begin mbody ...)) + store))))) (define (report-shepherd-error error) "Report ERROR, a '&shepherd-error' error condition object." diff --git a/guix/utils.scm b/guix/utils.scm index 9e1b8ead0a..c68094cf49 100644 --- a/guix/utils.scm +++ b/guix/utils.scm @@ -79,6 +79,7 @@ arguments-from-environment-variable file-extension file-sans-extension + compressed-file? switch-symlinks call-with-temporary-output-file call-with-temporary-directory @@ -551,6 +552,11 @@ minor version numbers from version-string." (substring file 0 dot) file))) +(define (compressed-file? file) + "Return true if FILE denotes a compressed file." + (->bool (member (file-extension file) + '("gz" "bz2" "xz" "lz" "tgz" "tbz2" "zip")))) + (define (switch-symlinks link target) "Atomically switch LINK, a symbolic link, to point to TARGET. Works both when LINK already exists and when it does not." diff --git a/tests/publish.scm b/tests/publish.scm index 4dc807505c..0fd3b50ecb 100644 --- a/tests/publish.scm +++ b/tests/publish.scm @@ -66,16 +66,28 @@ (lambda () (http-get uri #:port socket #:streaming? #t)) (lambda (response port) - (setvbuf port _IONBF) + ;; Don't (setvbuf port _IONBF) because of <http://bugs.gnu.org/19610> + ;; (PORT might be a custom binary input port). port)))) (define (publish-uri route) (string-append "http://localhost:6789" route)) +(define-syntax-rule (with-separate-output-ports exp ...) + ;; Since ports aren't thread-safe in Guile 2.0, duplicate the output and + ;; error ports to make sure the two threads don't end up stepping on each + ;; other's toes. + (with-output-to-port (duplicate-port (current-output-port) "w") + (lambda () + (with-error-to-port (duplicate-port (current-error-port) "w") + (lambda () + exp ...))))) + ;; Run a local publishing server in a separate thread. -(call-with-new-thread - (lambda () - (guix-publish "--port=6789" "-C0"))) ;attempt to avoid port collision +(with-separate-output-ports + (call-with-new-thread + (lambda () + (guix-publish "--port=6789" "-C0")))) ;attempt to avoid port collision (define (wait-until-ready port) ;; Wait until the server is accepting connections. @@ -185,9 +197,10 @@ References: ~%" `(("StorePath" . ,%item) ("URL" . ,(string-append "nar/gzip/" (basename %item))) ("Compression" . "gzip")) - (let ((thread (call-with-new-thread - (lambda () - (guix-publish "--port=6799" "-C5"))))) + (let ((thread (with-separate-output-ports + (call-with-new-thread + (lambda () + (guix-publish "--port=6799" "-C5")))))) (wait-until-ready 6799) (let* ((url (string-append "http://localhost:6799/" (store-path-hash-part %item) ".narinfo")) @@ -200,6 +213,20 @@ References: ~%" (_ #f))) (recutils->alist body))))) +(unless (zlib-available?) + (test-skip 1)) +(test-equal "/*.narinfo for a compressed file" + '("none" "nar") ;compression-less nar + ;; Assume 'guix publish -C' is already running on port 6799. + (let* ((item (add-text-to-store %store "fake.tar.gz" + "This is a fake compressed file.")) + (url (string-append "http://localhost:6799/" + (store-path-hash-part item) ".narinfo")) + (body (http-get-port url)) + (info (recutils->alist body))) + (list (assoc-ref info "Compression") + (dirname (assoc-ref info "URL"))))) + (test-equal "/nar/ with properly encoded '+' sign" "Congrats!" (let ((item (add-text-to-store %store "fake-gtk+" "Congrats!"))) |