diff --git a/AUTHORS b/AUTHORS index fa1835b707..e2dafe0b34 100644 --- a/AUTHORS +++ b/AUTHORS @@ -35,5 +35,6 @@ alphabetical order): David Thompson Paul van der Walt Mark H. Weaver + Christopher A. Webber Andy Wingo Ricardo Wurmus diff --git a/THANKS b/THANKS index ff9714ebec..36c2a3ae1b 100644 --- a/THANKS +++ b/THANKS @@ -31,6 +31,7 @@ infrastructure help: Adam Pribyl Pjotr Prins rekado + Joshua Randall Bruno Félix Rezende Ribeiro Cyrill Schenkel Benno Schulenberg diff --git a/doc/guix.texi b/doc/guix.texi index 4269d4fa5f..dd6af80965 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -2187,7 +2187,7 @@ a derivation is the @code{derivation} procedure: @var{args} [#:outputs '("out")] [#:hash #f] [#:hash-algo #f] @ [#:recursive? #f] [#:inputs '()] [#:env-vars '()] @ [#:system (%current-system)] [#:references-graphs #f] @ - [#:allowed-references #f] [#:local-build? #f] + [#:allowed-references #f] [#:leaked-env-vars #f] [#:local-build? #f] Build a derivation with the given arguments, and return the resulting @code{} object. @@ -2206,6 +2206,13 @@ a simple text format. When @var{allowed-references} is true, it must be a list of store items or outputs that the derivation's output may refer to. +When @var{leaked-env-vars} is true, it must be a list of strings +denoting environment variables that are allowed to ``leak'' from the +daemon's environment to the build environment. This is only applicable +to fixed-output derivations---i.e., when @var{hash} is true. The main +use is to allow variables such as @code{http_proxy} to be passed to +derivations that download files. + When @var{local-build?} is true, declare that the derivation is not a good candidate for offloading and should rather be built locally (@pxref{Daemon Offload Setup}). This is the case for small derivations @@ -2728,6 +2735,7 @@ information about monads.) [#:recursive? #f] [#:env-vars '()] [#:modules '()] @ [#:module-path @var{%load-path}] @ [#:references-graphs #f] [#:allowed-references #f] @ + [#:leaked-env-vars #f] @ [#:local-build? #f] [#:guile-for-build #f] Return a derivation @var{name} that runs @var{exp} (a gexp) with @var{guile-for-build} (a derivation) on @var{system}. When @var{target} diff --git a/gnu-system.am b/gnu-system.am index 2692394519..26228fccfa 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -175,6 +175,7 @@ GNU_SYSTEM_MODULES = \ gnu/packages/libftdi.scm \ gnu/packages/libidn.scm \ gnu/packages/libphidget.scm \ + gnu/packages/libreoffice.scm \ gnu/packages/libsigsegv.scm \ gnu/packages/libunistring.scm \ gnu/packages/libusb.scm \ @@ -440,8 +441,6 @@ dist_patch_DATA = \ gnu/packages/patches/grep-CVE-2015-1345.patch \ gnu/packages/patches/grub-gets-undeclared.patch \ gnu/packages/patches/grub-freetype.patch \ - gnu/packages/patches/gstreamer-0.10-bison3.patch \ - gnu/packages/patches/gstreamer-0.10-silly-test.patch \ gnu/packages/patches/guile-1.8-cpp-4.5.patch \ gnu/packages/patches/guile-arm-fixes.patch \ gnu/packages/patches/guile-default-utf8.patch \ diff --git a/gnu/build/install.scm b/gnu/build/install.scm index f019fcb417..76536daf49 100644 --- a/gnu/build/install.scm +++ b/gnu/build/install.scm @@ -121,6 +121,7 @@ STORE." (directory "/bin") (directory "/tmp" 0 0 #o1777) ; sticky bit (directory "/var/tmp" 0 0 #o1777) + (directory "/var/lock" 0 0 #o1777) (directory "/root" 0 0) ; an exception (directory "/home" 0 0))) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index c5c1a77b2f..6cba704b6d 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -1156,6 +1156,73 @@ compression modes. This package contains command-line programs and library to encode and decode wavpack files.") (license license:bsd-3))) +(define-public libmodplug + (package + (name "libmodplug") + (version "0.8.8.5") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/project/modplug-xmms/" + name "/" version "/" name "-" version ".tar.gz")) + (sha256 + (base32 + "1bfsladg7h6vnii47dd66f5vh1ir7qv12mfb8n36qiwrxq92sikp")))) + (build-system gnu-build-system) + (home-page "http://modplug-xmms.sourceforge.net/") + (synopsis "Mod file playing library") + (description + "Libmodplug renders mod music files as raw audio data, for playing or +conversion. mod, .s3m, .it, .xm, and a number of lesser-known formats are +supported. Optional features include high-quality resampling, bass expansion, +surround and reverb.") + (license license:public-domain))) + +(define-public libxmp + (package + (name "libxmp") + (version "4.3.8") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/xmp/libxmp/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "0h06091hlpgc6ds4pjmfq8sx4snw7av3nhny180q4pwfyasjb6ny")))) + (build-system gnu-build-system) + (home-page "http://xmp.sourceforge.net/") + (synopsis "Module player library") + (description + "Libxmp is a library that renders module files to PCM data. It supports +over 90 mainstream and obscure module formats including Protracker (MOD), +Scream Tracker 3 (S3M), Fast Tracker II (XM), and Impulse Tracker (IT).") + (license license:lgpl2.1+))) + +(define-public xmp + (package + (name "xmp") + (version "4.0.10") + (source (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/xmp/xmp/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "0gjylvvmq7ha0nhcjg56qfp0xxpsrcsj7y5r914svd5x1ppmzm5n")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("libxmp" ,libxmp) + ("pulseaudio" ,pulseaudio))) + (home-page "http://xmp.sourceforge.net/") + (synopsis "Extended module player") + (description + "Xmp is a portable module player that plays over 90 mainstream and +obscure module formats, including Protracker MOD, Fasttracker II XM, Scream +Tracker 3 S3M and Impulse Tracker IT files.") + (license license:gpl2+))) + (define-public soundtouch (package (name "soundtouch") diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index ccfda627f3..bcb7eba48f 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -623,15 +623,20 @@ results. The FASTX-Toolkit tools perform some of these preprocessing tasks.") "13jaykc3y1x8y5nn9j8ljnb79s5y51kyxz46hdmvvjj6qhyympmf")))) (build-system cmake-build-system) (arguments - `(;; There is no test target, although there is a directory containing - ;; test data and scripts (launched by flexbar_validate.sh). - #:tests? #f - #:configure-flags (list + `(#:configure-flags (list (string-append "-DFLEXBAR_BINARY_DIR=" (assoc-ref %outputs "out") "/bin/")) #:phases - (alist-delete 'install %standard-phases))) + (alist-replace + 'check + (lambda* (#:key outputs #:allow-other-keys) + (setenv "PATH" (string-append + (assoc-ref outputs "out") "/bin:" + (getenv "PATH"))) + (chdir "../flexbar_v2.5_src/test") + (zero? (system* "bash" "flexbar_validate.sh"))) + (alist-delete 'install %standard-phases)))) (inputs `(("tbb" ,tbb) ("zlib" ,zlib))) diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index 0e6a1d5b89..219176722a 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -25,7 +25,15 @@ #:use-module (guix build-system gnu) #:use-module (gnu packages) #:use-module (gnu packages qt) - #:use-module (gnu packages compression)) + #:use-module (gnu packages compression) + #:use-module (gnu packages zip) + #:use-module (gnu packages gl) + #:use-module (gnu packages linux) + #:use-module (gnu packages xorg) + #:use-module (gnu packages fontutils) + #:use-module (gnu packages image) + #:use-module (gnu packages audio) + #:use-module (gnu packages pulseaudio)) (define-public bullet (package @@ -85,3 +93,37 @@ clone.") ;; As noted in 'COPYING', part of it is under GPLv2+, while the rest is ;; under BSD-2. (license license:gpl2+))) + +(define-public sfml + (package + (name "sfml") + (version "2.2") + (source (origin + (method url-fetch) + (uri (string-append "http://mirror0.sfml-dev.org/files/SFML-" + version "-sources.zip")) + (sha256 + (base32 + "1xhkvgyfbhqsjdmfbxvk729kdrzh7kdyagxa3bvpzi6z43mh1frd")))) + (build-system cmake-build-system) + (arguments + '(#:tests? #f)) ; no tests + (native-inputs + `(("unzip" ,unzip))) + (inputs + `(("mesa" ,mesa) + ("glew" ,glew) + ("libx11" ,libx11) + ("libxrandr" ,libxrandr) + ("eudev" ,eudev) + ("freetype" ,freetype) + ("libjpeg" ,libjpeg) + ("libsndfile" ,libsndfile) + ("openal" ,openal))) + (home-page "http://www.sfml-dev.org") + (synopsis "Simple and Fast Multimedia Library") + (description + "SFML provides a simple interface to the various computer components, +to ease the development of games and multimedia applications. It is composed +of five modules: system, window, graphics, audio and network.") + (license license:zlib))) diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 192d0db397..d86e151a85 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -9,6 +9,7 @@ ;;; Copyright © 2014 Mark H Weaver ;;; Copyright © 2015 Andreas Enge ;;; Copyright © 2015 David Hashe +;;; Copyright © 2015 Christopher Allan Webber ;;; ;;; This file is part of GNU Guix. ;;; @@ -42,6 +43,7 @@ #:use-module (gnu packages gtk) #:use-module (gnu packages guile) #:use-module (gnu packages libcanberra) + #:use-module (gnu packages libunwind) #:use-module (gnu packages image) #:use-module (gnu packages ncurses) #:use-module (gnu packages python) @@ -65,6 +67,7 @@ #:use-module (gnu packages lua) #:use-module (gnu packages video) #:use-module (gnu packages xml) + #:use-module (gnu packages tcl) #:use-module (guix build-system trivial) #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) @@ -822,3 +825,57 @@ interfaces or even in Emacs. It supports the standard game storage format Modem Protocol).") (home-page "http://www.gnu.org/software/gnugo/") (license license:gpl3+))) + +(define-public extremetuxracer + (package + (name "extremetuxracer") + (version "0.6.0") + (source (origin + (method url-fetch) + (uri (string-append + "http://downloads.sourceforge.net/project/extremetuxracer/releases/" + version "/etr-" version ".tar.xz")) + (sha256 + (base32 + "0fl9pwkywqnsmgr6plfj9zb05xrdnl5xb2hcmbjk7ap9l4cjfca4")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("freetype" ,freetype) + ("mesa" ,mesa) + ("glu" ,glu) + ("libice" ,libice) + ("libpng" ,libpng) + ("sdl" ,sdl) + ("sdl-mixer" ,sdl-mixer) + ("sdl-image" ,sdl-image) + ("libsm" ,libsm) + ("libunwind" ,libunwind) + ("libx11" ,libx11) + ("libxext" ,libxext) + ("libxi" ,libxi) + ("libxmu" ,libxmu) + ("libxt" ,libxt) + ("tcl" ,tcl) + ("zlib" ,zlib))) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'configure 'patch-makefile + (lambda _ + (substitute* "Makefile" + (("CXXFLAGS =") "CXXFLAGS = ${CFLAGS}"))))))) + (synopsis "High speed arctic racing game based on Tux Racer") + ;; Snarfed straight from Debian + (description "Extreme Tux Racer, or etracer as it is called for short, is +a simple OpenGL racing game featuring Tux, the Linux mascot. The goal of the +game is to slide down a snow- and ice-covered mountain as quickly as possible, +avoiding the trees and rocks that will slow you down. + +Collect herrings and other goodies while sliding down the hill, but avoid fish +bones. + +This game is based on the GPL version of the famous game TuxRacer.") + (home-page "http://sourceforge.net/projects/extremetuxracer/") + (license license:gpl2+))) diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm index b882208d76..03aecdfa53 100644 --- a/gnu/packages/gstreamer.scm +++ b/gnu/packages/gstreamer.scm @@ -124,32 +124,6 @@ simple plugin with a clean, generic interface. This package provides the core library and elements.") (license lgpl2.0+))) -(define-public gstreamer-0.10 - (package (inherit gstreamer) - (version "0.10.36") - (source - (origin - (method url-fetch) - (uri (string-append "http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-" - version ".tar.xz")) - (sha256 - (base32 - "1nkid1n2l3rrlmq5qrf5yy06grrkwjh3yxl5g0w58w0pih8allci")) - (patches - (list (search-patch "gstreamer-0.10-bison3.patch") - (search-patch "gstreamer-0.10-silly-test.patch"))))) - (propagated-inputs - `(("libxml2" ,libxml2))) - (inputs `(("glib" ,glib))) - (native-inputs - `(("bison" ,bison) - ("flex" ,flex) - ("perl" ,perl) - ("pkg-config" ,pkg-config) - ("glib" ,glib "bin") - ("python" ,python-2))))) - - (define-public gst-plugins-base (package (name "gst-plugins-base") @@ -288,23 +262,3 @@ developers consider to have good quality code and correct functionality.") "This GStreamer plugin supports a large number of audio and video compression formats through the use of the libav library.") (license gpl2+))) - -(define-public gst-plugins-base-0.10 - (package (inherit gst-plugins-base) - (version "0.10.36") - (source - (origin - (method url-fetch) - (uri (string-append - "http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-" - version ".tar.xz")) - (sha256 - (base32 - "0jp6hjlra98cnkal4n6bdmr577q8mcyp3c08s3a02c4hjhw5rr0z")))) - (inputs - `(("glib" ,glib) - ("gstreamer" ,gstreamer-0.10))) - (native-inputs - `(("pkg-config" ,pkg-config) - ("glib" ,glib "bin") - ("python" ,python-2))))) diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index c605533fd2..751002f54c 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès ;;; Copyright © 2014, 2015 Mark H Weaver +;;; Copyright © 2015 Christopher Allan Webber ;;; ;;; This file is part of GNU Guix. ;;; @@ -36,7 +37,9 @@ #:use-module (gnu packages base) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix build-system gnu) + #:use-module (guix build-system trivial) #:use-module (guix utils) #:use-module (ice-9 match)) @@ -358,4 +361,79 @@ http:://json.org specification. These are the main features: - Allows JSON pretty printing.") (license lgpl3+))) +(define-public guile-minikanren + (package + (name "guile-minikanren") + (version "20150424.e844d85") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ijp/minikanren.git") + (commit "e844d85512f8c055d3f96143ee506007389a25e3"))) + (sha256 + (base32 + "0r50jlpzi940jlmxyy3ddqqwmj5r12gb4bcv0ssini9v8km13xz6")))) + (build-system trivial-build-system) + (arguments + `(#:modules + ((guix build utils) + (ice-9 match)) + #:builder + (begin + (use-modules (guix build utils) + (ice-9 match)) + (let* ((out (assoc-ref %outputs "out")) + (module-dir (string-append out "/share/guile/site/2.0")) + (source (assoc-ref %build-inputs "source")) + (doc (string-append out "/share/doc")) + (scm-files '("minikanren.scm" + "minikanren/mkextraforms.scm" + "minikanren/mkprelude.scm" + "minikanren/mk.scm")) + (guild (string-append (assoc-ref %build-inputs "guile") + "/bin/guild"))) + ;; Make installation directories. + (mkdir-p (string-append module-dir "/minikanren")) + (mkdir-p doc) + + ;; Compile .scm files and install. + (chdir source) + (setenv "GUILE_AUTO_COMPILE" "0") + (for-each (lambda (file) + (let* ((dest-file (string-append module-dir "/" + file ".scm")) + (go-file (match (string-split file #\.) + ((base _) + (string-append module-dir "/" + base ".go"))))) + ;; Install source module. + (copy-file file dest-file) + ;; Install compiled module. + (unless (zero? (system* guild "compile" + "-L" source + "-o" go-file + file)) + (error (format #f "Failed to compile ~s to ~s!" + file go-file))))) + scm-files) + + ;; Also copy over the README. + (copy-file "README.org" (string-append doc "/README.org")) + #t)))) + (inputs + `(("guile" ,guile-2.0))) + (home-page "https://github.com/ijp/minikanren") + (synopsis "miniKanren declarative logic system, packaged for Guile") + (description + "MiniKanren is a relational programming extension to the Scheme +programming Language, written as a smaller version of Kanren suitable for +pedagogical purposes. It is featured in the book, The Reasoned Schemer, +written by Dan Friedman, William Byrd, and Oleg Kiselyov. + +This is Ian Price's r6rs packaged version of miniKranen, which deviates +slightly from miniKanren mainline. + +See http://minikanren.org/ for more on miniKanren generally.") + (license expat))) + ;;; guile.scm ends here diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index ece0e8c54a..c24ec99375 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2015 Andreas Enge ;;; Copyright © 2014, 2015 Mark H Weaver -;;; Copyright © 2014 Alex Kost +;;; Copyright © 2014, 2015 Alex Kost ;;; Copyright © 2014 Ricardo Wurmus ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer ;;; Copyright © 2014 John Darrington @@ -384,25 +384,16 @@ compose, and analyze GIF images.") (define-public imlib2 (package (name "imlib2") - (version "1.4.6") + (version "1.4.7") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/enlightenment/imlib2-" - version ".tar.gz")) + version ".tar.bz2")) (sha256 (base32 - "0kjggg4gfn6chi8v1xddd5qwk1fbnl7rvd93qiclv5v11s615k0p")))) + "00a7jbwj10x3jcvxa5rplnkvhv35gv9rb400zy636zdd4g737mrm")))) (build-system gnu-build-system) - (arguments - '(;; Will be fixed in the next release: - ;; . - #:phases (alist-cons-before - 'configure 'patch-config - (lambda _ - (substitute* "imlib2-config.in" - (("@my_libs@") ""))) - %standard-phases))) (native-inputs `(("pkgconfig" ,pkg-config))) (inputs diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index a77d1716bc..26fc3eccf5 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -20,6 +20,7 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (gnu packages) #:use-module (gnu packages attr) @@ -46,7 +47,8 @@ #:use-module (gnu packages xml) #:use-module (gnu packages xorg) #:use-module (gnu packages zip) - #:use-module (gnu packages texinfo)) + #:use-module (gnu packages texinfo) + #:use-module ((srfi srfi-1) #:select (fold alist-delete))) (define-public swt (package @@ -397,7 +399,7 @@ build process and its dependencies, whereas Make uses Makefile format.") (setenv "PATH" (string-append antpath "/bin:" (getenv "PATH"))))) (alist-cons-before - 'check 'fix-tests + 'check 'fix-test-framework (lambda _ ;; Fix PATH in test environment (substitute* "src/jtreg/com/sun/javatest/regtest/Main.java" @@ -405,109 +407,114 @@ build process and its dependencies, whereas Make uses Makefile format.") (string-append "PATH=" (getenv "PATH")))) (substitute* "src/jtreg/com/sun/javatest/util/SysEnv.java" (("/usr/bin/env") (which "env"))) - - ;; Hotspot tests - (with-directory-excursion "openjdk/hotspot/test/" - (substitute* "jprt.config" - (("PATH=\"\\$\\{path4sdk\\}\"") - (string-append "PATH=" (getenv "PATH"))) - (("make=/usr/bin/make") - (string-append "make=" (which "make")))) - (substitute* '("runtime/6626217/Test6626217.sh" - "runtime/7110720/Test7110720.sh") - (("/bin/rm") (which "rm")) - (("/bin/cp") (which "cp")) - (("/bin/mv") (which "mv")))) - - ;; JDK tests - (with-directory-excursion "openjdk/jdk/test/" - (substitute* "com/sun/jdi/JdbReadTwiceTest.sh" - (("/bin/pwd") (which "pwd"))) - (substitute* "com/sun/jdi/ShellScaffold.sh" - (("/bin/kill") (which "kill"))) - (substitute* "start-Xvfb.sh" - ;(("/usr/bin/X11/Xvfb") (which "Xvfb")) - (("/usr/bin/nohup") (which "nohup"))) - (substitute* "javax/security/auth/Subject/doAs/Test.sh" - (("/bin/rm") (which "rm"))) - (substitute* "tools/launcher/MultipleJRE.sh" - (("echo \"#!/bin/sh\"") - (string-append "echo \"#!" (which "rm") "\"")) - (("/usr/bin/zip") (which "zip"))) - (substitute* "com/sun/jdi/OnThrowTest.java" - (("#!/bin/sh") (string-append "#!" (which "sh")))) - (substitute* "java/lang/management/OperatingSystemMXBean/GetSystemLoadAverage.java" - (("/usr/bin/uptime") (which "uptime"))) - (substitute* "java/lang/ProcessBuilder/Basic.java" - (("/usr/bin/env") (which "env")) - (("/bin/false") (which "false")) - (("/bin/true") (which "true")) - (("/bin/cp") (which "cp")) - (("/bin/sh") (which "sh"))) - (substitute* "java/lang/ProcessBuilder/FeelingLucky.java" - (("/bin/sh") (which "sh"))) - (substitute* "java/lang/ProcessBuilder/Zombies.java" - (("/usr/bin/perl") (which "perl")) - (("/bin/ps") (which "ps")) - (("/bin/true") (which "true"))) - (substitute* "java/lang/Runtime/exec/ConcurrentRead.java" - (("/usr/bin/tee") (which "tee"))) - (substitute* "java/lang/Runtime/exec/ExecWithDir.java" - (("/bin/true") (which "true"))) - (substitute* "java/lang/Runtime/exec/ExecWithInput.java" - (("/bin/cat") (which "cat"))) - (substitute* "java/lang/Runtime/exec/ExitValue.java" - (("/bin/sh") (which "sh")) - (("/bin/true") (which "true")) - (("/bin/kill") (which "kill"))) - (substitute* "java/lang/Runtime/exec/LotsOfDestroys.java" - (("/usr/bin/echo") (which "echo"))) - (substitute* "java/lang/Runtime/exec/LotsOfOutput.java" - (("/usr/bin/cat") (which "cat"))) - (substitute* "java/lang/Runtime/exec/SleepyCat.java" - (("/bin/cat") (which "cat")) - (("/bin/sleep") (which "sleep")) - (("/bin/sh") (which "sh"))) - (substitute* "java/lang/Runtime/exec/StreamsSurviveDestroy.java" - (("/bin/cat") (which "cat"))) - (substitute* "java/rmi/activation/CommandEnvironment/SetChildEnv.java" - (("/bin/chmod") (which "chmod"))) - (substitute* "java/util/zip/ZipFile/Assortment.java" - (("/bin/sh") (which "sh"))))) - (alist-replace - 'check + #t) + (alist-cons-before + 'check 'fix-hotspot-tests (lambda _ - ;; The "make check-*" targets always return zero, so we need to - ;; check for errors in the associated log files to determine - ;; whether any tests have failed. - (use-modules (ice-9 rdelim)) - (let* ((error-pattern (make-regexp "^(Error|FAILED):.*")) - (checker (lambda (port) - (let loop () - (let ((line (read-line port))) - (cond - ((eof-object? line) #t) - ((regexp-exec error-pattern line) #f) - (else (loop))))))) - (run-test (lambda (test) - (system* "make" test) - (call-with-input-file - (string-append "test/" test ".log") - checker)))) - (or #t ; skip tests - (and (run-test "check-hotspot") - (run-test "check-langtools") - (run-test "check-jdk"))))) - (alist-replace - 'install - (lambda* (#:key outputs #:allow-other-keys) - (let ((doc (string-append (assoc-ref outputs "doc") "/share/doc/" ,name)) - (jre (assoc-ref outputs "out")) - (jdk (assoc-ref outputs "jdk"))) - (copy-recursively "openjdk.build/docs" doc) - (copy-recursively "openjdk.build/j2re-image" jre) - (copy-recursively "openjdk.build/j2sdk-image" jdk))) - %standard-phases))))))))) + (with-directory-excursion "openjdk/hotspot/test/" + (substitute* "jprt.config" + (("PATH=\"\\$\\{path4sdk\\}\"") + (string-append "PATH=" (getenv "PATH"))) + (("make=/usr/bin/make") + (string-append "make=" (which "make")))) + (substitute* '("runtime/6626217/Test6626217.sh" + "runtime/7110720/Test7110720.sh") + (("/bin/rm") (which "rm")) + (("/bin/cp") (which "cp")) + (("/bin/mv") (which "mv")))) + #t) + (alist-cons-before + 'check 'fix-jdk-tests + (lambda _ + (with-directory-excursion "openjdk/jdk/test/" + (substitute* "com/sun/jdi/JdbReadTwiceTest.sh" + (("/bin/pwd") (which "pwd"))) + (substitute* "com/sun/jdi/ShellScaffold.sh" + (("/bin/kill") (which "kill"))) + (substitute* "start-Xvfb.sh" + ;;(("/usr/bin/X11/Xvfb") (which "Xvfb")) + (("/usr/bin/nohup") (which "nohup"))) + (substitute* "javax/security/auth/Subject/doAs/Test.sh" + (("/bin/rm") (which "rm"))) + (substitute* "tools/launcher/MultipleJRE.sh" + (("echo \"#!/bin/sh\"") + (string-append "echo \"#!" (which "rm") "\"")) + (("/usr/bin/zip") (which "zip"))) + (substitute* "com/sun/jdi/OnThrowTest.java" + (("#!/bin/sh") (string-append "#!" (which "sh")))) + (substitute* "java/lang/management/OperatingSystemMXBean/GetSystemLoadAverage.java" + (("/usr/bin/uptime") (which "uptime"))) + (substitute* "java/lang/ProcessBuilder/Basic.java" + (("/usr/bin/env") (which "env")) + (("/bin/false") (which "false")) + (("/bin/true") (which "true")) + (("/bin/cp") (which "cp")) + (("/bin/sh") (which "sh"))) + (substitute* "java/lang/ProcessBuilder/FeelingLucky.java" + (("/bin/sh") (which "sh"))) + (substitute* "java/lang/ProcessBuilder/Zombies.java" + (("/usr/bin/perl") (which "perl")) + (("/bin/ps") (which "ps")) + (("/bin/true") (which "true"))) + (substitute* "java/lang/Runtime/exec/ConcurrentRead.java" + (("/usr/bin/tee") (which "tee"))) + (substitute* "java/lang/Runtime/exec/ExecWithDir.java" + (("/bin/true") (which "true"))) + (substitute* "java/lang/Runtime/exec/ExecWithInput.java" + (("/bin/cat") (which "cat"))) + (substitute* "java/lang/Runtime/exec/ExitValue.java" + (("/bin/sh") (which "sh")) + (("/bin/true") (which "true")) + (("/bin/kill") (which "kill"))) + (substitute* "java/lang/Runtime/exec/LotsOfDestroys.java" + (("/usr/bin/echo") (which "echo"))) + (substitute* "java/lang/Runtime/exec/LotsOfOutput.java" + (("/usr/bin/cat") (which "cat"))) + (substitute* "java/lang/Runtime/exec/SleepyCat.java" + (("/bin/cat") (which "cat")) + (("/bin/sleep") (which "sleep")) + (("/bin/sh") (which "sh"))) + (substitute* "java/lang/Runtime/exec/StreamsSurviveDestroy.java" + (("/bin/cat") (which "cat"))) + (substitute* "java/rmi/activation/CommandEnvironment/SetChildEnv.java" + (("/bin/chmod") (which "chmod"))) + (substitute* "java/util/zip/ZipFile/Assortment.java" + (("/bin/sh") (which "sh")))) + #t) + (alist-replace + 'check + (lambda _ + ;; The "make check-*" targets always return zero, so we need to + ;; check for errors in the associated log files to determine + ;; whether any tests have failed. + (use-modules (ice-9 rdelim)) + (let* ((error-pattern (make-regexp "^(Error|FAILED):.*")) + (checker (lambda (port) + (let loop () + (let ((line (read-line port))) + (cond + ((eof-object? line) #t) + ((regexp-exec error-pattern line) #f) + (else (loop))))))) + (run-test (lambda (test) + (system* "make" test) + (call-with-input-file + (string-append "test/" test ".log") + checker)))) + (or #t ; skip tests + (and (run-test "check-hotspot") + (run-test "check-langtools") + (run-test "check-jdk"))))) + (alist-replace + 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((doc (string-append (assoc-ref outputs "doc") "/share/doc/" ,name)) + (jre (assoc-ref outputs "out")) + (jdk (assoc-ref outputs "jdk"))) + (copy-recursively "openjdk.build/docs" doc) + (copy-recursively "openjdk.build/j2re-image" jre) + (copy-recursively "openjdk.build/j2sdk-image" jdk))) + %standard-phases))))))))))) (native-inputs `(("ant-bootstrap" ,(origin @@ -567,3 +574,174 @@ build process and its dependencies, whereas Make uses Makefile format.") ;; IcedTea is released under the GPL2 + Classpath exception, which is the ;; same license as both GNU Classpath and OpenJDK. (license license:gpl2+))) + +(define-public icedtea7 + (let* ((version "2.5.5") + (drop (lambda (name hash) + (origin + (method url-fetch) + (uri (string-append + "http://icedtea.classpath.org/download/drops/" + "/icedtea7/" version "/" name ".tar.bz2")) + (sha256 (base32 hash)))))) + (package (inherit icedtea6) + (name "icedtea7") + (version version) + (source (origin + (method url-fetch) + (uri (string-append + "http://icedtea.wildebeest.org/download/source/icedtea-" + version ".tar.xz")) + (sha256 + (base32 + "1irxk2ndwsfk4c1zbzb5h3rpwv2bc9bhfjvz6p4dws5476vsxrq9")) + (modules '((guix build utils))) + (snippet + '(substitute* "Makefile.in" + ;; do not leak information about the build host + (("DISTRIBUTION_ID=\"\\$\\(DIST_ID\\)\"") + "DISTRIBUTION_ID=\"\\\"guix\\\"\""))))) + (arguments + `(;; There are many test failures. Some are known to + ;; fail upstream, others relate to not having an X + ;; server running at test time, yet others are a + ;; complete mystery to me. + + ;; hotspot: passed: 241; failed: 45; error: 2 + ;; langtools: passed: 1,934; failed: 26 + ;; jdk: unknown + #:tests? #f + ;; Apparently, the C locale is needed for some of the tests. + #:locale "C" + ,@(substitute-keyword-arguments (package-arguments icedtea6) + ((#:configure-flags flags) + `(let ((jdk (assoc-ref %build-inputs "icedtea6")) + (ant (assoc-ref %build-inputs "ant"))) + `("--disable-bootstrap" + "--without-rhino" + "--enable-nss" + "--enable-system-lcms" + "--disable-downloading" + ,(string-append "--with-ant-home=" ant) + ,(string-append "--with-jdk-home=" jdk)))) + ((#:phases phases) + `(modify-phases ,phases + (replace + 'unpack + (lambda* (#:key source inputs #:allow-other-keys) + (let ((target (string-append "icedtea-" ,version)) + (unpack (lambda (drop dir) + (mkdir dir) + (zero? (system* "tar" "xvjf" + (assoc-ref inputs drop) + "-C" dir + "--strip-components=1"))))) + (and (zero? (system* "tar" "xvf" source)) + (chdir target) + (unpack "openjdk-drop" "openjdk") + (unpack "corba-drop" "openjdk/corba") + (unpack "jdk-drop" "openjdk/jdk") + (unpack "hotspot-drop" "openjdk/hotspot") + + ;; The build framework checks the tarballs, so we + ;; need to keep them around even though we have + ;; already unpacked some of them for patching. + (begin + (copy-file (assoc-ref inputs "openjdk-drop") + "openjdk.tar.bz2") + (copy-file (assoc-ref inputs "corba-drop") + "corba.tar.bz2") + (copy-file (assoc-ref inputs "hotspot-drop") + "hotspot.tar.bz2") + (copy-file (assoc-ref inputs "jaxp-drop") + "jaxp.tar.bz2") + (copy-file (assoc-ref inputs "jaxws-drop") + "jaxws.tar.bz2") + (copy-file (assoc-ref inputs "jdk-drop") + "jdk.tar.bz2") + (copy-file (assoc-ref inputs "langtools-drop") + "langtools.tar.bz2") + #t))))) + (replace + 'set-additional-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "openjdk/jdk/make/common/shared/Sanity.gmk" + (("ALSA_INCLUDE=/usr/include/alsa/version.h") + (string-append "ALSA_INCLUDE=" + (assoc-ref inputs "alsa-lib") + "/include/alsa/version.h"))) + (setenv "CC" "gcc") + (setenv "CPATH" + (string-append (assoc-ref inputs "libxrender") + "/include/X11/extensions" ":" + (assoc-ref inputs "libxtst") + "/include/X11/extensions" ":" + (assoc-ref inputs "libxinerama") + "/include/X11/extensions" ":" + (or (getenv "CPATH") ""))) + (setenv "ALT_OBJCOPY" (which "objcopy")) + (setenv "ALT_CUPS_HEADERS_PATH" + (string-append (assoc-ref inputs "cups") + "/include")) + (setenv "ALT_FREETYPE_HEADERS_PATH" + (string-append (assoc-ref inputs "freetype") + "/include")) + (setenv "ALT_FREETYPE_LIB_PATH" + (string-append (assoc-ref inputs "freetype") + "/lib")))) + (add-after + 'unpack 'fix-x11-extension-include-path + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "openjdk/jdk/make/sun/awt/mawt.gmk" + (((string-append "\\$\\(firstword \\$\\(wildcard " + "\\$\\(OPENWIN_HOME\\)" + "/include/X11/extensions\\).*$")) + (string-append (assoc-ref inputs "libxrender") + "/include/X11/extensions" + " -I" (assoc-ref inputs "libxtst") + "/include/X11/extensions" + " -I" (assoc-ref inputs "libxinerama") + "/include/X11/extensions")) + (("\\$\\(wildcard /usr/include/X11/extensions\\)\\)") "")) + #t)) + (replace + 'fix-test-framework + (lambda _ + ;; Fix PATH in test environment + (substitute* "test/jtreg/com/sun/javatest/regtest/Main.java" + (("PATH=/bin:/usr/bin") + (string-append "PATH=" (getenv "PATH")))) + (substitute* "test/jtreg/com/sun/javatest/util/SysEnv.java" + (("/usr/bin/env") (which "env"))) + (substitute* "openjdk/hotspot/test/test_env.sh" + (("/bin/rm") (which "rm")) + (("/bin/cp") (which "cp")) + (("/bin/mv") (which "mv"))) + #t)) + (delete 'patch-patches)))))) + (native-inputs + `(("ant" ,ant) + ("icedtea6" ,icedtea6 "jdk") + ("openjdk-drop" + ,(drop "openjdk" + "03gxqn17cxwl1nspnwigacaqd28p02d45f396j5f4kkbzfnbl0ak")) + ("corba-drop" + ,(drop "corba" + "0ldcckknn2f92jv1144cnn0z3wmvxln28wc00rc6xxblnjcnamzh")) + ("jaxp-drop" + ,(drop "jaxp" + "0mnjdziffcnyqlyvf8dw1hrl4kiiwmh8ia0ym417wgvnjpaihci9")) + ("jaxws-drop" + ,(drop "jaxws" + "1gkmypnhygx2mxhca3ngy620k993wi2cc1wysc0np06y1rkx1mkn")) + ("jdk-drop" + ,(drop "jdk" + "10x43mqjfn43jlckic0nyf7apyyjyr910cdmmvy41kvw8ljhvg61")) + ("langtools-drop" + ,(drop "langtools" + "0q5nqc14r6vmhxgikw3wgdcc0r9symp830v13isnv8qdjgm6kcki")) + ("hotspot-drop" + ,(drop "hotspot" + "1yqxfd2jwbm5y41wscyfx8h0fr3h8ny2g2mda5iwd8sikxsaj96p")) + ,@(fold alist-delete (package-native-inputs icedtea6) + '("openjdk6-src" "ant-bootstrap" "gcj"))))))) diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm new file mode 100644 index 0000000000..cbe1c75eeb --- /dev/null +++ b/gnu/packages/libreoffice.scm @@ -0,0 +1,81 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2015 Andreas Enge +;;; Copyright © 2014 John Darrington +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages libreoffice) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module ((guix licenses) #:select (mpl2.0)) + #:use-module (guix build-system gnu) + #:use-module (gnu packages boost) + #:use-module (gnu packages compression) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python)) + +(define-public ixion + (package + (name "ixion") + (version "0.9.1") + (source + (origin + (method url-fetch) + (uri (string-append "http://kohei.us/files/ixion/src/libixion-" + version ".tar.xz")) + (sha256 (base32 + "18g3nk29ljiqbyi0ml49j2x3f3xrqckdm9i66sw5fxnj7hb5rqvp")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("mdds" ,mdds) + ("python" ,python-2))) ; looks for python.pc, not python3.pc + (home-page "https://gitlab.com/ixion/ixion") + (synopsis "General purpose formula parser and interpreter") + (description "Ixion is a library for calculating the results of formula +expressions stored in multiple named targets, or \"cells\". The cells can +be referenced from each other, and the library takes care of resolving +their dependencies automatically upon calculation.") + (license mpl2.0))) + +(define-public orcus + (package + (name "orcus") + (version "0.7.1") + (source + (origin + (method url-fetch) + (uri (string-append "http://kohei.us/files/" name "/src/lib" + name "-" version ".tar.xz")) + (sha256 (base32 + "0hva4qalg3dk6n1118ncr5fy8cqnj2f7fwldw7aa04124rj6p104")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("ixion" ,ixion) + ("mdds" ,mdds) + ("zlib" ,zlib))) + (home-page "https://gitlab.com/orcus/orcus") + (synopsis "File import filter library for spreadsheet documents") + (description "Orcus is a library that provides a collection of standalone +file processing filters. It is currently focused on providing filters for +spreadsheet documents. The library includes import filters for +Microsoft Excel 2007 XML, Microsoft Excel 2003 XML, Open Document Spreadsheet, +Plain Text, Gnumeric XML, Generic XML. It also includes low-level parsers for +CSV, CSS and XML.") + (license mpl2.0))) diff --git a/gnu/packages/patches/gstreamer-0.10-bison3.patch b/gnu/packages/patches/gstreamer-0.10-bison3.patch deleted file mode 100644 index f6eb90cb02..0000000000 --- a/gnu/packages/patches/gstreamer-0.10-bison3.patch +++ /dev/null @@ -1,32 +0,0 @@ -See https://bugzilla.gnome.org/show_bug.cgi?id=706462 - -Subject: [PATCH] Make grammar.y work with Bison 3 - -YYLEX_PARAM is no longer supported in Bison 3. ---- - gst/parse/grammar.y | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/gst/parse/grammar.y b/gst/parse/grammar.y -index 8a9019c..f533389 100644 ---- a/gst/parse/grammar.y -+++ b/gst/parse/grammar.y -@@ -26,7 +26,6 @@ - */ - - #define YYERROR_VERBOSE 1 --#define YYLEX_PARAM scanner - - #define YYENABLE_NLS 0 - -@@ -659,6 +658,7 @@ static int yyerror (void *scanner, graph_t *graph, const char *s); - %right '.' - %left '!' '=' - -+%lex-param { void *scanner } - %parse-param { void *scanner } - %parse-param { graph_t *graph } - %pure-parser --- -1.8.3.4 - diff --git a/gnu/packages/patches/gstreamer-0.10-silly-test.patch b/gnu/packages/patches/gstreamer-0.10-silly-test.patch deleted file mode 100644 index 678dd7b122..0000000000 --- a/gnu/packages/patches/gstreamer-0.10-silly-test.patch +++ /dev/null @@ -1,14 +0,0 @@ -See http://lists.freedesktop.org/archives/gstreamer-bugs/2013-January/098461.html - -diff -ru gstreamer-0.10.36.orig/tests/check/Makefile.in gstreamer-0.10.36/tests/check/Makefile.in ---- gstreamer-0.10.36.orig/tests/check/Makefile.in 2012-02-20 23:48:29.000000000 +0100 -+++ gstreamer-0.10.36/tests/check/Makefile.in 2013-10-30 21:55:48.000000000 +0100 -@@ -42,7 +42,7 @@ - gst/gstbus$(EXEEXT) gst/gstcaps$(EXEEXT) $(am__EXEEXT_2) \ - gst/gstdatetime$(EXEEXT) gst/gstinfo$(EXEEXT) \ - gst/gstiterator$(EXEEXT) gst/gstmessage$(EXEEXT) \ -- gst/gstminiobject$(EXEEXT) gst/gstobject$(EXEEXT) \ -+ gst/gstminiobject$(EXEEXT) \ - gst/gstpad$(EXEEXT) gst/gstparamspecs$(EXEEXT) \ - gst/gstpoll$(EXEEXT) gst/gstsegment$(EXEEXT) \ - gst/gstsystemclock$(EXEEXT) gst/gstclock$(EXEEXT) \ diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 050c0de402..29b47f357c 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -301,6 +301,33 @@ etc. ") (define-public python2-babel (package-with-python2 python-babel)) +(define-public python2-backport-ssl-match-hostname + (package + (name "python2-backport-ssl-match-hostname") + (version "3.4.0.2") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/b/" + "backports.ssl_match_hostname/backports.ssl_match_hostname-" + version ".tar.gz")) + (sha256 + (base32 + "1bnn47ipvhy49n0m50v27lp4xj6sqdkdw676ypd7pawsn1zhwh87")))) + (build-system python-build-system) + (arguments `(#:python ,python-2)) + (inputs + `(("python2-setuptools" ,python2-setuptools))) + (home-page "https://pypi.python.org/pypi/backports.ssl_match_hostname") + (synopsis "Backport of ssl.match_hostname() function from Python 3.4") + (description + "This backport brings the ssl.match_hostname() function to users of +earlier versions of Python. The function checks the hostname in the +certificate returned by the server to which a connection has been established, +and verifies that it matches the intended target hostname.") + (license psfl))) + (define-public python-h5py (package (name "python-h5py") @@ -3509,6 +3536,41 @@ It is written entirely in Python.") (define-public python2-singledispatch (package-with-python2 python-singledispatch)) +(define-public python-tornado + (package + (name "python-tornado") + (version "4.1") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pypi.python.org/packages/source/t/tornado/" + "tornado-" version ".tar.gz")) + (sha256 + (base32 "0a12f00h277zbifibnj46wf14801f573irvf6hwkgja5vspd7awr")))) + (build-system python-build-system) + (inputs + `(("python-certifi" ,python-certifi))) + (native-inputs + `(("python-setuptools" ,python-setuptools))) + (home-page "https://pypi.python.org/pypi/tornado/4.1") + (synopsis "Python web framework and asynchronous networking library") + (description + "Tornado is a Python web framework and asynchronous networking library, +originally developed at FriendFeed. By using non-blocking network I/O, +Tornado can scale to tens of thousands of open connections, making it ideal +for long polling, WebSockets, and other applications that require a long-lived +connection to each user.") + (license asl2.0))) + +(define-public python2-tornado + (let ((tornado (package-with-python2 python-tornado))) + (package (inherit tornado) + (inputs + `(("python2-backport-ssl-match-hostname" + ,python2-backport-ssl-match-hostname) + ,@(package-inputs tornado)))))) + (define-public python-waf (package (name "python-waf") diff --git a/gnu/packages/tbb.scm b/gnu/packages/tbb.scm index 3c41141dc6..0e9db720aa 100644 --- a/gnu/packages/tbb.scm +++ b/gnu/packages/tbb.scm @@ -46,6 +46,8 @@ (build-system gnu-build-system) (arguments `(#:test-target "test" + #:make-flags (list (string-append "LDFLAGS=-Wl,-rpath=" + (assoc-ref %outputs "out") "/lib")) #:phases (alist-replace 'configure (lambda* (#:key outputs #:allow-other-keys) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 8868713ba1..c890d45d19 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -264,6 +264,27 @@ SMPTE 314M.") ("libxext" ,libxext) ("libxfixes" ,libxfixes) ("mesa" ,mesa))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before + 'build 'fix-dlopen-paths + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "va/drm/va_drm_auth_x11.c" + (("\"libva-x11\\.so\\.%d\"") + (string-append "\"" out "/lib/libva-x11.so.%d\""))))))) + ;; Most drivers are in mesa's $prefix/lib/dri, so use that. (Can be + ;; overridden at run-time via LIBVA_DRIVERS_PATH.) + #:configure-flags + (list (string-append "--with-drivers-path=" + (assoc-ref %build-inputs "mesa") "/lib/dri")) + ;; However, we can't write to mesa's store directory, so override the + ;; following make variable to install the dummy driver to libva's + ;; $prefix/lib/dri directory. + #:make-flags + (list (string-append "dummy_drv_video_ladir=" + (assoc-ref %outputs "out") "/lib/dri")))) (home-page "http://www.freedesktop.org/wiki/Software/vaapi/") (synopsis "Video acceleration library") (description "The main motivation for VA-API (Video Acceleration API) is @@ -275,14 +296,14 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") (define-public ffmpeg (package (name "ffmpeg") - (version "2.6") + (version "2.6.2") (source (origin (method url-fetch) (uri (string-append "http://www.ffmpeg.org/releases/ffmpeg-" version ".tar.bz2")) (sha256 (base32 - "14a7zp8pa1rvw6nr9l2rf57xr004n5kwkhn5lglybjnn1p68xhr3")))) + "1fi93zy98wmls7x3jpr2yvckk2ia6a1yyygwrfaxq95pd6h3m7l8")))) (build-system gnu-build-system) (inputs `(("fontconfig" ,fontconfig) @@ -299,7 +320,6 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") ("libvorbis" ,libvorbis) ("libvpx" ,libvpx) ("openal" ,openal) - ("patchelf" ,patchelf) ("pulseaudio" ,pulseaudio) ("soxr" ,soxr) ("speex" ,speex) @@ -316,12 +336,6 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") ("yasm" ,yasm))) (arguments `(#:test-target "fate" - #:modules ((guix build gnu-build-system) - (guix build utils) - (guix build rpath) - (srfi srfi-26)) - #:imported-modules (,@%gnu-build-system-modules - (guix build rpath)) #:phases (modify-phases %standard-phases (replace @@ -376,6 +390,9 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") (zero? (system* "./configure" (string-append "--prefix=" out) + ;; Add $libdir to the RUNPATH of all the binaries. + (string-append "--extra-ldflags=-Wl,-rpath=" + %output "/lib") "--enable-avresample" "--enable-gpl" ; enable optional gpl licensed parts "--enable-shared" @@ -417,17 +434,7 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).") (path (string-join (map dirname dso) ":"))) (format #t "setting LD_LIBRARY_PATH to ~s~%" path) (setenv "LD_LIBRARY_PATH" path) - #t))) - (add-after - 'strip 'add-lib-to-runpath - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (lib (string-append out "/lib"))) - ;; Add LIB to the RUNPATH of all the executables and libraries. - (with-directory-excursion out - (for-each (cut augment-rpath <> lib) - (append (find-files "bin" ".*") - (find-files "lib" "\\.so\\..*\\.")))))))))) + #t)))))) (home-page "http://www.ffmpeg.org/") (synopsis "Audio and video framework") (description "FFmpeg is a complete, cross-platform solution to record, @@ -710,7 +717,7 @@ several areas.") (define-public mpv (package (name "mpv") - (version "0.8.3") + (version "0.9.0") (source (origin (method url-fetch) (uri (string-append @@ -718,14 +725,14 @@ several areas.") ".tar.gz")) (sha256 (base32 - "1kw9hr957cxqgm2i94bgqc6sskm6bwhm0akzckilhs460b43h409")) + "08nx0g6ji2d90f5w62g327szhkb7id7jzwgf3x069rc5id1x3bx7")) (file-name (string-append name "-" version ".tar.gz")))) (build-system waf-build-system) (native-inputs `(("perl" ,perl) ("pkg-config" ,pkg-config) ("python-docutils" ,python-docutils))) - ;; Missing features: libguess, LIRC, Wayland, VDPAU, V4L2 + ;; Missing features: libguess, Wayland, VDPAU, V4L2 (inputs `(("alsa-lib" ,alsa-lib) ("enca" ,enca) diff --git a/guix/build/download.scm b/guix/build/download.scm index a3105ad41d..2e0b019d38 100644 --- a/guix/build/download.scm +++ b/guix/build/download.scm @@ -196,46 +196,31 @@ host name without trailing dot." record))) (define (open-connection-for-uri uri) - "Return an open input/output port for a connection to URI. + "Like 'open-socket-for-uri', but also handle HTTPS connections." + (define https? + (eq? 'https (uri-scheme uri))) -This is the same as Guile's `open-socket-for-uri', except that we always -use a numeric port argument, to avoid the need to go through libc's NSS, -which is not available during bootstrap." - (define addresses - (let ((port (or (uri-port uri) - (case (uri-scheme uri) - ((http) 80) ; /etc/services, not for me! - ((https) 443) - (else - (error "unsupported URI scheme" uri)))))) - (delete-duplicates (getaddrinfo (uri-host uri) - (number->string port) - AI_NUMERICSERV) - (lambda (ai1 ai2) - (equal? (addrinfo:addr ai1) - (addrinfo:addr ai2)))))) - - (let loop ((addresses addresses)) - (let* ((ai (car addresses)) - (s (with-fluids ((%default-port-encoding #f)) - ;; Restrict ourselves to TCP. - (socket (addrinfo:fam ai) SOCK_STREAM IPPROTO_IP)))) - (catch 'system-error - (lambda () - (connect s (addrinfo:addr ai)) - - ;; Buffer input and output on this port. - (setvbuf s _IOFBF %http-receive-buffer-size) - - (if (eq? 'https (uri-scheme uri)) - (tls-wrap s (uri-host uri)) - s)) - (lambda args - ;; Connection failed, so try one of the other addresses. - (close s) - (if (null? (cdr addresses)) - (apply throw args) - (loop (cdr addresses)))))))) + (let-syntax ((with-https-proxy + (syntax-rules () + ((_ exp) + ;; For HTTPS URIs, honor 'https_proxy', not 'http_proxy'. + ;; FIXME: Proxying is not supported for https. + (let ((thunk (lambda () exp))) + (if (and https? + (module-variable + (resolve-interface '(web client)) + 'current-http-proxy)) + (parameterize ((current-http-proxy #f)) + (when (getenv "https_proxy") + (format (current-error-port) + "warning: 'https_proxy' is ignored~%")) + (thunk)) + (thunk))))))) + (with-https-proxy + (let ((s (open-socket-for-uri uri))) + (if https? + (tls-wrap s (uri-host uri)) + s))))) ;; XXX: This is an awful hack to make sure the (set-port-encoding! p ;; "ISO-8859-1") call in `read-response' passes, even during bootstrap diff --git a/guix/derivations.scm b/guix/derivations.scm index 7737e39b2d..1056caa70a 100644 --- a/guix/derivations.scm +++ b/guix/derivations.scm @@ -692,7 +692,7 @@ HASH-ALGO, of the derivation NAME. RECURSIVE? has the same meaning as for (inputs '()) (outputs '("out")) hash hash-algo recursive? references-graphs allowed-references - local-build?) + leaked-env-vars local-build?) "Build a derivation with the given arguments, and return the resulting object. When HASH and HASH-ALGO are given, a fixed-output derivation is created---i.e., one whose result is known in @@ -707,6 +707,12 @@ the build environment in the corresponding file, in a simple text format. When ALLOWED-REFERENCES is true, it must be a list of store items or outputs that the derivation's output may refer to. +When LEAKED-ENV-VARS is true, it must be a list of strings denoting +environment variables that are allowed to \"leak\" from the daemon's +environment to the build environment. This is only applicable to fixed-output +derivations--i.e., when HASH is true. The main use is to allow variables such +as \"http_proxy\" to be passed to derivations that download files. + When LOCAL-BUILD? is true, declare that the derivation is not a good candidate for offloading and should rather be built locally. This is the case for small derivations where the costs of data transfers would outweigh the benefits." @@ -751,6 +757,10 @@ derivations where the costs of data transfers would outweigh the benefits." `(("allowedReferences" . ,(string-join allowed-references))) '()) + ,@(if leaked-env-vars + `(("impureEnvVars" + . ,(string-join leaked-env-vars))) + '()) ,@env-vars))) (match references-graphs (((file . path) ...) diff --git a/guix/download.scm b/guix/download.scm index 3e4024fe1f..6b0349402a 100644 --- a/guix/download.scm +++ b/guix/download.scm @@ -271,6 +271,9 @@ in the store." (guix build utils) (guix ftp-client)) + ;; Honor the user's proxy settings. + #:leaked-env-vars '("http_proxy" "https_proxy") + ;; In general, offloading downloads is not a good idea. ;;#:local-build? #t ;; FIXME: The above would also disable use of diff --git a/guix/gexp.scm b/guix/gexp.scm index a2da72e76c..b08a361232 100644 --- a/guix/gexp.scm +++ b/guix/gexp.scm @@ -282,6 +282,7 @@ names and file names suitable for the #:allowed-references argument to (graft? (%graft?)) references-graphs allowed-references + leaked-env-vars local-build?) "Return a derivation NAME that runs EXP (a gexp) with GUILE-FOR-BUILD (a derivation) on SYSTEM. When TARGET is true, it is used as the @@ -400,6 +401,7 @@ The other arguments are as for 'derivation'." #:hash hash #:hash-algo hash-algo #:recursive? recursive? #:references-graphs (and=> graphs graphs-file-names) #:allowed-references allowed + #:leaked-env-vars leaked-env-vars #:local-build? local-build?)))) (define* (gexp-inputs exp #:key native?) diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm index adf94a7ac3..b9983c5b9c 100755 --- a/guix/scripts/substitute.scm +++ b/guix/scripts/substitute.scm @@ -467,6 +467,7 @@ to read the response body. Return the list of results." ;; case we have to try again. Check whether that is the case. (match (assq 'connection (response-headers resp)) (('connection 'close) + (close-port p) (connect requests result)) ;try again (_ (loop tail ;keep going diff --git a/guix/serialization.scm b/guix/serialization.scm index a99f53ee0b..51d7ef76c6 100644 --- a/guix/serialization.scm +++ b/guix/serialization.scm @@ -140,10 +140,9 @@ substitute invalid byte sequences with question marks. This is a ;; not very efficient. Eventually Guile may provide a lightweight ;; permissive UTF-8 decoder. (let* ((bv (read-byte-string p)) - (port (with-fluids ((%default-port-encoding "UTF-8") - (%default-port-conversion-strategy - 'substitute)) - (open-bytevector-input-port bv)))) + (port (open-bytevector-input-port bv))) + (set-port-encoding! port "UTF-8") + (set-port-conversion-strategy! port 'substitute) (get-string-all port))) (define (write-string-list l p)