diff options
author | Efraim Flashner <efraim@flashner.co.il> | 2017-03-22 12:57:37 +0200 |
---|---|---|
committer | Efraim Flashner <efraim@flashner.co.il> | 2017-03-22 12:57:37 +0200 |
commit | 378de69c59ee0700c67b10b38592c213821b41f2 (patch) | |
tree | ee9b6465430077a79cace3cb8fab1a85a8c1e4c5 | |
parent | 049e02eaa258942515260a58c8d9ddfc4e7caffe (diff) | |
parent | d8be338f16c7da4acfa55f29f58beaf908d3ad60 (diff) | |
download | guix-378de69c59ee0700c67b10b38592c213821b41f2.tar.gz |
Merge remote-tracking branch 'origin/master' into core-updates
49 files changed, 1318 insertions, 775 deletions
diff --git a/Makefile.am b/Makefile.am index 577cb5ebf3..91b5f64e4c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -221,7 +221,8 @@ GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go $(dist_noinst_DATA:%.scm=%.go) nobase_dist_guilemodule_DATA = \ $(MODULES) $(AUX_FILES) $(EXAMPLES) \ $(MISC_DISTRO_FILES) -nobase_nodist_guilemodule_DATA = $(GOBJECTS) guix/config.scm +nobase_nodist_guilemodule_DATA = guix/config.scm +nobase_nodist_guileobject_DATA = $(GOBJECTS) # Do we need to provide our own non-broken (srfi srfi-37) module? if INSTALL_SRFI_37 @@ -456,14 +457,14 @@ SUFFIXES = .go # files. See # <http://lists.gnu.org/archive/html/guile-devel/2010-07/msg00125.html> # for details. -guix_install_go_files = install-nobase_nodist_guilemoduleDATA +guix_install_go_files = install-nobase_nodist_guileobjectDATA $(guix_install_go_files): install-nobase_dist_guilemoduleDATA # The above trick doesn't work for 'config.go' because both 'config.scm' and -# 'config.go' are listed in $(nobase_nodist_guilemodule_DATA). Thus, give it +# 'config.go' are listed in $(nobase_nodist_guileobject_DATA). Thus, give it # special treatment. install-data-hook: set-bootstrap-executable-permissions - touch "$(DESTDIR)$(guilemoduledir)/guix/config.go" + touch "$(DESTDIR)$(guileobjectdir)/guix/config.go" SUBDIRS = po/guix po/packages diff --git a/configure.ac b/configure.ac index 76f52e0ec3..2b4620c44b 100644 --- a/configure.ac +++ b/configure.ac @@ -85,9 +85,11 @@ if test "x$GUILE_EFFECTIVE_VERSION" = "x2.0"; then PKG_CHECK_MODULES([GUILE], [guile-2.0 >= 2.0.9]) fi -dnl Installation directory for .scm and .go files. +dnl Installation directories for .scm and .go files. guilemoduledir="${datarootdir}/guile/site/$GUILE_EFFECTIVE_VERSION" +guileobjectdir="${libdir}/guile/$GUILE_EFFECTIVE_VERSION/site-ccache" AC_SUBST([guilemoduledir]) +AC_SUBST([guileobjectdir]) dnl The GnuTLS bindings are necessary for substitutes over HTTPS and for 'guix dnl pull', among other things. diff --git a/doc/guix.texi b/doc/guix.texi index c72a612b4c..efd4887bbe 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -9516,6 +9516,22 @@ equivalent role to password authentication, you should disable either @item @code{print-last-log?} (default: @code{#t}) Specifies whether @command{sshd} should print the date and time of the last user login when a user logs in interactively. + +@item @code{subsystems} (default: @code{'(("sftp" "internal-sftp"))}) +Configures external subsystems (e.g. file transfer daemon). + +This is a list of two-element lists, each of which containing the +subsystem name and a command (with optional arguments) to execute upon +subsystem request. + +The command @command{internal-sftp} implements an in-process SFTP +server. Alternately, one can specify the @command{sftp-server} command: +@example +(service openssh-service-type + (openssh-configuration + (subsystems + '(("sftp" ,(file-append openssh "/libexec/sftp-server")))))) +@end example @end table @end deftp diff --git a/gnu/local.mk b/gnu/local.mk index 256682effa..b8db8712d9 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -778,7 +778,6 @@ dist_patch_DATA = \ %D%/packages/patches/netsurf-y2038-tests.patch \ %D%/packages/patches/netsurf-longer-test-timeout.patch \ %D%/packages/patches/ngircd-handle-zombies.patch \ - %D%/packages/patches/ngircd-no-dns-in-tests.patch \ %D%/packages/patches/ninja-zero-mtime.patch \ %D%/packages/patches/node-9077.patch \ %D%/packages/patches/nss-increase-test-timeout.patch \ @@ -964,7 +963,6 @@ dist_patch_DATA = \ %D%/packages/patches/util-linux-CVE-2017-2616.patch \ %D%/packages/patches/upower-builddir.patch \ %D%/packages/patches/valgrind-enable-arm.patch \ - %D%/packages/patches/vim-CVE-2017-5953.patch \ %D%/packages/patches/virglrenderer-CVE-2017-6386.patch \ %D%/packages/patches/vorbis-tools-CVE-2014-9638+CVE-2014-9639.patch \ %D%/packages/patches/vorbis-tools-CVE-2014-9640.patch \ diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm index 2695530fee..9f5e4aeb78 100644 --- a/gnu/packages/astronomy.scm +++ b/gnu/packages/astronomy.scm @@ -143,6 +143,7 @@ programs for the manipulation and analysis of astronomical data.") #:phases (modify-phases %standard-phases (add-before 'check 'set-offscreen-display (lambda _ + ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") (setenv "HOME" "/tmp") #t))))) diff --git a/gnu/packages/audacity.scm b/gnu/packages/audacity.scm index a70d0e3a69..c448d0c1f2 100644 --- a/gnu/packages/audacity.scm +++ b/gnu/packages/audacity.scm @@ -52,8 +52,8 @@ (inputs ;; TODO: Add portSMF and libwidgetextra once they're packaged. In-tree ;; versions shipping with Audacity are used for now. - `(("wxwidgets" ,wxwidgets-gtk2) - ("gtk" ,gtk+-2) + `(("wxwidgets" ,wxwidgets) + ("gtk" ,gtk+) ("alsa-lib" ,alsa-lib) ("jack" ,jack-1) ("expat" ,expat) diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index 9e20b9f033..bdf8884ab2 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -639,7 +639,23 @@ NTFS volumes using @code{ntfs-3g}, preserving NTFS-specific attributes.") "0qlipsq50hca71zc0dp1mg9zs12qm0sbblw7qfzl0hj6mk2rv1by")))) (build-system python-build-system) (arguments - `(#:python ,python-2)) + `(#:python ,python-2 + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (substitute* "obnamlib/vfs_local_tests.py" + ;; Check for the nobody user instead of root + (("self.fs.get_username\\(0\\), 'root'") + "self.fs.get_username(65534), 'nobody'") + ;; Disable tests checking for root group + (("self.fs.get_groupname\\(0\\)") "'root'")) + (substitute* "obnamlib/vfs_local.py" + ;; Don't cover get_groupname function + (("def get_groupname\\(self, gid\\):") + "def get_groupname(self, gid): # pragma: no cover")) + ;; Can't run network tests + (zero? (system* "./check" "--unit-tests"))))))) (inputs `(("python2-cliapp" ,python2-cliapp) ("python2-larch" ,python2-larch) @@ -647,6 +663,12 @@ NTFS volumes using @code{ntfs-3g}, preserving NTFS-specific attributes.") ("python2-pyaml" ,python2-pyaml) ("python2-tracing" ,python2-tracing) ("python2-ttystatus" ,python2-ttystatus))) + (native-inputs + `(("gnupg" ,gnupg) + ("python2-coverage" ,python2-coverage) + ("python2-coverage-test-runner" ,python2-coverage-test-runner) + ("python2-pep8" ,python2-pep8) + ("python2-pylint" ,python2-pylint))) (home-page "https://obnam.org/") (synopsis "Easy and secure backup program") (description "Obnam is an easy, secure backup program. Features diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index 5fc6bf2e29..a3f436373d 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -228,15 +228,15 @@ menu to select one of the installed operating systems.") (define-public dtc (package (name "dtc") - (version "1.4.2") + (version "1.4.4") (source (origin (method url-fetch) (uri (string-append - "https://www.kernel.org/pub/software/utils/dtc/" + "mirror://kernel.org/software/utils/dtc/" "dtc-" version ".tar.xz")) (sha256 (base32 - "1b7si8niyca4wxbfah3qw4p4wli81mc1qwfhaswvrfqahklnwi8k")))) + "1yygyvnnpdh241hl90n9p3kxcdvk3jxmsr4ndb961c8mq3ak21s7")))) (build-system gnu-build-system) (native-inputs `(("bison" ,bison) diff --git a/gnu/packages/compton.scm b/gnu/packages/compton.scm index a0a644db7b..323807091a 100644 --- a/gnu/packages/compton.scm +++ b/gnu/packages/compton.scm @@ -50,7 +50,6 @@ (build-system gnu-build-system) (inputs `(("dbus" ,dbus) - ("docbook-xml" ,docbook-xml) ("libconfig" ,libconfig) ("libx11" ,libx11) ("libxcomposite" ,libxcomposite) @@ -58,10 +57,8 @@ ("libxext" ,libxext) ("libxfixes" ,libxfixes) ("libxinerama" ,libxinerama) - ("libxml2" ,libxml2) ("libxrandr" ,libxrandr) ("libxrender" ,libxrender) - ("libxslt" ,libxslt) ("mesa" ,mesa) ("xprop" ,xprop) ("xwininfo" ,xwininfo))) diff --git a/gnu/packages/display-managers.scm b/gnu/packages/display-managers.scm index 80b45af103..307bc864ec 100644 --- a/gnu/packages/display-managers.scm +++ b/gnu/packages/display-managers.scm @@ -41,7 +41,7 @@ (define-public greenisland (package (name "greenisland") - (version "0.8.1") + (version "0.9.0.1") (source (origin (method url-fetch) (uri (string-append @@ -50,7 +50,7 @@ "greenisland-" version ".tar.xz")) (sha256 (base32 - "1c9rlq7fqrsd5nb37anjvnp9xspqjz1kc0fvydv5xdy3abg8mw40")))) + "1flmha31hmii6m2mdvmn1q5dc0fhnvgc4lp1b4wgkz20y7x4f1fm")))) (build-system cmake-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -100,6 +100,7 @@ (add-before 'check 'check-setup (lambda _ (setenv "CTEST_OUTPUT_ON_FAILURE" "1") ; Enable debug output + ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") (setenv "XDG_RUNTIME_DIR" (getcwd)) #t)) diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm index d09abc1366..ec89abc670 100644 --- a/gnu/packages/dns.scm +++ b/gnu/packages/dns.scm @@ -294,8 +294,10 @@ asynchronous fashion.") (arguments `(#:phases (modify-phases %standard-phases (add-before 'configure 'omit-example-configurations - (lambda _ (substitute* "Makefile.in" - ((" (etc|var)") ""))))) + (lambda _ + (substitute* "Makefile.in" + ((" (etc|var)") "")) + #t))) #:configure-flags (list "--sysconfdir=/etc" "--localstatedir=/var" "--enable-shared" "--disable-static" "--enable-messages" "--enable-ctrl" @@ -334,7 +336,8 @@ Extensions} (DNSSEC).") (("contrib/dnstap ") "")) (with-directory-excursion "src/contrib" (for-each delete-file-recursively - (list "dnstap" "lmdb"))))))) + (list "dnstap" "lmdb"))) + #t)))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -354,7 +357,8 @@ Extensions} (DNSSEC).") (add-before 'configure 'disable-directory-pre-creation (lambda _ ;; Don't install empty directories like ‘/etc’ outside the store. - (substitute* "src/Makefile.in" (("\\$\\(INSTALL\\) -d") "true")))) + (substitute* "src/Makefile.in" (("\\$\\(INSTALL\\) -d") "true")) + #t)) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index 908ce48347..6525f94304 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2015 Alex Kost <alezost@gmail.com> ;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org> +;;; Copyright © 2016, 2017 Kei Kebreau <kei@openmailbox.org> ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 Julian Graham <joolean@gmail.com> ;;; @@ -95,6 +95,55 @@ is used in some video games and movies.") (license license:zlib))) +(define-public deutex + (package + (name "deutex") + (version "4.4.902") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/Doom-Utils/" name + "/archive/v" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0rwz1yzgd539x4h25kzhar4q02xyxjwfrcpz4m8ixi312a82p7cn")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; no check target + #:phases + (modify-phases %standard-phases + ;; The provided configure script takes a restricted number of arguments. + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (zero? (system* "./configure" "--prefix" + (assoc-ref %outputs "out"))))) + ;; "make install" is broken for this package. + ;; Notably, the binaries overrwrite one another upon installation as + ;; they are all installed to the "bin" file in the output directory, + ;; and the manual page fails to install because the directory for the + ;; manual page is not created. + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref %outputs "out")) + (bin (string-append out "/bin")) + (share (string-append out "/share"))) + (install-file "deusf" bin) + (install-file "deutex" bin) + (install-file "deutex.6" (string-append share "/man/man6"))) + #t))))) + (home-page "https://github.com/Doom-Utils/deutex") + (synopsis "WAD file composer for Doom and related games") + (description + "DeuTex is a wad composer for Doom, Heretic, Hexen and Strife. It can be +used to extract the lumps of a wad and save them as individual files. +Conversely, it can also build a wad from separate files. When extracting a +lump to a file, it does not just copy the raw data, it converts it to an +appropriate format (such as PPM for graphics, Sun audio for samples, etc.). +Conversely, when it reads files for inclusion in pwads, it does the necessary +conversions (for example, from PPM to Doom picture format). In addition, +DeuTex has functions such as merging wads, etc.") + (license license:gpl2+))) + (define-public gzochi (package (name "gzochi") diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index f264ef206f..67fcb7b496 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -25,6 +25,7 @@ ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2016 Steve Webber <webber.sl@gmail.com> ;;; Copyright © 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org> +;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -58,6 +59,7 @@ #:use-module (gnu packages audio) #:use-module (gnu packages avahi) #:use-module (gnu packages boost) + #:use-module (gnu packages documentation) #:use-module (gnu packages fltk) #:use-module (gnu packages fribidi) #:use-module (gnu packages game-development) @@ -69,6 +71,7 @@ #:use-module (gnu packages gperf) #:use-module (gnu packages gtk) #:use-module (gnu packages guile) + #:use-module (gnu packages imagemagick) #:use-module (gnu packages libcanberra) #:use-module (gnu packages libunwind) #:use-module (gnu packages haskell) @@ -107,12 +110,85 @@ #:use-module (gnu packages tls) #:use-module (gnu packages pcre) #:use-module (gnu packages cyrus-sasl) + #:use-module (gnu packages messaging) + #:use-module (gnu packages upnp) + #:use-module (gnu packages wxwidgets) #:use-module (guix build-system gnu) #:use-module (guix build-system haskell) #:use-module (guix build-system python) #:use-module (guix build-system cmake) #:use-module (guix build-system trivial)) +(define-public freedoom + (package + (name "freedoom") + (version "0.11.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/" name "/" name + "/archive/v" version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "060dqppd9fi079yw6c82klsjaslcabq6xan67wf9hs0cy39i0kpv")))) + (build-system gnu-build-system) + (arguments + '(#:make-flags `(,(string-append "prefix=" (assoc-ref %outputs "out"))) + #:parallel-build? #f + #:tests? #f ; no check target + #:phases + (modify-phases %standard-phases + (add-before 'unpack 'no (lambda _ #t)) + (replace 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((dejavu (assoc-ref inputs "font-dejavu")) + (freedoom (assoc-ref outputs "out")) + (wad-dir (string-append freedoom "/share/games/doom"))) + ;; Replace the font-searching function in a shell + ;; script with a direct path to the required font. + ;; This is necessary because ImageMagick can only find the + ;; most basic fonts while in the build environment. + (substitute* "graphics/titlepic/create_caption" + (("font=\\$\\(find_font.*$") + (string-append + "font=" dejavu + "/share/fonts/truetype/DejaVuSansCondensed-Bold.ttf\n"))) + ;; Make icon creation reproducible. + (substitute* "dist/Makefile" + (("freedm.png") + "-define png:exclude-chunks=date freedm.png") + (("freedoom1.png") + "-define png:exclude-chunks=date freedoom1.png") + (("freedoom2.png") + "-define png:exclude-chunks=date freedoom2.png")) + ;; Make sure that the install scripts know where to find + ;; the appropriate WAD files. + (substitute* "dist/freedoom" + (("IWAD=freedm.wad") + (string-append "IWAD=" wad-dir "/freedm.wad")) + (("IWAD=freedoom1.wad") + (string-append "IWAD=" wad-dir "/freedoom1.wad")) + (("IWAD=freedoom2.wad") + (string-append "IWAD=" wad-dir "/freedoom2.wad"))) + #t)))))) + (native-inputs + `(("asciidoc" ,asciidoc) + ("deutex" ,deutex) + ("font-dejavu" ,font-dejavu) + ("imagemagick" ,imagemagick) + ("python" ,python-2))) + (inputs + `(("prboom-plus" ,prboom-plus))) + (home-page "https://freedoom.github.io/") + (synopsis "Free content game based on the Doom engine") + (description + "The Freedoom project aims to create a complete free content first person +shooter game. Freedoom by itself is just the raw material for a game: it must +be paired with a compatible game engine (such as @code{prboom-plus}) to be +played. Freedoom complements the Doom engine with free levels, artwork, sound +effects and music to make a completely free game.") + (license license:bsd-3))) + (define-public gnubg (package (name "gnubg") @@ -3267,3 +3343,81 @@ This command works on piped data. Pipe any ASCII or UTF-8 text to nms, and it will apply the hollywood effect, initially showing encrypted data, then starting a decryption sequence to reveal the original plaintext characters.") (license license:expat))) + +(define-public megaglest-data + (package + (name "megaglest-data") + (version "3.13.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/MegaGlest/megaglest-data" + "/releases/download/" version "/megaglest-data-" + version ".tar.xz")) + (sha256 + (base32 + "0ipgza33z89fw3si32iafm981f3fvm0zldvbxj29whghd2k3rpj3")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f)) + (home-page "https://megaglest.org/") + (synopsis "Data files for MegaGlest") + (description "This package contains the data files required for MegaGlest.") + (license license:cc-by-sa3.0))) + +(define-public megaglest + (package + (name "megaglest") + (version "3.13.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/MegaGlest/megaglest-source" + "/releases/download/" version "/megaglest-source-" + version ".tar.xz")) + (sha256 + (base32 + "1ffck3ii1wp5k3nn5p0ga06jgp7pzk4zw0xln3xim2w7qrxzdzh9")))) + (build-system cmake-build-system) + (inputs + `(("curl" ,curl) + ("fontconfig" ,fontconfig) + ("ftgl" ,ftgl) + ("glew" ,glew) + ("libjpeg-turbo" ,libjpeg-turbo) + ("megaglest-data" ,megaglest-data) + ("mesa" ,mesa) + ("miniupnpc" ,miniupnpc) + ("openal" ,openal) + ("libircclient" ,libircclient) + ("libpng" ,libpng) + ("libvorbis" ,libvorbis) + ("lua" ,lua) + ("sdl2" ,sdl2) + ("wxwidgets" ,wxwidgets))) + (native-inputs + `(("cppunit" ,cppunit) + ("pkg-config" ,pkg-config))) + (arguments + `(#:configure-flags + (list (string-append "-DCUSTOM_DATA_INSTALL_PATH=" + (assoc-ref %build-inputs "megaglest-data") + "/share/megaglest") + "-DBUILD_MEGAGLEST_TESTS=ON") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-ini-search-path + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "source/glest_game/global/config.cpp" + (("/usr/share/megaglest/") + (string-append (assoc-ref outputs "out") + "/share/megaglest/")))))) + #:test-target "megaglest_tests")) + (home-page "https://megaglest.org/") + (synopsis "3D real-time strategy (RTS) game") + (description "MegaGlest is a cross-platform 3D real-time strategy (RTS) +game, where you control the armies of one of seven different factions: Tech, +Magic, Egypt, Indians, Norsemen, Persian or Romans.") + (license license:gpl2+))) diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index cfd8b24290..f8fafdbc7a 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -3658,7 +3658,7 @@ USB transfers with your high-level application or system daemon.") (define-public simple-scan (package (name "simple-scan") - (version "3.22.0.1") + (version "3.24.0") (source (origin (method url-fetch) (uri (string-append "https://launchpad.net/simple-scan/" @@ -3667,7 +3667,7 @@ USB transfers with your high-level application or system daemon.") version ".tar.xz")) (sha256 (base32 - "0l1b3llkdlqq0bcjx1cadba67l2zb4zfykdaprpjbjbr6gkbc1f5")))) + "19klldnbnknpq6ikz9x93861ywcyg0pg9ngijvw66ncbnb7lx912")))) (build-system glib-or-gtk-build-system) (inputs `(("gtk" ,gtk+) diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index 9c0e695f9a..fb6536b8c0 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -932,7 +932,7 @@ ISO/IEC 15444-1).") (define-public zimg (package (name "zimg") - (version "2.3") + (version "2.5") (source (origin (method url-fetch) @@ -941,7 +941,7 @@ ISO/IEC 15444-1).") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1yh6kkq8596a9cxcmcxzqvwbwmxwqapwsq31xpccznw6z62j75h9")))) + "0kbq2dy659645fmgxpzg38b6y6x82kwkydhc380kdkaikv2brcjh")))) (build-system gnu-build-system) (native-inputs `(("autoconf" ,autoconf) diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm index 7b90c1436b..1001813db3 100644 --- a/gnu/packages/kde-frameworks.scm +++ b/gnu/packages/kde-frameworks.scm @@ -650,6 +650,7 @@ infrastructure.") (modify-phases %standard-phases (add-before 'check 'check-setup (lambda _ + ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) (home-page "https://community.kde.org/Frameworks") @@ -984,7 +985,8 @@ represented by a QPoint or a QSize.") (modify-phases %standard-phases (add-before 'check 'check-setup (lambda _ - (setenv "QT_QPA_PLATFORM" "offscreen") ; a better solution to Xvfb + ;; make Qt render "offscreen", required for tests + (setenv "QT_QPA_PLATFORM" "offscreen") (setenv "CTEST_OUTPUT_ON_FAILURE" "1") ; enable debug info (setenv "DBUS_FATAL_WARNINGS" "0") #t)) @@ -1307,6 +1309,7 @@ utilities.") (modify-phases %standard-phases (add-before 'check 'check-setup (lambda _ + ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) (home-page "https://community.kde.org/Frameworks") @@ -1692,6 +1695,7 @@ gallons).") (add-before 'check 'check-setup (lambda _ (setenv "HOME" (getcwd)) + ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t)) (replace 'check @@ -1816,6 +1820,7 @@ by which applications, and what documents have been linked to which activity.") (add-before 'check 'check-setup (lambda _ (setenv "HOME" (getcwd)) + ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) (home-page "https://community.kde.org/Frameworks") @@ -1894,6 +1899,7 @@ KCModules can be created with the KConfigWidgets framework.") (modify-phases %standard-phases (add-before 'check 'check-setup (lambda _ + ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) (home-page "https://community.kde.org/Frameworks") @@ -2024,6 +2030,7 @@ started on demand.") (modify-phases %standard-phases (add-before 'check 'check-setup (lambda _ + ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) (home-page "https://community.kde.org/Frameworks") @@ -2096,6 +2103,7 @@ with su and ssh respectively.") (lambda _ (setenv "HOME" (getcwd)) (setenv "CTEST_OUTPUT_ON_FAILURE" "1") ; Enable debug output + ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) (home-page "https://community.kde.org/Frameworks") @@ -2139,6 +2147,7 @@ emoticons coming from different providers.") (modify-phases %standard-phases (add-before 'check 'check-setup (lambda _ + ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) (home-page "https://community.kde.org/Frameworks") @@ -2188,6 +2197,7 @@ window does not need focus for them to be activated.") "/share")) (setenv "HOME" (getcwd)) (setenv "CTEST_OUTPUT_ON_FAILURE" "1") ; Enable debug output + ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) (home-page "https://community.kde.org/Frameworks") @@ -2297,6 +2307,7 @@ makes starting KDE applications faster and reduces memory consumption.") (setenv "HOME" (getcwd)) (setenv "XDG_RUNTIME_DIR" (getcwd)) (setenv "CTEST_OUTPUT_ON_FAILURE" "1") + ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) ;;(replace 'check @@ -2361,6 +2372,7 @@ KIO enabled infrastructure.") (lambda _ ; XDG_DATA_DIRS isn't set (setenv "HOME" (getcwd)) (setenv "CTEST_OUTPUT_ON_FAILURE" "1") + ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) (home-page "https://community.kde.org/Frameworks") @@ -2454,6 +2466,7 @@ notifications which can be embedded in your application.") (modify-phases %standard-phases (add-before 'check 'check-setup (lambda _ + ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) (home-page "https://community.kde.org/Frameworks") @@ -2494,6 +2507,7 @@ widgets with a user-interface defined in terms of actions.") (add-before 'check 'check-setup (lambda _ (setenv "CTEST_OUTPUT_ON_FAILURE" "1") ; Enable debug output + ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) (home-page "https://community.kde.org/Frameworks") @@ -2550,6 +2564,7 @@ to easily extend the contacts collection.") (add-before 'check 'check-setup (lambda _ (setenv "CTEST_OUTPUT_ON_FAILURE" "1") ; Enable debug output + ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) (home-page "https://community.kde.org/Frameworks") @@ -2595,6 +2610,7 @@ typed.") (lambda _ (setenv "HOME" (getcwd)) (setenv "CTEST_OUTPUT_ON_FAILURE" "1") + ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) (home-page "https://community.kde.org/Frameworks") @@ -2661,6 +2677,7 @@ types or handled by application specific code.") (add-before 'check 'check-setup (lambda _ (setenv "HOME" (getcwd)) + ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") (setenv "CTEST_OUTPUT_ON_FAILURE" "1") #t))))) @@ -2708,6 +2725,7 @@ library.") (modify-phases %standard-phases (add-before 'check 'check-setup (lambda _ + ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) (home-page "https://community.kde.org/Frameworks") @@ -2798,6 +2816,7 @@ the passwords on KDE work spaces.") (add-before 'check 'check-setup (lambda _ (setenv "HOME" (getcwd)) + ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") (setenv "CTEST_OUTPUT_ON_FAILURE" "1") #t))))) @@ -2910,6 +2929,7 @@ setUrl, setUserAgent and call.") (lambda _ (setenv "HOME" (getcwd)) (setenv "CTEST_OUTPUT_ON_FAILURE" "1") ; Enable debug output + ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t))))) (home-page "https://community.kde.org/Frameworks") diff --git a/gnu/packages/kodi.scm b/gnu/packages/kodi.scm index 929894d61e..a60e2c0548 100644 --- a/gnu/packages/kodi.scm +++ b/gnu/packages/kodi.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 David Thompson <davet@gnu.org> +;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,13 +23,13 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) + #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (gnu packages algebra) #:use-module (gnu packages audio) #:use-module (gnu packages autotools) #:use-module (gnu packages avahi) #:use-module (gnu packages base) - #:use-module (gnu packages boost) #:use-module (gnu packages cdrom) #:use-module (gnu packages cmake) #:use-module (gnu packages compression) @@ -52,6 +53,7 @@ #:use-module (gnu packages mp3) #:use-module (gnu packages pcre) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages pretty-print) #:use-module (gnu packages pulseaudio) #:use-module (gnu packages python) #:use-module (gnu packages samba) @@ -119,153 +121,301 @@ generator library for C++.") (home-page "https://github.com/graeme-hill/crossguid") (license license:expat)))) +;; Kodi requires using their own special forks of these libraries. +;; In addition, it insists on downloading and building these as part +;; of the standard build process. To make things easier, we bootstrap +;; and patch shebangs here, so we don't have to worry about it later. +(define libdvdnav/kodi + (let ((commit "981488f7f27554b103cca10c1fbeba027396c94a")) + (package + (name "libdvdnav-bootstrapped") + (version commit) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/xbmc/libdvdnav.git") + (commit commit))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "089pswc51l3avh95zl4cpsh7gh1innh7b2y4xgx840mcmy46ycr8")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'bootstrap + (lambda _ (zero? (system* "autoreconf" "-vif")))) + (delete 'configure) + (delete 'build) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (copy-recursively "." (assoc-ref outputs "out")) + #t))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config))) + (home-page "https://github.com/xbmc/libdvdnav") + (synopsis (package-synopsis libdvdnav)) + (description (package-description libdvdnav)) + (license license:gpl2+)))) + +(define libdvdread/kodi + (let ((commit "17d99db97e7b8f23077b342369d3c22a6250affd")) + (package + (name "libdvdread-bootstrapped") + (version commit) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/xbmc/libdvdread.git") + (commit commit))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "1gr5aq1cjr3as9mnwrw29cxn4m6f6pfrxdahkdcjy70q3ldg90sl")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'bootstrap + (lambda _ (zero? (system* "autoreconf" "-vif")))) + (delete 'configure) + (delete 'build) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (copy-recursively "." (assoc-ref outputs "out")) + #t))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config))) + (home-page "https://github.com/xbmc/libdvdread") + (synopsis (package-synopsis libdvdread)) + (description (package-description libdvdread)) + (license (list license:gpl2+ license:lgpl2.1+))))) + +(define libdvdcss/kodi + (let ((commit "2f12236bc1c92f73c21e973363f79eb300de603f")) + (package + (name "libdvdcss-bootstrapped") + (version commit) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/xbmc/libdvdcss.git") + (commit commit))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "198r0q73i55ga1dvyqq9nfcri0zq08b94hy8671lg14i3izx44dd")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'bootstrap + (lambda _ (zero? (system* "autoreconf" "-vif")))) + (delete 'configure) + (delete 'build) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (copy-recursively "." (assoc-ref outputs "out")) + #t))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config))) + (home-page "https://github.com/xbmc/libdvdcss") + (synopsis (package-synopsis libdvdcss)) + (description (package-description libdvdcss)) + (license license:gpl2+)))) + (define-public kodi + ;; We package the git version because the current released + ;; version was cut while the cmake transition was in turmoil. + (let ((commit "b35147e2bec41ce332b9788f4a6ac94d2e5999e3") + (revision "0")) (package (name "kodi") - (version "16.0") + (version (string-append "18.0_alpha-" revision "-" (string-take commit 7))) (source (origin - (method url-fetch) - (uri (string-append "http://mirrors.kodi.tv/releases/source/" - version "-Jarvis.tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/xbmc/xbmc.git") + (commit commit))) + (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0iirspvv7czf785l2lqf232dvdaj87srbn9ni97ngvnd6w9yl884")) + "0rhb9rcz5h8mky8mx6idzybnpgjh2lxcjkh16z1x6fr4pis2jcbj")) (snippet - ;; Delete bundled ffmpeg. - ;; TODO: Delete every other bundled library. '(begin (use-modules (guix build utils)) - (delete-file-recursively "tools/depends/target/ffmpeg"))) + (for-each delete-file-recursively + '("project/BuildDependencies/bin/" + ;; TODO: Purge these jars. + ;;"tools/codegenerator/groovy" + ;; And these sources: + ;; "tools/depend/native/JsonSchemaBuilder" + ;; "tools/depend/native/TexturePacker" + ;; "lib/UnrarXlib" + ;; "lib/gtest" + ;; "lib/cpluff" + ;; "lib/libexif" + ;; "lib/libUPnP" + "lib/libUPnP/Neptune/ThirdParty" + "project/Win32BuildSetup/tools/7z")) + #t)) (modules '((guix build utils))))) - (build-system gnu-build-system) + (build-system cmake-build-system) (arguments - '(#:configure-flags '("--with-ffmpeg=shared") ; don't use bundled ffmpeg + '(#:modules ((srfi srfi-1) + (guix build cmake-build-system) + (guix build utils)) + #:configure-flags + (list "-DENABLE_INTERNAL_FFMPEG=OFF" + "-DENABLE_INTERNAL_CROSSGUID=OFF" + (string-append "-Dlibdvdread_URL=" + (assoc-ref %build-inputs "libdvdread-bootstrapped")) + (string-append "-Dlibdvdnav_URL=" + (assoc-ref %build-inputs "libdvdnav-bootstrapped")) + (string-append "-Dlibdvdcss_URL=" + (assoc-ref %build-inputs "libdvdcss-bootstrapped")) + "-DENABLE_NONFREE=OFF") #:phases (modify-phases %standard-phases - ;; JsonSchemaBuilder is a small tool needed by the build system that - ;; comes bundled with the source. The build system tries to build it - ;; during the bootstrapping phase, which causes serious issues + ;; The build system tries to bootstrap these bundled components + ;; during the regular build phase, which causes serious issues ;; because there's no time for shebangs to be patched. So, we ;; bootstrap it on our own instead. - (add-after 'unpack 'bootstrap-jsonschemabuilder - (lambda* (#:key inputs #:allow-other-keys) - (let ((dir "tools/depends/native/JsonSchemaBuilder/src")) - (with-directory-excursion dir - (zero? (system* "sh" "autogen.sh")))))) - ;; Now we can do the regular bootstrapping process, but only after - ;; the first round of shebang patching. We must repeat the patching - ;; after bootstrapping so that all of the files generated by the - ;; Autotools et al. are patched appropriately. - (add-after 'patch-source-shebangs 'bootstrap - (lambda* (#:key inputs #:allow-other-keys) - ;; We bootstrapped JsonSchemaBuilder in the previous phase, so we - ;; need to make sure it isn't done a second time. Otherwise, it - ;; would undo the shebang patching that we worked so hard for. - (substitute* '("tools/depends/native/JsonSchemaBuilder/Makefile") - (("\\./autogen\\.sh") "")) - ;; This essentially does what their 'bootstrap' script does, but - ;; additionally passes the correct CONFIG_SHELL. - (let ((bash (string-append (assoc-ref inputs "bash") "/bin/sh"))) - (define (run-make makefile) - (zero? (system* "make" "-f" makefile - "BOOTSTRAP_STANDALONE=1" - (string-append "CONFIG_SHELL=" bash)))) - (and (run-make "bootstrap.mk") - (run-make "codegenerator.mk"))))) - (add-after 'bootstrap 'patch-source-shebangs-again - (assoc-ref %standard-phases 'patch-source-shebangs)) - ;; 3 tests fail that appear harmless, so we disable them. - (add-before 'check 'disable-some-tests + (add-after 'unpack 'bootstrap-bundled-software + (lambda _ + (let ((dirs '("tools/depends/native/JsonSchemaBuilder/src" + "lib/cpluff"))) + (every (lambda (third-party) + (with-directory-excursion third-party + (zero? (system* "autoreconf" "-vif")))) + dirs)))) + (add-after 'bootstrap-bundled-software 'patch-stuff (lambda _ + ;; Prevent the build scripts from calling autoreconf in the + ;; build stage. Otherwise, it would undo the bootstrapping + ;; and shebang patching that we worked so hard for. + (substitute* "cmake/modules/FindCpluff.cmake" + (("autoreconf -vif") "true")) + (substitute* "lib/cpluff/po/Makefile.in.in" + (("/bin/sh") (which "sh"))) + (substitute* "cmake/modules/FindLibDvd.cmake" + ;; The libdvd* sources that we bootstrapped separately are + ;; unpacked in the build phase. This is our best opportunity + ;; to make them writable before the build process starts. + (("autoreconf -vif") "chmod -R u+w .")) + + ;; Let's disable some tests that are known not to work here. + ;; Doing this later while in the cmake "../build" directory + ;; is trickier. (substitute* '("xbmc/utils/test/TestSystemInfo.cpp") (("TEST_F\\(TestSystemInfo, GetOsPrettyNameWithVersion\\)") "TEST_F(TestSystemInfo, DISABLED_GetOsPrettyNameWithVersion)") (("TEST_F\\(TestSystemInfo, GetOsName\\)") "TEST_F(TestSystemInfo, DISABLED_GetOsName)") (("TEST_F\\(TestSystemInfo, GetOsVersion\\)") - "TEST_F(TestSystemInfo, DISABLED_GetOsVersion)"))))))) + "TEST_F(TestSystemInfo, DISABLED_GetOsVersion)")) + ;; FIXME: Why are these failing. + (substitute* "xbmc/network/test/TestWebServer.cpp" + (("TEST_F\\(TestWebServer, Can") + "TEST_F(TestWebServer, DISABLED_Can")) + #t)) + (add-before 'build 'set-build-environment + (lambda _ + ;; Some bundled build scripts fall back to /bin/sh + ;; if this is not set. + (setenv "CONFIG_SHELL" (which "sh")) + #t)) + (add-before 'check 'build-kodi-test + (lambda _ + (zero? (system* "make" "kodi-test")))) + (add-after 'install 'wrap + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (curl (string-append (assoc-ref inputs "curl") "/lib"))) + (wrap-program (string-append out "/bin/kodi") + `("LD_LIBRARY_PATH" suffix (,curl))) + #t)))))) ;; TODO: Add dependencies for: - ;; - vdpau ;; - nfs - ;; - ;; FIXME: libusb detection fails. - ;; - ;; FIXME: As you can see, we use a lot of external libraries, but it seems - ;; that a few bundled ones are still being used. + ;; - cec + ;; - plist + ;; - shairplay (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) - ("cmake" ,cmake) - ("doxygen" ,doxygen) - ("gawk" ,gawk) ("gettext" ,gettext-minimal) ("icedtea" ,icedtea) ; needed at build-time only, mandatory + ("libdvdcss-bootstrapped" ,libdvdcss/kodi) + ("libdvdnav-bootstrapped" ,libdvdnav/kodi) + ("libdvdread-bootstrapped" ,libdvdread/kodi) ("libtool" ,libtool) ("pkg-config" ,pkg-config) ("swig" ,swig) - ("which" ,which) ("yasm" ,yasm))) (inputs `(("alsa-lib" ,alsa-lib) ("avahi" ,avahi) ("bluez" ,bluez) - ("boost" ,boost) - ("bzip2" ,bzip2) ("crossguid" ,crossguid) ("curl" ,curl) ("dcadec" ,dcadec) ("dbus" ,dbus) - ("enca" ,enca) ("eudev" ,eudev) ("ffmpeg" ,ffmpeg) ("flac" ,flac) + ("fmt" ,fmt) ("fontconfig" ,fontconfig) ("freetype" ,freetype) ("fribidi" ,fribidi) + ("giflib" ,giflib) ("glew" ,glew) ("gnutls" ,gnutls) - ("gperf" ,gperf) - ("jasper" ,jasper) ("lame" ,lame) + ("lcms" ,lcms) ("libass" ,libass) ("libbluray" ,libbluray) ("libcap" ,libcap) ("libcdio" ,libcdio) + ("libdrm" ,libdrm) ("libgcrypt" ,libgcrypt) ("libjpeg" ,libjpeg) ("libltdl" ,libltdl) ("libmad" ,libmad) ("libmicrohttpd" ,libmicrohttpd) - ("libmodplug" ,libmodplug) ("libmpeg2" ,libmpeg2) ("libogg" ,libogg) ("libpng" ,libpng) - ("libsamplerate" ,libsamplerate) ("libssh" ,libssh) ("libtiff" ,libtiff) ("libva" ,libva) ("libvorbis" ,libvorbis) ("libxml2" ,libxml2) - ("libxmu" ,libxmu) ("libxrandr" ,libxrandr) ("libxrender" ,libxrender) ("libxslt" ,libxslt) - ("libxt" ,libxt) ("libyajl" ,libyajl) ("lzo" ,lzo) - ("mesa-utils" ,mesa-utils) ("mysql" ,mysql) ("openssl" ,openssl) ("pcre" ,pcre) ("pulseaudio" ,pulseaudio) ("python" ,python-2) ("samba" ,samba) - ("sdl2" ,sdl2) ("sqlite" ,sqlite) ("taglib" ,taglib) ("tinyxml" ,tinyxml) - ("unzip" ,unzip) ("util-linux" ,util-linux) ("zip" ,zip) ("zlib" ,zlib))) @@ -274,4 +424,11 @@ generator library for C++.") music, games, etc. Kodi is highly customizable and features a theme and plug-in system.") (home-page "http://kodi.tv") - (license license:gpl2+))) + ;; XBMC is largely GPL2+, with some library components as LGPL2.1+, but + ;; there are some other licenses spread throughout. + (license (list license:gpl2+ license:lgpl2.1+ + license:gpl3+ ;WiiRemote client + license:expat ;cpluff, dbwrappers + license:public-domain ;cpluff/examples + license:bsd-3 ;misc, gtest + license:bsd-2))))) ;xbmc/freebsd diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 8f13a38b5f..ea7be23d74 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -2222,8 +2222,6 @@ in a digital read-out.") ;; Documentation. ("libxml2" ,libxml2) ;for $XML_CATALOG_FILES - ("libxslt" ,libxslt) - ("docbook-xml" ,docbook-xml) ("docbook-xsl" ,docbook-xsl) ("xmlto" ,xmlto) ("asciidoc" ,asciidoc))) @@ -2801,7 +2799,6 @@ and copy/paste text in the console and in xterm.") ("xmlto" ,xmlto) ;; For building documentation. ("libxml2" ,libxml2) - ("docbook-xml" ,docbook-xml) ("docbook-xsl" ,docbook-xsl) ;; For tests. ("which" ,which))) diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index f387204d06..369fb69d9b 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -17,7 +17,7 @@ ;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com> ;;; Copyright © 2016, 2017 <contact.ng0@cryptolab.net> ;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org> -;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net> +;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2016 John Darrington <jmd@gnu.org> ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> @@ -423,8 +423,7 @@ and corrections. It is based on a Bayesian filter.") "0i5dvygps1ai2qwgamab8kngrp0c5m3bgaw0jk34l8ypsk54wj8r")))) (build-system python-build-system) (native-inputs - `(("asciidoc" ,asciidoc) - ("libxslt" ,libxslt))) ; for xsltproc + `(("asciidoc" ,asciidoc))) (inputs `(("python2-pysqlite" ,python2-pysqlite) ("python2-six" ,python2-six))) (arguments @@ -2099,3 +2098,52 @@ indexed mbox files. There are two programs: @code{bindex} and @code{bit}. are supported). @code{bit} is a CGI/SSI program that generates web pages on the fly. Both programs are written in C and are very fast.") (license license:expat))) + +(define-public swaks + (package + (name "swaks") + (version "20170101.0") + (source + (origin + (method url-fetch) + (uri (string-append + "http://jetmore.org/john/code/swaks/files/swaks-" + version ".tar.gz")) + (sha256 + (base32 + "0pli4mlhasnqqxmmxalwyg3x7n2vhcbgsnp2xgddamjavv82vrl4")))) + (build-system perl-build-system) + (inputs + `(("perl-net-dns" ,perl-net-dns) + ("perl-net-ssleay" ,perl-net-ssleay))) + (arguments + `(#:tests? #f ; No tests + #:phases + (modify-phases %standard-phases + (delete 'configure) + (replace 'build + (lambda _ + (zero? (system* "pod2man" "doc/ref.pod" "swaks.1")))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (install-file "swaks" (string-append out "/bin")) + (install-file "swaks.1" (string-append out "/share/man/man1"))) + #t)) + (add-after 'install 'wrap-program + (lambda* (#:key outputs #:allow-other-keys) + (wrap-program (string-append (assoc-ref outputs "out") + "/bin/swaks") + `("PERL5LIB" ":" = (,(getenv "PERL5LIB")))) + #t))))) + (home-page "http://jetmore.org/john/code/swaks/") + (synopsis "Featureful SMTP test tool") + (description "Swaks is a flexible, scriptable, transaction-oriented SMTP +test tool. It handles SMTP features and extensions such as TLS, +authentication, and pipelining; multiple versions of the SMTP protocol +including SMTP, ESMTP, and LMTP; and multiple transport methods including +unix-domain sockets, internet-domain sockets, and pipes to spawned processes. +Options can be specified in environment variables, configuration files, and +the command line allowing maximum configurability and ease of use for +operators and scripters.") + (license gpl2+))) diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index 7aa7b7bfe5..c32bffcb89 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -9,6 +9,8 @@ ;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca> ;;; Copyright © 2016, 2017 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com> +;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net> +;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -201,16 +203,15 @@ dictionaries. HexChat can be extended with multiple addons.") (define-public ngircd (package (name "ngircd") - (version "22") + (version "24") (source (origin (method url-fetch) - (uri (string-append "http://arthur.barton.de/pub/ngircd/ngircd-" + (uri (string-append "https://arthur.barton.de/pub/ngircd/ngircd-" version ".tar.xz")) (sha256 (base32 - "17k3g9qd9d010czk5846qxvzkmw4fihv8l6m2a2287crbxm3xhd4")) - (patches (search-patches "ngircd-no-dns-in-tests.patch" - "ngircd-handle-zombies.patch")))) + "020h9d1awyxqr0l42x1fhs47q7cmm17fdxzjish8p2kq23ma0gqp")) + (patches (search-patches "ngircd-handle-zombies.patch")))) (build-system gnu-build-system) ;; Needed for the test suite. (native-inputs `(("procps" ,procps) @@ -234,34 +235,34 @@ dictionaries. HexChat can be extended with multiple addons.") '("--with-pam") '())) #:phases - ;; Necessary for the test suite. - (alist-cons-after - 'configure 'post-configure - (lambda _ - (substitute* "src/ngircd/Makefile" - (("/bin/sh") (which "sh"))) - ;; The default getpid.sh does a sloppy grep over 'ps -ax' output, - ;; which fails arbitrarily. - (with-output-to-file "src/testsuite/getpid.sh" - (lambda () - (display - (string-append - "#!" (which "sh") "\n" - "ps -C \"$1\" -o pid=\n")))) - ;; Our variant of getpid.sh does not work for interpreter names if a - ;; shebang script is run directly as "./foo", so patch cases where - ;; the test suite relies on this. - (substitute* "src/testsuite/start-server.sh" - ;; It runs 'getpid.sh sh' to test if it works at all. Run it on - ;; 'make' instead. - (("getpid.sh sh") "getpid.sh make"))) - %standard-phases))) - (home-page "http://ngircd.barton.de/") + (modify-phases %standard-phases + ;; Necessary for the test suite. + (add-after 'configure 'post-configure + (lambda _ + (substitute* "src/ngircd/Makefile" + (("/bin/sh") (which "sh"))) + ;; The default getpid.sh does a sloppy grep over 'ps -ax' output, + ;; which fails arbitrarily. + (with-output-to-file "src/testsuite/getpid.sh" + (lambda () + (display + (string-append + "#!" (which "sh") "\n" + "ps -C \"$1\" -o pid=\n")))) + ;; Our variant of getpid.sh does not match interpreter names + ;; when the script's shebang is invoked directly as "./foo". + ;; Patch cases where the test suite relies on this. + (substitute* "src/testsuite/start-server.sh" + ;; It runs 'getpid.sh sh' to test if it works at all. Run it on + ;; 'make' instead. + (("getpid.sh sh") "getpid.sh make"))))))) + (home-page "https://ngircd.barton.de/") (synopsis "Lightweight Internet Relay Chat server for small networks") (description - "ngIRCd is a lightweight Internet Relay Chat server for small or private -networks. It is easy to configure, can cope with dynamic IP addresses, and -supports IPv6, SSL-protected connections as well as PAM for authentication.") + "ngIRCd is a lightweight @dfn{Internet Relay Chat} (IRC) server for small +or private networks. It is easy to configure, can cope with dynamic IP +addresses, and supports IPv6, SSL-protected connections, as well as PAM for +authentication.") (license license:gpl2+))) (define-public pidgin @@ -398,12 +399,23 @@ compromised.") "1jia6kq6bp8yxfj02d5vj9vqb4pylqcldspyjj6iz82kkka2a0ig")))) (build-system gnu-build-system) (arguments - '(#:tests? #f ; tries to download GoogleTest with wget + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'unpack-googletest + (lambda* (#:key inputs #:allow-other-keys) + (zero? (system* "tar" "xf" + (assoc-ref inputs "googletest-source")))))) #:configure-flags '("--enable-python" "--enable-perl" - "--enable-cyrus"))) + "--enable-cyrus" + ,(string-append "--with-gtest=" + "googletest-release-" + (package-version googletest) + "/googletest")) + #:test-target "test")) (native-inputs - `(("pkg-config" ,pkg-config) + `(("googletest-source" ,(package-source googletest)) + ("pkg-config" ,pkg-config) ("perl" ,perl) ("python" ,python))) (inputs @@ -1329,4 +1341,36 @@ using ncurses and libmesode, inspired by Irssi.") (home-page "http://www.profanity.im") (license license:gpl3+))) +(define-public libircclient + (package + (name "libircclient") + (version "1.9") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/libircclient/libircclient/" + version "/libircclient-" version ".tar.gz")) + (sha256 + (base32 + "0r60i76jh4drjh2jgp5sx71chagqllmkaq49zv67nrhqwvp9ghw1")))) + (build-system gnu-build-system) + (inputs + `(("openssl" ,openssl))) + (arguments + `(#:configure-flags + (list (string-append "--libdir=" + (assoc-ref %outputs "out") "/lib") + "--enable-shared" + "--enable-ipv6" + "--enable-openssl") + ;; no test suite + #:tests? #f)) + (home-page "https://www.ulduzsoft.com/libircclient/") + (synopsis "Library implementing the client IRC protocol") + (description "Libircclient is a library which implements the client IRC +protocol. It is designed to be small, fast, portable and compatible with the +RFC standards as well as non-standard but popular features. It can be used for +building the IRC clients and bots.") + (license license:lgpl3+))) + ;;; messaging.scm ends here diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm index b817f1cf27..db37814463 100644 --- a/gnu/packages/mpd.scm +++ b/gnu/packages/mpd.scm @@ -75,7 +75,7 @@ interfacing MPD in the C, C++ & Objective C languages.") (define-public mpd (package (name "mpd") - (version "0.20.4") + (version "0.20.6") (source (origin (method url-fetch) (uri @@ -84,7 +84,7 @@ interfacing MPD in the C, C++ & Objective C languages.") "/mpd-" version ".tar.xz")) (sha256 (base32 - "0a4psqsf71vc6hfgyv55jclsx8yb7lf4w840qlq6cq8j3hsjaavi")))) + "0isbpa79m7zf09w3s1ry638cw96rxasy1ch66zl01k75i48mw1gl")))) (build-system gnu-build-system) (arguments `(#:phases diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 5067ee8afa..416a3304ff 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -9,6 +9,7 @@ ;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net> ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net> +;;; Copyright © 2017 Rodger Fox <thylakoid@openmailbox.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -2827,3 +2828,55 @@ collections and wantlists, inventory, and orders.") conversions between time and pulses, tempo map handling and more. The only dependencies are a C compiler and glib. Full API documentation and examples are included.") (license license:bsd-2))) + +(define-public lmms + (package + (name "lmms") + (version "1.1.3") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/LMMS/lmms/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1g76z7ha3hd53vbqaq9n1qg6s3lw8zzaw51iny6y2bz0j1xqwcsr")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f ; no tests + #:phases + (modify-phases %standard-phases + (add-before + 'configure 'set-ldflags + (lambda* (#:key outputs #:allow-other-keys) + (setenv "LDFLAGS" + (string-append + "-Wl,-rpath=\"" + (assoc-ref outputs "out") "/lib/lmms" + ":" + (assoc-ref outputs "out") "/lib/lmms/ladspa" + "\""))))))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("sdl" ,sdl) + ("qt" ,qt-4) + ("fltk" ,fltk) + ("libogg" ,libogg) + ("libsamplerate" ,libsamplerate) + ("fluidsynth" ,fluidsynth) + ("libvorbis" ,libvorbis) + ("alsa-lib" ,alsa-lib) + ("portaudio" ,portaudio) + ("ladspa" ,ladspa) + ("libsndfile1" ,libsndfile) + ("libxft" ,libxft) + ("freetype2" ,freetype) + ("fftw3f" ,fftwf))) + (home-page "https://lmms.io/") + (synopsis "Music composition tool") + (description "LMMS is a digital audio workstation. It includes tools for sequencing +melodies and beats and for mixing and arranging songs. LMMS includes instruments based on +audio samples and various soft sythesizers. It can receive input from a MIDI keyboard.") + (license license:gpl2+))) diff --git a/gnu/packages/ntp.scm b/gnu/packages/ntp.scm index 13781fbdad..00526f526f 100644 --- a/gnu/packages/ntp.scm +++ b/gnu/packages/ntp.scm @@ -39,7 +39,7 @@ (define-public ntp (package (name "ntp") - (version "4.2.8p9") + (version "4.2.8p10") (source (origin (method url-fetch) @@ -53,7 +53,7 @@ "/ntp-" version ".tar.gz"))) (sha256 (base32 - "0whbyf82lrczbri4adbsa4hg1ppfa6c7qcj7nhjwdfp1g1vjh95p")) + "17xrk7gxrl3hgg0i73n8qm53knyh01lf0f3l1zx9x6r1cip3dlnx")) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/ots.scm b/gnu/packages/ots.scm index f1900746b6..73dd5e4832 100644 --- a/gnu/packages/ots.scm +++ b/gnu/packages/ots.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Marek Benc <merkur32@gmail.com> +;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -35,9 +36,13 @@ (source (origin (method url-fetch) - (uri (string-append "mirror://sourceforge/libots/libots/" - name "-" version "/" name "-" version - ".tar.gz")) + ;; libots seems to have left sourceforge and taken their release + ;; tarballs with them + (uri (list (string-append "mirror://debian/pool/main/o/ots/ots_" + version ".orig.tar.gz") + (string-append "mirror://sourceforge/libots/libots/" + name "-" version "/" name "-" version + ".tar.gz"))) (sha256 (base32 "0dz1ccd7ymzk4swz1aly4im0k3pascnshmgg1whd2rk14li8v47a")) (patches (search-patches "ots-no-include-missing-file.patch")))) @@ -48,17 +53,18 @@ ;; before libots-1.la has been built. '(#:parallel-build? #f - #:phases (alist-cons-after - 'configure 'set-shared-lib-extension - (lambda _ - ;; For some reason, the 'libtool' script (from Libtool - ;; 1.5.2, Debian variant) sets 'shrext_cmds' instead of - ;; 'shrext' for the shared library file name extension. - ;; This leads to the creation of 'libots-1' instead of - ;; 'libots-1.so'. Fix that. - (substitute* "libtool" - (("shrext_cmds") "shrext"))) - %standard-phases))) + #:phases + (modify-phases %standard-phases + (add-after 'configure 'set-shared-lib-extension + (lambda _ + ;; For some reason, the 'libtool' script (from Libtool + ;; 1.5.2, Debian variant) sets 'shrext_cmds' instead of + ;; 'shrext' for the shared library file name extension. + ;; This leads to the creation of 'libots-1' instead of + ;; 'libots-1.so'. Fix that. + (substitute* "libtool" + (("shrext_cmds") "shrext")) + #t))))) (inputs `(("glib" ,glib) ("popt" ,popt) diff --git a/gnu/packages/patches/ngircd-no-dns-in-tests.patch b/gnu/packages/patches/ngircd-no-dns-in-tests.patch deleted file mode 100644 index 748661de45..0000000000 --- a/gnu/packages/patches/ngircd-no-dns-in-tests.patch +++ /dev/null @@ -1,368 +0,0 @@ -From 3f807e104572b38143a1015be57d875088ceaebb Mon Sep 17 00:00:00 2001 -From: Alexander Barton <alex@barton.de> -Date: Thu, 17 Apr 2014 23:57:38 +0200 -Subject: [PATCH] Test suite: Don't use DNS lookups - -Different operating systems do behave quite differently when doing DNS -lookups, for example "127.0.0.1" sometimes resolves to "localhost" and -sometimes to "localhost.localdomain" (for example OpenBSD). And other -systems resolve "localhost" to the real host name (for example Cygwin). - -So not using DNS at all makes the test site much more portable. ---- - src/testsuite/channel-test.e | 2 +- - src/testsuite/check-idle.e | 2 +- - src/testsuite/connect-test.e | 2 +- - src/testsuite/invite-test.e | 2 +- - src/testsuite/join-test.e | 2 +- - src/testsuite/kick-test.e | 2 +- - src/testsuite/message-test.e | 31 ++++++++++++------------------- - src/testsuite/misc-test.e | 8 ++++---- - src/testsuite/mode-test.e | 2 +- - src/testsuite/ngircd-test1.conf | 1 + - src/testsuite/ngircd-test2.conf | 1 + - src/testsuite/opless-channel-test.e | 2 +- - src/testsuite/server-link-test.e | 2 +- - src/testsuite/stress-A.e | 2 +- - src/testsuite/who-test.e | 6 +++--- - src/testsuite/whois-test.e | 14 +++++++------- - 16 files changed, 38 insertions(+), 43 deletions(-) - -diff --git a/src/testsuite/channel-test.e b/src/testsuite/channel-test.e -index dd7eb66..39ad16a 100644 ---- a/src/testsuite/channel-test.e -+++ b/src/testsuite/channel-test.e -@@ -1,7 +1,7 @@ - # ngIRCd test suite - # Channel test - --spawn telnet localhost 6789 -+spawn telnet 127.0.0.1 6789 - expect { - timeout { exit 1 } - "Connected" -diff --git a/src/testsuite/check-idle.e b/src/testsuite/check-idle.e -index 41b8eb4..ad112b2 100644 ---- a/src/testsuite/check-idle.e -+++ b/src/testsuite/check-idle.e -@@ -1,7 +1,7 @@ - # ngIRCd test suite - # Idle test - --spawn telnet localhost 6789 -+spawn telnet 127.0.0.1 6789 - expect { - timeout { exit 1 } - "Connected" -diff --git a/src/testsuite/connect-test.e b/src/testsuite/connect-test.e -index 662f5f7..b51be0d 100644 ---- a/src/testsuite/connect-test.e -+++ b/src/testsuite/connect-test.e -@@ -1,7 +1,7 @@ - # ngIRCd test suite - # Server connect test - --spawn telnet localhost 6789 -+spawn telnet 127.0.0.1 6789 - expect { - timeout { exit 1 } - "Connected" -diff --git a/src/testsuite/invite-test.e b/src/testsuite/invite-test.e -index 3716d19..5179d8a 100644 ---- a/src/testsuite/invite-test.e -+++ b/src/testsuite/invite-test.e -@@ -1,7 +1,7 @@ - # ngIRCd test suite - # INVITE test - --spawn telnet localhost 6789 -+spawn telnet 127.0.0.1 6789 - expect { - timeout { exit 1 } - "Connected" -diff --git a/src/testsuite/join-test.e b/src/testsuite/join-test.e -index 28b4c54..c088f5c 100644 ---- a/src/testsuite/join-test.e -+++ b/src/testsuite/join-test.e -@@ -1,7 +1,7 @@ - # ngIRCd test suite - # JOIN test - --spawn telnet localhost 6789 -+spawn telnet 127.0.0.1 6789 - expect { - timeout { exit 1 } - "Connected" -diff --git a/src/testsuite/kick-test.e b/src/testsuite/kick-test.e -index 3d3c1ee..89da611 100644 ---- a/src/testsuite/kick-test.e -+++ b/src/testsuite/kick-test.e -@@ -1,7 +1,7 @@ - # ngIRCd test suite - # KICK test - --spawn telnet localhost 6789 -+spawn telnet 127.0.0.1 6789 - expect { - timeout { exit 1 } - "Connected" -diff --git a/src/testsuite/message-test.e b/src/testsuite/message-test.e -index 0e70640..5dc325d 100644 ---- a/src/testsuite/message-test.e -+++ b/src/testsuite/message-test.e -@@ -1,7 +1,7 @@ - # ngIRCd test suite - # PRIVMSG and NOTICE test - --spawn telnet localhost 6789 -+spawn telnet 127.0.0.1 6789 - expect { - timeout { exit 1 } - "Connected" -@@ -72,24 +72,17 @@ expect { - "MODE nick :-b" - } - --# The following two tests using "localhost" as host name --# had to be disabled, because there are operating systems --# out there, that use "localhost.<domain>" as host name --# for 127.0.0.1 instead of just "localhost". --# (for example OpenBSD 4, OpenSolaris, ...) --# --#send "privmsg ~user\%localhost :test\r" --#expect { --# timeout { exit 1 } --# "@* PRIVMSG nick :test" --#} --# --#send "privmsg Nick!~User@LocalHost :test\r" --#expect { --# timeout { exit 1 } --# "@* PRIVMSG nick :test" --# "401" --#} -+send "privmsg ~user\%127.0.0.1 :test\r" -+expect { -+ timeout { exit 1 } -+ "@* PRIVMSG nick :test" -+} -+ -+send "privmsg Nick!~User@127.0.0.1 :test\r" -+expect { -+ timeout { exit 1 } -+ "@* PRIVMSG nick :test" -+} - - send "away :away\r" - expect { -diff --git a/src/testsuite/misc-test.e b/src/testsuite/misc-test.e -index a83bc5b..f69e7c3 100644 ---- a/src/testsuite/misc-test.e -+++ b/src/testsuite/misc-test.e -@@ -1,7 +1,7 @@ - # ngIRCd test suite - # Misc test - --spawn telnet localhost 6789 -+spawn telnet 127.0.0.1 6789 - expect { - timeout { exit 1 } - "Connected" -@@ -130,7 +130,7 @@ expect { - send "userhost nick\r" - expect { - timeout { exit 1 } -- -re ":ngircd.test.server 302 nick :?nick=+.*@(localhos.*|127.0.0.1)" -+ -re ":ngircd.test.server 302 nick :?nick=+.*@127.0.0.1" - } - - send "userhost doesnotexist\r" -@@ -142,7 +142,7 @@ expect { - send "userhost nick doesnotexist nick doesnotexist\r" - expect { - timeout { exit 1 } -- -re ":ngircd.test.server 302 nick :nick=+.*@(localhos.*|127.0.0.1) nick=+.*@(localhos.*|127.0.0.1)" -+ -re ":ngircd.test.server 302 nick :nick=+.*@127.0.0.1 nick=+.*@127.0.0.1" - } - - send "away :testing\r" -@@ -154,7 +154,7 @@ expect { - send "userhost nick nick nick nick nick nick\r" - expect { - timeout { exit 1 } -- -re ":ngircd.test.server 302 nick :nick=-.*@(localhos.*|127.0.0.1) nick=-.*@(localhos.*|127.0.0.1) nick=-.*@(localhos.*|127.0.0.1) nick=-.*@(localhos.*|127.0.0.1) nick=-.*@(localhos.*|127.0.0.1)\r" -+ -re ":ngircd.test.server 302 nick :nick=-.*@127.0.0.1 nick=-.*@127.0.0.1 nick=-.*@127.0.0.1 nick=-.*@127.0.0.1 nick=-.*@127.0.0.1\r" - } - - send "quit\r" -diff --git a/src/testsuite/mode-test.e b/src/testsuite/mode-test.e -index d6726a4..86e4f2d 100644 ---- a/src/testsuite/mode-test.e -+++ b/src/testsuite/mode-test.e -@@ -1,7 +1,7 @@ - # ngIRCd test suite - # MODE test - --spawn telnet localhost 6789 -+spawn telnet 127.0.0.1 6789 - expect { - timeout { exit 1 } - "Connected" -diff --git a/src/testsuite/ngircd-test1.conf b/src/testsuite/ngircd-test1.conf -index 0d0cccc..4dec533 100644 ---- a/src/testsuite/ngircd-test1.conf -+++ b/src/testsuite/ngircd-test1.conf -@@ -17,6 +17,7 @@ - OperCanUseMode = yes - Ident = no - IncludeDir = /var/empty -+ DNS = no - PAM = no - - [Operator] -diff --git a/src/testsuite/ngircd-test2.conf b/src/testsuite/ngircd-test2.conf -index c9d7f6c..0d24c4a 100644 ---- a/src/testsuite/ngircd-test2.conf -+++ b/src/testsuite/ngircd-test2.conf -@@ -17,6 +17,7 @@ - OperCanUseMode = yes - Ident = no - IncludeDir = /var/empty -+ DNS = no - PAM = no - - [Operator] -diff --git a/src/testsuite/opless-channel-test.e b/src/testsuite/opless-channel-test.e -index 7d94172..4611fe1 100644 ---- a/src/testsuite/opless-channel-test.e -+++ b/src/testsuite/opless-channel-test.e -@@ -1,7 +1,7 @@ - # ngIRCd test suite - # Op-less channel test - --spawn telnet localhost 6789 -+spawn telnet 127.0.0.1 6789 - expect { - timeout { exit 1 } - "Connected" -diff --git a/src/testsuite/server-link-test.e b/src/testsuite/server-link-test.e -index cf3fae8..910f8c8 100644 ---- a/src/testsuite/server-link-test.e -+++ b/src/testsuite/server-link-test.e -@@ -1,7 +1,7 @@ - # ngIRCd test suite - # server-server link test - --spawn telnet localhost 6790 -+spawn telnet 127.0.0.1 6790 - expect { - timeout { exit 1 } - "Connected" -diff --git a/src/testsuite/stress-A.e b/src/testsuite/stress-A.e -index 256d5d1..d51adaa 100644 ---- a/src/testsuite/stress-A.e -+++ b/src/testsuite/stress-A.e -@@ -3,7 +3,7 @@ - - set timeout 30 - --spawn telnet localhost 6789 -+spawn telnet 127.0.0.1 6789 - expect { - timeout { exit 1 } - "Connected" -diff --git a/src/testsuite/who-test.e b/src/testsuite/who-test.e -index a41e6b6..39d50ed 100644 ---- a/src/testsuite/who-test.e -+++ b/src/testsuite/who-test.e -@@ -1,7 +1,7 @@ - # ngIRCd test suite - # WHO test - --spawn telnet localhost 6789 -+spawn telnet 127.0.0.1 6789 - expect { - timeout { exit 1 } - "Connected" -@@ -62,7 +62,7 @@ expect { - ":ngircd.test.server 352 nick #channel * * ngircd.test.server nick G@ :0 Real Name" - } - --send "who localhos*\r" -+send "who 127.0.0.*\r" - expect { - timeout { exit 1 } - ":ngircd.test.server 352 nick \* * * ngircd.test.server nick G :0 Real Name" -@@ -120,7 +120,7 @@ expect { - "305 nick" - } - --send "who ??cal*ho*\r" -+send "who ??7.*0*\r" - expect { - timeout { exit 1 } - ":ngircd.test.server 352 nick \* * * ngircd.test.server nick H* :0 Real Name" -diff --git a/src/testsuite/whois-test.e b/src/testsuite/whois-test.e -index 16b1184..44eee66 100644 ---- a/src/testsuite/whois-test.e -+++ b/src/testsuite/whois-test.e -@@ -1,7 +1,7 @@ - # ngIRCd test suite - # WHOIS test - --spawn telnet localhost 6789 -+spawn telnet 127.0.0.1 6789 - expect { - timeout { exit 1 } - "Connected" -@@ -17,7 +17,7 @@ expect { - send "whois nick\r" - expect { - timeout { exit 1 } -- "311 nick nick ~user localhost* \* :Real Name\r" -+ "311 nick nick ~user 127.0.0.1 \* :Real Name\r" - } - expect { - timeout { exit 1 } -@@ -27,25 +27,25 @@ expect { - send "whois *\r" - expect { - timeout { exit 1 } -- "311 nick nick ~user localhost* \* :Real Name\r" -+ "311 nick nick ~user 127.0.0.1* \* :Real Name\r" - } - - send "whois n*\r" - expect { - timeout { exit 1 } -- "311 nick nick ~user localhost* \* :Real Name\r" -+ "311 nick nick ~user 127.0.0.1* \* :Real Name\r" - } - - send "whois ?ick\r" - expect { - timeout { exit 1 } -- "311 nick nick ~user localhost* \* :Real Name\r" -+ "311 nick nick ~user 127.0.0.1* \* :Real Name\r" - } - - send "whois ????,n?*k\r" - expect { - timeout { exit 1 } -- "311 nick nick ~user localhost* \* :Real Name\r" -+ "311 nick nick ~user 127.0.0.1* \* :Real Name\r" - } - - send "whois unknown\r" -@@ -61,7 +61,7 @@ expect { - send "whois ngircd.test.server2 nick\r" - expect { - timeout { exit 1 } -- ":ngircd.test.server2 311 nick nick ~user localhost* \* :Real Name\r" -+ ":ngircd.test.server2 311 nick nick ~user 127.0.0.1* \* :Real Name\r" - } - - send "whois nosuchserver unknown\r" --- -1.9.1 - diff --git a/gnu/packages/patches/vim-CVE-2017-5953.patch b/gnu/packages/patches/vim-CVE-2017-5953.patch deleted file mode 100644 index 070f98c2cb..0000000000 --- a/gnu/packages/patches/vim-CVE-2017-5953.patch +++ /dev/null @@ -1,32 +0,0 @@ -Fix CVE-2017-5953: - -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5953 -https://groups.google.com/forum/#!topic/vim_dev/t-3RSdEnrHY - -This change is adapted from the upstream source repository: - -https://github.com/vim/vim/commit/6d3c8586fc81b022e9f06c611b9926108fb878c7 - -diff --git a/src/spellfile.c b/src/spellfile.c -index c7d87c6..00ef019 100644 ---- a/src/spellfile.c -+++ b/src/spellfile.c -@@ -1585,7 +1585,7 @@ spell_read_tree( - int prefixtree, /* TRUE for the prefix tree */ - int prefixcnt) /* when "prefixtree" is TRUE: prefix count */ - { -- int len; -+ long len; - int idx; - char_u *bp; - idx_T *ip; -@@ -1595,6 +1595,9 @@ spell_read_tree( - len = get4c(fd); - if (len < 0) - return SP_TRUNCERROR; -+ if (len >= LONG_MAX / (long)sizeof(int)) -+ /* Invalid length, multiply with sizeof(int) would overflow. */ -+ return SP_FORMERROR; - if (len > 0) - { - /* Allocate the byte array. */ diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 840e0b763e..086e1fae03 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -14,6 +14,7 @@ ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2017 Raoul J.P. Bonnal <ilpuccio.febo@gmail.com> ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2017 humanitiesNerd <catonano@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -1369,6 +1370,26 @@ contained in Appendix A of FIPS Publication 181, \"Standard for Automated Password Generator\".") (license (package-license perl)))) +(define-public perl-crypt-rc4 + (package + (name "perl-crypt-rc4") + (version "2.02") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/S/SI/SIFUKURT/Crypt-RC4-" + version + ".tar.gz")) + (sha256 + (base32 + "1sp099cws0q225h6j4y68hmfd1lnv5877gihjs40f8n2ddf45i2y")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/Crypt-RC4") + (synopsis "Perl implementation of the RC4 encryption algorithm") + (description "A pure Perl implementation of the RC4 algorithm.") + (license (package-license perl)))) + (define-public perl-cwd-guard (package (name "perl-cwd-guard") @@ -5157,6 +5178,29 @@ inherit from in order to allow your objects to generate unique cryptographic signatures.") (license (package-license perl)))) +(define-public perl-ole-storage-lite + (package + (name "perl-ole-storage-lite") + (version "0.19") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/J/JM/JMCNAMARA/OLE-Storage_Lite-" + version + ".tar.gz")) + (sha256 + (base32 + "179cxwqxb0f9dpx8954nvwjmggxxi5ndnang41yav1dx6mf0abp7")))) + (build-system perl-build-system) + (home-page "http://search.cpan.org/dist/OLE-Storage_Lite") + (synopsis "Read and write OLE storage files") + (description "This module allows you to read and write +an OLE-Structured file. @dfn{OLE} (Object Linking and Embedding) is a +technology to store hierarchical information such as links to other +documents within a single file.") + (license (package-license perl)))) + (define-public perl-package-anon (package (name "perl-package-anon") diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm index 8819b8adaf..3af7777304 100644 --- a/gnu/packages/pretty-print.scm +++ b/gnu/packages/pretty-print.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,6 +23,7 @@ #:use-module (guix packages) #:use-module (guix licenses) #:use-module (guix download) + #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (gnu packages) #:use-module (gnu packages ghostscript) @@ -34,7 +36,8 @@ #:use-module (gnu packages gperf) #:use-module (gnu packages lua) #:use-module (gnu packages perl) - #:use-module (gnu packages pkg-config)) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages zip)) (define-public a2ps (package @@ -147,6 +150,30 @@ It also includes the capability to perform syntax highlighting for several different programming languages.") (license gpl3+))) +(define-public fmt + (package + (name "fmt") + (version "3.0.1") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/fmtlib/fmt/releases/download/" + version "/fmt-" version ".zip")) + (sha256 + (base32 + "0l4514mk83cjimynci3ghrfdchjy8cya1qa45c1fg2lsj7fg16jc")))) + (build-system cmake-build-system) + (native-inputs + `(("unzip" ,unzip))) + (home-page "http://fmtlib.net/latest/") + (synopsis "Small and fast C++ formatting library") + (description + "@code{fmt} (formerly @code{cppformat}) is a formatting library for C++. +It can be used as a safe alternative to @code{printf} or as a fast alternative +to @code{IOStreams}.") + ;; The library is bsd-2, but documentation and tests include other licenses. + (license (list bsd-2 bsd-3 psfl)))) + (define-public source-highlight (package (name "source-highlight") diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 1903247d77..ea1d691c18 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -1749,14 +1749,14 @@ standard library.") (define-public python-py (package (name "python-py") - (version "1.4.31") + (version "1.4.32") (source (origin (method url-fetch) (uri (pypi-uri "py" version)) (sha256 (base32 - "0561gz2w3i825gyl42mcq14y3dcgkapfiv5zv9a2bz15qxiijl56")))) + "19s1pql9pq85h1qzsdwgyb8a3k1qgkvh33b02m8kfqhizz8rzf64")))) (build-system python-build-system) (arguments ;; FIXME: "ImportError: 'test' module incorrectly imported from @@ -3144,14 +3144,14 @@ augment the changelog, but it can be used for other documents, too.") (define-public python-feedgenerator (package (name "python-feedgenerator") - (version "1.8") + (version "1.9") (source (origin (method url-fetch) (uri (pypi-uri "feedgenerator" version)) (sha256 (base32 - "0mkimp1fpdan4p3882vzcws4l594k71ich4g0wq97jbra7p602n0")) + "01mirwkm7xfx539hmvj7g9da1j51gw5lsx74dr0glizskjm5vq2s")) (modules '((guix build utils))) (snippet '(begin @@ -5873,6 +5873,9 @@ of the structure, dynamics, and functions of complex networks.") (arguments ;; TODO: Package missing test dependencies. '(#:tests? #f)) + (propagated-inputs + `(("python-wrapt" ,python-wrapt) + ("python-requests" ,python-requests))) (home-page "https://bitbucket.org/snakemake/snakemake/wiki/Home") (synopsis "Python-based execution environment for make-like workflows") (description @@ -6491,14 +6494,14 @@ Python.") (define-public python-markdown (package (name "python-markdown") - (version "2.6.7") + (version "2.6.8") (source (origin (method url-fetch) (uri (pypi-uri "Markdown" version)) (sha256 (base32 - "1h055llfd0ps0ig7qb3v1j9068xv90dc9s7xkhkgz9zg8r4g5sys")))) + "0cqfhr1km2s5d8jm6hbwgkrrj9hvkjf2gab3s2axlrw1clgaij0a")))) (build-system python-build-system) (arguments `(#:phases @@ -6858,17 +6861,14 @@ and MAC network addresses.") (define-public python-wrapt (package (name "python-wrapt") - (version "1.10.5") + (version "1.10.8") (source (origin (method url-fetch) - (uri (string-append - "https://pypi.python.org/packages/source/w/wrapt/wrapt-" - version - ".tar.gz")) + (uri (pypi-uri "wrapt" version)) (sha256 (base32 - "0cq8rlpzkxzk48b50yrfhzn1d1hrq4gjcdqlrgq4v5palgiv9jwr")))) + "0wrcm1mydvfivbkzz0h81ygzdchnscshi6xvy5n3r21r9s0px8af")))) (build-system python-build-system) (arguments ;; Tests are not included in the tarball, they are only available in the @@ -8247,15 +8247,14 @@ security policies on Python objects.") (define-public python-zope-component (package (name "python-zope-component") - (version "4.2.2") + (version "4.3.0") (source (origin (method url-fetch) - (uri (string-append "https://pypi.python.org/packages/source/z" - "/zope.component/zope.component-" version ".tar.gz")) + (uri (pypi-uri "zope.component" version)) (sha256 (base32 - "06pqr8m5jv12xjyy5b59hh9anl61cxkzhw9mka33r3nxalmi2b18")))) + "1hlvzwj1kcfz1qms1dzhwsshpsf38z9clmyksb1gh41n8k3kchdv")))) (build-system python-build-system) (arguments ;; Skip tests due to circular dependency with python-zope-security. @@ -8497,14 +8496,14 @@ the standard library.") (define-public python-texttable (package (name "python-texttable") - (version "0.8.4") + (version "0.8.7") (source (origin (method url-fetch) (uri (pypi-uri "texttable" version)) (sha256 (base32 - "0bkhs4dx9s6g7fpb969hygq56hyz4ncfamlynw72s0n6nqfbd1w5")))) + "1liiiydgkg37i46a418aw19fyf6z3ds51wdwwpyjbs12x0phhf4a")))) (build-system python-build-system) (arguments '(#:tests? #f)) ; no tests (home-page "https://github.com/foutaise/texttable/") @@ -8542,13 +8541,13 @@ WebSocket usage in Python programs.") (define-public python-atomicwrites (package (name "python-atomicwrites") - (version "1.1.0") + (version "1.1.5") (source (origin (method url-fetch) (uri (pypi-uri "atomicwrites" version)) (sha256 (base32 - "1s01dci8arsl9d9vr5nz1fk9znldp1z3l4yl43f0c27z12b8yxl0")))) + "11bm90fwm2avvf4f3ib8g925w7jr4m11vcsinn1bi6ns4bm32214")))) (build-system python-build-system) (synopsis "Atomic file writes in Python") (description "Library for atomic file writes using platform dependent tools @@ -10053,14 +10052,14 @@ introspection of @code{zope.interface} instances in code.") (define-public python-psycopg2 (package (name "python-psycopg2") - (version "2.6.1") + (version "2.6.2") (source (origin (method url-fetch) (uri (pypi-uri "psycopg2" version)) (sha256 (base32 - "0k4hshvrwsh8yagydyxgmd0pjm29lwdxkngcq9fzfzkmpsxrmkva")))) + "0p60z2gwfcal30y2w8gprflchp1kcg9qblc5rn782p4wxl90wjbh")))) (build-system python-build-system) (arguments ;; Tests would require a postgresql database "psycopg2_test" @@ -11163,17 +11162,14 @@ are optionally backed by a C extension built on librdkafka.") (define-public python-wcwidth (package (name "python-wcwidth") - (version "0.1.6") + (version "0.1.7") (source (origin (method url-fetch) - (uri (string-append - "https://pypi.python.org/packages/" - "c2/d1/7689293086a8d5320025080cde0e3155b94ae0a7496fb89a3fbaa92c354a/" - "wcwidth-" version ".tar.gz")) + (uri (pypi-uri "wcwidth" version)) (sha256 (base32 - "02wjrpf001gjdjsaxxbzcwfg19crlk2dbddayrfc2v06f53yrcyw")))) + "0pn6dflzm609m4r3i8ik5ni9ijjbb5fa3vg1n7hn6vkd49r77wrx")))) (build-system python-build-system) (home-page "https://github.com/jquast/wcwidth") (synopsis "Measure number of terminal column cells of wide-character codes") @@ -12542,13 +12538,13 @@ English stemmer.") (define-public python-sphinx-cloud-sptheme (package (name "python-sphinx-cloud-sptheme") - (version "1.7.1") + (version "1.8.0") (source (origin (method url-fetch) (uri (pypi-uri "cloud_sptheme" version)) (sha256 (base32 - "0zm9ap4p5dzln8f1m2immadaxv2xpg8jg4w53y52rhfl7pdb58vy")))) + "1dniqb6a39yh786f86c4jn666rwnyi1jvzn4616zhcchb7sfdshd")))) (build-system python-build-system) ;; FIXME: The 'pypi' release archive does not contain tests. (arguments '(#:tests? #f)) @@ -13671,3 +13667,212 @@ users' sessions over extended periods of time.") (define-public python2-flask-login (package-with-python2 python-flask-login)) + +(define-public python-astroid + (package + (name "python-astroid") + (version "1.4.9") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/PyCQA/astroid/archive/astroid-" + version ".tar.gz")) + (sha256 + (base32 + "0j0wgy54d13a470vm4b9rdjk99n1hmdxpf34x9k3pbmi9w9b566z")))) + (build-system python-build-system) + (propagated-inputs + `(("python-lazy-object-proxy" ,python-lazy-object-proxy) + ("python-six" ,python-six) + ("python-wrapt" ,python-wrapt))) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (zero? (system* "python" "-m" "unittest" "discover" + "-p" "unittest*.py"))))))) + (home-page "https://github.com/PyCQA/astroid") + (synopsis "Common base representation of python source code for pylint and +other projects") + (description "@code{python-astroid} provides a common base representation +of python source code for projects such as pychecker, pyreverse, pylint, etc. + +It provides a compatible representation which comes from the _ast module. It +rebuilds the tree generated by the builtin _ast module by recursively walking +down the AST and building an extended ast. The new node classes have +additional methods and attributes for different usages. They include some +support for static inference and local name scopes. Furthermore, astroid +builds partial trees by inspecting living objects.") + (license license:lgpl2.1+))) + +(define-public python2-astroid + (package-with-python2 python-astroid)) + +(define-public python-isort + (package + (name "python-isort") + (version "4.2.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/timothycrosley/isort/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0zsrgkb0krn5476yncy5dd56k7dk34zqb4bnlvwy44ixgilyjmfh")))) + (build-system python-build-system) + (native-inputs + `(("python-mock" ,python-mock) + ("python-pytest" ,python-pytest))) + (home-page "https://github.com/timothycrosley/isort") + (synopsis "Python utility/library to sort python imports") + (description "@code{python-isort} is a python utility/library to sort +imports alphabetically, and automatically separated into sections. It +provides a command line utility, a python library and plugins for various +editors.") + (license license:expat))) + +(define-public python2-isort + (package-with-python2 python-isort)) + +(define-public python2-backports-functools-lru-cache + (package + (name "python2-backports-functools-lru-cache") + (version "1.3") + (source + (origin + (method url-fetch) + ;; only the pypi tarballs contain the necessary metadata + (uri (pypi-uri "backports.functools_lru_cache" version)) + (sha256 + (base32 + "158ysf2hb0q4p4695abfiym9x1ywg0dgh8a3apd7gqaaxjy22jj4")))) + (build-system python-build-system) + (native-inputs + `(("python2-setuptools-scm" ,python2-setuptools-scm))) + (arguments + `(#:python ,python-2)) + (home-page "https://github.com/jaraco/backports.functools_lru_cache") + (synopsis "Backport of functools.lru_cache from Python 3.3") + (description "@code{python2-backports-functools-lru-cache} is a backport +of @code{functools.lru_cache} from python 3.3.") + (license license:expat))) + +(define-public python-configparser + (package + (name "python-configparser") + (version "3.5.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://bitbucket.org/ambv/configparser/get/" + version ".tar.bz2")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0waq40as14abwzbb321hfz4vr1fi363nscy32ga14qvfygrg96wa")))) + (build-system python-build-system) + (home-page "http://docs.python.org/py3k/library/configparser.html") + (synopsis "Backport of configparser from python 3.5") + (description "@code{python-configparser} is a backport of +@code{configparser} from Python 3.5 so that it can be used directly +in other versions.") + (license license:expat))) + +(define-public python2-configparser + (package-with-python2 python-configparser)) + +(define-public python2-coverage-test-runner + (package + (name "python2-coverage-test-runner") + (version "1.11") + (source + (origin + (method url-fetch) + (uri (string-append + "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/" + "coverage-test-runner/snapshot/coverage-test-runner-" + version ".tar.gz")) + (sha256 + (base32 + "0y1m7z3dl63kmhcmydl1mwg0hacnf6ghrx9dah17j9iasssfa3g7")))) + (build-system python-build-system) + (arguments + `(#:python ,python-2 + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (zero? (system* "./testrun"))))))) + (propagated-inputs + `(("python2-coverage" ,python2-coverage))) + (home-page "https://liw.fi/coverage-test-runner/") + (synopsis "Python module for running unit tests") + (description "@code{CoverageTestRunner} is a python module for running +unit tests and failing them if the unit test module does not excercise all +statements in the module it tests.") + (license license:gpl3+))) + +(define-public python-pylint + (package + (name "python-pylint") + (version "1.6.5") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/PyCQA/pylint/archive/pylint-" + version ".tar.gz")) + (sha256 + (base32 + "08pmgflmq2zrzrn9nkfadzwa5vybz46wvwxhrsd2mjlcgsh4rzbm")))) + (build-system python-build-system) + (native-inputs + `(("python-tox" ,python-tox))) + (propagated-inputs + `(("python-astroid" ,python-astroid) + ("python-isort" ,python-isort) + ("python-mccabe" ,python-mccabe) + ("python-six" ,python-six))) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + ;; Somehow, tests for python2-pylint + ;; fail if run from the build directory + (let ((work "/tmp/work")) + (mkdir-p work) + (setenv "PYTHONPATH" + (string-append (getenv "PYTHONPATH") ":" work)) + (copy-recursively "." work) + (with-directory-excursion "/tmp" + (zero? (system* "python" "-m" "unittest" "discover" + "-s" (string-append work "/pylint/test") + "-p" "*test_*.py"))))))))) + (home-page "https://github.com/PyCQA/pylint") + (synopsis "Python source code analyzer which looks for coding standard +errors") + (description "Pylint is a Python source code analyzer which looks +for programming errors, helps enforcing a coding standard and sniffs +for some code smells (as defined in Martin Fowler's Refactoring book). + +Pylint has many rules enabled by default, way too much to silence them +all on a minimally sized program. It's highly configurable and handle +pragmas to control it from within your code. Additionally, it is +possible to write plugins to add your own checks.") + (license license:gpl2+))) + +(define-public python2-pylint + (let ((pylint (package-with-python2 python-pylint))) + (package (inherit pylint) + (propagated-inputs + `(("python2-backports-functools-lru-cache" + ,python2-backports-functools-lru-cache) + ("python2-configparser" ,python2-configparser) + ,@(package-propagated-inputs pylint)))))) diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 47a7caae48..fb242a01da 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -568,6 +568,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") #t))) (add-before 'check 'set-display (lambda _ + ;; make Qt render "offscreen", required for tests (setenv "QT_QPA_PLATFORM" "offscreen") #t))))))) diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index 068e870f93..5501dd722c 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -120,7 +120,7 @@ a server that supports the SSH-2 protocol.") (define-public openssh (package (name "openssh") - (version "7.4p1") + (version "7.5p1") (source (origin (method url-fetch) (uri (let ((tail (string-append name "-" version ".tar.gz"))) @@ -131,7 +131,7 @@ a server that supports the SSH-2 protocol.") (string-append "http://ftp2.fr.openbsd.org/pub/OpenBSD/OpenSSH/portable/" tail)))) (sha256 (base32 - "1l8r3x4fr2kb6xm95s7kjdif1wp6f94d4kljh4qjj9109shw87qv")))) + "1w7rb5gbrikxdkp8w7zxnci4549gk4bw1lml01s59w5rzb2y6ilq")))) (build-system gnu-build-system) (inputs `(("groff" ,groff) ("openssl" ,openssl) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index d0bed4dd7f..a90ac2f427 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -5151,3 +5151,38 @@ genome-wide association studies can be analyzed efficiently.") (description "This package provides a pure R implementation of the t-SNE algorithm.") (license license:gpl2+))) + +(define-public r-cairo + (package + (name "r-cairo") + (version "1.5-9") + (source + (origin + (method url-fetch) + (uri (cran-uri "Cairo" version)) + (sha256 + (base32 + "1x1q99r3r978rlkkm5gixkv03p0mcr6k7ydcqdmisrwnmrn7p1ia")))) + (properties `((upstream-name . "Cairo"))) + (build-system r-build-system) + (inputs + `(("cairo" ,cairo) + ("libxt" ,libxt))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://www.rforge.net/Cairo/") + (synopsis "R graphics device using Cairo graphics library") + (description + "This package provides a Cairo graphics device that can be use to +create high-quality vector (PDF, PostScript and SVG) and bitmap +output (PNG,JPEG,TIFF), and high-quality rendering in displays (X11 +and Win32). Since it uses the same back-end for all output, copying +across formats is WYSIWYG. Files are created without the dependence +on X11 or other external programs. This device supports alpha +channel (semi-transparent drawing) and resulting images can contain +transparent and semi-transparent regions. It is ideal for use in +server environments (file output) and as a replacement for other +devices that don't have Cairo's capabilities such as alpha support or +anti-aliasing. Backends are modular such that any subset of backends +is supported.") + (license license:gpl2))) diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm index 4b6aa07ee8..a093baa3bd 100644 --- a/gnu/packages/text-editors.scm +++ b/gnu/packages/text-editors.scm @@ -137,7 +137,6 @@ based command language.") ;; without them the tests fail. (zero? (system* "chmod" "-R" "u+w" "../test"))))))) (native-inputs `(("gcc" ,gcc-5) - ("libxslt" ,libxslt) ("asciidoc" ,asciidoc) ("ruby" ,ruby))) (inputs `(("gcc:lib" ,gcc-5 "lib") diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index aee424fbc9..71e499085f 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -112,14 +112,14 @@ as well as the classic centralized workflow.") (define-public git (package (name "git") - (version "2.12.0") + (version "2.12.1") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/software/scm/git/git-" version ".tar.xz")) (sha256 (base32 - "09r0lcjj5v2apj39f0ziqzjq2bi1jpnhszc9q4n0ab86g5j7c88q")))) + "18mdlg4ws78s4asfrn6licm9v6qw4wp9m0kdjq0y2r5pci1nf4fv")))) (build-system gnu-build-system) (native-inputs `(("native-perl" ,perl) @@ -132,7 +132,7 @@ as well as the classic centralized workflow.") version ".tar.xz")) (sha256 (base32 - "0ws7h04ijqr2l0pp9qbds65v9cd70v0qfpnhqncn9zqfspw5d0wb")))))) + "1km0sbrqgni0q88abh4zb1m7xa9ld3d4qi36095b11a3vr6w7xgv")))))) (inputs `(("curl" ,curl) ("expat" ,expat) @@ -451,11 +451,7 @@ to lock down your entire repository.") #t))))))) (native-inputs ;; For building manpage. - `(("asciidoc" ,asciidoc) - ("docbook-xml" ,docbook-xml) - ("docbook-xsl" ,docbook-xsl) - ("xmllint" ,libxml2) - ("xsltprot" ,libxslt))) + `(("asciidoc" ,asciidoc))) (inputs `(("git:src" ,(package-source git@2.9)) ("openssl" ,openssl) @@ -857,10 +853,6 @@ RCS, PRCS, and Aegis packages.") (list "CC=gcc" (string-append "prefix?=" (assoc-ref %outputs "out"))))) (inputs `(("git" ,git))) (native-inputs `(("asciidoc" ,asciidoc) - ("docbook-xml" ,docbook-xml) - ("docbook-xsl" ,docbook-xsl) - ("xmllint" ,libxml2) - ("xsltproc" ,libxslt) ;; These are needed for the tests. ("cvs" ,cvs) ("python" ,python-2) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 0d2803dd64..cf54bbf9a4 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -1311,7 +1311,7 @@ capabilities.") (define-public vapoursynth (package (name "vapoursynth") - (version "35") + (version "37") (source (origin (method url-fetch) (uri (string-append @@ -1320,7 +1320,7 @@ capabilities.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0629ys2lf618n9cc644xlvx0vx52v2fp3sx14p4mx5rg9nlasb3n")))) + "1g3hc079jw4mz1cmkv2y28pdb556wqc8ql7iravgh1rg8j3f1zi5")))) (build-system gnu-build-system) (native-inputs `(("autoconf" ,autoconf) diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm index 82403feb1d..3dbd6d952b 100644 --- a/gnu/packages/vim.scm +++ b/gnu/packages/vim.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,6 +23,7 @@ (define-module (gnu packages vim) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) + #:use-module (guix utils) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix build-system cmake) @@ -58,16 +60,15 @@ (define-public vim (package (name "vim") - (version "8.0.0300") + (version "8.0.0494") (source (origin (method url-fetch) (uri (string-append "https://github.com/vim/vim/archive/v" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz")) - (patches (search-patches "vim-CVE-2017-5953.patch")) (sha256 (base32 - "04samk2bakyixbxyc3p0g6ypls45105sikibg0wc6lmak9bqjs85")))) + "08kzimdyla35ndrbn68jf8pmzm7nd2qrydnvk57j089m6ajic62r")))) (build-system gnu-build-system) (arguments `(#:test-target "test" @@ -128,9 +129,27 @@ configuration files.") "--enable-xim" "--disable-selinux" "--enable-gui") - ,@(package-arguments vim))) + ,@(substitute-keyword-arguments (package-arguments vim) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'build 'drop-failing-tests + (lambda _ + ;; These tests fail mysteriously with GUI enabled. + ;; https://github.com/vim/vim/issues/1460 + (substitute* "src/testdir/test_cmdline.vim" + (("call assert_equal\\(.+getcmd.+\\(\\)\\)") "")) + #t)) + (add-before 'check 'start-xserver + (lambda* (#:key inputs #:allow-other-keys) + ;; Some tests require an X server, but does not start one. + (let ((xorg-server (assoc-ref inputs "xorg-server")) + (display ":1")) + (setenv "DISPLAY" display) + (zero? (system (string-append xorg-server "/bin/Xvfb " + display " &"))))))))))) (native-inputs - `(("pkg-config" ,pkg-config))) + `(("pkg-config" ,pkg-config) + ("xorg-server" ,xorg-server))) (inputs `(("acl" ,acl) ("atk" ,atk) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index a0e76d52c4..7fb94005e8 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -626,11 +626,7 @@ used to validate and fix HTML data.") %standard-phases))) ;; All of the below are used to generate the documentation ;; (Should they be propagated inputs of asciidoc ??) - (native-inputs `(("asciidoc" ,asciidoc) - ("libxml2" ,libxml2) - ("docbook-xml" ,docbook-xml) - ("docbook-xsl" ,docbook-xsl) - ("libxslt" ,libxslt))) + (native-inputs `(("asciidoc" ,asciidoc))) (home-page "https://tinyproxy.github.io/") (synopsis "Light-weight HTTP/HTTPS proxy daemon") (description "Tinyproxy is a light-weight HTTP/HTTPS proxy @@ -4479,11 +4475,7 @@ exploit attempts.") "0pf91nc0xcykahc3x7ww525c9czm8zpg80nxl8n2mrzc4ilgvass")))) (build-system python-build-system) (native-inputs - `(("asciidoc" ,asciidoc) - ("docbook-xsl" ,docbook-xsl) - ("docbook-xml" ,docbook-xml) - ("libxml2" ,libxml2) ;for xmllint - ("libxslt" ,libxslt))) ;for xsltproc + `(("asciidoc" ,asciidoc))) (inputs `(("python-colorama" ,python-colorama) ("python-cssutils" ,python-cssutils) diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index 7d76a2d202..b95f2e7a6f 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -177,26 +177,12 @@ commands would.") (build-system gnu-build-system) (arguments `(#:make-flags - (let* ((docbook-xsl-name-version ,(string-append - (package-name docbook-xsl) "-" - (package-version docbook-xsl))) - (docbook-xsl-catalog-file (string-append - (assoc-ref %build-inputs "docbook-xsl") - "/xml/xsl/" - docbook-xsl-name-version - "/catalog.xml")) - (docbook-xml-catalog-file (string-append - (assoc-ref %build-inputs "docbook-xml") - "/xml/dtd/docbook/catalog.xml"))) - ;; Reference the catalog files required to build the manpages. - (list (string-append "XML_CATALOG_FILES=" docbook-xsl-catalog-file " " - docbook-xml-catalog-file) - "CC=gcc" - (string-append "PREFIX=" %output) - ;; This works around the following error: - ;; 'error: ‘for’ loop initial declarations are only allowed in C99 - ;; or C11 mode' - "CFLAGS=-std=c11")) + (list "CC=gcc" + (string-append "PREFIX=" %output) + ;; This works around the following error: + ;; 'error: ‘for’ loop initial declarations are only allowed in C99 + ;; or C11 mode' + "CFLAGS=-std=c11") ;; The build system tries to build in a separate directory, but that ;; seems to be unnecessary. #:configure-flags '("--disable-builddir") @@ -215,7 +201,6 @@ commands would.") ("asciidoc" ,asciidoc) ("xmlto" ,xmlto) ("perl-pod-simple" ,perl-pod-simple) - ("docbook-xml" ,docbook-xml) ("libx11" ,libx11) ("pcre" ,pcre) ("startup-notification" ,startup-notification) @@ -226,6 +211,7 @@ commands would.") ("perl" ,perl) ("pkg-config" ,pkg-config) ;; For building the documentation. + ("libxml2" ,libxml2) ("docbook-xsl" ,docbook-xsl))) (home-page "https://i3wm.org/") (synopsis "Improved tiling window manager") diff --git a/gnu/packages/wxwidgets.scm b/gnu/packages/wxwidgets.scm index 52fa8184dd..077195cca7 100644 --- a/gnu/packages/wxwidgets.scm +++ b/gnu/packages/wxwidgets.scm @@ -65,7 +65,7 @@ ("libsm" ,libsm) ("libtiff" ,libtiff) ("mesa" ,mesa) - ("webkitgtk" ,webkitgtk-2.4) + ("webkitgtk" ,webkitgtk) ("sdl" ,sdl))) (native-inputs `(("pkg-config" ,pkg-config))) @@ -89,34 +89,6 @@ a graphical user interface. It has language bindings for Python, Perl, Ruby and many other languages.") (license (list l:lgpl2.0+ (l:fsf-free "file://doc/license.txt"))))) -(define-public wxwidgets-2 - (package - (inherit wxwidgets) - (version "2.8.12") - (source - (origin - (method url-fetch) - (uri (string-append "https://github.com/wxWidgets/wxWidgets/" - "releases/download/v" version - "/wxGTK-" version ".tar.gz")) - (sha256 - (base32 "1gjs9vfga60mk4j4ngiwsk9h6c7j22pw26m3asxr1jwvqbr8kkqk")))) - (inputs - `(("gtk" ,gtk+-2) - ("libjpeg" ,libjpeg) - ("libtiff" ,libtiff) - ("libmspack" ,libmspack) - ("sdl" ,sdl) - ("unixodbc" ,unixodbc))) - (arguments - `(#:configure-flags - '("--enable-unicode" "--with-regex=sys" "--with-sdl") - #:make-flags - (list (string-append "LDFLAGS=-Wl,-rpath=" - (assoc-ref %outputs "out") "/lib")) - ;; No 'check' target. - #:tests? #f)))) - (define-public wxwidgets-gtk2 (package (inherit wxwidgets) (inputs `(("gtk+" ,gtk+-2) diff --git a/gnu/services/base.scm b/gnu/services/base.scm index dad1911d31..77efef15eb 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -31,6 +31,8 @@ #:use-module (gnu system shadow) ; 'user-account', etc. #:use-module (gnu system file-systems) ; 'file-system', etc. #:use-module (gnu system mapped-devices) + #:use-module ((gnu system linux-initrd) + #:select (file-system-packages)) #:use-module (gnu packages admin) #:use-module ((gnu packages linux) #:select (alsa-utils crda eudev e2fsprogs fuse gpm kbd lvm2 rng-tools)) diff --git a/gnu/services/ssh.scm b/gnu/services/ssh.scm index d8a3ad35ad..b7f9887b30 100644 --- a/gnu/services/ssh.scm +++ b/gnu/services/ssh.scm @@ -260,28 +260,42 @@ The other options should be self-descriptive." (define-record-type* <openssh-configuration> openssh-configuration make-openssh-configuration openssh-configuration? - (openssh openssh-configuration-openssh ;package + ;; <package> + (openssh openssh-configuration-openssh (default openssh)) + ;; string (pid-file openssh-configuration-pid-file (default "/var/run/sshd.pid")) - (port-number openssh-configuration-port-number ;integer + ;; integer + (port-number openssh-configuration-port-number (default 22)) - (permit-root-login openssh-configuration-permit-root-login ;Boolean | 'without-password + ;; Boolean | 'without-password + (permit-root-login openssh-configuration-permit-root-login (default #f)) - (allow-empty-passwords? openssh-configuration-allow-empty-passwords? ;Boolean + ;; Boolean + (allow-empty-passwords? openssh-configuration-allow-empty-passwords? (default #f)) - (password-authentication? openssh-configuration-password-authentication? ;Boolean + ;; Boolean + (password-authentication? openssh-configuration-password-authentication? (default #t)) + ;; Boolean (public-key-authentication? openssh-configuration-public-key-authentication? - (default #t)) ;Boolean - (x11-forwarding? openssh-configuration-x11-forwarding? ;Boolean + (default #t)) + ;; Boolean + (x11-forwarding? openssh-configuration-x11-forwarding? (default #f)) + ;; Boolean (challenge-response-authentication? openssh-challenge-response-authentication? - (default #f)) ;Boolean + (default #f)) + ;; Boolean (use-pam? openssh-configuration-use-pam? - (default #t)) ;Boolean + (default #t)) + ;; Boolean (print-last-log? openssh-configuration-print-last-log? - (default #t))) ;Boolean + (default #t)) + ;; list of two-element lists + (subsystems openssh-configuration-subsystems + (default '(("sftp" "internal-sftp"))))) (define %openssh-accounts (list (user-group (name "sshd") (system? #t)) @@ -316,40 +330,48 @@ The other options should be self-descriptive." "Return the sshd configuration file corresponding to CONFIG." (computed-file "sshd_config" - #~(call-with-output-file #$output - (lambda (port) - (display "# Generated by 'openssh-service'.\n" port) - (format port "Port ~a\n" - #$(number->string (openssh-configuration-port-number config))) - (format port "PermitRootLogin ~a\n" - #$(match (openssh-configuration-permit-root-login config) - (#t "yes") - (#f "no") - ('without-password "without-password"))) - (format port "PermitEmptyPasswords ~a\n" - #$(if (openssh-configuration-allow-empty-passwords? config) - "yes" "no")) - (format port "PasswordAuthentication ~a\n" - #$(if (openssh-configuration-password-authentication? config) - "yes" "no")) - (format port "PubkeyAuthentication ~a\n" - #$(if (openssh-configuration-public-key-authentication? config) - "yes" "no")) - (format port "X11Forwarding ~a\n" - #$(if (openssh-configuration-x11-forwarding? config) - "yes" "no")) - (format port "PidFile ~a\n" - #$(openssh-configuration-pid-file config)) - (format port "ChallengeResponseAuthentication ~a\n" - #$(if (openssh-challenge-response-authentication? config) - "yes" "no")) - (format port "UsePAM ~a\n" - #$(if (openssh-configuration-use-pam? config) - "yes" "no")) - (format port "PrintLastLog ~a\n" - #$(if (openssh-configuration-print-last-log? config) - "yes" "no")) - #t)))) + #~(begin + (use-modules (ice-9 match)) + (call-with-output-file #$output + (lambda (port) + (display "# Generated by 'openssh-service'.\n" port) + (format port "Port ~a\n" + #$(number->string + (openssh-configuration-port-number config))) + (format port "PermitRootLogin ~a\n" + #$(match (openssh-configuration-permit-root-login config) + (#t "yes") + (#f "no") + ('without-password "without-password"))) + (format port "PermitEmptyPasswords ~a\n" + #$(if (openssh-configuration-allow-empty-passwords? config) + "yes" "no")) + (format port "PasswordAuthentication ~a\n" + #$(if (openssh-configuration-password-authentication? config) + "yes" "no")) + (format port "PubkeyAuthentication ~a\n" + #$(if (openssh-configuration-public-key-authentication? + config) + "yes" "no")) + (format port "X11Forwarding ~a\n" + #$(if (openssh-configuration-x11-forwarding? config) + "yes" "no")) + (format port "PidFile ~a\n" + #$(openssh-configuration-pid-file config)) + (format port "ChallengeResponseAuthentication ~a\n" + #$(if (openssh-challenge-response-authentication? config) + "yes" "no")) + (format port "UsePAM ~a\n" + #$(if (openssh-configuration-use-pam? config) + "yes" "no")) + (format port "PrintLastLog ~a\n" + #$(if (openssh-configuration-print-last-log? config) + "yes" "no")) + (for-each + (match-lambda + ((name command) (format port "Subsystem\t~a\t~a\n" name command))) + '#$(openssh-configuration-subsystems config)) + #t))))) (define (openssh-shepherd-service config) "Return a <shepherd-service> for openssh with CONFIG." diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm index 8107722c74..bbac23fbdf 100644 --- a/gnu/system/file-systems.scm +++ b/gnu/system/file-systems.scm @@ -22,8 +22,6 @@ #:use-module (guix records) #:use-module ((gnu build file-systems) #:select (string->uuid uuid->string)) - #:use-module (gnu packages linux) - #:use-module (gnu packages disk) #:re-export (string->uuid uuid->string) #:export (<file-system> @@ -41,6 +39,8 @@ file-system-create-mount-point? file-system-dependencies + file-system-type-predicate + file-system->spec spec->file-system specification->file-system-mapping @@ -67,8 +67,6 @@ file-system-mapping->bind-mount - file-system-packages - %store-mapping %network-configuration-files %network-file-mappings)) @@ -77,6 +75,9 @@ ;;; ;;; Declaring file systems to be mounted. ;;; +;;; Note: this file system is used both in the Shepherd and on the "host +;;; side", so it must not include (gnu packages …) modules. +;;; ;;; Code: ;; File system declaration. @@ -416,25 +417,9 @@ a bind mount." %network-configuration-files)) (define (file-system-type-predicate type) + "Return a predicate that, when passed a file system, returns #t if that file +system has the given TYPE." (lambda (fs) (string=? (file-system-type fs) type))) -(define* (file-system-packages file-systems #:key (volatile-root? #f)) - `(,@(if (find (lambda (fs) - (string-prefix? "ext" (file-system-type fs))) - file-systems) - (list e2fsck/static) - '()) - ,@(if (find (lambda (fs) - (string-suffix? "fat" (file-system-type fs))) - file-systems) - (list fatfsck/static) - '()) - ,@(if (find (file-system-type-predicate "btrfs") file-systems) - (list btrfs-progs/static) - '()) - ,@(if volatile-root? - (list unionfs-fuse/static) - '()))) - ;;; file-systems.scm ends here diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm index 1f1c306828..dfe198e43e 100644 --- a/gnu/system/linux-initrd.scm +++ b/gnu/system/linux-initrd.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> @@ -43,6 +43,7 @@ #:use-module (srfi srfi-26) #:export (expression->initrd raw-initrd + file-system-packages base-initrd)) @@ -199,6 +200,26 @@ to it are lost." #:volatile-root? '#$volatile-root?))) #:name "raw-initrd"))) +(define* (file-system-packages file-systems #:key (volatile-root? #f)) + "Return the list of statically-linked, stripped packages to check +FILE-SYSTEMS." + `(,@(if (find (lambda (fs) + (string-prefix? "ext" (file-system-type fs))) + file-systems) + (list e2fsck/static) + '()) + ,@(if (find (lambda (fs) + (string-suffix? "fat" (file-system-type fs))) + file-systems) + (list fatfsck/static) + '()) + ,@(if (find (file-system-type-predicate "btrfs") file-systems) + (list btrfs-progs/static) + '()) + ,@(if volatile-root? + (list unionfs-fuse/static) + '()))) + (define* (base-initrd file-systems #:key (linux linux-libre) diff --git a/gnu/tests/ssh.scm b/gnu/tests/ssh.scm index 456476e69d..c1582c4737 100644 --- a/gnu/tests/ssh.scm +++ b/gnu/tests/ssh.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -54,10 +55,12 @@ (services (cons service (operating-system-user-services %base-os))))) -(define (run-ssh-test name ssh-service pid-file) +(define* (run-ssh-test name ssh-service pid-file #:key (sftp? #f)) "Run a test of an OS running SSH-SERVICE, which writes its PID to PID-FILE. SSH-SERVICE must be configured to listen on port 22 and to allow for root and -empty-password logins." +empty-password logins. + +When SFTP? is true, run an SFTP server test." (mlet* %store-monad ((os -> (marionette-operating-system (os-with-service ssh-service) #:imported-modules '((gnu services herd) @@ -80,7 +83,8 @@ empty-password logins." (ice-9 match) (ssh session) (ssh auth) - (ssh channel)) + (ssh channel) + (ssh sftp)) (define marionette ;; Enable TCP forwarding of the guest's port 22. @@ -101,6 +105,47 @@ empty-password logins." (error "file didn't show up" ,file)))) marionette)) + (define (make-session-for-test) + "Make a session with predefined parameters for a test." + (make-session #:user "root" + #:port 2222 + #:host "localhost" + #:log-verbosity 'protocol)) + + (define (call-with-connected-session proc) + "Call the one-argument procedure PROC with a freshly created and +connected SSH session object, return the result of the procedure call. The +session is disconnected when the PROC is finished." + (let ((session (make-session-for-test))) + (dynamic-wind + (lambda () + (let ((result (connect! session))) + (unless (equal? result 'ok) + (error "Could not connect to a server" + session result)))) + (lambda () (proc session)) + (lambda () (disconnect! session))))) + + (define (call-with-connected-session/auth proc) + "Make an authenticated session. We should be able to connect as +root with an empty password." + (call-with-connected-session + (lambda (session) + ;; Try the simple authentication methods. Dropbear requires + ;; 'none' when there are no passwords, whereas OpenSSH accepts + ;; 'password' with an empty password. + (let loop ((methods (list (cut userauth-password! <> "") + (cut userauth-none! <>)))) + (match methods + (() + (error "all the authentication methods failed")) + ((auth rest ...) + (match (pk 'auth (auth session)) + ('success + (proc session)) + ('denied + (loop rest))))))))) + (mkdir #$output) (chdir #$output) @@ -131,37 +176,34 @@ empty-password logins." (current-services)))) marionette)) - ;; Connect to the guest over SSH. We should be able to connect as - ;; "root" with an empty password. Make sure we can run a shell + ;; Connect to the guest over SSH. Make sure we can run a shell ;; command there. - (test-equal "connect" + (test-equal "shell command" + 'hello + (call-with-connected-session/auth + (lambda (session) + ;; FIXME: 'get-server-public-key' segfaults. + ;; (get-server-public-key session) + (let ((channel (make-channel session))) + (channel-open-session channel) + (channel-request-exec channel "echo hello > /root/witness") + (and (zero? (channel-get-exit-status channel)) + (wait-for-file "/root/witness")))))) + + ;; Connect to the guest over SFTP. Make sure we can write and + ;; read a file there. + (unless #$sftp? + (test-skip 1)) + (test-equal "SFTP file writing and reading" 'hello - (let* ((session (make-session #:user "root" - #:port 2222 #:host "localhost" - #:log-verbosity 'protocol))) - (match (connect! session) - ('ok - ;; Try the simple authentication methods. Dropbear - ;; requires 'none' when there are no passwords, whereas - ;; OpenSSH accepts 'password' with an empty password. - (let loop ((methods (list (cut userauth-password! <> "") - (cut userauth-none! <>)))) - (match methods - (() - (error "all the authentication methods failed")) - ((auth rest ...) - (match (pk 'auth (auth session)) - ('success - ;; FIXME: 'get-server-public-key' segfaults. - ;; (get-server-public-key session) - (let ((channel (make-channel session))) - (channel-open-session channel) - (channel-request-exec channel - "echo hello > /root/witness") - (and (zero? (channel-get-exit-status channel)) - (wait-for-file "/root/witness")))) - ('denied - (loop rest)))))))))) + (call-with-connected-session/auth + (lambda (session) + (let ((sftp-session (make-sftp-session session)) + (witness "/root/sftp-witness")) + (call-with-remote-output-file sftp-session witness + (cut display "hello" <>)) + (call-with-remote-input-file sftp-session witness + read))))) (test-end) (exit (= (test-runner-fail-count (test-runner-current)) 0))))) @@ -179,7 +221,8 @@ empty-password logins." (openssh-configuration (permit-root-login #t) (allow-empty-passwords? #t))) - "/var/run/sshd.pid")))) + "/var/run/sshd.pid" + #:sftp? #t)))) (define %test-dropbear (system-test diff --git a/guix/build/download.scm b/guix/build/download.scm index 36c815c167..c5dddf83de 100644 --- a/guix/build/download.scm +++ b/guix/build/download.scm @@ -241,7 +241,18 @@ and 'guix publish', something like (define* (ftp-fetch uri file #:key timeout) "Fetch data from URI and write it to FILE. Return FILE on success. Bail out if the connection could not be established in less than TIMEOUT seconds." - (let* ((conn (ftp-open (uri-host uri) #:timeout timeout)) + (let* ((userinfo (string-split (uri-userinfo uri) #\:)) + (conn (match userinfo + (("") + (ftp-open (uri-host uri) #:timeout timeout)) + (((? string? user)) + (ftp-open (uri-host uri) #:timeout timeout + #:username user)) + (((? string? user) (? string? pass)) + (ftp-open (uri-host uri) #:timeout timeout + #:username user + #:password pass)) + (_ (ftp-open (uri-host uri) #:timeout timeout)))) (size (false-if-exception (ftp-size conn (uri-path uri)))) (in (ftp-retr conn (basename (uri-path uri)) (dirname (uri-path uri))))) diff --git a/guix/download.scm b/guix/download.scm index dda18ff04d..3f9263d757 100644 --- a/guix/download.scm +++ b/guix/download.scm @@ -125,7 +125,6 @@ "http://vorboss.dl.sourceforge.net/project/" "http://netassist.dl.sourceforge.net/project/") (kernel.org - "http://www.all.kernel.org/pub/" "http://ramses.wh2.tu-dresden.de/pub/mirrors/kernel.org/" "http://linux-kernel.uio.no/pub/" "http://kernel.osuosl.org/pub/" diff --git a/guix/ftp-client.scm b/guix/ftp-client.scm index 0a179282ed..054a00ad7f 100644 --- a/guix/ftp-client.scm +++ b/guix/ftp-client.scm @@ -121,7 +121,10 @@ seconds to wait for the connection to succeed." (raise-error errno))))) (connect s sockaddr))) -(define* (ftp-open host #:optional (port "ftp") #:key timeout) +(define* (ftp-open host #:optional (port "ftp") + #:key timeout + (username "anonymous") + (password "guix@example.com")) "Open an FTP connection to HOST on PORT (a service-identifying string, or a TCP port number), and return it. @@ -156,7 +159,7 @@ TIMEOUT, an ETIMEDOUT error is raised." (if (eqv? code 220) (begin ;;(%ftp-command "OPTS UTF8 ON" 200 s) - (%ftp-login "anonymous" "guix@example.com" s) + (%ftp-login username password s) (%make-ftp-connection s ai)) (begin (close s) diff --git a/scripts/guix.in b/scripts/guix.in index 5d6921dd09..e20c274242 100644 --- a/scripts/guix.in +++ b/scripts/guix.in @@ -30,10 +30,12 @@ (define config-lookup (let ((config '(("prefix" . "@prefix@") + ("exec_prefix" . "@exec_prefix@") ("datarootdir" . "@datarootdir@") ("guilemoduledir" . "@guilemoduledir@") + ("guileobjectdir" . "@guileobjectdir@") ("localedir" . "@localedir@"))) - (var-ref-regexp (make-regexp "\\$\\{([a-z]+)\\}"))) + (var-ref-regexp (make-regexp "\\$\\{([a-z_]+)\\}"))) (define (expand-var-ref match) (lookup (match:substring match 1))) (define (expand str) @@ -45,14 +47,17 @@ (define (maybe-augment-load-paths!) (unless (getenv "GUIX_UNINSTALLED") - (let ((module-dir (config-lookup "guilemoduledir"))) + (let ((module-dir (config-lookup "guilemoduledir")) + (object-dir (config-lookup "guileobjectdir"))) (push! module-dir %load-path) - (push! module-dir %load-compiled-path)) + (push! object-dir %load-compiled-path)) (let ((updates-dir (and=> (or (getenv "XDG_CONFIG_HOME") (and=> (getenv "HOME") (cut string-append <> "/.config"))) (cut string-append <> "/guix/latest")))) (when (and updates-dir (file-exists? updates-dir)) + ;; XXX: Currently 'guix pull' puts both .scm and .go files in + ;; UPDATES-DIR. (push! updates-dir %load-path) (push! updates-dir %load-compiled-path))))) diff --git a/tests/file-systems.scm b/tests/file-systems.scm index 467ee8ca5d..12f4f09c57 100644 --- a/tests/file-systems.scm +++ b/tests/file-systems.scm @@ -20,8 +20,10 @@ #:use-module (guix store) #:use-module (guix modules) #:use-module (gnu system file-systems) + #:use-module (srfi srfi-1) #:use-module (srfi srfi-64) - #:use-module (rnrs bytevectors)) + #:use-module (rnrs bytevectors) + #:use-module (ice-9 match)) ;; Test the (gnu system file-systems) module. @@ -80,4 +82,12 @@ (not (member '(guix config) (source-module-closure '((gnu system file-systems)))))) +(test-equal "does not pull (gnu packages …)" + ;; Same story: (gnu packages …) should not be pulled. + #f + (find (match-lambda + (('gnu 'packages _ ..1) #t) + (_ #f)) + (source-module-closure '((gnu system file-systems))))) + (test-end) |