Merge branch 'master' into core-updates

This commit is contained in:
Mark H Weaver 2018-05-17 01:00:50 -04:00
commit 539bf8f2c0
No known key found for this signature in database
GPG key ID: 7CEF29847562C516
98 changed files with 4416 additions and 924 deletions

View file

@ -96,6 +96,7 @@ MODULES = \
guix/workers.scm \ guix/workers.scm \
guix/zlib.scm \ guix/zlib.scm \
guix/build-system.scm \ guix/build-system.scm \
guix/build-system/android-ndk.scm \
guix/build-system/ant.scm \ guix/build-system/ant.scm \
guix/build-system/cargo.scm \ guix/build-system/cargo.scm \
guix/build-system/cmake.scm \ guix/build-system/cmake.scm \
@ -128,6 +129,7 @@ MODULES = \
guix/svn-download.scm \ guix/svn-download.scm \
guix/i18n.scm \ guix/i18n.scm \
guix/ui.scm \ guix/ui.scm \
guix/build/android-ndk-build-system.scm \
guix/build/ant-build-system.scm \ guix/build/ant-build-system.scm \
guix/build/download.scm \ guix/build/download.scm \
guix/build/download-nar.scm \ guix/build/download-nar.scm \
@ -272,7 +274,8 @@ AUX_FILES = \
gnu/packages/aux-files/linux-libre/4.4-i686.conf \ gnu/packages/aux-files/linux-libre/4.4-i686.conf \
gnu/packages/aux-files/linux-libre/4.4-x86_64.conf \ gnu/packages/aux-files/linux-libre/4.4-x86_64.conf \
gnu/packages/aux-files/linux-libre/4.1-i686.conf \ gnu/packages/aux-files/linux-libre/4.1-i686.conf \
gnu/packages/aux-files/linux-libre/4.1-x86_64.conf gnu/packages/aux-files/linux-libre/4.1-x86_64.conf \
gnu/packages/aux-files/run-in-namespace.c
# Templates, examples. # Templates, examples.
EXAMPLES = \ EXAMPLES = \

5
NEWS
View file

@ -10,6 +10,11 @@ Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
Please send Guix bug reports to bug-guix@gnu.org. Please send Guix bug reports to bug-guix@gnu.org.
* Changes in 0.15.0 (since 0.14.0)
** Programming interfaces
*** package-full-name (guix packages) now uses "@" as its delimiter.
(<https://bugs.gnu.org/31088>)
* Changes in 0.14.0 (since 0.13.0) * Changes in 0.14.0 (since 0.13.0)
** Package management ** Package management

View file

@ -264,7 +264,8 @@ (define (->job name drv)
(define job-name (define job-name
;; Return the name of a package's job. ;; Return the name of a package's job.
(compose string->symbol package-full-name)) (compose string->symbol
(cut package-full-name <> "-")))
(define package->job (define package->job
(let ((base-packages (let ((base-packages

View file

@ -132,6 +132,7 @@ then
for file in "$bootstrap_directory"/guile-* for file in "$bootstrap_directory"/guile-*
do do
[ -f "$file" ] && \
"@abs_top_builddir@/pre-inst-env" \ "@abs_top_builddir@/pre-inst-env" \
guix download "file://$file" > /dev/null guix download "file://$file" > /dev/null
done done

View file

@ -2834,6 +2834,15 @@ guix pack -S /opt/gnu/bin=bin guile emacs geiser
@noindent @noindent
That way, users can happily type @file{/opt/gnu/bin/guile} and enjoy. That way, users can happily type @file{/opt/gnu/bin/guile} and enjoy.
@cindex relocatable binaries, with @command{guix pack}
What if the recipient of your pack does not have root privileges on
their machine, and thus cannot unpack it in the root file system? In
that case, you will want to use the @code{--relocatable} option (see
below). This option produces @dfn{relocatable binaries}, meaning they
they can be placed anywhere in the file system hierarchy: in the example
above, users can unpack your tarball in their home directory and
directly run @file{./opt/gnu/bin/guile}.
Alternatively, you can produce a pack in the Docker image format using Alternatively, you can produce a pack in the Docker image format using
the following command: the following command:
@ -2867,6 +2876,39 @@ This produces a tarball that follows the
Docker Image Specification}. Docker Image Specification}.
@end table @end table
@item --relocatable
@itemx -R
Produce @dfn{relocatable binaries}---i.e., binaries that can be placed
anywhere in the file system hierarchy and run from there. For example,
if you create a pack containing Bash with:
@example
guix pack -R -S /mybin=bin bash
@end example
@noindent
... you can copy that pack to a machine that lacks Guix, and from your
home directory as a normal user, run:
@example
tar xf pack.tar.gz
./mybin/sh
@end example
@noindent
In that shell, if you type @code{ls /gnu/store}, you'll notice that
@file{/gnu/store} shows up and contains all the dependencies of
@code{bash}, even though the machine actually lacks @file{/gnu/store}
altogether! That is probably the simplest way to deploy Guix-built
software on a non-Guix machine.
There's a gotcha though: this technique relies on the @dfn{user
namespace} feature of the kernel Linux, which allows unprivileged users
to mount or change root. Old versions of Linux did not support it, and
some GNU/Linux distributions turn it off; on these systems, programs
from the pack @emph{will fail to run}, unless they are unpacked in the
root file system.
@item --expression=@var{expr} @item --expression=@var{expr}
@itemx -e @var{expr} @itemx -e @var{expr}
Consider the package @var{expr} evaluates to. Consider the package @var{expr} evaluates to.
@ -3750,6 +3792,25 @@ that should be run during the @code{build} phase. By default the
@end defvr @end defvr
@defvr {Scheme Variable} android-ndk-build-system
@cindex Android distribution
@cindex Android NDK build system
This variable is exported by @code{(guix build-system android-ndk)}. It
implements a build procedure for Android NDK (native development kit)
packages using a Guix-specific build process.
The build system assumes that packages install their public interface
(header) files to the subdirectory "include" of the "out" output and
their libraries to the subdirectory "lib" of the "out" output.
It's also assumed that the union of all the dependencies of a package
has no conflicting files.
For the time being, cross-compilation is not supported - so right now
the libraries and header files are assumed to be host tools.
@end defvr
@defvr {Scheme Variable} asdf-build-system/source @defvr {Scheme Variable} asdf-build-system/source
@defvrx {Scheme Variable} asdf-build-system/sbcl @defvrx {Scheme Variable} asdf-build-system/sbcl
@defvrx {Scheme Variable} asdf-build-system/ecl @defvrx {Scheme Variable} asdf-build-system/ecl
@ -6774,15 +6835,33 @@ where @code{CVE-YYYY-ABCD} is the CVE identifier---e.g.,
Package developers can specify in package recipes the Package developers can specify in package recipes the
@uref{https://nvd.nist.gov/cpe.cfm,Common Platform Enumeration (CPE)} @uref{https://nvd.nist.gov/cpe.cfm,Common Platform Enumeration (CPE)}
name and version of the package when they differ from the name that Guix name and version of the package when they differ from the name or version
uses, as in this example: that Guix uses, as in this example:
@example @example
(package (package
(name "grub") (name "grub")
;; @dots{} ;; @dots{}
;; CPE calls this package "grub2". ;; CPE calls this package "grub2".
(properties '((cpe-name . "grub2")))) (properties '((cpe-name . "grub2")
(cpe-version . "2.3")))
@end example
@c See <http://www.openwall.com/lists/oss-security/2017/03/15/3>.
Some entries in the CVE database do not specify which version of a
package they apply to, and would thus ``stick around'' forever. Package
developers who found CVE alerts and verified they can be ignored can
declare them as in this example:
@example
(package
(name "t1lib")
;; @dots{}
;; These CVEs no longer apply and can be safely ignored.
(properties `((lint-hidden-cve . ("CVE-2011-0433"
"CVE-2011-1553"
"CVE-2011-1554"
"CVE-2011-5244")))))
@end example @end example
@item formatting @item formatting
@ -6826,19 +6905,23 @@ single output for a package that could easily be split (@pxref{Packages
with Multiple Outputs}). Such are the typical issues that with Multiple Outputs}). Such are the typical issues that
@command{guix size} can highlight. @command{guix size} can highlight.
The command can be passed a package specification such as @code{gcc@@4.8} The command can be passed one or more package specifications
such as @code{gcc@@4.8}
or @code{guile:debug}, or a file name in the store. Consider this or @code{guile:debug}, or a file name in the store. Consider this
example: example:
@example @example
$ guix size coreutils $ guix size coreutils
store item total self store item total self
/gnu/store/@dots{}-coreutils-8.23 70.0 13.9 19.8% /gnu/store/@dots{}-gcc-5.5.0-lib 60.4 30.1 38.1%
/gnu/store/@dots{}-gmp-6.0.0a 55.3 2.5 3.6% /gnu/store/@dots{}-glibc-2.27 30.3 28.8 36.6%
/gnu/store/@dots{}-acl-2.2.52 53.7 0.5 0.7% /gnu/store/@dots{}-coreutils-8.28 78.9 15.0 19.0%
/gnu/store/@dots{}-attr-2.4.46 53.2 0.3 0.5% /gnu/store/@dots{}-gmp-6.1.2 63.1 2.7 3.4%
/gnu/store/@dots{}-gcc-4.8.4-lib 52.9 15.7 22.4% /gnu/store/@dots{}-bash-static-4.4.12 1.5 1.5 1.9%
/gnu/store/@dots{}-glibc-2.21 37.2 37.2 53.1% /gnu/store/@dots{}-acl-2.2.52 61.1 0.4 0.5%
/gnu/store/@dots{}-attr-2.4.47 60.6 0.2 0.3%
/gnu/store/@dots{}-libcap-2.25 60.5 0.2 0.2%
total: 78.9 MiB
@end example @end example
@cindex closure @cindex closure
@ -6858,17 +6941,21 @@ item itself. The last column shows the ratio of the size of the item
itself to the space occupied by all the items listed here. itself to the space occupied by all the items listed here.
In this example, we see that the closure of Coreutils weighs in at In this example, we see that the closure of Coreutils weighs in at
70@tie{}MiB, half of which is taken by libc. (That libc represents a 79@tie{}MiB, most of which is taken by libc and GCC's run-time support
large fraction of the closure is not a problem @i{per se} because it is libraries. (That libc and GCC's libraries represent a large fraction of
always available on the system anyway.) the closure is not a problem @i{per se} because they are always available
on the system anyway.)
When the package passed to @command{guix size} is available in the When the package(s) passed to @command{guix size} are available in the
store, @command{guix size} queries the daemon to determine its store@footnote{More precisely, @command{guix size} looks for the
@emph{ungrafted} variant of the given package(s), as returned by
@code{guix build @var{package} --no-grafts}. @xref{Security Updates},
for information on grafts.}, @command{guix size} queries the daemon to determine its
dependencies, and measures its size in the store, similar to @command{du dependencies, and measures its size in the store, similar to @command{du
-ms --apparent-size} (@pxref{du invocation,,, coreutils, GNU -ms --apparent-size} (@pxref{du invocation,,, coreutils, GNU
Coreutils}). Coreutils}).
When the given package is @emph{not} in the store, @command{guix size} When the given packages are @emph{not} in the store, @command{guix size}
reports information based on the available substitutes reports information based on the available substitutes
(@pxref{Substitutes}). This makes it possible it to profile disk usage of (@pxref{Substitutes}). This makes it possible it to profile disk usage of
store items that are not even on disk, only available remotely. store items that are not even on disk, only available remotely.
@ -14924,6 +15011,9 @@ networking interface.
@item @code{package} (default: @code{bitlbee}) @item @code{package} (default: @code{bitlbee})
The BitlBee package to use. The BitlBee package to use.
@item @code{plugins} (default: @code{'()})
List of plugin packages to use---e.g., @code{bitlbee-discord}.
@item @code{extra-settings} (default: @code{""}) @item @code{extra-settings} (default: @code{""})
Configuration snippet added as-is to the BitlBee configuration file. Configuration snippet added as-is to the BitlBee configuration file.
@end table @end table

View file

@ -64,6 +64,7 @@ (define builder
(format port "# This file was generated from your GuixSD configuration. Any changes (format port "# This file was generated from your GuixSD configuration. Any changes
# will be lost upon reconfiguration. # will be lost upon reconfiguration.
UI menu.c32 UI menu.c32
MENU TITLE GuixSD Boot Options
PROMPT ~a PROMPT ~a
TIMEOUT ~a~%" TIMEOUT ~a~%"
(if (> timeout 0) 1 0) (if (> timeout 0) 1 0)

View file

@ -33,7 +33,10 @@ (define-module (gnu bootloader u-boot)
u-boot-a20-olinuxino-micro-bootloader u-boot-a20-olinuxino-micro-bootloader
u-boot-banana-pi-m2-ultra-bootloader u-boot-banana-pi-m2-ultra-bootloader
u-boot-beaglebone-black-bootloader u-boot-beaglebone-black-bootloader
u-boot-nintendo-nes-classic-edition-bootloader)) u-boot-mx6cuboxi-bootloader
u-boot-nintendo-nes-classic-edition-bootloader
u-boot-novena-bootloader
u-boot-wandboard-bootloader))
(define install-u-boot (define install-u-boot
#~(lambda (bootloader device mount-point) #~(lambda (bootloader device mount-point)
@ -62,6 +65,15 @@ (define install-allwinner-u-boot
(write-file-on-device u-boot (stat:size (stat u-boot)) (write-file-on-device u-boot (stat:size (stat u-boot))
device (* 8 1024))))) device (* 8 1024)))))
(define install-imx-u-boot
#~(lambda (bootloader device mount-point)
(let ((spl (string-append bootloader "/libexec/SPL"))
(u-boot (string-append bootloader "/libexec/u-boot.img")))
(write-file-on-device spl (stat:size (stat spl))
device (* 1 1024))
(write-file-on-device u-boot (stat:size (stat u-boot))
device (* 69 1024)))))
;;; ;;;
@ -86,6 +98,11 @@ (define u-boot-allwinner-bootloader
(inherit u-boot-bootloader) (inherit u-boot-bootloader)
(installer install-allwinner-u-boot))) (installer install-allwinner-u-boot)))
(define u-boot-imx-bootloader
(bootloader
(inherit u-boot-bootloader)
(installer install-imx-u-boot)))
(define u-boot-nintendo-nes-classic-edition-bootloader (define u-boot-nintendo-nes-classic-edition-bootloader
(bootloader (bootloader
(inherit u-boot-allwinner-bootloader) (inherit u-boot-allwinner-bootloader)
@ -110,3 +127,18 @@ (define u-boot-banana-pi-m2-ultra-bootloader
(bootloader (bootloader
(inherit u-boot-allwinner-bootloader) (inherit u-boot-allwinner-bootloader)
(package u-boot-banana-pi-m2-ultra))) (package u-boot-banana-pi-m2-ultra)))
(define u-boot-mx6cuboxi-bootloader
(bootloader
(inherit u-boot-imx-bootloader)
(package u-boot-mx6cuboxi)))
(define u-boot-wandboard-bootloader
(bootloader
(inherit u-boot-imx-bootloader)
(package u-boot-wandboard)))
(define u-boot-novena-bootloader
(bootloader
(inherit u-boot-imx-bootloader)
(package u-boot-novena)))

View file

@ -202,6 +202,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/graphics.scm \ %D%/packages/graphics.scm \
%D%/packages/graphviz.scm \ %D%/packages/graphviz.scm \
%D%/packages/groff.scm \ %D%/packages/groff.scm \
%D%/packages/groovy.scm \
%D%/packages/gsasl.scm \ %D%/packages/gsasl.scm \
%D%/packages/gstreamer.scm \ %D%/packages/gstreamer.scm \
%D%/packages/gtk.scm \ %D%/packages/gtk.scm \
@ -343,6 +344,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/plotutils.scm \ %D%/packages/plotutils.scm \
%D%/packages/polkit.scm \ %D%/packages/polkit.scm \
%D%/packages/popt.scm \ %D%/packages/popt.scm \
%D%/packages/printers.scm \
%D%/packages/profiling.scm \ %D%/packages/profiling.scm \
%D%/packages/pth.scm \ %D%/packages/pth.scm \
%D%/packages/pulseaudio.scm \ %D%/packages/pulseaudio.scm \
@ -552,6 +554,7 @@ dist_patch_DATA = \
%D%/packages/patches/abiword-black-drawing-with-gtk322.patch \ %D%/packages/patches/abiword-black-drawing-with-gtk322.patch \
%D%/packages/patches/acl-fix-perl-regex.patch \ %D%/packages/patches/acl-fix-perl-regex.patch \
%D%/packages/patches/acl-hurd-path-max.patch \ %D%/packages/patches/acl-hurd-path-max.patch \
%D%/packages/patches/adb-add-libraries.patch \
%D%/packages/patches/aegis-constness-error.patch \ %D%/packages/patches/aegis-constness-error.patch \
%D%/packages/patches/aegis-perl-tempdir1.patch \ %D%/packages/patches/aegis-perl-tempdir1.patch \
%D%/packages/patches/aegis-perl-tempdir2.patch \ %D%/packages/patches/aegis-perl-tempdir2.patch \
@ -746,6 +749,7 @@ dist_patch_DATA = \
%D%/packages/patches/gpsbabel-qstring.patch \ %D%/packages/patches/gpsbabel-qstring.patch \
%D%/packages/patches/grep-timing-sensitive-test.patch \ %D%/packages/patches/grep-timing-sensitive-test.patch \
%D%/packages/patches/groff-source-date-epoch.patch \ %D%/packages/patches/groff-source-date-epoch.patch \
%D%/packages/patches/groovy-add-exceptionutilsgenerator.patch \
%D%/packages/patches/gsl-test-i686.patch \ %D%/packages/patches/gsl-test-i686.patch \
%D%/packages/patches/gspell-dash-test.patch \ %D%/packages/patches/gspell-dash-test.patch \
%D%/packages/patches/guile-1.8-cpp-4.5.patch \ %D%/packages/patches/guile-1.8-cpp-4.5.patch \
@ -784,7 +788,7 @@ dist_patch_DATA = \
%D%/packages/patches/hurd-fix-eth-multiplexer-dependency.patch \ %D%/packages/patches/hurd-fix-eth-multiplexer-dependency.patch \
%D%/packages/patches/hydra-disable-darcs-test.patch \ %D%/packages/patches/hydra-disable-darcs-test.patch \
%D%/packages/patches/icecat-avoid-bundled-libraries.patch \ %D%/packages/patches/icecat-avoid-bundled-libraries.patch \
%D%/packages/patches/icecat-bug-1452075.patch \ %D%/packages/patches/icecat-CVE-2018-5157-and-CVE-2018-5158.patch \
%D%/packages/patches/icecat-use-system-graphite2.patch \ %D%/packages/patches/icecat-use-system-graphite2.patch \
%D%/packages/patches/icecat-use-system-harfbuzz.patch \ %D%/packages/patches/icecat-use-system-harfbuzz.patch \
%D%/packages/patches/id3lib-CVE-2007-4460.patch \ %D%/packages/patches/id3lib-CVE-2007-4460.patch \
@ -805,6 +809,7 @@ dist_patch_DATA = \
%D%/packages/patches/jq-CVE-2015-8863.patch \ %D%/packages/patches/jq-CVE-2015-8863.patch \
%D%/packages/patches/kdbusaddons-kinit-file-name.patch \ %D%/packages/patches/kdbusaddons-kinit-file-name.patch \
%D%/packages/patches/khmer-use-libraries.patch \ %D%/packages/patches/khmer-use-libraries.patch \
%D%/packages/patches/libziparchive-add-includes.patch \
%D%/packages/patches/kiki-level-selection-crash.patch \ %D%/packages/patches/kiki-level-selection-crash.patch \
%D%/packages/patches/kiki-makefile.patch \ %D%/packages/patches/kiki-makefile.patch \
%D%/packages/patches/kiki-missing-includes.patch \ %D%/packages/patches/kiki-missing-includes.patch \
@ -872,6 +877,8 @@ dist_patch_DATA = \
%D%/packages/patches/libtool-skip-tests2.patch \ %D%/packages/patches/libtool-skip-tests2.patch \
%D%/packages/patches/libusb-0.1-disable-tests.patch \ %D%/packages/patches/libusb-0.1-disable-tests.patch \
%D%/packages/patches/libusb-for-axoloti.patch \ %D%/packages/patches/libusb-for-axoloti.patch \
%D%/packages/patches/libutils-add-includes.patch \
%D%/packages/patches/libutils-remove-damaging-includes.patch \
%D%/packages/patches/libvdpau-va-gl-unbundle.patch \ %D%/packages/patches/libvdpau-va-gl-unbundle.patch \
%D%/packages/patches/libvpx-CVE-2016-2818.patch \ %D%/packages/patches/libvpx-CVE-2016-2818.patch \
%D%/packages/patches/libxslt-generated-ids.patch \ %D%/packages/patches/libxslt-generated-ids.patch \
@ -924,13 +931,10 @@ dist_patch_DATA = \
%D%/packages/patches/mozjs38-tracelogger.patch \ %D%/packages/patches/mozjs38-tracelogger.patch \
%D%/packages/patches/mozjs38-version-detection.patch \ %D%/packages/patches/mozjs38-version-detection.patch \
%D%/packages/patches/mumps-build-parallelism.patch \ %D%/packages/patches/mumps-build-parallelism.patch \
%D%/packages/patches/mupdf-build-with-latest-openjpeg.patch \
%D%/packages/patches/mupdf-CVE-2017-17858.patch \
%D%/packages/patches/mupdf-CVE-2018-6544.patch \
%D%/packages/patches/mupdf-CVE-2018-1000051.patch \
%D%/packages/patches/mupen64plus-ui-console-notice.patch \ %D%/packages/patches/mupen64plus-ui-console-notice.patch \
%D%/packages/patches/mupen64plus-video-z64-glew-correct-path.patch \ %D%/packages/patches/mupen64plus-video-z64-glew-correct-path.patch \
%D%/packages/patches/mutt-store-references.patch \ %D%/packages/patches/mutt-store-references.patch \
%D%/packages/patches/myrepos-CVE-2018-7032.patch \
%D%/packages/patches/net-tools-bitrot.patch \ %D%/packages/patches/net-tools-bitrot.patch \
%D%/packages/patches/netcdf-date-time.patch \ %D%/packages/patches/netcdf-date-time.patch \
%D%/packages/patches/netcdf-tst_h_par.patch \ %D%/packages/patches/netcdf-tst_h_par.patch \
@ -1037,7 +1041,6 @@ dist_patch_DATA = \
%D%/packages/patches/python-nose-timer-drop-ordereddict.patch \ %D%/packages/patches/python-nose-timer-drop-ordereddict.patch \
%D%/packages/patches/python-pillow-fix-failing-tests.patch \ %D%/packages/patches/python-pillow-fix-failing-tests.patch \
%D%/packages/patches/python2-rdflib-drop-sparqlwrapper.patch \ %D%/packages/patches/python2-rdflib-drop-sparqlwrapper.patch \
%D%/packages/patches/python-statsmodels-fix-tests.patch \
%D%/packages/patches/python-scikit-learn-fix-test-non-determinism.patch \ %D%/packages/patches/python-scikit-learn-fix-test-non-determinism.patch \
%D%/packages/patches/python-configobj-setuptools.patch \ %D%/packages/patches/python-configobj-setuptools.patch \
%D%/packages/patches/python-faker-fix-build-32bit.patch \ %D%/packages/patches/python-faker-fix-build-32bit.patch \
@ -1155,7 +1158,6 @@ dist_patch_DATA = \
%D%/packages/patches/wavpack-CVE-2018-7253.patch \ %D%/packages/patches/wavpack-CVE-2018-7253.patch \
%D%/packages/patches/wavpack-CVE-2018-7254.patch \ %D%/packages/patches/wavpack-CVE-2018-7254.patch \
%D%/packages/patches/weechat-python.patch \ %D%/packages/patches/weechat-python.patch \
%D%/packages/patches/wesnoth-fix-std-bad-cast.patch \
%D%/packages/patches/wicd-bitrate-none-fix.patch \ %D%/packages/patches/wicd-bitrate-none-fix.patch \
%D%/packages/patches/wicd-get-selected-profile-fix.patch \ %D%/packages/patches/wicd-get-selected-profile-fix.patch \
%D%/packages/patches/wicd-urwid-1.3.patch \ %D%/packages/patches/wicd-urwid-1.3.patch \

View file

@ -188,7 +188,7 @@ (define find-packages-by-name
version>?))) version>?)))
(if version (if version
(filter (lambda (package) (filter (lambda (package)
(string-prefix? version (package-version package))) (version-prefix? version (package-version package)))
matching) matching)
matching))))) matching)))))

View file

@ -27,18 +27,73 @@ (define-module (gnu packages android)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix git-download) #:use-module (guix git-download)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system android-ndk)
#:use-module (guix build-system python) #:use-module (guix build-system python)
#:use-module (guix build-system trivial) #:use-module (guix build-system trivial)
#:use-module ((guix licenses) #:prefix license:) #:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages check) #:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages gnupg) #:use-module (gnu packages gnupg)
#:use-module (gnu packages pcre)
#:use-module (gnu packages python) #:use-module (gnu packages python)
#:use-module (gnu packages selinux)
#:use-module (gnu packages ssh) #:use-module (gnu packages ssh)
#:use-module (gnu packages version-control) #:use-module (gnu packages version-control)
#:use-module (gnu packages tls) #:use-module (gnu packages tls)
#:use-module (gnu packages linux)) #:use-module (gnu packages linux))
(define-public android-make-stub
(package
(name "android-make-stub")
(version "0.6.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/daym/android-make-stub.git")
(commit (string-append "v" version))))
(file-name (string-append "android-make-stub-"
version "-checkout"))
(sha256
(base32
"0y1b2x96d37n6f1bp6dcx08bn08zac0cylmbfsx6mf2nahc02fhc"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; None exist.
#:phases
(modify-phases %standard-phases
(delete 'configure)
(delete 'build)
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")))
(invoke "make" (string-append "prefix=" out) "install")
#t))))))
(home-page "https://github.com/daym/android-make-stub")
(synopsis "Stubs for the @command{make} system of the Android platform")
(description "@code{android-make-stub} provides stubs for the
@command{make} system of the Android platform. This allows us to
use their packages mostly unmodified in our Android NDK build system.")
(license license:asl2.0)))
(define-public android-googletest
(package (inherit googletest)
(name "android-googletest")
(arguments
`(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")
#:phases
(modify-phases %standard-phases
(add-after 'install 'install-host-libraries
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(lib (string-append out "/lib")))
(symlink "libgtest.so"
(string-append lib "/libgtest_host.so"))
(symlink "libgmock.so"
(string-append lib "/libgmock_host.so"))
#t))))))))
;; The Makefiles that we add are largely based on the Debian ;; The Makefiles that we add are largely based on the Debian
;; packages. They are licensed under GPL-2 and have copyright: ;; packages. They are licensed under GPL-2 and have copyright:
;; 2012, Stefan Handschuh <handschuh.stefan@googlemail.com> ;; 2012, Stefan Handschuh <handschuh.stefan@googlemail.com>
@ -58,52 +113,69 @@ (define (android-platform-system-core version)
version "-checkout")) version "-checkout"))
(sha256 (sha256
(base32 (base32
"0xc2n7jxrf1iw9cc278pijdfjix2fkiig5ws27f6rwp40zg5mrgg")))) "0xc2n7jxrf1iw9cc278pijdfjix2fkiig5ws27f6rwp40zg5mrgg"))
(patches
(search-patches "libbase-use-own-logging.patch"
"libbase-fix-includes.patch"
"libutils-remove-damaging-includes.patch"
"libutils-add-includes.patch"
"adb-add-libraries.patch"
"libziparchive-add-includes.patch"))))
(define liblog (define (android-platform-system-extras version)
(origin
(method git-fetch)
(uri (git-reference
(url "https://android.googlesource.com/platform/system/extras")
(commit (string-append "android-" version))))
(file-name (string-append "android-platform-system-extras-"
version "-checkout"))
(sha256
(base32
"18130c23ybqcpgjc5v6f8kdbv2xn39hyiaj17dzldjb9rlwzcyy9"))))
(define (android-platform-bionic version)
(origin
(method git-fetch)
(uri (git-reference
(url "https://android.googlesource.com/platform/bionic")
(commit (string-append "android-" version))))
(file-name (string-append "android-platform-bionic-"
version "-checkout"))
(sha256
(base32
"0n9wkz3ynqw39if1ss9n32m66iga14nndf29hpm7g1aqn4wvvgzk"))))
(define (android-platform-external version subdirectory checksum)
(origin
(method git-fetch)
(uri (git-reference
(url
(string-append "https://android.googlesource.com/platform/external/"
subdirectory))
(commit (string-append "android-" version))))
(file-name (string-append "android-platform-system-external-" subdirectory "-"
version "-checkout"))
(sha256
(base32
checksum))))
(define android-liblog
(package (package
(name "liblog") (name "android-liblog")
(version (android-platform-version)) (version (android-platform-version))
(source (android-platform-system-core version)) (source (android-platform-system-core version))
(build-system gnu-build-system) (build-system android-ndk-build-system)
(arguments (arguments
`(#:tests? #f ; TODO. `(#:make-flags '("LDLIBS=-lpthread")
#:make-flags '("CC=gcc")
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-after 'unpack 'enter-source (add-after 'unpack 'enter-source
(lambda _ (chdir "liblog") #t)) (lambda _ (chdir "liblog") #t))
(add-after 'enter-source 'create-Makefile (add-after 'install 'ldconfig
(lambda _
;; No useful makefile is shipped, so we create one.
(with-output-to-file "Makefile"
(lambda _
(display
(string-append
"NAME = liblog\n"
"SOURCES = log_event_list.c log_event_write.c"
" logger_write.c config_write.c logger_name.c"
" logger_lock.c fake_log_device.c fake_writer.c"
" event_tag_map.c\n"
"CFLAGS += -fvisibility=hidden -fPIC\n"
"CPPFLAGS += -I../include -DFAKE_LOG_DEVICE=1"
;; Keep these two in sync with "liblog/Android.bp".
" -DLIBLOG_LOG_TAG=1005"
" -DSNET_EVENT_LOG_TAG=1397638484\n"
"LDFLAGS += -shared -Wl,-soname,$(NAME).so.0 -lpthread\n"
"build: $(SOURCES)\n"
" $(CC) $^ -o $(NAME).so.0 $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)\n"))
#t))))
(delete 'configure)
(replace 'install
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")) (let ((out (assoc-ref outputs "out")))
(lib (string-append out "/lib"))) (symlink "liblog.so.0" (string-append out "/lib/liblog.so"))
(install-file "liblog.so.0" lib)
(with-directory-excursion lib
(symlink "liblog.so.0" "liblog.so"))
#t)))))) #t))))))
(home-page "https://developer.android.com/") (home-page "https://developer.android.com/")
(synopsis "Logging library from the Android platform.") (synopsis "Logging library from the Android platform.")
@ -113,62 +185,29 @@ (define liblog
in Main, System, Radio and Events sub-logs.") in Main, System, Radio and Events sub-logs.")
(license license:asl2.0))) (license license:asl2.0)))
(define libbase (define android-libbase
(package (package
(name "libbase") (name "android-libbase")
(version (android-platform-version)) (version (android-platform-version))
(source (origin (source (android-platform-system-core version))
(inherit (android-platform-system-core version)) (build-system android-ndk-build-system)
(patches
(search-patches "libbase-use-own-logging.patch"
"libbase-fix-includes.patch"))))
(build-system gnu-build-system)
(arguments (arguments
`(#:tests? #f ; TODO. `(#:tests? #f ; Test failure: logging.UNIMPLEMENTED
#:make-flags '("CXXFLAGS=-std=gnu++11")
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-after 'unpack 'enter-source (add-after 'unpack 'enter-source
(lambda _ (chdir "base") #t)) (lambda _ (chdir "base") #t)))))
(add-after 'enter-source 'create-Makefile (inputs `(("android-liblog" ,android-liblog)))
(lambda _
;; No useful makefile is shipped, so we create one.
(with-output-to-file "Makefile"
(lambda _
(display
(string-append
"NAME = libbase\n"
"SOURCES = file.cpp logging.cpp parsenetaddress.cpp"
" stringprintf.cpp strings.cpp errors_unix.cpp\n"
"CXXFLAGS += -std=gnu++11 -fPIC\n"
"CPPFLAGS += -Iinclude -I../include\n"
"LDFLAGS += -shared -Wl,-soname,$(NAME).so.0"
" -L.. -llog\n"
"build: $(SOURCES)\n"
" $(CXX) $^ -o $(NAME).so.0 $(CXXFLAGS) $(CPPFLAGS)"
" $(LDFLAGS)\n"))
#t))))
(delete 'configure)
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(lib (string-append out "/lib")))
(install-file "libbase.so.0" lib)
(with-directory-excursion lib
(symlink "libbase.so.0" "libbase.so"))
(copy-recursively "include" out)
#t))))))
(inputs `(("liblog" ,liblog)))
(home-page "https://developer.android.com/") (home-page "https://developer.android.com/")
(synopsis "Android platform base library") (synopsis "Android platform base library")
(description "@code{libbase} is a library in common use by the (description "@code{libbase} is a library in common use by the
various Android core host applications.") various Android core host applications.")
(license license:asl2.0))) (license license:asl2.0)))
(define libcutils (define android-libcutils
(package (package
(name "libcutils") (name "android-libcutils")
(version (android-platform-version)) (version (android-platform-version))
(source (android-platform-system-core version)) (source (android-platform-system-core version))
(build-system gnu-build-system) (build-system gnu-build-system)
@ -206,10 +245,13 @@ (define libcutils
(replace 'install (replace 'install
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))
(lib (string-append out "/lib"))) (lib (string-append out "/lib"))
(include (string-append out "/include")))
(install-file "libcutils.so.0" lib) (install-file "libcutils.so.0" lib)
(with-directory-excursion lib (with-directory-excursion lib
(symlink "libcutils.so.0" "libcutils.so")) (symlink "libcutils.so.0" "libcutils.so"))
(copy-recursively "../include/cutils"
(string-append include "/cutils"))
#t)))))) #t))))))
(home-page "https://developer.android.com/") (home-page "https://developer.android.com/")
(synopsis "Android platform c utils library") (synopsis "Android platform c utils library")
@ -217,90 +259,92 @@ (define libcutils
various Android core host applications.") various Android core host applications.")
(license license:asl2.0))) (license license:asl2.0)))
(define-public android-libsparse
(package
(name "android-libsparse")
(version (android-platform-version))
(source (android-platform-system-core version))
(build-system android-ndk-build-system)
(arguments
`(#:make-flags '("CFLAGS=-Wno-error"
"CXXFLAGS=-fpermissive -Wno-error")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'enter-source
(lambda _ (chdir "libsparse") #t)))))
(inputs
`(("zlib" ,zlib)))
(home-page "https://developer.android.com/")
(synopsis "Android platform sparse library")
(description "@code{android-libsparse} is a library in common use by the
various Android core host applications.")
(license license:asl2.0)))
(define-public android-libziparchive
(package
(name "android-libziparchive")
(version (android-platform-version))
(source (android-platform-system-core version))
(build-system android-ndk-build-system)
(arguments
`(#:make-flags '("CFLAGS=-Wno-error"
"CXXFLAGS=-fpermissive -Wno-error -std=gnu++11")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'enter-source
(lambda _ (chdir "libziparchive") #t))
(add-before 'check 'setenv
(lambda _
(setenv "ziparchive_tests_host_PARAMS" "--test_data_dir=testdata")
#t))
(add-after 'install 'install-headers
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(copy-recursively "../include/ziparchive"
(string-append out "/include/ziparchive"))
#t))))))
(inputs
`(("zlib" ,zlib)))
(native-inputs
`(("android-libbase" ,android-libbase)
("android-libutils" ,android-libutils)
("android-liblog" ,android-liblog)))
(home-page "https://developer.android.com/")
(synopsis "Android platform ZIP library")
(description "@code{android-libziparchive} is a library in common use by the
various Android core host applications.")
(license license:asl2.0)))
(define-public adb (define-public adb
(package (package
(name "adb") (name "adb")
(version (android-platform-version)) (version (android-platform-version))
(source (origin (source (android-platform-system-core version))
(inherit (android-platform-system-core version)) (build-system android-ndk-build-system)
(patches
(search-patches "libbase-use-own-logging.patch"
"libbase-fix-includes.patch"))))
(build-system gnu-build-system)
(arguments (arguments
`(#:phases `(#:tests? #f ; Test failure: sysdeps_poll.fd_count
#:make-flags
(list "CFLAGS=-Wno-error"
"CXXFLAGS=-fpermissive -Wno-error -std=gnu++14 -D_Nonnull= -D_Nullable= -I ."
(string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib "
"-Wl,-rpath=" (assoc-ref %build-inputs "openssl") "/lib -L ."))
#:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-after 'unpack 'enter-source (add-after 'unpack 'enter-source
(lambda _ (chdir "adb") #t)) (lambda _ (chdir "adb") #t))
(add-before 'build 'fix-clang (add-after 'enter-source 'make-libs-available
(lambda _ (lambda* (#:key inputs outputs #:allow-other-keys)
;; adb_client.h contains _Nonnull and _Nullable attributes, that (substitute* "Android.mk"
;; are not understood by gcc. (("libcrypto_static") "libcrypto"))
(substitute* "adb_client.h"
(("_Nonnull") "")
(("_Nullable") ""))
#t)) #t))
(add-before 'build 'fix-main (add-after 'install 'install-headers
(lambda _ (lambda* (#:key inputs outputs #:allow-other-keys)
;; main.cpp used to be adb_main.cpp in the current directory (install-file "diagnose_usb.h" (string-append (assoc-ref outputs "out") "/include"))
;; rather than in its own subdirectory, but it was not fixed. #t)))))
;; This leads to some header files not being found anymore.
(copy-file "client/main.cpp" "adb_main.cpp")
#t))
(add-after 'enter-source 'create-Makefile
(lambda* (#:key outputs #:allow-other-keys)
;; No useful makefile is shipped, so we create one.
(with-output-to-file "Makefile"
(lambda _
(display
(string-append
;; Common for all components.
"CXXFLAGS += -std=gnu++14 -fpermissive\n"
"CPPFLAGS += -I../include -I../base/include -I. -DADB_HOST=1 "
"-DADB_REVISION='\"" ,version "\"' -fPIC\n"
"LDFLAGS += -lcrypto -lpthread -lbase -lcutils -L. -ladb\n"
;; Libadb specifics.
"LIBADB_SOURCES = adb.cpp adb_auth.cpp adb_io.cpp "
"adb_listeners.cpp adb_trace.cpp adb_utils.cpp fdevent.cpp "
"sockets.cpp transport.cpp transport_local.cpp transport_usb.cpp "
"get_my_path_linux.cpp sysdeps_unix.cpp usb_linux.cpp "
"adb_auth_host.cpp diagnose_usb.cpp services.cpp "
"shell_service_protocol.cpp bugreport.cpp line_printer.cpp\n"
"LIBADB_LDFLAGS += -shared -Wl,-soname,libadb.so.0 "
"-lcrypto -lpthread -lbase\n"
;; Adb specifics.
"ADB_SOURCES = adb_main.cpp console.cpp commandline.cpp "
"adb_client.cpp file_sync_client.cpp\n"
"ADB_LDFLAGS += -Wl,-rpath=" (assoc-ref outputs "out") "/lib\n"
"build: libadb $(ADB_SOURCES)\n"
" $(CXX) $(ADB_SOURCES) -o adb $(CXXFLAGS) $(CPPFLAGS) "
"$(ADB_LDFLAGS) $(LDFLAGS)\n"
"libadb: $(LIBADB_SOURCES)\n"
" $(CXX) $^ -o libadb.so.0 $(CXXFLAGS) $(CPPFLAGS) "
"$(LIBADB_LDFLAGS)\n"
" ln -sv libadb.so.0 libadb.so\n"))
#t))))
(delete 'configure)
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(lib (string-append out "/lib"))
(bin (string-append out "/bin")))
(install-file "libadb.so.0" lib)
(install-file "adb" bin)
(with-directory-excursion lib
(symlink "libadb.so.0" "libadb.so"))
#t))))
;; Test suite must be run with attached devices
#:tests? #f))
(inputs (inputs
`(("libbase" ,libbase) `(("android-libbase" ,android-libbase)
("libcutils" ,libcutils) ("android-libcutils" ,android-libcutils)
("android-liblog" ,android-liblog)
("openssl" ,openssl))) ("openssl" ,openssl)))
(home-page "https://developer.android.com/studio/command-line/adb.html") (home-page "https://developer.android.com/studio/command-line/adb.html")
(synopsis "Android Debug Bridge") (synopsis "Android Debug Bridge")
@ -329,8 +373,10 @@ (define-public mkbootimg
(replace 'install (replace 'install
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))) (bin (string-append out "/bin"))
(include (string-append out "/include")))
(install-file "mkbootimg" bin) (install-file "mkbootimg" bin)
(install-file "bootimg.h" include)
#t)))))) #t))))))
(home-page "https://developer.android.com/studio/command-line/adb.html") (home-page "https://developer.android.com/studio/command-line/adb.html")
(synopsis "Tool to create Android boot images") (synopsis "Tool to create Android boot images")
@ -338,6 +384,263 @@ (define-public mkbootimg
Images.") Images.")
(license license:asl2.0))) (license license:asl2.0)))
(define-public android-safe-iop
(package
(name "android-safe-iop")
(version (android-platform-version))
(source (android-platform-external version "safe-iop"
"1nyyrs463advjhlq8xx1lm37m4g5afv7gy0csxrj7biwwl0v13qw"))
(build-system android-ndk-build-system)
(arguments
`(#:make-flags '("CXXFLAGS=-fpermissive -Wno-error")
#:phases
(modify-phases %standard-phases
(add-before 'build 'patch-host
(lambda _
;; TODO: Cross-compile.
(substitute* "Android.mk"
(("BUILD_STATIC_LIBRARY") "BUILD_HOST_STATIC_LIBRARY"))
#t)))))
(home-page "https://developer.android.com/")
(synopsis "Safe integers in C")
(description "@code{android-safe-iop} provides a set of functions for
performing and checking safe integer operations. Ensure that integer
operations do not result in silent overflow.")
(license license:bsd-2)))
(define-public android-bionic-uapi
(package
(name "android-bionic-uapi")
(version (android-platform-version))
(source (android-platform-bionic version))
(build-system android-ndk-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'enter-source
(lambda _ (chdir "libc") #t))
(replace 'check
(const #t))
(replace 'build
(const #t))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(out-sys (string-append out "/include/sys")))
(mkdir-p out-sys)
(install-file "include/sys/system_properties.h" out-sys)
(install-file "include/sys/_system_properties.h" out-sys)
(copy-recursively "kernel/uapi" (string-append out "/include"))
#t))))))
(home-page "https://developer.android.com/")
(synopsis "Android Linux API that is safe for user space")
(description "@code{android-bionic-uapi} provides the part of the Linux API
that is safe to use for user space. It also includes
@code{system_properties.h} and @code{_system_properties.h}.")
(license license:asl2.0)))
(define-public android-libselinux
(package
(name "android-libselinux")
(version (android-platform-version))
(source
(android-platform-external version "libselinux"
"13m2q32gzdcs5d0zj1nwasjy1j8vsxsgbjg7m5sa9lfcjaj7nkm7"))
(build-system android-ndk-build-system)
(arguments
;; See logd/Android.mk for the *_LOG_TAG values.
`(#:make-flags (list (string-append "CFLAGS=-Wno-error "
"-I core/include "
"-I core/libpackagelistparser/include "
"-DAUDITD_LOG_TAG=1003 "
"-DLOGD_LOG_TAG=1004 -D_GNU_SOURCE")
"LDFLAGS=-L . -lpcre")
#:phases
(modify-phases %standard-phases
(add-after 'unpack-core 'patch-HOST
(lambda _
;; gettid duplicates otherwise.
(substitute* "src/procattr.c"
(("#ifdef HOST") "#ifdef XXX"))
#t)))))
(inputs
`(("openssl" ,openssl)))
(native-inputs
`(("android-bionic-uapi" ,android-bionic-uapi)
;; pcre is inlined by our package.
("pcre" ,pcre)))
(home-page "https://developer.android.com/")
(synopsis (package-synopsis libselinux))
(description (package-description libselinux))
(license (package-license libselinux))))
(define-public android-ext4-utils
(package
(name "android-ext4-utils")
(version (android-platform-version))
(source (android-platform-system-extras version))
(build-system android-ndk-build-system)
(arguments
`(#:make-flags
(list (string-append "CPPFLAGS="
;"-Wno-error "
"-I "
(assoc-ref %build-inputs "android-libselinux")
"/include "
"-I " (assoc-ref %build-inputs "android-libsparse")
"/include "
"-I " (assoc-ref %build-inputs "android-libcutils")
"/include "
"-I " (assoc-ref %build-inputs "android-liblog") "/include "
"-I ../core/include")
"CFLAGS=-Wno-error"
"install-libext4_utils_host.a"
(string-append "prefix=" (assoc-ref %outputs "out")))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'unpack-core
(lambda* (#:key inputs #:allow-other-keys)
(mkdir-p "core")
(with-directory-excursion "core"
(invoke "tar" "axf" (assoc-ref inputs "android-core")
"--strip-components=1"))
#t))
(add-after 'unpack-core 'enter-source
(lambda _ (chdir "ext4_utils") #t))
(replace 'install
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(copy-recursively "." (string-append out "/include")))
#t)))))
(inputs
`(("android-libcutils" ,android-libcutils)
("android-liblog" ,android-liblog)
("android-libselinux" ,android-libselinux)
("android-libsparse" ,android-libsparse)
("zlib" ,zlib)))
(native-inputs
`(("android-core" ,(android-platform-system-core version))))
(home-page "https://developer.android.com/")
(synopsis "Android ext4 filesystem utils")
(description "@code{android-ext4-utils} is a library in common use by the
Android core.")
(license license:asl2.0)))
(define-public android-f2fs-utils
(package
(name "android-f2fs-utils")
(version (android-platform-version))
(source (android-platform-system-extras version))
(build-system android-ndk-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'enter-source
(lambda _ (chdir "f2fs_utils") #t))
(add-after 'install 'install-headers
(lambda* (#:key inputs outputs #:allow-other-keys)
(copy-recursively "." (string-append (assoc-ref outputs "out")
"/include"))
#t))
(add-after 'install 'install-shell-scripts
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin")))
(patch-shebang "mkf2fsuserimg.sh")
(substitute* "mkf2fsuserimg.sh"
(("make_f2fs") (string-append bin "/make_f2fs")))
(install-file "mkf2fsuserimg.sh" bin)
#t))))))
(inputs
`(("f2fs-tools" ,f2fs-tools-1.7)
("android-libselinux" ,android-libselinux)
("android-libsparse" ,android-libsparse)
("android-libcutils" ,android-libcutils)
("zlib" ,zlib)))
(home-page "https://developer.android.com/")
(synopsis "Android f2fs utils")
(description "@code{android-f2fs-utils} is a library in common use by the
Android core. It allows the user to create images for the @code{f2fs} Flash
file system.")
(license license:asl2.0)))
(define-public android-libutils
(package
(name "android-libutils")
(version (android-platform-version))
(source (android-platform-system-core version))
(build-system android-ndk-build-system)
(arguments
`(#:tests? #f ; TODO
#:make-flags '("CXXFLAGS=-std=gnu++11 -Wno-error")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'enter-source
(lambda _ (chdir "libutils") #t))
(add-after 'install 'install-headers
(lambda* (#:key inputs outputs #:allow-other-keys)
(copy-recursively "../include/utils" (string-append (assoc-ref outputs "out") "/include/utils")))))))
(inputs
`(("android-safe-iop" ,android-safe-iop)
("android-libcutils" ,android-libcutils)))
(native-inputs
`(("android-bionic-uapi" ,android-bionic-uapi)
("android-liblog" ,android-liblog)))
(home-page "https://developer.android.com/")
(synopsis "Android utility library")
(description "@code{android-libutils} provides utilities for Android NDK developers.")
(license license:asl2.0)))
(define-public fastboot
(package
(name "fastboot")
(version (android-platform-version))
(source (android-platform-system-core version))
(build-system android-ndk-build-system)
(arguments
`(#:make-flags (list "CXXFLAGS=-std=gnu++11")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'enter-source
(lambda _
(chdir "fastboot")
#t))
(add-after 'enter-source 'patch-source
(lambda _
(substitute* "Android.mk"
(("libext4_utils_host") "libext4_utils_host libselinux libpcre"))
#t))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(lib (string-append out "/lib"))
(bin (string-append out "/bin")))
(install-file "fastboot" bin)
#t))))))
(inputs
`(("adb" ,adb)
("android-safe-iop" ,android-safe-iop)
("android-ext4-utils" ,android-ext4-utils)
("android-f2fs-utils" ,android-f2fs-utils)
("android-libbase" ,android-libbase)
("android-libcutils" ,android-libcutils)
("android-liblog" ,android-liblog)
("android-libutils" ,android-libutils)
("android-libsparse" ,android-libsparse)
("android-libziparchive" ,android-libziparchive)
("android-libselinux" ,android-libselinux)
("pcre" ,pcre)
("mkbootimg" ,mkbootimg)
("zlib" ,zlib)))
(native-inputs
`(("xz" ,xz)))
(home-page "https://developer.android.com/studio/command-line/")
(synopsis "Android image flasher")
(description
"This package provides @command{fastboot}, a tool to upload file system images to Android devices.")
(license license:asl2.0)))
(define-public android-udev-rules (define-public android-udev-rules
(package (package
(name "android-udev-rules") (name "android-udev-rules")

View file

@ -0,0 +1,313 @@
/* GNU Guix --- Functional package management for GNU
Copyright (C) 2018 Ludovic Courtès <ludo@gnu.org>
This file is part of GNU Guix.
GNU Guix is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or (at
your option) any later version.
GNU Guix is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. */
/* Make the given @WRAPPED_PROGRAM@ relocatable by executing it in a separate
mount namespace where the store is mounted in its right place.
We would happily do that in Scheme using 'call-with-container'. However,
this very program needs to be relocatable, so it needs to be statically
linked, which complicates things (Guile's modules can hardly be "linked"
into a single executable.) */
#define _GNU_SOURCE
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sched.h>
#include <sys/mount.h>
#include <errno.h>
#include <libgen.h>
#include <limits.h>
#include <string.h>
#include <assert.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <fcntl.h>
#include <dirent.h>
#include <sys/syscall.h>
/* Concatenate DIRECTORY, a slash, and FILE. Return the result, which the
caller must eventually free. */
static char *
concat (const char *directory, const char *file)
{
char *result = malloc (strlen (directory) + 2 + strlen (file));
assert (result != NULL);
strcpy (result, directory);
strcat (result, "/");
strcat (result, file);
return result;
}
static void
mkdir_p (const char *directory)
{
if (strcmp (directory, "/") != 0)
{
char *parent = dirname (strdupa (directory));
mkdir_p (parent);
int err = mkdir (directory, 0700);
if (err < 0 && errno != EEXIST)
assert_perror (errno);
}
}
static void
rm_rf (const char *directory)
{
DIR *stream = opendir (directory);
for (struct dirent *entry = readdir (stream);
entry != NULL;
entry = readdir (stream))
{
if (strcmp (entry->d_name, ".") == 0
|| strcmp (entry->d_name, "..") == 0)
continue;
char *full = concat (directory, entry->d_name);
int err = unlink (full);
if (err < 0)
{
if (errno == EISDIR)
/* Recurse (we expect a shallow directory structure so there's
little risk of stack overflow.) */
rm_rf (full);
else
assert_perror (errno);
}
free (full);
}
closedir (stream);
int err = rmdir (directory);
if (err < 0 && errno != ENOENT)
assert_perror (errno);
}
/* Bind mount all the top-level entries in SOURCE to TARGET. */
static void
bind_mount (const char *source, const char *target)
{
DIR *stream = opendir (source);
for (struct dirent *entry = readdir (stream);
entry != NULL;
entry = readdir (stream))
{
/* XXX: Some file systems may not report a useful 'd_type'. Ignore them
for now. */
assert (entry->d_type != DT_UNKNOWN);
if (strcmp (entry->d_name, ".") == 0
|| strcmp (entry->d_name, "..") == 0)
continue;
char *abs_source = concat (source, entry->d_name);
char *new_entry = concat (target, entry->d_name);
if (entry->d_type == DT_LNK)
{
char target[PATH_MAX];
ssize_t result = readlink (abs_source, target, sizeof target - 1);
if (result > 0)
{
target[result] = '\0';
int err = symlink (target, new_entry);
if (err < 0)
assert_perror (errno);
}
}
else
{
/* Create the mount point. */
if (entry->d_type == DT_DIR)
{
int err = mkdir (new_entry, 0700);
if (err != 0)
assert_perror (errno);
}
else
close (open (new_entry, O_WRONLY | O_CREAT));
int err = mount (abs_source, new_entry, "none",
MS_BIND | MS_REC | MS_RDONLY, NULL);
/* It used to be that only directories could be bind-mounted. Thus,
keep going if we fail to bind-mount a non-directory entry.
That's OK because regular files in the root file system are
usually uninteresting. */
if (err != 0 && entry->d_type != DT_DIR)
assert_perror (errno);
free (new_entry);
free (abs_source);
}
}
closedir (stream);
}
/* Write the user/group ID map for PID to FILE, mapping ID to itself. See
user_namespaces(7). */
static void
write_id_map (pid_t pid, const char *file, int id)
{
char id_map_file[100];
snprintf (id_map_file, sizeof id_map_file, "/proc/%d/%s", pid, file);
char id_map[100];
/* Map root and the current user. */
int len = snprintf (id_map, sizeof id_map, "%d %d 1\n", id, id);
int fd = open (id_map_file, O_WRONLY);
if (fd < 0)
assert_perror (errno);
int n = write (fd, id_map, len);
if (n < 0)
assert_perror (errno);
close (fd);
}
/* Disallow setgroups(2) for PID. */
static void
disallow_setgroups (pid_t pid)
{
char file[100];
snprintf (file, sizeof file, "/proc/%d/setgroups", pid);
int fd = open (file, O_WRONLY);
if (fd < 0)
assert_perror (errno);
int err = write (fd, "deny", 5);
if (err < 0)
assert_perror (errno);
close (fd);
}
int
main (int argc, char *argv[])
{
ssize_t size;
char self[PATH_MAX];
size = readlink ("/proc/self/exe", self, sizeof self - 1);
assert (size > 0);
/* SELF is something like "/home/ludo/.local/gnu/store/…-foo/bin/ls" and we
want to extract "/home/ludo/.local/gnu/store". */
size_t index = strlen (self)
- strlen ("@WRAPPED_PROGRAM@")
+ strlen ("@STORE_DIRECTORY@");
char *store = strdup (self);
store[index] = '\0';
struct stat statbuf;
/* If STORE is already at the "right" place, we can execute
@WRAPPED_PROGRAM@ right away. This is not just an optimization: it's
needed when running one of these wrappers from within an unshare'd
namespace, because 'unshare' fails with EPERM in that context. */
if (strcmp (store, "@STORE_DIRECTORY@") != 0
&& lstat ("@WRAPPED_PROGRAM@", &statbuf) != 0)
{
/* Spawn @WRAPPED_PROGRAM@ in a separate namespace where STORE is
bind-mounted in the right place. */
int err;
char *new_root = mkdtemp (strdup ("/tmp/guix-exec-XXXXXX"));
char *new_store = concat (new_root, "@STORE_DIRECTORY@");
char *cwd = get_current_dir_name ();
/* Create a child with separate namespaces and set up bind-mounts from
there. That way, bind-mounts automatically disappear when the child
exits, which simplifies cleanup for the parent. Note: clone is more
convenient than fork + unshare since the parent can directly write
the child uid_map/gid_map files. */
pid_t child = syscall (SYS_clone, SIGCHLD | CLONE_NEWNS | CLONE_NEWUSER,
NULL, NULL, NULL);
switch (child)
{
case 0:
/* Note: Due to <https://bugzilla.kernel.org/show_bug.cgi?id=183461>
we cannot make NEW_ROOT a tmpfs (which would have saved the need
for 'rm_rf'.) */
bind_mount ("/", new_root);
mkdir_p (new_store);
err = mount (store, new_store, "none", MS_BIND | MS_REC | MS_RDONLY,
NULL);
if (err < 0)
assert_perror (errno);
chdir (new_root);
err = chroot (new_root);
if (err < 0)
assert_perror (errno);
/* Change back to where we were before chroot'ing. */
chdir (cwd);
break;
case -1:
fprintf (stderr, "%s: error: 'clone' failed: %m\n", argv[0]);
fprintf (stderr, "\
This may be because \"user namespaces\" are not supported on this system.\n\
Consequently, we cannot run '@WRAPPED_PROGRAM@',\n\
unless you move it to the '@STORE_DIRECTORY@' directory.\n\
\n\
Please refer to the 'guix pack' documentation for more information.\n");
return EXIT_FAILURE;
default:
{
/* Map the current user/group ID in the child's namespace (the
default is to get the "overflow UID", i.e., the UID of
"nobody"). We must first disallow 'setgroups' for that
process. */
disallow_setgroups (child);
write_id_map (child, "uid_map", getuid ());
write_id_map (child, "gid_map", getgid ());
int status;
waitpid (child, &status, 0);
chdir ("/"); /* avoid EBUSY */
rm_rf (new_root);
free (new_root);
exit (status);
}
}
}
/* The executable is available under @STORE_DIRECTORY@, so we can now
execute it. */
int err = execv ("@WRAPPED_PROGRAM@", argv);
if (err < 0)
assert_perror (errno);
return EXIT_FAILURE;
}

View file

@ -29,6 +29,38 @@ (define-module (gnu packages bioconductor)
#:use-module (gnu packages statistics) #:use-module (gnu packages statistics)
#:use-module (gnu packages bioinformatics)) #:use-module (gnu packages bioinformatics))
(define-public r-bsgenome-dmelanogaster-ucsc-dm6
(package
(name "r-bsgenome-dmelanogaster-ucsc-dm6")
(version "1.4.1")
(source (origin
(method url-fetch)
;; We cannot use bioconductor-uri here because this tarball is
;; located under "data/annotation/" instead of "bioc/".
(uri (string-append "https://www.bioconductor.org/packages/"
"release/data/annotation/src/contrib/"
"BSgenome.Dmelanogaster.UCSC.dm6_"
version ".tar.gz"))
(sha256
(base32
"1bhj0rdgf7lspw4xby9y9mf7v7jxxz8001bc8vw8kf04rjsx6060"))))
(properties
`((upstream-name . "BSgenome.Dmelanogaster.UCSC.dm6")))
(build-system r-build-system)
;; As this package provides little more than a very large data file it
;; doesn't make sense to build substitutes.
(arguments `(#:substitutable? #f))
(propagated-inputs
`(("r-bsgenome" ,r-bsgenome)))
(home-page
"https://www.bioconductor.org/packages/BSgenome.Dmelanogaster.UCSC.dm6/")
(synopsis "Full genome sequences for Fly")
(description
"This package provides full genome sequences for Drosophila
melanogaster (Fly) as provided by UCSC (dm6) and stored in Biostrings
objects.")
(license license:artistic2.0)))
(define-public r-hpar (define-public r-hpar
(package (package
(name "r-hpar") (name "r-hpar")

View file

@ -2088,7 +2088,7 @@ (define-public delly
(define-public diamond (define-public diamond
(package (package
(name "diamond") (name "diamond")
(version "0.9.21") (version "0.9.22")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -2097,7 +2097,7 @@ (define-public diamond
(file-name (string-append name "-" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1cf98vcsiwcv3c4apg50w1240v1mpw0zln1sdw3g692dqa4y041z")))) "0adp87r9ak63frdrdmrdfhsn6g0jnnyq1lr2wibvqbxcl37iir9m"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
'(#:tests? #f ; no "check" target '(#:tests? #f ; no "check" target
@ -11151,25 +11151,22 @@ (define-public ritornello
(define-public trim-galore (define-public trim-galore
(package (package
(name "trim-galore") (name "trim-galore")
(version "0.4.2") (version "0.4.5")
(source (source
(origin (origin
(method url-fetch) (method git-fetch)
(uri (string-append "http://www.bioinformatics.babraham.ac.uk/" (uri (git-reference
"projects/trim_galore/trim_galore_v" (url "https://github.com/FelixKrueger/TrimGalore.git")
version ".zip")) (commit version)))
(file-name (string-append name "-" version "-checkout"))
(sha256 (sha256
(base32 (base32
"0b9qdxi4521gsrjvbhgky8g7kry9b5nx3byzaxkgxz7p4k8bn1mn")))) "0x5892l48c816pf00wmnz5vq0zq6170d3xc8zrxncd4jcz7h1p71"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:tests? #f ; no tests `(#:tests? #f ; no tests
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
;; The archive contains plain files.
(replace 'unpack
(lambda* (#:key source #:allow-other-keys)
(zero? (system* "unzip" source))))
(delete 'configure) (delete 'configure)
(delete 'build) (delete 'build)
(add-after 'unpack 'hardcode-tool-references (add-after 'unpack 'hardcode-tool-references
@ -11581,47 +11578,62 @@ (define-public f-seq
(define-public bismark (define-public bismark
(package (package
(name "bismark") (name "bismark")
(version "0.16.3") (version "0.19.1")
(source (source
(origin (origin
(method url-fetch) (method git-fetch)
(uri (string-append "https://github.com/FelixKrueger/Bismark/" (uri (git-reference
"archive/" version ".tar.gz")) (url "https://github.com/FelixKrueger/Bismark.git")
(file-name (string-append name "-" version ".tar.gz")) (commit version)))
(file-name (string-append name "-" version "-checkout"))
(sha256 (sha256
(base32 (base32
"1204i0pa02ll2jn5pnxypkclnskvv7a2nwh5nxhagmhxk9wfv9sq")))) "0yb5l36slwg02fp4b1jdlplgljcsxgqfzvzihzdnphd87dghcc84"))
(snippet
'(begin
;; highcharts.js is non-free software. The code is available under
;; CC-BY-NC or proprietary licenses only.
(delete-file "bismark_sitrep/highcharts.js")
#t))))
(build-system perl-build-system) (build-system perl-build-system)
(arguments (arguments
`(#:tests? #f ; there are no tests `(#:tests? #f ; there are no tests
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(delete 'configure) (delete 'configure)
(delete 'build) (delete 'build)
(replace 'install (replace 'install
(lambda* (#:key inputs outputs #:allow-other-keys) (lambda* (#:key inputs outputs #:allow-other-keys)
(let ((bin (string-append (assoc-ref outputs "out") (let* ((out (assoc-ref outputs "out"))
"/bin")) (bin (string-append out "/bin"))
(docdir (string-append (assoc-ref outputs "out") (share (string-append out "/share/bismark"))
"/share/doc/bismark")) (docdir (string-append out "/share/doc/bismark"))
(docs '("Bismark_User_Guide.pdf" (docs '("Docs/Bismark_User_Guide.html"))
"RELEASE_NOTES.txt")) (scripts '("bismark"
(scripts '("bismark" "bismark_genome_preparation"
"bismark_genome_preparation" "bismark_methylation_extractor"
"bismark_methylation_extractor" "bismark2bedGraph"
"bismark2bedGraph" "bismark2report"
"bismark2report" "coverage2cytosine"
"coverage2cytosine" "deduplicate_bismark"
"deduplicate_bismark" "filter_non_conversion"
"bismark_sitrep.tpl" "bam2nuc"
"bam2nuc" "bismark2summary")))
"bismark2summary"))) (mkdir-p share)
(mkdir-p docdir) (mkdir-p docdir)
(mkdir-p bin) (mkdir-p bin)
(for-each (lambda (file) (install-file file bin)) (for-each (lambda (file) (install-file file bin))
scripts) scripts)
(for-each (lambda (file) (install-file file docdir)) (for-each (lambda (file) (install-file file docdir))
docs) docs)
(copy-recursively "Docs/Images" (string-append docdir "/Images"))
(substitute* "bismark2report"
(("\\$RealBin/bismark_sitrep")
(string-append share "/bismark_sitrep")))
(copy-recursively "bismark_sitrep"
(string-append share "/bismark_sitrep"))
;; Fix references to gunzip ;; Fix references to gunzip
(substitute* (map (lambda (file) (substitute* (map (lambda (file)
(string-append bin "/" file)) (string-append bin "/" file))

View file

@ -338,7 +338,7 @@ (define-public dtc
(define u-boot (define u-boot
(package (package
(name "u-boot") (name "u-boot")
(version "2018.01") (version "2018.05")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -346,10 +346,10 @@ (define u-boot
"u-boot-" version ".tar.bz2")) "u-boot-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"1nidnnjprgxdhiiz7gmaj8cgcf52l5gbv64cmzjq4gmkjirmk3wk")))) "0j60p4iskzb4hamxgykc6gd7xchxfka1zwh8hv08r9rrc4m3r8ad"))))
(native-inputs (native-inputs
`(("bc" ,bc) `(("bc" ,bc)
;("dtc" ,dtc) ; they have their own incompatible copy. ("dtc" ,dtc)
("python-2" ,python-2) ("python-2" ,python-2)
("swig" ,swig))) ("swig" ,swig)))
(build-system gnu-build-system) (build-system gnu-build-system)
@ -392,15 +392,17 @@ (define (make-u-boot-package board triplet)
(if (file-exists? (string-append "configs/" config-name)) (if (file-exists? (string-append "configs/" config-name))
(zero? (apply system* "make" `(,@make-flags ,config-name))) (zero? (apply system* "make" `(,@make-flags ,config-name)))
(begin (begin
(display "Invalid board name. Valid board names are:") (display "Invalid board name. Valid board names are:"
(let ((suffix-len (string-length "_defconfig"))) (current-error-port))
(scandir "configs" (let ((suffix-len (string-length "_defconfig"))
(lambda (file-name) (entries (scandir "configs")))
(when (string-suffix? "_defconfig" file-name) (for-each (lambda (file-name)
(format #t (when (string-suffix? "_defconfig" file-name)
"- ~A\n" (format (current-error-port)
(string-drop-right file-name "- ~A\n"
suffix-len)))))) (string-drop-right file-name
suffix-len))))
(sort entries string<)))
#f))))) #f)))))
(replace 'install (replace 'install
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
@ -411,6 +413,8 @@ (define (make-u-boot-package board triplet)
(find-files "." "^(MLO|SPL)$")))) (find-files "." "^(MLO|SPL)$"))))
(mkdir-p libexec) (mkdir-p libexec)
(install-file ".config" libexec) (install-file ".config" libexec)
;; Useful for "qemu -kernel".
(install-file "u-boot" libexec)
(for-each (for-each
(lambda (file) (lambda (file)
(let ((target-file (string-append libexec "/" file))) (let ((target-file (string-append libexec "/" file)))
@ -440,9 +444,10 @@ (define-public u-boot-pine64-plus
(let ((bl31 (string-append (assoc-ref inputs "firmware") (let ((bl31 (string-append (assoc-ref inputs "firmware")
"/bl31.bin"))) "/bl31.bin")))
(setenv "BL31" bl31) (setenv "BL31" bl31)
;; This is necessary while we're using the bundled dtc. ;; This is necessary when we're using the bundled dtc.
(setenv "PATH" (string-append (getenv "PATH") ":" ;(setenv "PATH" (string-append (getenv "PATH") ":"
"scripts/dtc"))) ; "scripts/dtc"))
)
#t)))))) #t))))))
(native-inputs (native-inputs
`(("firmware" ,arm-trusted-firmware-pine64-plus) `(("firmware" ,arm-trusted-firmware-pine64-plus)
@ -469,6 +474,12 @@ (define-public u-boot-wandboard
(define-public u-boot-mx6cuboxi (define-public u-boot-mx6cuboxi
(make-u-boot-package "mx6cuboxi" "arm-linux-gnueabihf")) (make-u-boot-package "mx6cuboxi" "arm-linux-gnueabihf"))
(define-public u-boot-novena
(make-u-boot-package "novena" "arm-linux-gnueabihf"))
(define-public u-boot-cubieboard
(make-u-boot-package "Cubieboard" "arm-linux-gnueabihf"))
(define-public vboot-utils (define-public vboot-utils
(package (package
(name "vboot-utils") (name "vboot-utils")

View file

@ -267,7 +267,7 @@ (define gcc-boot0
;; Drop trailing letters, as gmp-6.0.0a unpacks ;; Drop trailing letters, as gmp-6.0.0a unpacks
;; into gmp-6.0.0. ;; into gmp-6.0.0.
`(symlink ,(string-trim-right `(symlink ,(string-trim-right
(package-full-name lib) (package-full-name lib "-")
char-set:letter) char-set:letter)
,(package-name lib))) ,(package-name lib)))
(list gmp-6.0 mpfr mpc)) (list gmp-6.0 mpfr mpc))

View file

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2017, 2018 Alex Kost <alezost@gmail.com> ;;; Copyright © 2015, 2017, 2018 Alex Kost <alezost@gmail.com>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -32,7 +33,7 @@ (define-module (gnu packages dunst)
(define-public dunst (define-public dunst
(package (package
(name "dunst") (name "dunst")
(version "1.3.1") (version "1.3.2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -41,7 +42,7 @@ (define-public dunst
(file-name (string-append name "-" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1mkdp1vqc376z8clwm5s9070jq1g92j8hv2rr231jr2468fnwaga")))) "12nj8qw3y3nl8sm24wizy2a7k06v1p88bnz1xr9l39h527xyidma"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:tests? #f ; no check target '(#:tests? #f ; no check target

View file

@ -3,6 +3,7 @@
;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -22,27 +23,33 @@
(define-module (gnu packages education) (define-module (gnu packages education)
#:use-module (ice-9 regex) #:use-module (ice-9 regex)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages qt) #:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages databases) #:use-module (gnu packages databases)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gettext) #:use-module (gnu packages gettext)
#:use-module (gnu packages glib) #:use-module (gnu packages glib)
#:use-module (gnu packages gnome) #:use-module (gnu packages gnome)
#:use-module (gnu packages gtk) #:use-module (gnu packages gtk)
#:use-module (gnu packages javascript)
#:use-module (gnu packages kde-frameworks) ; extra-cmake-modules #:use-module (gnu packages kde-frameworks) ; extra-cmake-modules
#:use-module (gnu packages perl) #:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages python) #:use-module (gnu packages python)
#:use-module (gnu packages qt)
#:use-module (gnu packages sdl) #:use-module (gnu packages sdl)
#:use-module (gnu packages texinfo) #:use-module (gnu packages texinfo)
#:use-module (gnu packages xml) #:use-module (gnu packages xml)
#:use-module ((guix licenses) #:prefix license:) #:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix svn-download) #:use-module (guix svn-download)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module (guix build-system gnu)
#:use-module (guix build-system cmake) #:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
#:use-module (srfi srfi-1)) #:use-module (srfi srfi-1))
(define-public gcompris (define-public gcompris
@ -224,3 +231,65 @@ (define-public tipp10
and the ability to create your own practice lessons make learning to type and the ability to create your own practice lessons make learning to type
easy.") easy.")
(license license:gpl2))) (license license:gpl2)))
(define-public snap
(package
(name "snap")
(version "4.1.2.7")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/jmoenig/Snap--Build-Your-Own-Blocks.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"0cy3jhqqpmivqnfm9kmlnh3fhf3m3y4xqhikblk8vfjprh6vmcvd"))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
#:builder
(begin
(use-modules (guix build utils))
(let* ((source (assoc-ref %build-inputs "source"))
(out (assoc-ref %outputs "out"))
(share (string-append out "/share/snap")))
(copy-recursively source share)
;; Replace the sole minified file in the package.
(with-directory-excursion share
(delete-file "FileSaver.min.js")
(symlink (string-append (assoc-ref %build-inputs "js-filesaver")
"/share/javascript/FileSaver.min.js")
"FileSaver.min.js"))
;; Create a "snap" executable.
(let* ((bin (string-append out "/bin"))
(script (string-append bin "/snap"))
(snap (string-append share "/snap.html"))
(bash (string-append (assoc-ref %build-inputs "bash")
"/bin/sh"))
(xdg-open (string-append (assoc-ref %build-inputs "xdg-utils")
"/bin/xdg-open")))
(mkdir-p bin)
(call-with-output-file script
(lambda (port)
(format port "#!~a\n~a '~a'" bash xdg-open snap)))
(chmod script #o555)))
#t)))
(inputs
`(("bash" ,bash-minimal)
("js-filesaver" ,js-filesaver)
("xdg-utils" ,xdg-utils)))
(home-page "https://snap.berkeley.edu")
(synopsis "Visual, blocks based programming language")
(description "Snap! (formerly BYOB) is a visual, drag-and-drop
programming language. It is an extended reimplementation of Scratch (a
project of the Lifelong Kindergarten Group at the MIT Media Lab) that
allows you to Build Your Own Blocks. It also features first class
lists, first class procedures, and continuations. These added
capabilities make it suitable for a serious introduction to computer
science for high school or college students.
This package provides a @command{snap} executable calling @command{xdg-open}
to open the application in a web browser, for offline usage.")
(license license:agpl3+)))

View file

@ -18,7 +18,7 @@
;;; Copyright © 2016, 2017 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2016, 2017 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2016, 2017, 2018 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2016, 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2017 Christopher Baines <mail@cbaines.net> ;;; Copyright © 2017 Christopher Baines <mail@cbaines.net>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2017, 2018 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com> ;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
;;; Copyright © 2017, 2018 Kyle Meyer <kyle@kyleam.com> ;;; Copyright © 2017, 2018 Kyle Meyer <kyle@kyleam.com>
@ -105,6 +105,7 @@ (define-module (gnu packages emacs)
#:use-module (gnu packages gd) #:use-module (gnu packages gd)
#:use-module (gnu packages fontutils) #:use-module (gnu packages fontutils)
#:use-module (gnu packages password-utils) #:use-module (gnu packages password-utils)
#:use-module (gnu packages xdisorg)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (ice-9 match)) #:use-module (ice-9 match))
@ -4731,6 +4732,29 @@ (define-public emacs-monroe
distribution, primarily targeting Clojure users") distribution, primarily targeting Clojure users")
(license license:gpl3+))) (license license:gpl3+)))
(define-public emacs-orgalist
(package
(name "emacs-orgalist")
(version "1.7")
(source
(origin
(method url-fetch)
(uri (string-append "https://elpa.gnu.org/packages/"
"orgalist-" version ".el"))
(sha256
(base32
"13dl0l727vlny3y88gqpngcy90ly5r719s1pbmkva5gmcryb68xr"))))
(build-system emacs-build-system)
(home-page "http://elpa.gnu.org/packages/orgalist.html")
(synopsis "Manage Org-like lists in non-Org buffers")
(description "Write Org mode's plain lists in non-Org buffers. More
specifically, Orgalist supports the syntax of Org mode for numbered,
unnumbered, description items, checkboxes, and counter cookies.
The library also implements radio lists, i.e., lists written in Org
syntax later translated into the host format, e.g., LaTeX or HTML.")
(license license:gpl3+)))
(define-public emacs-writegood-mode (define-public emacs-writegood-mode
(package (package
(name "emacs-writegood-mode") (name "emacs-writegood-mode")
@ -4777,35 +4801,35 @@ (define-public emacs-org
(name "emacs-org") (name "emacs-org")
;; emacs-org-contrib inherits from this package. Please update its sha256 ;; emacs-org-contrib inherits from this package. Please update its sha256
;; checksum as well. ;; checksum as well.
(version "9.1.11") (version "9.1.13")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "http://elpa.gnu.org/packages/org-" (uri (string-append "http://elpa.gnu.org/packages/org-"
version ".tar")) version ".tar"))
(sha256 (sha256
(base32 (base32
"0i27g5qbkfqbxhgiz917pjwkxg3rwid99d0ickwx43bzq0zi7c1m")))) "1vx0n32gvrgy2bl2b4pvxf00cywxwm57gi46f2b2zlrnmd5n85pr"))))
(build-system emacs-build-system) (build-system emacs-build-system)
(home-page "https://orgmode.org/") (home-page "https://orgmode.org/")
(synopsis "Outline-based notes management and organizer") (synopsis "Outline-based notes management and organizer")
(description "Org is an Emacs mode for keeping notes, maintaining TODO (description "Org is an Emacs mode for keeping notes, maintaining TODO
lists, and project planning with a fast and effective plain-text system. It lists, and project planning with a fast and effective lightweight markup
also is an authoring system with unique support for literate programming and language. It also is an authoring system with unique support for literate
reproducible research.") programming and reproducible research.")
(license license:gpl3+))) (license license:gpl3+)))
(define-public emacs-org-contrib (define-public emacs-org-contrib
(package (package
(inherit emacs-org) (inherit emacs-org)
(name "emacs-org-contrib") (name "emacs-org-contrib")
(version "20180423") (version "20180507")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://orgmode.org/elpa/org-plus-contrib-" (uri (string-append "https://orgmode.org/elpa/org-plus-contrib-"
version ".tar")) version ".tar"))
(sha256 (sha256
(base32 (base32
"1aggvdy74q8p79xyc19zring5gjvlzp6lbsq8ar319zkmcjrapqd")))) "190iwjpdjrhg7gl2d4bri2y0y679vlrwd841r6dvhza0yy338d2d"))))
(arguments (arguments
`(#:modules ((guix build emacs-build-system) `(#:modules ((guix build emacs-build-system)
(guix build utils) (guix build utils)
@ -8359,23 +8383,34 @@ (define-public emacs-helm-bibtex
(license license:gpl3+)))) (license license:gpl3+))))
(define-public emacs-ewmctrl (define-public emacs-ewmctrl
(let ((commit "3d0217c4d6cdb5c308b6cb4293574f470d4faacf") (let ((commit "3d0217c4d6cdb5c308b6cb4293574f470d4faacf"))
(revision "1"))
(package (package
(name "emacs-ewmctrl") (name "emacs-ewmctrl")
(version (string-append "0.0.1" "-" revision "." (version (git-version "0.0.1" "1" commit))
(string-take commit 7)))
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
(url "https://github.com/flexibeast/ewmctrl.git") (url "https://github.com/flexibeast/ewmctrl.git")
(commit commit))) (commit commit)))
(file-name (string-append name "-" version "-checkout")) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"0ilwvx0qryv3v6xf0gxqwnfm6pf96gxap8h9g3f6z6lk9ff4n1wi")))) "0ilwvx0qryv3v6xf0gxqwnfm6pf96gxap8h9g3f6z6lk9ff4n1wi"))))
(build-system emacs-build-system) (build-system emacs-build-system)
(arguments
'(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-ewmctrl
;; This build phase makes sure ewmctrl looks
;; for wmctrl in the right place.
(lambda _
(let ((file "ewmctrl.el"))
(chmod file #o644)
(emacs-substitute-sexps file
("(defcustom ewmctrl-wmctrl-path" (which "wmctrl")))))))))
(inputs
`(("wmctrl" ,wmctrl)))
(home-page "https://github.com/flexibeast/ewmctrl") (home-page "https://github.com/flexibeast/ewmctrl")
(synopsis "Emacs interface to @code{wmctrl}") (synopsis "Emacs interface to @code{wmctrl}")
(description "@code{ewmctrl} provides an Emacs interface to (description "@code{ewmctrl} provides an Emacs interface to
@ -10416,3 +10451,27 @@ (define-public emacs-dumb-jump
Dumb Jump performs best with The Silver Searcher @command{ag} or ripgrep Dumb Jump performs best with The Silver Searcher @command{ag} or ripgrep
@command{rg} installed.") @command{rg} installed.")
(license license:gpl3+))) (license license:gpl3+)))
(define-public emacs-dts-mode
(let ((commit "9ee0854446dcc6c53d2b8d2941051768dba50344")
(revision "1"))
(package
(name "emacs-dts-mode")
(version (string-append "0.1.0-" revision "." (string-take commit 7)))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/bgamari/dts-mode.git")
(commit commit)))
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"1k8lljdbc90nd29xrhdrsscxavzdq532wq2mg7ljc94krj7538b1"))))
(build-system emacs-build-system)
(home-page "https://github.com/bgamari/dts-mode.git")
(synopsis "Emacs minor mode for editing device tree files")
(description
"This package provides an Emacs minor mode for highlighting
device tree files.")
(license license:gpl3+))))

View file

@ -45,6 +45,7 @@ (define-module (gnu packages emulators)
#:use-module (gnu packages fontutils) #:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop) #:use-module (gnu packages freedesktop)
#:use-module (gnu packages game-development) #:use-module (gnu packages game-development)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gettext) #:use-module (gnu packages gettext)
#:use-module (gnu packages gl) #:use-module (gnu packages gl)
#:use-module (gnu packages glib) #:use-module (gnu packages glib)
@ -107,8 +108,8 @@ (define-public desmume
;; Building from recent Git because the official 5.0 release no longer builds. ;; Building from recent Git because the official 5.0 release no longer builds.
(define-public dolphin-emu (define-public dolphin-emu
(let ((commit "d04b179111f8d863f360839474cb82c766f762b8") (let ((commit "47fd8c6eff4cdea7660d0fa78040f98d1d4fa136")
(revision "0")) (revision "1"))
(package (package
(name "dolphin-emu") (name "dolphin-emu")
(version (git-version "5.0" revision commit)) (version (git-version "5.0" revision commit))
@ -134,7 +135,7 @@ (define-public dolphin-emu
#t)) #t))
(sha256 (sha256
(base32 (base32
"0g725wmhlim73zrhi47wmr1bmplpy4b7sbimd5pm8xpfhj5nm10l")))) "1gp2sshnr0dswdawxd5ix96nksp435b52bqvpjx8pmn523k29zsw"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
'(#:tests? #f '(#:tests? #f
@ -143,6 +144,10 @@ (define-public dolphin-emu
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-before 'configure 'fixgcc7
(lambda _
(unsetenv "C_INCLUDE_PATH")
(unsetenv "CPLUS_INCLUDE_PATH")))
(add-before 'configure 'generate-fonts&hardcore-libvulkan-path (add-before 'configure 'generate-fonts&hardcore-libvulkan-path
(lambda* (#:key inputs outputs #:allow-other-keys) (lambda* (#:key inputs outputs #:allow-other-keys)
(let ((fontfile (let ((fontfile
@ -179,6 +184,7 @@ (define-public dolphin-emu
"-DX11_FOUND=1"))) "-DX11_FOUND=1")))
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config) `(("pkg-config" ,pkg-config)
("gcc" ,gcc-7) ; Building with gcc@5 doesn't work anymore.
("gettext" ,gnu-gettext))) ("gettext" ,gnu-gettext)))
(inputs (inputs
`(("alsa-lib" ,alsa-lib) `(("alsa-lib" ,alsa-lib)

View file

@ -169,7 +169,7 @@ (define-public weex
(define-public libfilezilla (define-public libfilezilla
(package (package
(name "libfilezilla") (name "libfilezilla")
(version "0.12.1") (version "0.12.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -177,7 +177,7 @@ (define-public libfilezilla
name "/" name "-" version ".tar.bz2")) name "/" name "-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"1gbqm42dd0m3fvqz3bk53889479dvn8679zp6ba8a9q2br2wkvv0")))) "1v461hwdk74whp89s490dj1z18gfqf9bz9140m5f11rsvrpid33p"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("cppunit" ,cppunit) `(("cppunit" ,cppunit)

View file

@ -1819,7 +1819,7 @@ (define-public gnujump
(define-public wesnoth (define-public wesnoth
(package (package
(name "wesnoth") (name "wesnoth")
(version "1.14.0") (version "1.14.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://sourceforge/wesnoth/wesnoth-" (uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
@ -1828,8 +1828,7 @@ (define-public wesnoth
name "-" version ".tar.bz2")) name "-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"09niq53y17faizhmd98anx3dha7hvacvj9a0a64lg8wn915cm0bw")) "1mzrnbv71b4s41c5x8clhb53l8lidiwzny1hl828228pvys5bxkb"))))
(patches (search-patches "wesnoth-fix-std-bad-cast.patch"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
`(#:tests? #f)) ; no check target `(#:tests? #f)) ; no check target

View file

@ -536,7 +536,7 @@ (define-public gnome-doc-utils
(define-public gnome-disk-utility (define-public gnome-disk-utility
(package (package
(name "gnome-disk-utility") (name "gnome-disk-utility")
(version "3.28.1") (version "3.28.2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/" (uri (string-append "mirror://gnome/sources/" name "/"
@ -544,7 +544,7 @@ (define-public gnome-disk-utility
name "-" version ".tar.xz")) name "-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"09dmknfas8iifv6k5jb4a9ag57s8awrn0f26fd1qlg0mbfjlnfd6")))) "1j3l4b1prbnixzy6srvcsjfg1dx5nqys2lmygm31ygfdq7svp3m6"))))
(build-system meson-build-system) (build-system meson-build-system)
(native-inputs (native-inputs
`(("glib:bin" ,glib "bin") `(("glib:bin" ,glib "bin")
@ -3877,7 +3877,7 @@ (define-public eog-plugins
;; 'XDG_DATA_DIRS' appropriately set. ;; 'XDG_DATA_DIRS' appropriately set.
(package (package
(name "eog-plugins") (name "eog-plugins")
(version "3.26.1") (version "3.26.2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/" (uri (string-append "mirror://gnome/sources/" name "/"
@ -3885,7 +3885,7 @@ (define-public eog-plugins
name "-" version ".tar.xz")) name "-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0v45f2m3b60ygkwpq6jrl49nwrivw6qy0ciibpv821qrm73hsgd7")))) "1w8zw7kwfvlwlyb1k1inqdvbwnzq959sqawlmnwfb8ykn98hbk8y"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(home-page "https://wiki.gnome.org/Apps/EyeOfGnome/Plugins") (home-page "https://wiki.gnome.org/Apps/EyeOfGnome/Plugins")
(synopsis "Extensions for the Eye of GNOME image viewer") (synopsis "Extensions for the Eye of GNOME image viewer")

View file

@ -459,27 +459,29 @@ (define-public icecat
(mozilla-patch "icecat-CVE-2018-5146.patch" "494e5d5278ba" "1yb4lxjw499ppwhk31vz0vzl0cfqvj9d4jwqag7ayj53ybwsqgjr") (mozilla-patch "icecat-CVE-2018-5146.patch" "494e5d5278ba" "1yb4lxjw499ppwhk31vz0vzl0cfqvj9d4jwqag7ayj53ybwsqgjr")
(mozilla-patch "icecat-CVE-2018-5147.patch" "5cd5586a2f48" "10s774pwvj6xfk3kk6ivnhp2acc8x9sqq6na8z47nkhgwl2712i5") (mozilla-patch "icecat-CVE-2018-5147.patch" "5cd5586a2f48" "10s774pwvj6xfk3kk6ivnhp2acc8x9sqq6na8z47nkhgwl2712i5")
(mozilla-patch "icecat-CVE-2018-5148.patch" "c3e447e07077" "0gmwy631f8ip4gr1mpbjk8bx1n1748wdls5zq4y8hpmpnq5g1wyx") (mozilla-patch "icecat-CVE-2018-5148.patch" "c3e447e07077" "0gmwy631f8ip4gr1mpbjk8bx1n1748wdls5zq4y8hpmpnq5g1wyx")
(mozilla-patch "icecat-bug-1443891.patch" "17201199b18d" "1d0hcim1fwh0bklwpmnal1mv9d9kmyif1m15aj1nqkf1n3x4xc37") (mozilla-patch "icecat-CVE-2018-5178.patch" "17201199b18d" "1d0hcim1fwh0bklwpmnal1mv9d9kmyif1m15aj1nqkf1n3x4xc37")
(mozilla-patch "icecat-bug-1361699.patch" "a07d6c3ff262" "1z8mjg2487r8pxi0x951v6fwwr696q84f6hlzimc3r7bn5ds9r83") (mozilla-patch "icecat-bug-1361699.patch" "a07d6c3ff262" "1z8mjg2487r8pxi0x951v6fwwr696q84f6hlzimc3r7bn5ds9r83")
(mozilla-patch "icecat-bug-1433609.patch" "7127ccf8f88c" "0m4my7aflpp0wlqilr2m4axd7k2fyrs7jqdcz2rrz5pwivz1anvd") (mozilla-patch "icecat-CVE-2018-5150-pt01.patch" "7127ccf8f88c" "0m4my7aflpp0wlqilr2m4axd7k2fyrs7jqdcz2rrz5pwivz1anvd")
(mozilla-patch "icecat-bug-1444231.patch" "57bd35fa8618" "0pl6x5amc5x6nhwl7qnmnff3jjjxmbs8r365bfzj58g7q5ihqwvf") (mozilla-patch "icecat-bug-1444231.patch" "57bd35fa8618" "0pl6x5amc5x6nhwl7qnmnff3jjjxmbs8r365bfzj58g7q5ihqwvf")
(mozilla-patch "icecat-bug-1409440.patch" "2f3e1ccf1661" "0azl8g81kpc0w2xpjpgm1154ll12g0a8n6i7bl3s9nnrk2i26n74") (mozilla-patch "icecat-CVE-2018-5150-pt02.patch" "2f3e1ccf1661" "0azl8g81kpc0w2xpjpgm1154ll12g0a8n6i7bl3s9nnrk2i26n74")
(mozilla-patch "icecat-bug-1441941.patch" "8ff2c4d68e36" "0kz1rqhnz8ca4z20hnpcafidhsrwhnm0h2gmlgchni33h8pisr1f") (mozilla-patch "icecat-CVE-2018-5159.patch" "8ff2c4d68e36" "0kz1rqhnz8ca4z20hnpcafidhsrwhnm0h2gmlgchni33h8pisr1f")
(mozilla-patch "icecat-bug-1443092.patch" "b8c430253efd" "1arjcaps9axhxh5ff84n9bydhhzrihn7hbq7v69nvqwqrjp3lgg9") (mozilla-patch "icecat-CVE-2018-5154.patch" "b8c430253efd" "1arjcaps9axhxh5ff84n9bydhhzrihn7hbq7v69nvqwqrjp3lgg9")
(mozilla-patch "icecat-bug-1448774.patch" "05cadfa3ac39" "0q0vh7vy7x0l8jp6376fn10qljfp4mnp4m9zfn90j4m19pfl86a0") (mozilla-patch "icecat-CVE-2018-5155.patch" "05cadfa3ac39" "0q0vh7vy7x0l8jp6376fn10qljfp4mnp4m9zfn90j4m19pfl86a0")
(mozilla-patch "icecat-bug-1449548.patch" "48a678d7cb81" "1yfh7kxxxvqck2hpn98pwag4splyc6c9brc5haq28fp8x9r9qvlk") (mozilla-patch "icecat-CVE-2018-5168.patch" "48a678d7cb81" "1yfh7kxxxvqck2hpn98pwag4splyc6c9brc5haq28fp8x9r9qvlk")
(mozilla-patch "icecat-bug-1448705.patch" "112032576872" "1x1hxyggbxlnlj0n9cbp03hjnfvm6cq8nqj0jizrd8cfyd5aig8p") (mozilla-patch "icecat-CVE-2018-5150-pt03.patch" "112032576872" "1x1hxyggbxlnlj0n9cbp03hjnfvm6cq8nqj0jizrd8cfyd5aig8p")
(mozilla-patch "icecat-bug-1388020.patch" "ad9a885b0df4" "1hrk1q9mk59jww55g4lqmaflznk87x3vvjn2mxfgfbbjs8l1cyz4") (mozilla-patch "icecat-CVE-2018-5150-pt04.patch" "ad9a885b0df4" "1hrk1q9mk59jww55g4lqmaflznk87x3vvjn2mxfgfbbjs8l1cyz4")
(mozilla-patch "icecat-bug-1452416.patch" "f89ab96a2532" "1dqchxdyznhgyxhfq0hm0vg1p597hjqflfzigc7j3s5vxf9rg2nv") (mozilla-patch "icecat-bug-1452416.patch" "f89ab96a2532" "1dqchxdyznhgyxhfq0hm0vg1p597hjqflfzigc7j3s5vxf9rg2nv")
(mozilla-patch "icecat-bug-1451376.patch" "af885a1bd293" "1wfpqhm2dp4fsx6zbrncngsqz7g2x09b625zcighixrbpvybyww3") (mozilla-patch "icecat-CVE-2018-5150-pt05.patch" "af885a1bd293" "1wfpqhm2dp4fsx6zbrncngsqz7g2x09b625zcighixrbpvybyww3")
(mozilla-patch "icecat-bug-1444668.patch" "666fc84ec72d" "0lml2wqd4yqidhi364x8r90f78397k2y0kq5z5bv8l8j4bhcnb9v") (mozilla-patch "icecat-CVE-2018-5150-pt06.patch" "666fc84ec72d" "0lml2wqd4yqidhi364x8r90f78397k2y0kq5z5bv8l8j4bhcnb9v")
(search-patch "icecat-bug-1452075.patch") (search-patch "icecat-CVE-2018-5157-and-CVE-2018-5158.patch")
(mozilla-patch "icecat-bug-1393367.patch" "1ab40761a856" "1kgwypy7k5b33jwkni4025za4kcnv5m6klsx4wsswlixmljmkbc7") (mozilla-patch "icecat-CVE-2018-5150-pt07.patch" "1ab40761a856" "1kgwypy7k5b33jwkni4025za4kcnv5m6klsx4wsswlixmljmkbc7")
(mozilla-patch "icecat-bug-1453339.patch" "0edb8dca7087" "0b30pipqryh311sc97rcmwnx9n8qdlbbz90b2hkybjnprmbhfxrm") (mozilla-patch "icecat-bug-1453339.patch" "0edb8dca7087" "0b30pipqryh311sc97rcmwnx9n8qdlbbz90b2hkybjnprmbhfxrm")
(mozilla-patch "icecat-bug-1452202.patch" "134c728799c1" "16hbwx6fx1hrddsyjjbd3z954ql3pg348xs13h9riyblq8crzmam") (mozilla-patch "icecat-CVE-2018-5150-pt08.patch" "134c728799c1" "16hbwx6fx1hrddsyjjbd3z954ql3pg348xs13h9riyblq8crzmam")
(mozilla-patch "icecat-bug-1411415.patch" "14eab155eaa8" "0wr4xgblxzk4c2gvlnpl7ic1196mrhry1hgwdl1jivq0ji5cbvbd") (mozilla-patch "icecat-CVE-2018-5150-pt09.patch" "14eab155eaa8" "0wr4xgblxzk4c2gvlnpl7ic1196mrhry1hgwdl1jivq0ji5cbvbd")
(mozilla-patch "icecat-bug-1452619.patch" "2b75d55ccf0e" "1g87aybw6ggv6hyk385bplv0lx63n020gwyq0d6d4pqld48hsm1i") (mozilla-patch "icecat-bug-1452619.patch" "2b75d55ccf0e" "1g87aybw6ggv6hyk385bplv0lx63n020gwyq0d6d4pqld48hsm1i")
(mozilla-patch "icecat-bug-1453127.patch" "89857f35df29" "0gzi47svrw5ajdlm3i12193psm702zx70x5h1rwp4gb7gxh4m4d9"))) (mozilla-patch "icecat-bug-1453127.patch" "89857f35df29" "0gzi47svrw5ajdlm3i12193psm702zx70x5h1rwp4gb7gxh4m4d9")
(mozilla-patch "icecat-CVE-2018-5150-pt10.patch" "3f2ec03c0405" "0w02952dlxd2gmwghck2nm4rjjmc5ylg62bw6m1rvi35kcr134lr")
(mozilla-patch "icecat-CVE-2018-5183.patch" "f729bf78fb3a" "0xkj6jwxwdqkvb5c7wi16b8cm8qrnlrd3s9jnd46jg03iykrx56f")))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
'(begin '(begin

View file

@ -214,7 +214,7 @@ (define-public go-1.9
(package (package
(inherit go-1.4) (inherit go-1.4)
(name "go") (name "go")
(version "1.9.5") (version "1.9.6")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -222,7 +222,7 @@ (define-public go-1.9
name version ".src.tar.gz")) name version ".src.tar.gz"))
(sha256 (sha256
(base32 (base32
"1g4zqhbh1yw3gnb400szzwrdz0k5s3h0h5nc35xgmn5v69zvphpi")))) "0a2qkvzr0g5cbd66wi7b6r40qyp9p55y0zz2j5qg1xsqwsdhbx1n"))))
(arguments (arguments
(substitute-keyword-arguments (package-arguments go-1.4) (substitute-keyword-arguments (package-arguments go-1.4)
((#:phases phases) ((#:phases phases)
@ -383,7 +383,7 @@ (define-public go-1.10
(package (package
(inherit go-1.9) (inherit go-1.9)
(name "go") (name "go")
(version "1.10.1") (version "1.10.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -391,7 +391,7 @@ (define-public go-1.10
name version ".src.tar.gz")) name version ".src.tar.gz"))
(sha256 (sha256
(base32 (base32
"1p1xyyxicp752n9wj10sljjl6mjxpfsplkhx74fzzjrwdkzlk52q")))) "1gcqbac3wbhbcr0ri9zgfj6qkqbwf9fn116a0a7fvn4wdff60r32"))))
(arguments (arguments
(substitute-keyword-arguments (package-arguments go-1.9) (substitute-keyword-arguments (package-arguments go-1.9)
((#:phases phases) ((#:phases phases)

View file

@ -117,13 +117,13 @@ (define-public graphviz
(define-public python-graphviz (define-public python-graphviz
(package (package
(name "python-graphviz") (name "python-graphviz")
(version "0.8.2") (version "0.8.3")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "graphviz" version ".zip")) (uri (pypi-uri "graphviz" version ".zip"))
(sha256 (sha256
(base32 (base32
"148h7ln8z65c1723w9vpx8khkvl9iigh8csv0qd4pidc53042rv0")))) "0gnl11w98iib7vif92f3vircavy2v1yl9sl54y6hhk1mwm0f07f6"))))
(build-system python-build-system) (build-system python-build-system)
(native-inputs (native-inputs
`(("unzip" ,unzip))) `(("unzip" ,unzip)))

1156
gnu/packages/groovy.scm Normal file

File diff suppressed because it is too large Load diff

View file

@ -353,7 +353,6 @@ (define-public gst-plugins-ugly
(inputs (inputs
`(("gst-plugins-base" ,gst-plugins-base) `(("gst-plugins-base" ,gst-plugins-base)
("liba52" ,liba52) ("liba52" ,liba52)
("libmad" ,libmad)
("lame" ,lame) ("lame" ,lame)
("libcdio" ,libcdio) ("libcdio" ,libcdio)
("twolame" ,twolame) ("twolame" ,twolame)

View file

@ -17,6 +17,8 @@
;;; Copyright © 2017 Nils Gillmann <ng0@n0.is> ;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -66,6 +68,7 @@ (define-module (gnu packages guile)
#:use-module (gnu packages version-control) #:use-module (gnu packages version-control)
#:use-module (gnu packages xdisorg) #:use-module (gnu packages xdisorg)
#:use-module (gnu packages xorg) #:use-module (gnu packages xorg)
#:use-module (gnu packages networking)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix git-download) #:use-module (guix git-download)
@ -1569,6 +1572,9 @@ (define-public guile-dbi
'(#:configure-flags '(#:configure-flags
(list (string-append (list (string-append
"--with-guile-site-dir=" %output "/share/guile/site/2.2")) "--with-guile-site-dir=" %output "/share/guile/site/2.2"))
#:make-flags
(list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib:"
(assoc-ref %build-inputs "guile-dbd-sqlite3") "/lib"))
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-after 'install 'patch-extension-path (add-after 'install 'patch-extension-path
@ -1579,6 +1585,8 @@ (define-public guile-dbi
(ext (string-append out "/lib/libguile-dbi"))) (ext (string-append out "/lib/libguile-dbi")))
(substitute* dbi.scm (("libguile-dbi") ext)) (substitute* dbi.scm (("libguile-dbi") ext))
#t)))))) #t))))))
(inputs
`(("guile-dbd-sqlite3" ,guile-dbd-sqlite3))) ; only shared library, no scheme files
(propagated-inputs (propagated-inputs
`(("guile" ,guile-2.2))) `(("guile" ,guile-2.2)))
(synopsis "Guile database abstraction layer") (synopsis "Guile database abstraction layer")
@ -1590,6 +1598,15 @@ (define-public guile-dbi
It currently supports MySQL, Postgres and SQLite3.") It currently supports MySQL, Postgres and SQLite3.")
(license license:gpl2+))) (license license:gpl2+)))
(define guile-dbi-bootstrap
(package
(inherit guile-dbi)
(name "guile-dbi-bootstrap")
(inputs '())
(arguments
(substitute-keyword-arguments (package-arguments guile-dbi)
((#:make-flags _) '(list))))))
(define-public guile-dbd-sqlite3 (define-public guile-dbd-sqlite3
(package (package
(name "guile-dbd-sqlite3") (name "guile-dbd-sqlite3")
@ -1604,12 +1621,11 @@ (define-public guile-dbd-sqlite3
"0rg71jchxd2y8x496s8zmfmikr5g8zxi8zv2ar3f7a23pph92iw2")))) "0rg71jchxd2y8x496s8zmfmikr5g8zxi8zv2ar3f7a23pph92iw2"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("pkg-config" ,pkg-config)
("guile-dbi-bootstrap" ,guile-dbi-bootstrap))) ; only required for headers
(inputs (inputs
`(("sqlite" ,sqlite) `(("sqlite" ,sqlite)
("zlib" ,(@ (gnu packages compression) zlib)))) ("zlib" ,(@ (gnu packages compression) zlib))))
(propagated-inputs
`(("guile-dbi" ,guile-dbi)))
(synopsis "Guile DBI driver for SQLite") (synopsis "Guile DBI driver for SQLite")
(home-page "https://github.com/jkalbhenn/guile-dbd-sqlite3") (home-page "https://github.com/jkalbhenn/guile-dbd-sqlite3")
(description (description
@ -2109,4 +2125,93 @@ (define-public guile-colorized
"Guile-colorized provides you with a colorized REPL for GNU Guile.") "Guile-colorized provides you with a colorized REPL for GNU Guile.")
(license license:gpl3+))) (license license:gpl3+)))
(define-public guile-simple-zmq
(let ((commit "d76657aeb1cd10ef8136edc06bb90999914c7c3c")
(revision "0"))
(package
(name "guile-simple-zmq")
(version (git-version "0.0.0" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/jerry40/guile-simple-zmq")
(commit commit)))
(sha256
(base32
"1w73dy5gpyv33jn34dqlkqpwh9w4y8wm6hgvbpb3wbp6xsa2mk4z"))
(file-name (git-file-name name version))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
#:builder
(begin
(use-modules (guix build utils)
(srfi srfi-26)
(ice-9 match)
(ice-9 popen)
(ice-9 rdelim))
(let* ((out (assoc-ref %outputs "out"))
(guile (assoc-ref %build-inputs "guile"))
(effective (read-line
(open-pipe* OPEN_READ
(string-append guile "/bin/guile")
"-c" "(display (effective-version))")))
(module-dir (string-append out "/share/guile/site/"
effective))
(go-dir (string-append out "/lib/guile/"
effective "/site-ccache/"))
(source (string-append (assoc-ref %build-inputs "source")
"/src"))
(scm-file "simple-zmq.scm")
(guild (string-append (assoc-ref %build-inputs "guile")
"/bin/guild"))
(zmq (assoc-ref %build-inputs "zeromq"))
(deps (list zmq))
(path (string-join
(map (cut string-append <>
"/lib/")
deps)
":")))
;; Make installation directories.
(mkdir-p module-dir)
(mkdir-p go-dir)
;; Compile .scm files and install.
(chdir source)
(setenv "GUILE_AUTO_COMPILE" "0")
(for-each (lambda (file)
(let* ((dest-file (string-append module-dir "/"
file))
(go-file (match (string-split file #\.)
((base _)
(string-append go-dir "/"
base ".go")))))
;; Install source module.
(copy-file file dest-file)
(substitute* dest-file
(("\\(dynamic-link \"libzmq\"\\)")
(format #f "(dynamic-link \"~a/lib/libzmq.so\")"
(assoc-ref %build-inputs "zeromq"))))
;; Install and compile module.
(unless (zero? (system* guild "compile"
"-L" source
"-o" go-file
dest-file))
(error (format #f "Failed to compile ~s to ~s!"
file go-file)))))
(list scm-file))
#t))))
(propagated-inputs
`(("guile" ,guile-2.2)
("zeromq" ,zeromq)))
(home-page "https://github.com/jerry40/guile-simple-zmq")
(synopsis "Guile wrapper over ZeroMQ library")
(description
"This package provides a Guile programming interface to the ZeroMQ
messaging library.")
(license license:gpl3+))))
;;; guile.scm ends here ;;; guile.scm ends here

View file

@ -8,6 +8,7 @@
;;; Copyright © 2017 Danny Milosavljevic <dannym@scratchpost.org> ;;; Copyright © 2017 Danny Milosavljevic <dannym@scratchpost.org>
;;; Copyright © 2017 rsiddharth <s@ricketyspace.net> ;;; Copyright © 2017 rsiddharth <s@ricketyspace.net>
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Tonton <tonton@riseup.net>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -451,6 +452,19 @@ (define-public ghc-quickcheck
expressed in Haskell, using combinators defined in the QuickCheck library.") expressed in Haskell, using combinators defined in the QuickCheck library.")
(license license:bsd-3))) (license license:bsd-3)))
(define-public ghc-quickcheck-2.9
(package
(inherit ghc-quickcheck)
(name "ghc-quickcheck")
(version "2.9.2")
(source (origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/QuickCheck-2.9.2/QuickCheck-"
version ".tar.gz"))
(sha256
(base32
"119np67qvx8hyp9vkg4gr2wv3lj3j6ay2vl4hxspkg43ymb1cp0m"))))))
(define-public ghc-quickcheck-latest (define-public ghc-quickcheck-latest
(package (inherit ghc-quickcheck) (package (inherit ghc-quickcheck)
(version "2.11.3") (version "2.11.3")

View file

@ -13,6 +13,7 @@
;;; Copyright © 2017, 2018 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2017, 2018 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2017 rsiddharth <s@ricketyspace.net> ;;; Copyright © 2017 rsiddharth <s@ricketyspace.net>
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Tonton <tonton@riseup.net>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -9468,4 +9469,58 @@ (define-public ghc-email-validate
address string against RFC 5322.") address string against RFC 5322.")
(license license:bsd-3))) (license license:bsd-3)))
(define-public ghc-array
(package
(name "ghc-array")
(version "0.5.2.0")
(source
(origin
(method url-fetch)
(uri
(string-append "https://hackage.haskell.org/package/array-0.5.2.0/array-"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"12v83s2imxb3p2crnlzrpjh0nk6lpysw9bdk9yahs6f37csa5jaj"))))
(build-system haskell-build-system)
(synopsis "Haskell @code{Data.Array} module")
(description "In addition to providing the @code{Data.Array} module as
specified in the Haskell 2010 Language Report, this package defines the
classes @code{IArray} of immutable arrays and @code{MArray} of arrays mutable
within appropriate monads, as well as some instances of these classes.")
(home-page "https://hackage.haskell.org/package/array")
(license license:bsd-3)))
(define-public ghc-containers
(package
(name "ghc-containers")
(version "0.5.11.0")
(source
(origin
(method url-fetch)
(uri
(string-append "https://hackage.haskell.org/package/containers-0.5.11.0/containers-"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0j29w09kvcn1c0yi4clmrdbgs2gqmpxs2m7q80ib2ix1smm25kaq"))))
(build-system haskell-build-system)
(inputs `(("ghc-array" ,ghc-array)
("ghc-deepseq" ,ghc-deepseq-generics)
("ghc-hunit" ,ghc-hunit)
("ghc-chasingbottoms" ,ghc-chasingbottoms)
("ghc-test-framework" ,ghc-test-framework)
("ghc-test-framework-hunit" ,ghc-test-framework-hunit)
("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2)
("ghc-quickcheck" ,ghc-quickcheck)
("ghc-ghc-prim" ,ghc-primitive)))
(synopsis "Haskell containers: Assorted concrete container types")
(description "This Haskell module provides efficient general-purpose
implementations of various immutable container types including sets, maps,
sequences, trees, and graphs.")
(home-page "https://hackage.haskell.org/package/containers")
(license license:bsd-3)))
;;; haskell.scm ends here ;;; haskell.scm ends here

View file

@ -5,6 +5,7 @@
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -38,12 +39,16 @@ (define-module (gnu packages image-processing)
#:use-module (gnu packages gnome) #:use-module (gnu packages gnome)
#:use-module (gnu packages graphics) #:use-module (gnu packages graphics)
#:use-module (gnu packages graphviz) #:use-module (gnu packages graphviz)
#:use-module (gnu packages gtk)
#:use-module (gnu packages image) #:use-module (gnu packages image)
#:use-module (gnu packages maths) #:use-module (gnu packages maths)
#:use-module (gnu packages perl) #:use-module (gnu packages perl)
#:use-module (gnu packages photo)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages protobuf)
#:use-module (gnu packages python) #:use-module (gnu packages python)
#:use-module (gnu packages serialization) #:use-module (gnu packages serialization)
#:use-module (gnu packages video)
#:use-module (gnu packages xiph) #:use-module (gnu packages xiph)
#:use-module (gnu packages xml) #:use-module (gnu packages xml)
#:use-module (gnu packages xorg)) #:use-module (gnu packages xorg))
@ -191,3 +196,203 @@ (define-public vtk
a suite of 3D interaction widgets, supports parallel processing, and a suite of 3D interaction widgets, supports parallel processing, and
integrates with various databases on GUI toolkits such as Qt and Tk.") integrates with various databases on GUI toolkits such as Qt and Tk.")
(license license:bsd-3))) (license license:bsd-3)))
(define-public opencv
(package
(name "opencv")
(version "3.4.1")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/opencv/opencv/archive/"
version ".zip"))
(file-name (string-append name "-" version ".zip"))
(sha256
(base32
"1g8pvnlkzzp50amd89149hqsbvsc2hq3vk1d6a9fksdcx8ra9g94"))
(modules '((guix build utils)))
(snippet
'(begin
;; Remove external libraries. We have all available in Guix:
(delete-file-recursively "3rdparty")
;; Milky icon set is non-free:
(delete-file-recursively "modules/highgui/src/files_Qt/Milky")
;; Some jars found:
(for-each delete-file
'("modules/java/test/pure_test/lib/junit-4.11.jar"
"samples/java/sbt/sbt/sbt-launch.jar"))))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags
(list "-DWITH_IPP=OFF"
"-DWITH_ITT=OFF"
;; CPU-Features:
;; See cmake/OpenCVCompilerOptimizations.cmake
;; (CPU_ALL_OPTIMIZATIONS) for a list of all optimizations
;; BASELINE is the minimum optimization all CPUs must support
;;
;; DISPATCH is the list of optional dispatches
"-DCPU_BASELINE=SSE2, NEON"
"-DCPU_DISPATCH=SSE3,SSSE3,SSE4_1,SSE4_2,AVX,AVX2"
"-DCPU_DISPATCH_REQUIRE=SSE3,SSSE3,SSE4_1,SSE4_2,AVX,AVX2"
"-DBUILD_PERF_TESTS=OFF"
"-D BUILD_TESTS=ON"
(string-append "-DOPENCV_EXTRA_MODULES_PATH="
"/tmp/guix-build-opencv-" ,version ".drv-0"
"/opencv-contrib/opencv_contrib-" ,version
"/modules")
;;Define test data:
(string-append "-DOPENCV_TEST_DATA_PATH="
"/tmp/guix-build-opencv-" ,version ".drv-0"
;;"/opencv-3.4.0"
"/opencv-extra/opencv_extra-" ,version
"/testdata")
;; Is ON by default and would try to rebuild 3rd-party protobuf,
;; which we had removed, which would lead to an error:
"-DBUILD_PROTOBUF=OFF"
;; Rebuild protobuf files, because we have a slightly different
;; version than the included one. If we would not update, we
;; would get a compile error later:
"-DPROTOBUF_UPDATE_FILES=ON"
;; xfeatures2d disabled, because it downloads extra binaries from
;; https://github.com/opencv/opencv_3rdparty
;; defined in xfeatures2d/cmake/download_{vgg|bootdesc}.cmake
;; Cmp this bug entry:
;; https://github.com/opencv/opencv_contrib/issues/1131
"-DBUILD_opencv_xfeatures2d=OFF")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'disable-broken-tests
(lambda _
;; These tests fails with:
;; vtkXOpenGLRenderWindow (0x723990): Could not find a decent config
;; I think we have no OpenGL support with the Xvfb.
(substitute* '("modules/viz/test/test_tutorial3.cpp"
"modules/viz/test/test_main.cpp"
"modules/viz/test/tests_simple.cpp"
"modules/viz/test/test_viz3d.cpp")
(("(TEST\\(Viz, )([a-z].*\\).*)" all pre post)
(string-append pre "DISABLED_" post)))
;; This one fails with "unknown file: Failure"
;; But I couldn't figure out which file was missing:
(substitute* (list (string-append
"../opencv-contrib/opencv_contrib-"
,version
"/modules/face/test/test_face_align.cpp"))
(("(TEST\\(CV_Face_FacemarkKazemi, )(can_detect_landmarks\\).*)"
all pre post)
(string-append pre "DISABLED_" post)))
;; Failure reason: Bad accuracy
;; Incorrect count of accurate poses [2nd case]: 90.000000 / 94.000000
(substitute* (list (string-append
"../opencv-contrib/opencv_contrib-"
,version
"/modules/rgbd/test/test_odometry.cpp"))
(("(TEST\\(RGBD_Odometry_Rgbd, )(algorithmic\\).*)" all pre post)
(string-append pre "DISABLED_" post)))
#t))
;; Idea copied from ldc.scm (ldc-bootstrap):
(add-after 'unpack 'unpack-submodule-sources
(lambda* (#:key inputs #:allow-other-keys)
(mkdir "../opencv-extra")
(mkdir "../opencv-contrib")
(let ((unpack (lambda (source target)
(with-directory-excursion target
(apply invoke "unzip"
(list (assoc-ref inputs source)))))))
(unpack "opencv-extra" "../opencv-extra")
(unpack "opencv-contrib" "../opencv-contrib"))))
(add-after 'set-paths 'add-ilmbase-include-path
(lambda* (#:key inputs #:allow-other-keys)
;; OpenEXR propagates ilmbase, but its include files do not appear
;; in the CPATH, so we need to add "$ilmbase/include/OpenEXR/" to
;; the CPATH to satisfy the dependency on "ImathVec.h".
(setenv "CPATH"
(string-append (assoc-ref inputs "ilmbase")
"/include/OpenEXR"
":" (or (getenv "CPATH") "")))
#t))
(add-before 'check 'start-xserver
(lambda* (#:key inputs #:allow-other-keys)
(let ((xorg-server (assoc-ref inputs "xorg-server"))
(disp ":1"))
(setenv "HOME" (getcwd))
(setenv "DISPLAY" disp)
;; There must be a running X server and make check doesn't start one.
;; Therefore we must do it.
(zero? (system (format #f "~a/bin/Xvfb ~a &" xorg-server disp)))))))))
(native-inputs
`(("unzip" ,unzip)
("pkg-config" ,pkg-config)
("xorg-server" ,xorg-server) ; For running the tests
("opencv-extra"
,(origin
(method url-fetch)
(uri (string-append "https://codeload.github.com/"
"opencv/opencv_extra/zip/" version))
(file-name (string-append "opencv-extra-" version ".zip"))
(sha256
(base32 "0wfh3pvfxqydf7hsccp50npcsg37sf6fqi6cd3zkc4qil9zhpbps"))))
("opencv-contrib"
,(origin
(method url-fetch)
(uri (string-append "https://codeload.github.com/"
"opencv/opencv_contrib/zip/" version))
(file-name (string-append "opencv-contrib-" version ".zip"))
(sha256
(base32 "18zm0qmjcdvg90c33gzv0ws0xdaid1xpqzz2xa9l2x12qkr6zj3p"))))))
(inputs `(("libjpeg" ,libjpeg)
("libpng" ,libpng)
("jasper" ,jasper)
;; ffmpeg 4.0 causes core dumps in tests.
("ffmpeg" ,ffmpeg-3.4)
("libtiff" ,libtiff)
("hdf5" ,hdf5)
("libgphoto2" ,libgphoto2)
("libwebp" ,libwebp)
("zlib" ,zlib)
("gtkglext" ,gtkglext)
("openexr" ,openexr)
("ilmbase" ,ilmbase)
("gtk+" ,gtk+-2)
("python-numpy" ,python-numpy)
("protobuf" ,protobuf)
("vtk" ,vtk)
("python" ,python)))
;; These three CVEs are not a problem of OpenCV, see:
;; https://github.com/opencv/opencv/issues/10998
(properties '((lint-hidden-cve . ("CVE-2018-7712"
"CVE-2018-7713"
"CVE-2018-7714"))))
(synopsis "Computer vision library")
(description "OpenCV is a library aimed at
real-time computer vision, including several hundred computer
vision algorithms. It can be used to do things like:
@itemize
@item image and video input and output
@item image and video processing
@item displaying
@item feature recognition
@item segmentation
@item facial recognition
@item stereo vision
@item structure from motion
@item augmented reality
@item machine learning
@end itemize\n")
(home-page "https://opencv.org/")
(license license:bsd-3)))

View file

@ -2,7 +2,7 @@
;;; Copyright © 2013, 2017, 2018 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net> ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com> ;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2017 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2017 Nils Gillmann <ng0@n0.is> ;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
@ -31,14 +31,15 @@ (define-module (gnu packages image-viewers)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system cmake) #:use-module (guix build-system cmake)
#:use-module (guix build-system meson)
#:use-module (guix build-system python) #:use-module (guix build-system python)
#:use-module (gnu packages autotools) #:use-module (gnu packages autotools)
#:use-module (gnu packages algebra) #:use-module (gnu packages algebra)
#:use-module (gnu packages base)
#:use-module (gnu packages boost) #:use-module (gnu packages boost)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages curl) #:use-module (gnu packages curl)
#:use-module (gnu packages fontutils) #:use-module (gnu packages fontutils)
#:use-module (gnu packages gettext)
#:use-module (gnu packages ghostscript) #:use-module (gnu packages ghostscript)
#:use-module (gnu packages glib) #:use-module (gnu packages glib)
#:use-module (gnu packages gnome) #:use-module (gnu packages gnome)
@ -59,7 +60,7 @@ (define-module (gnu packages image-viewers)
(define-public feh (define-public feh
(package (package
(name "feh") (name "feh")
(version "2.26") (version "2.26.2")
(home-page "https://feh.finalrewind.org/") (home-page "https://feh.finalrewind.org/")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
@ -67,7 +68,7 @@ (define-public feh
name "-" version ".tar.bz2")) name "-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"11kckzwk3b734l0n4j41k40liq1v2lbbj1gzir5qc386g7fvzmmi")))) "07hn5d5m1jsqp6qb2d3lah1js8382hrf225y0q8776m2k3vzylk3"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:phases (modify-phases %standard-phases (delete 'configure)) '(#:phases (modify-phases %standard-phases (delete 'configure))
@ -231,43 +232,36 @@ (define-public sxiv
(define-public viewnior (define-public viewnior
(package (package
(name "viewnior") (name "viewnior")
(version "1.6") (version "1.7")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://github.com/xsisqox/Viewnior/archive/" (uri (string-append "https://github.com/hellosiyan/Viewnior/archive/"
name "-" version ".tar.gz")) name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"18309qjgwak3kn228z3p3nx7yxasqgzx69v3rgc23hf161nky0c9")))) "1rpkk721s3xas125q3g0fl11b5zsrmzv9pzl6ddzcy4sj2rd7ymr"))))
(build-system gnu-build-system) (build-system meson-build-system)
(arguments (arguments
'(#:phases '(#:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-after 'unpack 'autogen (add-after 'unpack 'patch-source
(lambda _
(zero? (system* "sh" "autogen.sh"))))
(add-before 'install 'skip-gtk-update-icon-cache
(lambda _ (lambda _
;; Don't create 'icon-theme.cache' ;; Don't create 'icon-theme.cache'
(substitute* (find-files "data" "^Makefile$") (substitute* "meson.build"
(("gtk-update-icon-cache") (which "true"))) (("meson.add_install_script*") ""))
#t))))) #t)))
#:tests? #f)) ; no tests
(native-inputs (native-inputs
`(("automake" ,automake) `(("gettext" ,gettext-minimal)
("autoconf" ,autoconf)
("intltool" ,intltool)
("glib" ,glib "bin") ; glib-genmarshal ("glib" ,glib "bin") ; glib-genmarshal
("gnome-common" ,gnome-common)
("libtool" ,libtool)
("pkg-config" ,pkg-config) ("pkg-config" ,pkg-config)
("shared-mime-info" ,shared-mime-info) ("shared-mime-info" ,shared-mime-info)))
("which" ,which)))
(inputs (inputs
`(("exiv2" ,exiv2) `(("exiv2" ,exiv2)
("gdk-pixbuf" ,gdk-pixbuf) ("gdk-pixbuf" ,gdk-pixbuf)
("gtk+-2" ,gtk+-2))) ("gtk+-2" ,gtk+-2)))
(home-page "http://siyanpanayotov.com/project/viewnior/") (home-page "http://siyanpanayotov.com/project/viewnior")
(synopsis "Simple, fast and elegant image viewer") (synopsis "Simple, fast and elegant image viewer")
(description "Viewnior is an image viewer program. Created to be simple, (description "Viewnior is an image viewer program. Created to be simple,
fast and elegant. Its minimalistic interface provides more screenspace for fast and elegant. Its minimalistic interface provides more screenspace for

View file

@ -47,14 +47,14 @@ (define-public imagemagick
;; The 7 release series has an incompatible API, while the 6 series is still ;; The 7 release series has an incompatible API, while the 6 series is still
;; maintained. Don't update to 7 until we've made sure that the ImageMagick ;; maintained. Don't update to 7 until we've made sure that the ImageMagick
;; users are ready for the 7-series API. ;; users are ready for the 7-series API.
(version "6.9.9-39") (version "6.9.9-43")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://imagemagick/ImageMagick-" (uri (string-append "mirror://imagemagick/ImageMagick-"
version ".tar.xz")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0cgrvfg8722cdv2y0hw2f7xhzdfmfiqc1348l71ki38dg4b0q4sn")))) "09vfxb1ljfma7mvkcqp17bs7adlrfh6kc6k9hifkhgxf51vr7hk6"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:configure-flags '("--with-frozenpaths" "--without-gcc-arch") `(#:configure-flags '("--with-frozenpaths" "--without-gcc-arch")
@ -169,7 +169,7 @@ (define-public perl-image-magick
(define-public graphicsmagick (define-public graphicsmagick
(package (package
(name "graphicsmagick") (name "graphicsmagick")
(version "1.3.28") (version "1.3.29")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (uri
@ -181,7 +181,7 @@ (define-public graphicsmagick
"/GraphicsMagick-" version ".tar.xz"))) "/GraphicsMagick-" version ".tar.xz")))
(sha256 (sha256
(base32 (base32
"0jlrrimrajcmwp7llivyj14qnzb1mpqd8vw95dl6zbx5m2lnhall")))) "1m0cc6kpky06lpcipj7rfwc2jbw2igr0jk97zqmw3j1ld5mg93g1"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:configure-flags `(#:configure-flags

View file

@ -80,8 +80,13 @@ (define-public inkscape
;; FIXME: tests require gmock ;; FIXME: tests require gmock
(arguments (arguments
`(#:tests? #f `(#:tests? #f
#:make-flags #:phases
'("gtk_update_icon_cache=true"))) (modify-phases %standard-phases
(add-after 'unpack 'patch-icon-cache-generator
(lambda _
(substitute* "share/icons/application/CMakeLists.txt"
(("gtk-update-icon-cache") "true"))
#t)))))
(home-page "https://inkscape.org/") (home-page "https://inkscape.org/")
(synopsis "Vector graphics editor") (synopsis "Vector graphics editor")
(description "Inkscape is a vector graphics editor. What sets Inkscape (description "Inkscape is a vector graphics editor. What sets Inkscape

View file

@ -3,6 +3,7 @@
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -370,6 +371,44 @@ (define-public js-es5-shim
means that these shams cause many ES5 methods to silently fail.") means that these shams cause many ES5 methods to silently fail.")
(license license:expat))) (license license:expat)))
(define-public js-filesaver
(package
(name "js-filesaver")
(version "1.3.8")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/eligrey/FileSaver.js/"
"archive/" version ".tar.gz"))
(file-name (string-append name "-" version))
(sha256
(base32
"1rkhfqs5plaj628kzj7qgm5qahy4v7ihygifidqr6g6265mil97h"))))
(build-system minify-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-uglification
;; Remove "export" keyword which prevents the file from being
;; uglified by uglify-js. Moreover, that keyword is not present in
;; the minified version of the library some projects are using,
;; e.g.,
;; <https://github.com/jmoenig/Snap--Build-Your-Own-Blocks/blob/master/FileSaver.min.js>
(lambda _
(substitute* "src/FileSaver.js"
(("export ") ""))
#t)))))
(home-page
"https://eligrey.com/blog/saving-generated-files-on-the-client-side/")
(synopsis "HTML5 saveAs() FileSaver implementation")
(description "@file{FileSaver.js} implements the @code{saveAs()}
FileSaver interface in browsers that do not natively support it.
@file{FileSaver.js} is the solution to saving files on the
client-side, and is perfect for webapps that need to generate files,
or for saving sensitive information that shouldn't be sent to an
external server.")
(license license:expat)))
(define-public mujs (define-public mujs
(package (package
(name "mujs") (name "mujs")

View file

@ -142,7 +142,7 @@ (define-public extra-cmake-modules
(define-public phonon (define-public phonon
(package (package
(name "phonon") (name "phonon")
(version "4.10.0") (version "4.10.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -151,7 +151,7 @@ (define-public phonon
name "-" version ".tar.xz")) name "-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0gyhlnwamzfw31kw4qh0v6rj0m47k9wfygd6h07klg9ggp60xhg2")))) "1dwdw0hm6685psrp7v9frhkhqvsxrbdnm3gw794j5z7g3brqvag5"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(native-inputs (native-inputs
;; TODO: Think about adding pulseaudio. Is it required for sound? ;; TODO: Think about adding pulseaudio. Is it required for sound?

View file

@ -838,7 +838,7 @@ (define-public mythes
(define-public libreoffice (define-public libreoffice
(package (package
(name "libreoffice") (name "libreoffice")
(version "5.4.6.2") (version "5.4.7.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -848,7 +848,7 @@ (define-public libreoffice
(version-prefix version 3) "/libreoffice-" version ".tar.xz")) (version-prefix version 3) "/libreoffice-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0icd8h221gp2dsbn6d35flwhqhcfpx66cjc5dg8yifhhvrfam74i")))) "0g60wzg90n1kanmkiwy01jz4s4xgdkpczvm7vdrmjpp7ifrgijbv"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("bison" ,bison) `(("bison" ,bison)

View file

@ -392,8 +392,8 @@ (define %linux-compatible-systems '("x86_64-linux" "i686-linux" "armhf-linux"))
;; supports qemu "virt" machine and possibly a large number of ARM boards. ;; supports qemu "virt" machine and possibly a large number of ARM boards.
;; See : https://wiki.debian.org/DebianKernel/ARMMP. ;; See : https://wiki.debian.org/DebianKernel/ARMMP.
(define %linux-libre-version "4.16.7") (define %linux-libre-version "4.16.9")
(define %linux-libre-hash "145hv7paw5zd6bnkk0agxyg2a37066xhrxszbq3d03mjvi8ap117") (define %linux-libre-hash "13v5pb30v16cn81w2gnwaa4zhxas7q3zz10igpa2rqd5fdiy3rlz")
(define-public linux-libre (define-public linux-libre
(make-linux-libre %linux-libre-version (make-linux-libre %linux-libre-version
@ -401,8 +401,8 @@ (define-public linux-libre
%linux-compatible-systems %linux-compatible-systems
#:configuration-file kernel-config)) #:configuration-file kernel-config))
(define %linux-libre-4.14-version "4.14.39") (define %linux-libre-4.14-version "4.14.41")
(define %linux-libre-4.14-hash "0r6fydsgspnskh5n1hfrkyrlrmql635zqr44ajafmqimldc0bplz") (define %linux-libre-4.14-hash "0qcfw4spnjlzri8bgch1j0yxsw75gjx1m9qyn3h1lk4a33gczih6")
(define-public linux-libre-4.14 (define-public linux-libre-4.14
(make-linux-libre %linux-libre-4.14-version (make-linux-libre %linux-libre-4.14-version
@ -411,14 +411,14 @@ (define-public linux-libre-4.14
#:configuration-file kernel-config)) #:configuration-file kernel-config))
(define-public linux-libre-4.9 (define-public linux-libre-4.9
(make-linux-libre "4.9.98" (make-linux-libre "4.9.100"
"14mqg2hvxg4zwajwly18akyaca821sp4iz5w3xmikwndn2j8y1lw" "1zphlisrjzbgk7nvclbwm23kmrx7vw13w02r1va3g5lzh0rlwx71"
%intel-compatible-systems %intel-compatible-systems
#:configuration-file kernel-config)) #:configuration-file kernel-config))
(define-public linux-libre-4.4 (define-public linux-libre-4.4
(make-linux-libre "4.4.131" (make-linux-libre "4.4.132"
"1phah297rxjwy22wfaqlzpbk71ddp3drma5dx3i8xv6g8vijd08x" "012nmbvvi8sg0iav5aibk8qx189iwqjadnr4h5jv65gzi7i79li9"
%intel-compatible-systems %intel-compatible-systems
#:configuration-file kernel-config)) #:configuration-file kernel-config))
@ -716,7 +716,7 @@ (define-public procps
(define-public usbutils (define-public usbutils
(package (package
(name "usbutils") (name "usbutils")
(version "009") (version "010")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -724,7 +724,7 @@ (define-public usbutils
"usbutils-" version ".tar.xz")) "usbutils-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0q3iavmak2bs9xw486w4xfbjl0hbzii93ssgpr95mxmm9kjz1gwb")))) "06aag4jfgsfjxk563xsp9ik9nadihmasrr37a1gb0vwqni5kdiv1"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("libusb" ,libusb) `(("libusb" ,libusb)
@ -3268,8 +3268,51 @@ (define-public btrfs-progs/static
from the btrfs-progs package. It is meant to be used in initrds.") from the btrfs-progs package. It is meant to be used in initrds.")
(license (package-license btrfs-progs)))) (license (package-license btrfs-progs))))
(define-public f2fs-tools-1.7
(package
(name "f2fs-tools")
(version "1.7.0")
(source (origin
(method url-fetch)
(uri (string-append
"https://git.kernel.org/cgit/linux/kernel/git/jaegeuk"
"/f2fs-tools.git/snapshot/" name "-" version ".tar.gz"))
(sha256
(base32
"1m6bn1ibq0p53m0n97il91xqgjgn2pzlz74lb5bfzassx7159m1k"))))
(build-system gnu-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'install 'install-headers
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(out-include (string-append out "/include")))
(install-file "include/f2fs_fs.h" out-include)
(install-file "mkfs/f2fs_format_utils.h" out-include)
#t))))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)
("pkg-config" ,pkg-config)))
(inputs
`(("libuuid" ,util-linux)
("libselinux" ,libselinux)))
(home-page "https://f2fs.wiki.kernel.org/")
(synopsis "Userland tools for f2fs")
(description
"F2FS, the Flash-Friendly File System, is a modern file system
designed to be fast and durable on flash devices such as solid-state
disks and SD cards. This package provides the userland utilities.")
;; The formatting utility, libf2fs and include/f2fs_fs.h is dual
;; GPL2/LGPL2.1, everything else is GPL2 only. See 'COPYING'.
(license (list license:gpl2 license:lgpl2.1))))
(define-public f2fs-tools (define-public f2fs-tools
(package (package
(inherit f2fs-tools-1.7)
(name "f2fs-tools") (name "f2fs-tools")
(version "1.8.0") (version "1.8.0")
(source (origin (source (origin
@ -3280,23 +3323,8 @@ (define-public f2fs-tools
(sha256 (sha256
(base32 (base32
"1bir9ladb58ijlcvrjrq1fb1xv5ys50zdjaq0yzliib0apsyrnyl")))) "1bir9ladb58ijlcvrjrq1fb1xv5ys50zdjaq0yzliib0apsyrnyl"))))
(build-system gnu-build-system)
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)
("pkg-config" ,pkg-config)))
(inputs (inputs
`(("libuuid" ,util-linux))) `(("libuuid" ,util-linux)))))
(home-page "https://f2fs.wiki.kernel.org/")
(synopsis "Userland tools for f2fs")
(description
"F2FS, the Flash-Friendly File System, is a modern file system
designed to be fast and durable on flash devices such as solid-state
disks and SD cards. This package provides the userland utilities.")
;; The formatting utility, libf2fs and include/f2fs_fs.h is dual
;; GPL2/LGPL2.1, everything else is GPL2 only. See 'COPYING'.
(license (list license:gpl2 license:lgpl2.1))))
(define-public freefall (define-public freefall
(package (package
@ -3493,7 +3521,7 @@ (define-public rdma-core
(define-public rng-tools (define-public rng-tools
(package (package
(name "rng-tools") (name "rng-tools")
(version "6.1") (version "6.2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://github.com/nhorman/rng-tools/" (uri (string-append "https://github.com/nhorman/rng-tools/"
@ -3501,7 +3529,7 @@ (define-public rng-tools
(file-name (string-append name "-" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"00ywsknjpc9jd9kfmz2syk9l0xkiiwyx5qhl5zvhhc69v6682i31")))) "0xy4qmfhvkr5z4jr9j55dn5gnajr2jccdp6n0xsxkipjcgag342j"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(;; Avoid using OpenSSL, curl, and libxml2, reducing the closure by 166 MiB. `(;; Avoid using OpenSSL, curl, and libxml2, reducing the closure by 166 MiB.
@ -4136,7 +4164,7 @@ (define-public libmnl
(define-public libnftnl (define-public libnftnl
(package (package
(name "libnftnl") (name "libnftnl")
(version "1.0.9") (version "1.1.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -4144,7 +4172,7 @@ (define-public libnftnl
"libnftnl-" version ".tar.bz2")) "libnftnl-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"0d9nkdbdck8sg6msysqyv3m9kjr9sjif5amf26dfa0g3mqjdihgy")))) "0v4gywcjvv2vg4zk632al1zv3ad0lx87nshynv110l8n3fhsq3pc"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("pkg-config" ,pkg-config)))

View file

@ -48,7 +48,7 @@ (define-module (gnu packages lxde)
(define-public libfm (define-public libfm
(package (package
(name "libfm") (name "libfm")
(version "1.3.0") (version "1.3.0.2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://sourceforge/pcmanfm/" (uri (string-append "mirror://sourceforge/pcmanfm/"
@ -56,7 +56,7 @@ (define-public libfm
"%29/LibFM/" name "-" version ".tar.xz")) "%29/LibFM/" name "-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"151jyy8ipmp2h829gd9s4s429qafv1zxl7j6zaj1k1gzm9s5rmnb")))) "0wkwbi1nyvqza3r1dhrq846axiiq0fy0dqgngnagh76fjrwnzl0q"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs `(("glib" ,glib) (inputs `(("glib" ,glib)
("gtk+" ,gtk+-2))) ("gtk+" ,gtk+-2)))

View file

@ -481,7 +481,10 @@ (define-public arpack-ng-openmpi
(inputs (inputs
`(("mpi" ,openmpi) `(("mpi" ,openmpi)
,@(package-inputs arpack-ng))) ,@(package-inputs arpack-ng)))
(arguments `(#:configure-flags '("--enable-mpi"))) (arguments
(substitute-keyword-arguments (package-arguments arpack-ng)
((#:configure-flags _ '())
''("--enable-mpi"))))
(synopsis "Fortran subroutines for solving eigenvalue problems with MPI"))) (synopsis "Fortran subroutines for solving eigenvalue problems with MPI")))
(define-public lapack (define-public lapack
@ -3466,6 +3469,7 @@ (define-public hypre
(native-inputs (native-inputs
`(("doc++" ,doc++) `(("doc++" ,doc++)
("netpbm" ,netpbm) ("netpbm" ,netpbm)
("perl" ,perl) ;needed to run 'ppmquant' during tests
("texlive" ,texlive) ;full package required for fonts ("texlive" ,texlive) ;full package required for fonts
("ghostscript" ,ghostscript))) ("ghostscript" ,ghostscript)))
(inputs (inputs
@ -3900,14 +3904,14 @@ (define-public r-subplex
(define-public r-desolve (define-public r-desolve
(package (package
(name "r-desolve") (name "r-desolve")
(version "1.20") (version "1.21")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "deSolve" version)) (uri (cran-uri "deSolve" version))
(sha256 (sha256
(base32 (base32
"18nx3maww979a8p8ly4hv63y65mnjx8vbj2fpipd6rhcbf1lbsan")))) "0qqc4mknw1jblzcmph1dg3k1p6w42yal0k1xjh8pqk7yb3a75hs5"))))
(properties `((upstream-name . "deSolve"))) (properties `((upstream-name . "deSolve")))
(build-system r-build-system) (build-system r-build-system)
(native-inputs (native-inputs

View file

@ -627,7 +627,15 @@ (define-public gajim
(with-directory-excursion icons (with-directory-excursion icons
(symlink adwaita "Adwaita") (symlink adwaita "Adwaita")
(copy-recursively hicolor "hicolor"))) (copy-recursively hicolor "hicolor")))
#t))))) #t))
(add-after 'install-icons 'wrap-program
(lambda* (#:key inputs outputs #:allow-other-keys)
(wrap-program (string-append (assoc-ref outputs "out")
"/bin/gajim")
;; For GtkFileChooserDialog.
`("GSETTINGS_SCHEMA_DIR" =
(,(string-append (assoc-ref inputs "gtk+")
"/share/glib-2.0/schemas")))))))))
(native-inputs (native-inputs
`(("intltool" ,intltool) `(("intltool" ,intltool)
("xorg-server" ,xorg-server))) ("xorg-server" ,xorg-server)))
@ -728,14 +736,14 @@ (define-public dino
(define-public prosody (define-public prosody
(package (package
(name "prosody") (name "prosody")
(version "0.10.0") (version "0.10.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://prosody.im/downloads/source/" (uri (string-append "https://prosody.im/downloads/source/"
"prosody-" version ".tar.gz")) "prosody-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1644jy5dk46vahmh6nna36s79k8k668sbi3qamjb4q3c4m3y853l")))) "1kmmpkkgymg1r8r0k8j83pgmiskg1phl8hmpzjrnvlvsfnrnjplr"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:tests? #f ; no "check" target `(#:tests? #f ; no "check" target

View file

@ -119,9 +119,10 @@ (define-public mpd
("flac" ,flac) ("flac" ,flac)
("glib" ,glib) ("glib" ,glib)
("icu4c" ,icu4c) ("icu4c" ,icu4c)
;; The LAME decoder comes from FFmpeg, but is added here so that
;; configure picks up the LAME encoder.
("lame" ,lame) ("lame" ,lame)
("libid3tag" ,libid3tag) ("libid3tag" ,libid3tag)
("libmad" ,libmad)
("libmpdclient" ,libmpdclient) ("libmpdclient" ,libmpdclient)
("libsamplerate" ,libsamplerate) ("libsamplerate" ,libsamplerate)
("libsndfile" ,libsndfile) ("libsndfile" ,libsndfile)

View file

@ -30,7 +30,7 @@ (define-module (gnu packages nano)
(define-public nano (define-public nano
(package (package
(name "nano") (name "nano")
(version "2.9.6") (version "2.9.7")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -38,7 +38,7 @@ (define-public nano
version ".tar.xz")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1inl8ljkc711969ncwy7irf0464psasikg1g42l0g4sfpdz50wx3")))) "1ga4sdk3ikx1ilggc6c77vyfpbmq3nrhg6svgglpf5sv60bv0jmn"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("gettext" ,gettext-minimal) `(("gettext" ,gettext-minimal)

View file

@ -1333,7 +1333,7 @@ (define-public python2-ipy
(define-public speedtest-cli (define-public speedtest-cli
(package (package
(name "speedtest-cli") (name "speedtest-cli")
(version "1.0.7") (version "2.0.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -1342,7 +1342,7 @@ (define-public speedtest-cli
(file-name (string-append name "-" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1fbq4kpx8sj50g74hwpixisfjjgxq6zyn40d3m28dxhn7mxbnlrq")))) "16kcpba7nmszz2h0fq7qvv6src20syck2wlknaacg69kk88aybbk"))))
(build-system python-build-system) (build-system python-build-system)
(home-page "https://github.com/sivel/speedtest-cli") (home-page "https://github.com/sivel/speedtest-cli")
(synopsis "Internet bandwidth tester") (synopsis "Internet bandwidth tester")

View file

@ -544,13 +544,13 @@ (define-public rpm
(define-public diffoscope (define-public diffoscope
(package (package
(name "diffoscope") (name "diffoscope")
(version "93") (version "94")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri name version)) (uri (pypi-uri name version))
(sha256 (sha256
(base32 (base32
"0g90nf7817jk03hzk36l3hymky4xqs50iynfld3r0in7hffly5nj")))) "07pcc4r9kz8zfr4pfkzk3ipgyv7m5h9vwicrzdgjpa87nbbdgjx6"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:phases (modify-phases %standard-phases `(#:phases (modify-phases %standard-phases

View file

@ -18,6 +18,7 @@
;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2018 Konrad Hinsen <konrad.hinsen@fastmail.net> ;;; Copyright © 2018 Konrad Hinsen <konrad.hinsen@fastmail.net>
;;; Copyright © 2018 Thomas Sigurdsen <tonton@riseup.net> ;;; Copyright © 2018 Thomas Sigurdsen <tonton@riseup.net>
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -62,6 +63,7 @@ (define-module (gnu packages password-utils)
#:use-module (gnu packages ncurses) #:use-module (gnu packages ncurses)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages python) #:use-module (gnu packages python)
#:use-module (gnu packages python-web)
#:use-module (gnu packages suckless) #:use-module (gnu packages suckless)
#:use-module (gnu packages tls) #:use-module (gnu packages tls)
#:use-module (gnu packages qt) #:use-module (gnu packages qt)
@ -94,7 +96,7 @@ (define-public pwgen
(define-public keepassxc (define-public keepassxc
(package (package
(name "keepassxc") (name "keepassxc")
(version "2.3.1") (version "2.3.3")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -103,7 +105,7 @@ (define-public keepassxc
version "-src.tar.xz")) version "-src.tar.xz"))
(sha256 (sha256
(base32 (base32
"1gdrbpzwbs56anc3k5vklvcackcn214pc8gm5xh5zcymsi8q4zff")))) "1m8alsp39vk21zgcvy5zswk0dc1xmajbwnccg7n0lndsi7pqbzyg"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
'(#:configure-flags '("-DWITH_XC_NETWORKING=YES" '(#:configure-flags '("-DWITH_XC_NETWORKING=YES"
@ -659,3 +661,30 @@ (define-public fpm2
to use a different password manager.") to use a different password manager.")
(home-page "https://als.regnet.cz/fpm2/") (home-page "https://als.regnet.cz/fpm2/")
(license license:gpl2+))) (license license:gpl2+)))
(define-public pass-rotate
(package
(name "pass-rotate")
(version "0.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/SirCmpwn/pass-rotate/archive/"
version ".tar.gz"))
(sha256
(base32
"1svm5nj8bczv2dg8lh2zqqhbsrljqsw9680r03qwgl9vlci90210"))
(file-name (string-append name "-" version ".tar.gz"))))
(build-system python-build-system)
(inputs
`(("python-beautifulsoup4" ,python-beautifulsoup4)
("python-docopt" ,python-docopt)
("python-html5lib" ,python-html5lib)
("python-requests" ,python-requests)))
(home-page "https://github.com/SirCmpwn/pass-rotate")
(synopsis "Rotate password on online services")
(description "pass-rotate is a command line utility and python library for
rotating passwords on various web services. It makes it easier to rotate your
passwords, one at a time or in bulk, when security events or routine upkeep of
your online accounts makes it necessary.")
(license license:expat)))

View file

@ -0,0 +1,30 @@
--- a/adb/Android.mk 2018-04-25 23:23:29.527198350 +0200
+++ b/adb/Android.mk 2018-04-25 23:24:25.558632573 +0200
@@ -226,7 +226,7 @@
LOCAL_SRC_FILES := test_track_devices.cpp
LOCAL_SANITIZE := $(adb_host_sanitize)
LOCAL_SHARED_LIBRARIES := libbase
-LOCAL_STATIC_LIBRARIES := libadb libcrypto_static libcutils
+LOCAL_STATIC_LIBRARIES := libadb libbase libcrypto_static libcutils
LOCAL_LDLIBS += -lrt -ldl -lpthread
include $(BUILD_HOST_EXECUTABLE)
endif
@@ -278,6 +278,7 @@
LOCAL_SANITIZE := $(adb_host_sanitize)
LOCAL_STATIC_LIBRARIES := \
libadb \
+ libcutils \
libbase \
libcrypto_static \
libdiagnose_usb \
--- a/adb/sysdeps_test.cpp 2018-05-09 23:58:46.583163684 +0200
+++ b/adb/sysdeps_test.cpp 2018-05-09 23:56:41.356544648 +0200
@@ -17,6 +17,8 @@
#include <gtest/gtest.h>
#include <unistd.h>
#include <atomic>
+#include <climits>
+#include <mutex>
#include "adb_io.h"
#include "sysdeps.h"

View file

@ -0,0 +1,98 @@
From 3dbdc68093e90f0ef9b77b70490d8e0b1dcfbf8f Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Sun, 17 Sep 2017 21:08:45 +0200
Subject: [PATCH] Add ExceptionUtilsGenerator.java.
A gradle task (in gradle/utils.gradle) is normally used to generate an
ExceptionUtils class. Since gradle depends on groovy, we cannot use it, so
we copy the code from the gradle task to a new file. Running this file then
generates the required class.
---
.../codehaus/groovy/ExceptionUtilsGenerator.java | 75 ++++++++++++++++++++++
1 file changed, 75 insertions(+)
create mode 100644 config/ant/src/org/codehaus/groovy/ExceptionUtilsGenerator.java
diff --git a/config/ant/src/org/codehaus/groovy/ExceptionUtilsGenerator.java b/config/ant/src/org/codehaus/groovy/ExceptionUtilsGenerator.java
new file mode 100644
index 0000000..41f006d
--- /dev/null
+++ b/config/ant/src/org/codehaus/groovy/ExceptionUtilsGenerator.java
@@ -0,0 +1,75 @@
+package org.codehaus.groovy;
+
+import org.objectweb.asm.*;
+
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.logging.Logger;
+
+public class ExceptionUtilsGenerator implements Opcodes {
+ private final static Logger LOGGER = Logger.getLogger(ExceptionUtilsGenerator.class.getName());
+
+ public static void main(String... args) {
+ if (args==null || args.length==0) {
+ throw new IllegalArgumentException("You must specify at least one file");
+ }
+
+ ClassWriter cw = new ClassWriter(0);
+ MethodVisitor mv;
+
+ cw.visit(V1_5, ACC_PUBLIC + ACC_SUPER, "org/codehaus/groovy/runtime/ExceptionUtils", null, "java/lang/Object", null);
+
+ cw.visitSource("ExceptionUtils.java", null);
+
+ mv = cw.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
+ mv.visitCode();
+ Label l0 = new Label();
+ mv.visitLabel(l0);
+ mv.visitLineNumber(18, l0);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
+ mv.visitInsn(RETURN);
+ Label l1 = new Label();
+ mv.visitLabel(l1);
+ mv.visitLocalVariable("this", "Lorg/codehaus/groovy/runtime/ExceptionUtils;", null, l0, l1, 0);
+ mv.visitMaxs(1, 1);
+ mv.visitEnd();
+
+ mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "sneakyThrow", "(Ljava/lang/Throwable;)V", null, null);
+ mv.visitCode();
+ Label l2 = new Label();
+ mv.visitLabel(l2);
+ mv.visitLineNumber(20, l2);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitInsn(ATHROW);
+ Label l3 = new Label();
+ mv.visitLabel(l3);
+ mv.visitLocalVariable("e", "Ljava/lang/Throwable;", null, l2, l3, 0);
+ mv.visitMaxs(1, 1);
+ mv.visitEnd();
+
+ cw.visitEnd();
+
+ LOGGER.info("Generating ExceptionUtils");
+ byte[] bytes = cw.toByteArray();
+ for (String classFilePath : args) {
+ File classFile = new File(classFilePath);
+ if (classFile.getParentFile().exists() || classFile.getParentFile().mkdirs()) {
+ try {
+ if (classFile.exists()) {
+ classFile.delete();
+ }
+ BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(classFile));
+ bos.write(bytes);
+ bos.close();
+ } catch (IOException e) {
+ LOGGER.warning("Unable to write file "+classFile);
+ }
+ } else {
+ LOGGER.warning("Unable to create directory "+classFile.getParentFile());
+ }
+ }
+ }
+}
--
2.14.1

View file

@ -0,0 +1,11 @@
--- a/libutils/CallStack.cpp 2018-04-25 20:13:06.348665241 +0200
+++ b/libutils/CallStack.cpp 2018-04-25 20:13:18.360510763 +0200
@@ -17,7 +17,7 @@
#define LOG_TAG "CallStack"
#include <memory>
-
+#include <cstdlib>
#include <utils/CallStack.h>
#include <utils/Printer.h>
#include <utils/Errors.h>

View file

@ -0,0 +1,21 @@
--- a/include/utils/StrongPointer.h 2018-04-25 18:42:34.321003602 +0200
+++ b/include/utils/StrongPointer.h 2018-04-25 18:42:42.180912201 +0200
@@ -17,8 +17,6 @@
#ifndef ANDROID_STRONG_POINTER_H
#define ANDROID_STRONG_POINTER_H
-#include <cutils/atomic.h>
-
#include <stdint.h>
#include <sys/types.h>
#include <stdlib.h>
--- a/libutils/Trace.cpp 2018-04-25 20:41:48.775049786 +0200
+++ b/libutils/Trace.cpp 2018-04-25 20:42:13.674744182 +0200
@@ -21,5 +21,7 @@
static void traceInit()
{
+#if defined(__ANDROID__)
::android::add_sysprop_change_callback(atrace_update_tags, 0);
+#endif
}

View file

@ -0,0 +1,10 @@
--- a/libziparchive/zip_writer.cc 2018-04-25 22:33:05.472674164 +0200
+++ b/libziparchive/zip_writer.cc 2018-04-25 22:33:21.296519518 +0200
@@ -22,6 +22,7 @@
#include <sys/param.h>
+#include <cstring>
#include <cassert>
#include <cstdio>
#include <memory>

View file

@ -1,111 +0,0 @@
Fix CVE-2017-17858:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-17858
https://bugs.ghostscript.com/show_bug.cgi?id=698819
https://github.com/mzet-/Security-Advisories/blob/master/mzet-adv-2017-01.md
Patch copied from upstream source repository:
https://git.ghostscript.com/?p=mupdf.git;a=commit;h=55c3f68d638ac1263a386e0aaa004bb6e8bde731
From 55c3f68d638ac1263a386e0aaa004bb6e8bde731 Mon Sep 17 00:00:00 2001
From: Sebastian Rasmussen <sebras@gmail.com>
Date: Mon, 11 Dec 2017 14:09:15 +0100
Subject: [PATCH] Bugs 698804/698810/698811: Keep PDF object numbers below
limit.
This ensures that:
* xref tables with objects pointers do not grow out of bounds.
* other readers, e.g. Adobe Acrobat can parse PDFs written by mupdf.
---
include/mupdf/pdf/object.h | 3 +++
source/pdf/pdf-repair.c | 5 +----
source/pdf/pdf-xref.c | 21 ++++++++++++---------
3 files changed, 16 insertions(+), 13 deletions(-)
diff --git a/include/mupdf/pdf/object.h b/include/mupdf/pdf/object.h
index 21ed8595..4177112b 100644
--- a/include/mupdf/pdf/object.h
+++ b/include/mupdf/pdf/object.h
@@ -3,6 +3,9 @@
typedef struct pdf_document_s pdf_document;
+/* Defined in PDF 1.7 according to Acrobat limit. */
+#define PDF_MAX_OBJECT_NUMBER 8388607
+
/*
* Dynamic objects.
* The same type of objects as found in PDF and PostScript.
diff --git a/source/pdf/pdf-repair.c b/source/pdf/pdf-repair.c
index ca149bd3..0c29758e 100644
--- a/source/pdf/pdf-repair.c
+++ b/source/pdf/pdf-repair.c
@@ -6,9 +6,6 @@
/* Scan file for objects and reconstruct xref table */
-/* Define in PDF 1.7 to be 8388607, but mupdf is more lenient. */
-#define MAX_OBJECT_NUMBER (10 << 20)
-
struct entry
{
int num;
@@ -436,7 +433,7 @@ pdf_repair_xref(fz_context *ctx, pdf_document *doc)
break;
}
- if (num <= 0 || num > MAX_OBJECT_NUMBER)
+ if (num <= 0 || num > PDF_MAX_OBJECT_NUMBER)
{
fz_warn(ctx, "ignoring object with invalid object number (%d %d R)", num, gen);
goto have_next_token;
diff --git a/source/pdf/pdf-xref.c b/source/pdf/pdf-xref.c
index 00586dbd..6284e70b 100644
--- a/source/pdf/pdf-xref.c
+++ b/source/pdf/pdf-xref.c
@@ -868,11 +868,12 @@ pdf_read_old_xref(fz_context *ctx, pdf_document *doc, pdf_lexbuf *buf)
fz_seek(ctx, file, -(2 + (int)strlen(s)), SEEK_CUR);
}
- if (ofs < 0)
- fz_throw(ctx, FZ_ERROR_GENERIC, "out of range object num in xref: %d", (int)ofs);
- if (ofs > INT64_MAX - len)
- fz_throw(ctx, FZ_ERROR_GENERIC, "xref section object numbers too big");
-
+ if (ofs < 0 || ofs > PDF_MAX_OBJECT_NUMBER
+ || len < 0 || len > PDF_MAX_OBJECT_NUMBER
+ || ofs + len - 1 > PDF_MAX_OBJECT_NUMBER)
+ {
+ fz_throw(ctx, FZ_ERROR_GENERIC, "xref subsection object numbers are out of range");
+ }
/* broken pdfs where size in trailer undershoots entries in xref sections */
if (ofs + len > xref_len)
{
@@ -933,10 +934,8 @@ pdf_read_new_xref_section(fz_context *ctx, pdf_document *doc, fz_stream *stm, in
pdf_xref_entry *table;
int i, n;
- if (i0 < 0 || i1 < 0 || i0 > INT_MAX - i1)
- fz_throw(ctx, FZ_ERROR_GENERIC, "negative xref stream entry index");
- //if (i0 + i1 > pdf_xref_len(ctx, doc))
- // fz_throw(ctx, FZ_ERROR_GENERIC, "xref stream has too many entries");
+ if (i0 < 0 || i0 > PDF_MAX_OBJECT_NUMBER || i1 < 0 || i1 > PDF_MAX_OBJECT_NUMBER || i0 + i1 - 1 > PDF_MAX_OBJECT_NUMBER)
+ fz_throw(ctx, FZ_ERROR_GENERIC, "xref subsection object numbers are out of range");
table = pdf_xref_find_subsection(ctx, doc, i0, i1);
for (i = i0; i < i0 + i1; i++)
@@ -2086,6 +2085,10 @@ pdf_create_object(fz_context *ctx, pdf_document *doc)
/* TODO: reuse free object slots by properly linking free object chains in the ofs field */
pdf_xref_entry *entry;
int num = pdf_xref_len(ctx, doc);
+
+ if (num > PDF_MAX_OBJECT_NUMBER)
+ fz_throw(ctx, FZ_ERROR_GENERIC, "too many objects stored in pdf");
+
entry = pdf_get_incremental_xref_entry(ctx, doc, num);
entry->type = 'f';
entry->ofs = -1;
--
2.16.1

View file

@ -1,88 +0,0 @@
Fix CVE-2018-1000051:
https://bugs.ghostscript.com/show_bug.cgi?id=698873
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000051
Patch copied from upstream source repository:
https://git.ghostscript.com/?p=mupdf.git;a=commit;h=321ba1de287016b0036bf4a56ce774ad11763384
From 321ba1de287016b0036bf4a56ce774ad11763384 Mon Sep 17 00:00:00 2001
From: Sebastian Rasmussen <sebras@gmail.com>
Date: Tue, 19 Dec 2017 23:47:47 +0100
Subject: [PATCH] Bug 698825: Do not drop borrowed colorspaces.
Previously the borrowed colorspace was dropped when updating annotation
appearances, leading to use after free warnings from valgrind/ASAN.
---
source/pdf/pdf-appearance.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/source/pdf/pdf-appearance.c b/source/pdf/pdf-appearance.c
index 70f684f4..d7a1dddd 100644
--- a/source/pdf/pdf-appearance.c
+++ b/source/pdf/pdf-appearance.c
@@ -2170,7 +2170,6 @@ void pdf_update_free_text_annot_appearance(fz_context *ctx, pdf_document *doc, p
fz_device *dev = NULL;
font_info font_rec;
fz_text *text = NULL;
- fz_colorspace *cs = NULL;
fz_matrix page_ctm;
pdf_page_transform(ctx, annot->page, NULL, &page_ctm);
@@ -2184,11 +2183,11 @@ void pdf_update_free_text_annot_appearance(fz_context *ctx, pdf_document *doc, p
fz_var(dlist);
fz_var(dev);
fz_var(text);
- fz_var(cs);
fz_try(ctx)
{
char *contents = pdf_to_str_buf(ctx, pdf_dict_get(ctx, obj, PDF_NAME_Contents));
char *da = pdf_to_str_buf(ctx, pdf_dict_get(ctx, obj, PDF_NAME_DA));
+ fz_colorspace *cs;
fz_point pos;
fz_rect rect;
@@ -2223,7 +2222,6 @@ void pdf_update_free_text_annot_appearance(fz_context *ctx, pdf_document *doc, p
fz_drop_display_list(ctx, dlist);
font_info_fin(ctx, &font_rec);
fz_drop_text(ctx, text);
- fz_drop_colorspace(ctx, cs);
}
fz_catch(ctx)
{
@@ -2359,7 +2357,6 @@ void pdf_set_signature_appearance(fz_context *ctx, pdf_document *doc, pdf_annot
fz_device *dev = NULL;
font_info font_rec;
fz_text *text = NULL;
- fz_colorspace *cs = NULL;
fz_path *path = NULL;
fz_buffer *fzbuf = NULL;
fz_matrix page_ctm;
@@ -2375,7 +2372,6 @@ void pdf_set_signature_appearance(fz_context *ctx, pdf_document *doc, pdf_annot
fz_var(dlist);
fz_var(dev);
fz_var(text);
- fz_var(cs);
fz_var(fzbuf);
fz_try(ctx)
{
@@ -2384,6 +2380,7 @@ void pdf_set_signature_appearance(fz_context *ctx, pdf_document *doc, pdf_annot
fz_rect logo_bounds;
fz_matrix logo_tm;
fz_rect rect;
+ fz_colorspace *cs = fz_device_rgb(ctx); /* Borrowed reference */
pdf_to_rect(ctx, pdf_dict_get(ctx, annot->obj, PDF_NAME_Rect), &annot_rect);
rect = annot_rect;
@@ -2396,7 +2393,6 @@ void pdf_set_signature_appearance(fz_context *ctx, pdf_document *doc, pdf_annot
fz_bound_path(ctx, path, NULL, &fz_identity, &logo_bounds);
center_rect_within_rect(&logo_bounds, &rect, &logo_tm);
fz_concat(&logo_tm, &logo_tm, &page_ctm);
- cs = fz_device_rgb(ctx); /* Borrowed reference */
fz_fill_path(ctx, dev, path, 0, &logo_tm, cs, logo_color, 1.0f, NULL);
get_font_info(ctx, doc, dr, da, &font_rec);
--
2.16.3

View file

@ -1,109 +0,0 @@
Fix CVE-2018-6544:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-6544
https://bugs.ghostscript.com/show_bug.cgi?id=698830
https://bugs.ghostscript.com/show_bug.cgi?id=698965
Patches copied from upstream source repository:
https://git.ghostscript.com/?p=mupdf.git;h=26527eef77b3e51c2258c8e40845bfbc015e405d
https://git.ghostscript.com/?p=mupdf.git;h=b03def134988da8c800adac1a38a41a1f09a1d89
From b03def134988da8c800adac1a38a41a1f09a1d89 Mon Sep 17 00:00:00 2001
From: Sebastian Rasmussen <sebras@gmail.com>
Date: Thu, 1 Feb 2018 16:36:14 +0100
Subject: [PATCH] Bug 698830: Avoid recursion when loading object streams
objects.
If there were indirect references in the object stream dictionary and
one of those indirect references referred to an object inside the object
stream itself, mupdf would previously enter recursion only bounded by the
exception stack. After this commit the object stream is checked if it is
marked immediately after being loaded. If it is marked then we terminate
the recursion at this point, if it is not marked then mark it and
attempt to load the desired object within. We also take care to unmark
the stream object when done or upon exception.
---
source/pdf/pdf-xref.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/source/pdf/pdf-xref.c b/source/pdf/pdf-xref.c
index 723b543c..ed09094c 100644
--- a/source/pdf/pdf-xref.c
+++ b/source/pdf/pdf-xref.c
@@ -1576,6 +1576,19 @@ pdf_load_obj_stm(fz_context *ctx, pdf_document *doc, int num, pdf_lexbuf *buf, i
{
objstm = pdf_load_object(ctx, doc, num);
+ if (pdf_obj_marked(ctx, objstm))
+ fz_throw(ctx, FZ_ERROR_GENERIC, "recursive object stream lookup");
+ }
+ fz_catch(ctx)
+ {
+ pdf_drop_obj(ctx, objstm);
+ fz_rethrow(ctx);
+ }
+
+ fz_try(ctx)
+ {
+ pdf_mark_obj(ctx, objstm);
+
count = pdf_to_int(ctx, pdf_dict_get(ctx, objstm, PDF_NAME_N));
first = pdf_to_int(ctx, pdf_dict_get(ctx, objstm, PDF_NAME_First));
@@ -1655,6 +1668,7 @@ pdf_load_obj_stm(fz_context *ctx, pdf_document *doc, int num, pdf_lexbuf *buf, i
fz_drop_stream(ctx, stm);
fz_free(ctx, ofsbuf);
fz_free(ctx, numbuf);
+ pdf_unmark_obj(ctx, objstm);
pdf_drop_obj(ctx, objstm);
}
fz_catch(ctx)
--
2.16.3
From 26527eef77b3e51c2258c8e40845bfbc015e405d Mon Sep 17 00:00:00 2001
From: Sebastian Rasmussen <sebras@gmail.com>
Date: Mon, 29 Jan 2018 02:00:48 +0100
Subject: [PATCH] Bug 698830: Don't drop unkept stream if running out of error
stack.
Under normal conditions where fz_keep_stream() is called inside
fz_try() we may call fz_drop_stream() in fz_catch() upon exceptions.
The issue comes when fz_keep_stream() has not yet been called but is
dropped in fz_catch(). This happens in the PDF from the bug when
fz_try() runs out of exception stack, and next the code in fz_catch()
runs, dropping the caller's reference to the filter chain stream!
The simplest way of fixing this it to always keep the filter chain
stream before fz_try() is called. That way fz_catch() may drop the
stream whether an exception has occurred or if the fz_try() ran out of
exception stack.
---
source/pdf/pdf-stream.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/source/pdf/pdf-stream.c b/source/pdf/pdf-stream.c
index c89da5c4..c6ba7ad3 100644
--- a/source/pdf/pdf-stream.c
+++ b/source/pdf/pdf-stream.c
@@ -303,14 +303,13 @@ pdf_open_raw_filter(fz_context *ctx, fz_stream *chain, pdf_document *doc, pdf_ob
*orig_gen = 0;
}
- fz_var(chain);
+ chain = fz_keep_stream(ctx, chain);
fz_try(ctx)
{
len = pdf_to_int(ctx, pdf_dict_get(ctx, stmobj, PDF_NAME_Length));
- /* don't close chain when we close this filter */
- chain2 = fz_keep_stream(ctx, chain);
+ chain2 = chain;
chain = NULL;
chain = fz_open_null(ctx, chain2, len, offset);
--
2.16.3

View file

@ -1,27 +0,0 @@
Make it possible to build MuPDF with OpenJPEG 2.3, which is the latest
release series and contains many important bug fixes.
Patch adapted from Debian:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=745246
And related to this upstream commit:
http://git.ghostscript.com/?p=mupdf.git;a=commit;h=f88bfe2e62dbadb96d4f52d7aa025f0a516078da
diff --git a/source/fitz/load-jpx.c b/source/fitz/load-jpx.c
index 65699ba..ea84778 100644
--- a/source/fitz/load-jpx.c
+++ b/source/fitz/load-jpx.c
@@ -445,11 +445,6 @@ fz_load_jpx_info(fz_context *ctx, const unsigned char *data, size_t size, int *w
#else /* HAVE_LURATECH */
-#define OPJ_STATIC
-#define OPJ_HAVE_INTTYPES_H
-#if !defined(_MSC_VER) || _MSC_VER >= 1600
-#define OPJ_HAVE_STDINT_H
-#endif
#define USE_JPIP
#include <openjpeg.h>

View file

@ -0,0 +1,69 @@
http://source.myrepos.branchable.com/?p=source.git;a=patch;h=40a3df21c73f1bb1b6915cc6fa503f50814664c8
This can be removed with the next release. It was modified slightly to apply
From 40a3df21c73f1bb1b6915cc6fa503f50814664c8 Mon Sep 17 00:00:00 2001
From: Paul Wise <pabs3@bonedaddy.net>
Date: Sun, 11 Feb 2018 21:57:49 +0800
Subject: [PATCH] Mitigate vulnerabilities caused by some git remotes being
able to execute code
Set GIT_PROTOCOL_FROM_USER=0 with git versions newer than 2.12.
Prevent remote websites from causing cloning of local repositories.
Manually whitelist known-safe protocols (http, https, git, ssh)
when using git versions older than 2.12.
Fixes: CVE-2018-7032
Fixes: https://bugs.debian.org/840014
Suggestions-by: Jakub Wilk <jwilk@jwilk.net>
Reported-by: Jakub Wilk <jwilk@jwilk.net>
---
webcheckout | 22 +++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/webcheckout b/webcheckout
index e98da5c..de497ba 100755
--- a/webcheckout
+++ b/webcheckout
@@ -71,6 +71,16 @@ use Getopt::Long;
use warnings;
use strict;
+# Mitigate some git remote types being dangerous
+my $git_unsafe = 1;
+my $git_version = `git --version`;
+$git_version =~ s{^git version }{};
+my ($major, $minor) = split(/\./, $git_version);
+if (int($major) >= 2 && int($minor) >= 12) {
+ $ENV{GIT_PROTOCOL_FROM_USER} = 0;
+ $git_unsafe = 0;
+}
+
# What to download.
my $url;
@@ -89,7 +99,17 @@ my $destdir;
# how to perform checkouts
my %handlers=(
- git => sub { doit("git", "clone", shift, $destdir) },
- svn => sub { doit("svn", "checkout", shift, $destdir) },
- bzr => sub { doit("bzr", "branch", shift, $destdir) },
+ git => sub {
+ my $git_url = shift;
+ # Reject unsafe URLs with older versions of git
+ # that do not already check the URL safety.
+ if ($git_unsafe && $git_url !~ m{^(?:(?:https?|git|ssh):[^:]|(?:[-_.A-Za-z0-9]+@)?[-_.A-Za-z0-9]+:(?!:|//))}) {
+ print STDERR "potentially unsafe git URL, may fail, touch local files or execute arbitrary code\n";
+ return 1;
+ }
+ # Reject cloning local directories too, webcheckout is for remote repos
+ doit(qw(git -c protocol.file.allow=user clone --), $git_url, $destdir)
+ },
+ svn => sub { doit(qw(svn checkout --), shift, $destdir) },
+ bzr => sub { doit(qw(bzr branch --), shift, $destdir) },
);
--
2.11.0

View file

@ -1,28 +0,0 @@
This drops a test that fails with numpy 1.12.
Upstream bug URL: https://github.com/statsmodels/statsmodels/issues/3541
--- a/statsmodels/discrete/tests/test_discrete.py 2017-03-06 15:29:19.947343331 +0000
+++ b/statsmodels/discrete/tests/test_discrete.py 2017-03-06 15:29:37.759328845 +0000
@@ -1329,21 +1329,6 @@
res = mod.fit(start_params=-np.ones(4), method='newton', disp=0)
assert_(not res.mle_retvals['converged'])
-def test_issue_339():
- # make sure MNLogit summary works for J != K.
- data = sm.datasets.anes96.load()
- exog = data.exog
- # leave out last exog column
- exog = exog[:,:-1]
- exog = sm.add_constant(exog, prepend=True)
- res1 = sm.MNLogit(data.endog, exog).fit(method="newton", disp=0)
- # strip the header from the test
- smry = "\n".join(res1.summary().as_text().split('\n')[9:])
- cur_dir = os.path.dirname(os.path.abspath(__file__))
- test_case_file = os.path.join(cur_dir, 'results', 'mn_logit_summary.txt')
- test_case = open(test_case_file, 'r').read()
- np.testing.assert_equal(smry, test_case[:-1])
-
def test_issue_341():
data = sm.datasets.anes96.load()
exog = data.exog

View file

@ -1,67 +0,0 @@
From 18e5ea50a7136cb3686c5a7c51c111ccce73dc54 Mon Sep 17 00:00:00 2001
From: Iris Morelle <shadowm@wesnoth.org>
Date: Sun, 6 May 2018 16:10:42 -0300
Subject: [PATCH] i18n: Blind fix attempt for std::bad_cast being thrown on
Windows
Several reports on Steam and our forums point at std::bad_cast being
thrown when accessing Preferences and the Multiplayer menu amongst
others. It's possible that the locale configuration on those systems is
not quite right, and compare() and icompare() are able to throw
std::bad_cast when this happens as they both use std::use_facet().
Note that much like the macOS/iOS version of icompare(), this stopgap
patch doesn't attempt to provide any form of case-insensitive fallback
and just uses a case-sensitive comparison instead.
---
src/gettext_boost.cpp | 29 +++++++++++++++++++++++++++--
1 file changed, 27 insertions(+), 2 deletions(-)
diff --git a/src/gettext_boost.cpp b/src/gettext_boost.cpp
index 3cc7690d5ef..fb04ffeea90 100644
--- a/src/gettext_boost.cpp
+++ b/src/gettext_boost.cpp
@@ -423,7 +423,19 @@ void set_language(const std::string& language, const std::vector<std::string>* /
int compare(const std::string& s1, const std::string& s2)
{
std::lock_guard<std::mutex> lock(get_mutex());
- return std::use_facet<std::collate<char>>(get_manager().get_locale()).compare(s1.c_str(), s1.c_str() + s1.size(), s2.c_str(), s2.c_str() + s2.size());
+
+ try {
+ return std::use_facet<std::collate<char>>(get_manager().get_locale()).compare(s1.c_str(), s1.c_str() + s1.size(), s2.c_str(), s2.c_str() + s2.size());
+ } catch(const std::bad_cast&) {
+ static bool bad_cast_once = false;
+
+ if(!bad_cast_once) {
+ ERR_G << "locale set-up for compare() is broken, falling back to std::string::compare()\n";
+ bad_cast_once = true;
+ }
+
+ return s1.compare(s2);
+ }
}
int icompare(const std::string& s1, const std::string& s2)
@@ -433,8 +445,21 @@ int icompare(const std::string& s1, const std::string& s2)
return compare(s1, s2);
#else
std::lock_guard<std::mutex> lock(get_mutex());
- return std::use_facet<bl::collator<char>>(get_manager().get_locale()).compare(
+
+ try {
+ return std::use_facet<bl::collator<char>>(get_manager().get_locale()).compare(
bl::collator_base::secondary, s1, s2);
+ } catch(const std::bad_cast&) {
+ static bool bad_cast_once = false;
+
+ if(!bad_cast_once) {
+ ERR_G << "locale set-up for icompare() is broken, falling back to std::string::compare()\n";
+ bad_cast_once = true;
+ }
+
+ // FIXME: not even lazily case-insensitive
+ return s1.compare(s2);
+ }
#endif
}

View file

@ -5,7 +5,7 @@
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
;;; Copyright © 2016 Roel Janssen <roel@gnu.org> ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
;;; Copyright © 2016 Nils Gillmann <ng0@n0.is> ;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu>
@ -597,19 +597,15 @@ (define-public podofo
(define-public mupdf (define-public mupdf
(package (package
(name "mupdf") (name "mupdf")
(version "1.12.0") (version "1.13.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://mupdf.com/downloads/archive/" (uri (string-append "https://mupdf.com/downloads/archive/"
name "-" version "-source.tar.xz")) name "-" version "-source.tar.xz"))
(patches (search-patches "mupdf-build-with-latest-openjpeg.patch"
"mupdf-CVE-2017-17858.patch"
"mupdf-CVE-2018-6544.patch"
"mupdf-CVE-2018-1000051.patch"))
(sha256 (sha256
(base32 (base32
"0b9j0gqbc3jhmx87r6idcsh8lnb30840c3hyx6dk2gdjqqh3hysp")) "0129k92bav692l6lyw10ryldx7h2f9khjpgnp3f3n4fdsph9hrkl"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet '(begin (delete-file-recursively "thirdparty") #t)))) (snippet '(begin (delete-file-recursively "thirdparty") #t))))
(build-system gnu-build-system) (build-system gnu-build-system)

View file

@ -69,14 +69,14 @@ (define-module (gnu packages photo)
(define-public libraw (define-public libraw
(package (package
(name "libraw") (name "libraw")
(version "0.18.10") (version "0.18.11")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://www.libraw.org/data/LibRaw-" (uri (string-append "https://www.libraw.org/data/LibRaw-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0klrzg1cn8ksxqbhx52dldi5bbmad190npnhhgkyr2jzpgrbpj88")))) "07a7k83hx7icahh6jaxfbd7pw5jjm5i11xcqjj31b28d1aj29xvw"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(home-page "https://www.libraw.org") (home-page "https://www.libraw.org")
(synopsis "Raw image decoder") (synopsis "Raw image decoder")

69
gnu/packages/printers.scm Normal file
View file

@ -0,0 +1,69 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages printers)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages libusb)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages qt))
;; This is a module for packages related to printer-like devices, but not
;; related to CUPS.
(define-public robocut
(package
(name "robocut")
(version "1.0.11")
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/Timmmm/robocut/archive/v"
version ".tar.gz"))
(sha256
(base32
"0nmr1plq1f6sarxwqwy4vzbxkljlx8y4xalm7r05vx4lrdai5pad"))
(file-name (string-append name "-" version ".tar.gz"))))
(build-system gnu-build-system)
(arguments
'(#:phases (modify-phases %standard-phases
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(substitute* "Robocut.pro"
(("/usr/")
(string-append out "/")))
(invoke "qmake"
(string-append "PREFIX=" out))
#t))))))
(inputs
`(("libusb" ,libusb)
("qt" ,qtbase)
("qtsvg" ,qtsvg)))
(native-inputs
`(("pkg-config" ,pkg-config)
("qmake" ,qtbase)))
(synopsis "Graphical program to drive plotting cutters")
(description
"Robocut is a simple graphical program that allows you to cut graphics
with Graphtec and Sihouette plotting cutters using an SVG file as its input.")
(home-page "http://robocut.org")
(license license:gpl3+)))

View file

@ -16,6 +16,7 @@
;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au> ;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org> ;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -44,11 +45,32 @@ (define-module (gnu packages python-crypto)
#:use-module (gnu packages multiprecision) #:use-module (gnu packages multiprecision)
#:use-module (gnu packages protobuf) #:use-module (gnu packages protobuf)
#:use-module (gnu packages python) #:use-module (gnu packages python)
#:use-module (gnu packages python-web)
#:use-module (gnu packages time) #:use-module (gnu packages time)
#:use-module (gnu packages tls) #:use-module (gnu packages tls)
#:use-module ((guix licenses) #:prefix license:) #:use-module ((guix licenses) #:prefix license:)
#:use-module (srfi srfi-1)) #:use-module (srfi srfi-1))
(define-public python-base58
(package
(name "python-base58")
(version "1.0.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "base58" version))
(sha256
(base32
"0lgnk7ycdxwhk2bkygl30nsks56bvrdj79ix76iv965pz808pzn5"))))
(build-system python-build-system)
(native-inputs
`(("python-pyhamcrest" ,python-pyhamcrest)))
(home-page "https://github.com/keis/base58")
(synopsis "Base58 and Base58Check implementation")
(description "Base58 and Base58Check implementation compatible
with what is used by the Bitcoin network.")
(license license:expat)))
(define-public python-bcrypt (define-public python-bcrypt
(package (package
(name "python-bcrypt") (name "python-bcrypt")
@ -821,3 +843,105 @@ (define-public python-m2crypto
(define-public python2-m2crypto (define-public python2-m2crypto
(package-with-python2 python-m2crypto)) (package-with-python2 python-m2crypto))
(define-public python-pylibscrypt
(package
(name "python-pylibscrypt")
(version "1.7.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pylibscrypt" version))
(sha256
(base32
"1b3rgzl6dbzs08vhv41b6y4n5189wv7lr27acxn104hs45745abs"))))
(build-system python-build-system)
(arguments
`(#:tests? #f)) ;FIXME: unable to find libraries
(inputs
`(("openssl" ,openssl)))
(home-page "https://github.com/jvarho/pylibscrypt")
(synopsis "Scrypt for Python")
(description "There are a lot of different scrypt modules for Python, but
none of them have everything that I'd like, so here's one more. It uses
hashlib.scrypt on Python 3.6 and OpenSSL 1.1.")
(license license:isc)))
(define-public python-libnacl
(package
(name "python-libnacl")
(version "1.6.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "libnacl" version))
(sha256
(base32
"0nv7n8nfswkhl614x5mllrkvaslraa0053q11iylb337cy43vb4v"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'locate-libsodium
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "libnacl/__init__.py"
(("(return ctypes.cdll.LoadLibrary\\(')libsodium.so('\\))"
_ pre post)
(let ((libsodium (string-append (assoc-ref inputs "libsodium")
"/lib/libsodium.so")))
(string-append pre libsodium post)))))))))
(native-inputs
`(("python-pyhamcrest" ,python-pyhamcrest)))
(inputs
`(("libsodium" ,libsodium)))
(home-page "https://libnacl.readthedocs.org/")
(synopsis "Python bindings for libsodium based on ctypes")
(description "@code{libnacl} is used to gain direct access to the
functions exposed by @code{NaCl} library via @code{libsodium}. It has
been constructed to maintain extensive documentation on how to use
@code{NaCl} as well as being completely portable.")
(license license:asl2.0)))
(define-public python-duniterpy
(package
(name "python-duniterpy")
(version "0.43.2")
(source
(origin
(method git-fetch)
;; Pypi's default URI is missing "requirements.txt" file.
(uri (git-reference
(url "https://github.com/duniter/duniter-python-api.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"1ch4f150k1p1l876pp08p5rxqhpv5xfbxdw6njcmr06hspv8v8x4"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
;; Among 108 tests, a single one is failing: FAIL:
;; test_from_pubkey. Remove it.
(add-after 'unpack 'remove-failing-test
(lambda _
(delete-file "tests/documents/test_crc_pubkey.py")
#t)))))
(propagated-inputs
`(("python-aiohttp" ,python-aiohttp)
("python-base58" ,python-base58)
("python-jsonschema" ,python-jsonschema)
("python-libnacl" ,python-libnacl)
("python-pylibscrypt" ,python-pylibscrypt)
("python-pypeg2" ,python-pypeg2)))
(home-page "https://github.com/duniter/duniter-python-api")
(synopsis "Python implementation of Duniter API")
(description "@code{duniterpy} is an implementation of
@uref{https://github.com/duniter/duniter/, duniter} API. Its
main features are:
@itemize
@item Supports Duniter's Basic Merkle API and protocol
@item Asynchronous
@item Duniter signing key
@end itemize")
(license license:gpl3+)))

View file

@ -24,6 +24,7 @@
;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org> ;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
;;; Copyright © 2017 Mark Meyer <mark@ofosos.org> ;;; Copyright © 2017 Mark Meyer <mark@ofosos.org>
;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org> ;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -60,6 +61,70 @@ (define-module (gnu packages python-web)
#:use-module ((guix licenses) #:prefix license:) #:use-module ((guix licenses) #:prefix license:)
#:use-module (srfi srfi-1)) #:use-module (srfi srfi-1))
(define-public python-aiohttp
(package
(name "python-aiohttp")
(version "3.1.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "aiohttp" version))
(sha256
(base32
"1b888lggmyf2d08rfayq9khszzc0pav1z70ssc0b4d9kkr4g1klz"))))
(build-system python-build-system)
(arguments
`(#:tests? #f)) ;FIXME: 2 errors, 2084 passed
(native-inputs
`(("python-async-generator" ,python-async-generator)
("python-pytest" ,python-pytest)
("python-pytest-capturelog" ,python-pytest-capturelog)
("python-pytest-mock" ,python-pytest-mock)))
(propagated-inputs
`(("python-aiodns" ,python-aiodns)
("python-async-timeout" ,python-async-timeout)
("python-attrs" ,python-attrs)
("python-chardet" ,python-chardet)
("python-idna-ssl" ,python-idna-ssl)
("python-multidict" ,python-multidict)
("python-yarl" ,python-yarl)))
(home-page "https://github.com/aio-libs/aiohttp/")
(synopsis "Async HTTP client/server framework (asyncio)")
(description "@code{aiohttp} is an asynchronous HTTP client/server
framework.
Its main features are:
@itemize
@item Supports both client and server side of HTTP protocol.
@item Supports both client and server Web-Sockets out-of-the-box without the
Callback Hell.
@item Web-server has middlewares and pluggable routing.
@end itemize")
(license license:asl2.0)))
(define-public python-aiodns
(package
(name "python-aiodns")
(version "1.1.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "aiodns" version))
(sha256
(base32
"1snr5paql8dgvc676n8xq460wypjsb1xj53cf3px1s4wczf7lryq"))))
(build-system python-build-system)
(inputs
`(("python-pycares" ,python-pycares)))
(arguments
`(#:tests? #f)) ;tests require internet access
(home-page "http://github.com/saghul/aiodns")
(synopsis "Simple DNS resolver for asyncio")
(description "@code{aiodns} provides a simple way for doing
asynchronous DNS resolutions with a synchronous looking interface by
using @url{https://github.com/saghul/pycares,pycares}.")
(license license:expat)))
(define-public python-furl (define-public python-furl
(package (package
(name "python-furl") (name "python-furl")
@ -2511,3 +2576,47 @@ (define-public python2-urlgrabber
more.") more.")
(license license:lgpl2.1+))) (license license:lgpl2.1+)))
(define-public python-pycares
(package
(name "python-pycares")
(version "2.3.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pycares" version))
(sha256
(base32
"0h4fxw5drrhfyslzmfpljk0qnnpbhhb20hnnndzahhbwylyw1x1n"))))
(build-system python-build-system)
(arguments
`(#:tests? #f)) ;tests require internet access
(home-page "http://github.com/saghul/pycares")
(synopsis "Python interface for @code{c-ares}")
(description "@code{pycares} is a Python module which provides an
interface to @code{c-ares}, a C library that performs DNS requests and
name resolutions asynchronously.")
(license license:expat)))
(define-public python-yarl
(package
(name "python-yarl")
(version "1.1.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "yarl" version))
(sha256
(base32
"1s6z13g8vgxfkkqwhn6imnm7pl7ky9arv4jygnn6bcndcbidg7d6"))))
(build-system python-build-system)
(native-inputs
`(("python-pytest" ,python-pytest)
("python-pytest-runner" ,python-pytest-runner)))
(propagated-inputs
`(("python-idna" ,python-idna)
("python-multidict" ,python-multidict)))
(home-page "https://github.com/aio-libs/yarl/")
(synopsis "Yet another URL library")
(description "@code{yarl} module provides handy @code{URL} class
for URL parsing and changing.")
(license license:asl2.0)))

View file

@ -51,6 +51,7 @@
;;; Copyright © 2018 Mathieu Lirzin <mthl@gnu.org> ;;; Copyright © 2018 Mathieu Lirzin <mthl@gnu.org>
;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com> ;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com>
;;; Copyright © 2016, 2018 Tomáš Čech <sleep_walker@gnu.org> ;;; Copyright © 2016, 2018 Tomáš Čech <sleep_walker@gnu.org>
;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -3369,14 +3370,14 @@ (define-public python2-numpydoc
(define-public python-numexpr (define-public python-numexpr
(package (package
(name "python-numexpr") (name "python-numexpr")
(version "2.6.4") (version "2.6.5")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "numexpr" version)) (uri (pypi-uri "numexpr" version))
(sha256 (sha256
(base32 (base32
"1kpnbb5d5n927113zccfibn16z7gidjipyac6kbbhzs0lnizkgph")))) "1frnbcwmsi312154x274xl28xazr1k8vjby83fwyla2n10a81bgq"))))
(build-system python-build-system) (build-system python-build-system)
(arguments `(#:tests? #f)) ; no tests included (arguments `(#:tests? #f)) ; no tests included
(propagated-inputs (propagated-inputs
@ -3872,6 +3873,27 @@ (define-public python-pycodestyle
(define-public python2-pycodestyle (define-public python2-pycodestyle
(package-with-python2 python-pycodestyle)) (package-with-python2 python-pycodestyle))
(define-public python-multidict
(package
(name "python-multidict")
(version "4.2.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "multidict" version))
(sha256
(base32
"1vf5bq8hn5a9rvhr5v4fwbmarfsp35hhr8gs74kqfijy34j2f194"))))
(build-system python-build-system)
(native-inputs
`(("python-pytest" ,python-pytest)
("python-pytest-runner" ,python-pytest-runner)))
(home-page "https://github.com/aio-libs/multidict/")
(synopsis "Multidict implementation")
(description "Multidict is dict-like collection of key-value pairs
where key might be occurred more than once in the container.")
(license license:asl2.0)))
(define-public python-orderedmultidict (define-public python-orderedmultidict
(package (package
(name "python-orderedmultidict") (name "python-orderedmultidict")
@ -5030,14 +5052,14 @@ (define-public python2-beautifulsoup4
(define-public python-netifaces (define-public python-netifaces
(package (package
(name "python-netifaces") (name "python-netifaces")
(version "0.10.6") (version "0.10.7")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "netifaces" version)) (uri (pypi-uri "netifaces" version))
(sha256 (sha256
(base32 (base32
"1q7bi5k2r955rlcpspx4salvkkpk28jky67fjbpz2dkdycisak8c")))) "1gccklrcplbbqh81g1mdgpa5y8na7kkf29cq2ka3f5a2fp5hyndx"))))
(build-system python-build-system) (build-system python-build-system)
(home-page "https://github.com/al45tair/netifaces") (home-page "https://github.com/al45tair/netifaces")
(synopsis (synopsis
@ -6373,6 +6395,26 @@ (define-public python-idna
(define-public python2-idna (define-public python2-idna
(package-with-python2 python-idna)) (package-with-python2 python-idna))
(define-public python-idna-ssl
(package
(name "python-idna-ssl")
(version "1.0.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "idna-ssl" version))
(sha256
(base32
"0ydrc8hpg9mdr5hqq1lqfsfbn6sjq69slwpfrnlrm3k0phqg14qj"))))
(build-system python-build-system)
(arguments
`(#:tests? #f)) ;circular dependency with python-aiohttp
(home-page "https://github.com/aio-libs/idna-ssl")
(synopsis "Patch @code{ssl.match_hostname} for Unicode(idna) domains support")
(description "Patch @code{ssl.match_hostname} for Unicode(idna)
domains support.")
(license license:expat)))
(define-public python-pretend (define-public python-pretend
(package (package
(name "python-pretend") (name "python-pretend")
@ -10606,14 +10648,14 @@ (define-public python2-ansi2html
(define-public python-ddt (define-public python-ddt
(package (package
(name "python-ddt") (name "python-ddt")
(version "1.1.2") (version "1.1.3")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "ddt" version)) (uri (pypi-uri "ddt" version))
(sha256 (sha256
(base32 (base32
"1wqkmz0yhanly8sif5vb02p2iik7mwxwph8ywph2kbb8ws8szdpx")))) "1lw17420iimhghkgzgax85nn8d1an2d6k2cfvb7j5kwn2dqlr1vk"))))
(build-system python-build-system) (build-system python-build-system)
(native-inputs (native-inputs
`(("python-mock" ,python-mock) `(("python-mock" ,python-mock)
@ -10827,10 +10869,12 @@ (define-public python-attrs
"1jafnn1kzd6qhxgprhx6y6ik1r5m2rilx25syzcmq03azp660y8w")))) "1jafnn1kzd6qhxgprhx6y6ik1r5m2rilx25syzcmq03azp660y8w"))))
(build-system python-build-system) (build-system python-build-system)
(native-inputs (native-inputs
`(("python-pytest" ,python-pytest) `(("python-coverage" ,python-coverage)
("python-hypothesis" ,python-hypothesis) ("python-hypothesis" ,python-hypothesis)
("python-zope-interface" ,python-zope-interface) ("python-pytest" ,python-pytest)
("python-six" ,python-six))) ("python-six" ,python-six)
("python-sphinx" ,python-sphinx)
("python-zope-interface" ,python-zope-interface)))
(home-page "https://github.com/python-attrs/attrs/") (home-page "https://github.com/python-attrs/attrs/")
(synopsis "Attributes without boilerplate") (synopsis "Attributes without boilerplate")
(description "@code{attrs} is a Python package with class decorators that (description "@code{attrs} is a Python package with class decorators that
@ -13336,3 +13380,43 @@ (define-public python-parso
(define-public python2-parso (define-public python2-parso
(package-with-python2 python-parso)) (package-with-python2 python-parso))
(define-public python-async-generator
(package
(name "python-async-generator")
(version "1.9")
(source
(origin
(method url-fetch)
(uri (pypi-uri "async_generator" version))
(sha256
(base32
"0wc3hidz1q85cja93k5pzybn0fprfnqyrv4qlkdqdzklc5f4dmdp"))))
(build-system python-build-system)
(native-inputs
`(("python-pytest" ,python-pytest)))
(home-page "https://github.com/python-trio/async_generator")
(synopsis "Async generators and context managers for Python 3.5+")
(description "@code{async_generator} back-ports Python 3.6's native async
generators and Python 3.7's context managers into Python 3.5.")
;; Dual licensed.
(license (list license:expat license:asl2.0))))
(define-public python-async-timeout
(package
(name "python-async-timeout")
(version "2.0.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "async-timeout" version))
(sha256
(base32
"1l3kg062m02mph6rf9rdv8r5c5n356clxa6b6mrn0i77vk9g9kq0"))))
(build-system python-build-system)
(home-page "https://github.com/aio-libs/async_timeout/")
(synopsis "Timeout context manager for asyncio programs")
(description "@code{async-timeout} provides a timeout timeout context
manager compatible with @code{asyncio}.")
(license license:asl2.0)))

View file

@ -237,8 +237,21 @@ (define-public rust-1.19
("llvm" ,llvm-3.9.1) ("llvm" ,llvm-3.9.1)
("openssl" ,openssl) ("openssl" ,openssl)
("libcurl" ,curl))) ; For "cargo" ("libcurl" ,curl))) ; For "cargo"
;; rustc invokes gcc, so we need to set its search paths accordingly. ;; rustc invokes gcc, so we need to set its search paths accordingly.
(native-search-paths (package-native-search-paths gcc)) ;; Note: duplicate its value here to cope with circular dependencies among
;; modules (see <https://bugs.gnu.org/31392>).
(native-search-paths
(list (search-path-specification
(variable "C_INCLUDE_PATH")
(files '("include")))
(search-path-specification
(variable "CPLUS_INCLUDE_PATH")
(files '("include")))
(search-path-specification
(variable "LIBRARY_PATH")
(files '("lib" "lib64")))))
(synopsis "Compiler for the Rust progamming language") (synopsis "Compiler for the Rust progamming language")
(description "Rust is a systems programming language that provides memory (description "Rust is a systems programming language that provides memory
safety and thread safety guarantees.") safety and thread safety guarantees.")

View file

@ -52,7 +52,7 @@ (define-module (gnu packages shells)
(define-public dash (define-public dash
(package (package
(name "dash") (name "dash")
(version "0.5.9.1") (version "0.5.10.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -60,7 +60,7 @@ (define-public dash
"dash-" version ".tar.gz")) "dash-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0ng695mq5ngg43h7ljhxvbjm46ym3nayj6ssn47d2gm9fbm5pkay")) "1bl4brz5vy07lrss54glp4vfca3q8d73hyc87sqdk99f76z95b6s"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
'(begin '(begin

View file

@ -639,14 +639,14 @@ (define-public r
(define-public r-bit (define-public r-bit
(package (package
(name "r-bit") (name "r-bit")
(version "1.1-12") (version "1.1-13")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "bit" version)) (uri (cran-uri "bit" version))
(sha256 (sha256
(base32 (base32
"0a6ig6nnjzq80r2ll4hc74za3xwzbzig6wlyb4dby0knzf3iqa6f")))) "1yhpwvfkxpb773h8khjzyamqxl2jn7pjjmxjfawq626hhds8fsh6"))))
(build-system r-build-system) (build-system r-build-system)
(home-page "http://ff.r-forge.r-project.org") (home-page "http://ff.r-forge.r-project.org")
(synopsis "Class for vectors of 1-bit booleans") (synopsis "Class for vectors of 1-bit booleans")
@ -965,13 +965,13 @@ (define-public r-stringi
(define-public r-stringr (define-public r-stringr
(package (package
(name "r-stringr") (name "r-stringr")
(version "1.3.0") (version "1.3.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "stringr" version)) (uri (cran-uri "stringr" version))
(sha256 (sha256
(base32 "07dvfbkhv8gk6l32j43jvxpmqlhqp0mdby406h5a3bsc6k94ic13")))) (base32 "0hq3ybz7clnifi5wdm2s6p2i0kzljdkv26blg6yphng472h8x2vs"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-glue" ,r-glue) `(("r-glue" ,r-glue)
@ -1824,14 +1824,15 @@ (define-public python-statsmodels
(uri (pypi-uri "statsmodels" version)) (uri (pypi-uri "statsmodels" version))
(sha256 (sha256
(base32 (base32
"0j30v3932shnj9368c9jr3svkyrvfj90h2l7nxnqkbpv0svilhr6")) "0j30v3932shnj9368c9jr3svkyrvfj90h2l7nxnqkbpv0svilhr6"))))
(patches (search-patches "python-statsmodels-fix-tests.patch"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:phases `(;; The test suite is very large and rather brittle. Tests often fail
;; because of minor changes in dependencies that upstream hasn't fixed
;; in a new release.
#:tests? #f
#:phases
(modify-phases %standard-phases (modify-phases %standard-phases
;; tests must be run after installation
(delete 'check)
(add-after 'unpack 'set-matplotlib-backend-to-agg (add-after 'unpack 'set-matplotlib-backend-to-agg
(lambda _ (lambda _
;; Set the matplotlib backend to Agg to avoid problems using the ;; Set the matplotlib backend to Agg to avoid problems using the
@ -1843,14 +1844,17 @@ (define-public python-statsmodels
(string-append "import matplotlib;matplotlib.use('Agg');" (string-append "import matplotlib;matplotlib.use('Agg');"
line))) line)))
#t)) #t))
(add-after 'install 'check ;; FIXME: This is a bug in version 0.8 since the upgrade to scipy 1.0.
(lambda* (#:key inputs outputs #:allow-other-keys) ;; See https://github.com/statsmodels/statsmodels/issues/3931
;; Make installed package available for running the tests ;; This has been fixed in version 0.9.
(add-installed-pythonpath inputs outputs) (add-after 'unpack 'patch-for-scipy
(with-directory-excursion "/tmp" (lambda _
(zero? (system* "nosetests" (substitute* "statsmodels/discrete/discrete_model.py"
"--stop" (("return stats.chisqprob" match)
"-v" "statsmodels")))))))) (string-append
"stats.chisqprob = lambda chisq, df: stats.chi2.sf(chisq, df);"
match)))
#t)))))
(propagated-inputs (propagated-inputs
`(("python-numpy" ,python-numpy) `(("python-numpy" ,python-numpy)
("python-scipy" ,python-scipy) ("python-scipy" ,python-scipy)
@ -2423,13 +2427,13 @@ (define-public r-readr
(define-public r-plotrix (define-public r-plotrix
(package (package
(name "r-plotrix") (name "r-plotrix")
(version "3.7") (version "3.7-1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "plotrix" version)) (uri (cran-uri "plotrix" version))
(sha256 (sha256
(base32 (base32
"0rw81n9p3d2i03b4pgcfj5blryc94f29bm9a4j9bnp5h8qjj6pry")))) "16p6d2dna6dah7rg2xknhyy65jkfn0zzivx1nnfxhd4f5q0v87w2"))))
(build-system r-build-system) (build-system r-build-system)
(home-page "https://cran.r-project.org/web/packages/plotrix") (home-page "https://cran.r-project.org/web/packages/plotrix")
(synopsis "Various plotting functions") (synopsis "Various plotting functions")
@ -5195,14 +5199,14 @@ (define-public r-caret
(define-public r-rcppprogress (define-public r-rcppprogress
(package (package
(name "r-rcppprogress") (name "r-rcppprogress")
(version "0.4") (version "0.4.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "RcppProgress" version)) (uri (cran-uri "RcppProgress" version))
(sha256 (sha256
(base32 (base32
"09ayw6d69i0lplmaj5md25p5hn1nmiyp6a4sh60v93nrrs1cq7iv")))) "0yk01hfv961zyp569682k9igvhnwqyg5j0n5fm63sxigj82l2xhi"))))
(properties `((upstream-name . "RcppProgress"))) (properties `((upstream-name . "RcppProgress")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs

View file

@ -8,6 +8,7 @@
;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is> ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Jovany Leandro G.C <bit4bit@riseup.net>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -30,6 +31,7 @@ (define-module (gnu packages telephony)
#:use-module (gnu packages avahi) #:use-module (gnu packages avahi)
#:use-module (gnu packages boost) #:use-module (gnu packages boost)
#:use-module (gnu packages check) #:use-module (gnu packages check)
#:use-module (gnu packages file)
#:use-module (gnu packages protobuf) #:use-module (gnu packages protobuf)
#:use-module (gnu packages gnupg) #:use-module (gnu packages gnupg)
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
@ -42,9 +44,15 @@ (define-module (gnu packages telephony)
#:use-module (gnu packages tls) #:use-module (gnu packages tls)
#:use-module (gnu packages xiph) #:use-module (gnu packages xiph)
#:use-module (gnu packages xorg) #:use-module (gnu packages xorg)
#:use-module (gnu packages xml)
#:use-module (gnu packages readline)
#:use-module (gnu packages bison)
#:use-module (gnu packages flex)
#:use-module ((guix licenses) #:prefix license:) #:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)) #:use-module (guix build-system gnu))
(define-public commoncpp (define-public commoncpp
@ -482,3 +490,64 @@ (define-public mumble
(license (list license:bsd-3 (license (list license:bsd-3
;; The bundled celt is bsd-2. Remove after 1.3.0. ;; The bundled celt is bsd-2. Remove after 1.3.0.
license:bsd-2)))) license:bsd-2))))
(define-public twinkle
(let ((commit "02e1d1538af3337134bd7381dcd95f8d7775b30f")
(revision "1"))
(package
(name "twinkle")
(version (git-version "1.10.1" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/LubosD/twinkle")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"0ds4rp4vr1wagn4m4m7ldqbsx5vgmgbfcqqgyhn1wf6s1dm0020z"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ; no test target
#:configure-flags '("-DWITH_SPEEX=On")
#:phases
(modify-phases %standard-phases
(add-after 'install 'wrap-executable
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(wrap-program (string-append out "/bin/twinkle")
`("QT_PLUGIN_PATH" ":" prefix
,(map (lambda (label)
(string-append (assoc-ref inputs label)
"/lib/qt5/plugins"))
'("qtbase" "qtdeclarative")))
`("QML2_IMPORT_PATH" ":" prefix
,(map (lambda (label)
(string-append (assoc-ref inputs label)
"/lib/qt5/qml"))
'("qtdeclarative" "qtquickcontrols"))))
#t))))))
(native-inputs
`(("bison" ,bison)
("flex" ,flex)
("readline" ,readline)
("file" ,file)
("ucommon" ,ucommon)
("ccrtp" ,ccrtp)
("libxml2" ,libxml2)
("speex" ,speex)
("speexdsp" ,speexdsp)
("libsndfile" ,libsndfile)
("alsa-lib" ,alsa-lib)
("qttools" ,qttools)))
(inputs
`(("qtbase" ,qtbase)
("qtdeclarative" ,qtdeclarative)
("qtquickcontrols" ,qtquickcontrols)))
(home-page "http://twinkle.dolezel.info/")
(synopsis "Softphone for voice over IP and instant messaging")
(description "Twinkle is a softphone for your voice over IP and instant
messaging communcations using the SIP protocol. You can use it for direct IP
phone to IP phone communication or in a network using a SIP proxy to route your
calls and messages")
(license license:gpl2+))))

View file

@ -449,14 +449,14 @@ (define-public openssl-next
(define-public libressl (define-public libressl
(package (package
(name "libressl") (name "libressl")
(version "2.7.2") (version "2.7.3")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://openbsd/LibreSSL/" (uri (string-append "mirror://openbsd/LibreSSL/"
name "-" version ".tar.gz")) name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1589f0kg7kj51j9hid542s4isb96s1azjaqsfprpy5s2qdwqfyli")))) "1597kj9jy3jyw52ys19sd4blg2gkam5q0rqdxbnrnvnyw67hviqn"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
;; Do as if 'getentropy' was missing since older Linux kernels lack it ;; Do as if 'getentropy' was missing since older Linux kernels lack it

View file

@ -1570,7 +1570,8 @@ (define-public myrepos
(commit version))) (commit version)))
(file-name (string-append name "-" version "-checkout")) (file-name (string-append name "-" version "-checkout"))
(sha256 (sha256
(base32 "10q7lpx152xnkk701fscn4dq99q9znnmv3bc2482khhjg7z8rps0")))) (base32 "10q7lpx152xnkk701fscn4dq99q9znnmv3bc2482khhjg7z8rps0"))
(patches (search-patches "myrepos-CVE-2018-7032.patch"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("perl" ,perl))) `(("perl" ,perl)))

View file

@ -472,7 +472,7 @@ (define-public libcaca
(define-public libdca (define-public libdca
(package (package
(name "libdca") (name "libdca")
(version "0.0.5") (version "0.0.6")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -480,7 +480,7 @@ (define-public libdca
version "/libdca-" version ".tar.bz2")) version "/libdca-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"0hh6a7l8vvccsd5i1fkv9av2gzv9fy8m0b8jpsn5p6hh4bh2586v")))) "0h0zvcn97i9kyljdpifzi8in9xnw31fx3b3ggj96p8h0l2d8mycq"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(home-page "https://www.videolan.org/developers/libdca.html") (home-page "https://www.videolan.org/developers/libdca.html")
(synopsis "DTS Coherent Acoustics decoder") (synopsis "DTS Coherent Acoustics decoder")
@ -1156,7 +1156,7 @@ (define-public libvpx
(define-public youtube-dl (define-public youtube-dl
(package (package
(name "youtube-dl") (name "youtube-dl")
(version "2018.04.25") (version "2018.05.09")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://yt-dl.org/downloads/" (uri (string-append "https://yt-dl.org/downloads/"
@ -1164,7 +1164,7 @@ (define-public youtube-dl
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"17zxgwfcy7c6gdyxdgh02f5zi52gvmy0zpccfj6zjkhw5iqj1vbw")))) "0sl4bi2jls3417rd62awbqdq1b6wskkjbfwpnyw4a61qarfxid1d"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
;; The problem here is that the directory for the man page and completion ;; The problem here is that the directory for the man page and completion

View file

@ -79,14 +79,14 @@ (define-public dillo
(define-public links (define-public links
(package (package
(name "links") (name "links")
(version "2.15") (version "2.16")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "http://links.twibright.com/download/" (uri (string-append "http://links.twibright.com/download/"
name "-" version ".tar.bz2")) name "-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"1jp3xyvp87a188b4kg5ycqahrazj7928zncgsznzn54w8d5iqahy")))) "0gsa2gpb1grhssl5jzpc5pa0zi21mxi8g25rh5bacl70slw31w42"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:phases `(#:phases
@ -130,7 +130,7 @@ (define-public links
(define-public lynx (define-public lynx
(package (package
(name "lynx") (name "lynx")
(version "2.8.9dev.17") (version "2.8.9dev.18")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -138,7 +138,7 @@ (define-public lynx
"/lynx" version ".tar.bz2")) "/lynx" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"1lvfsnrw5mmwrmn1m76q9mx287xwm3h5lg8sv7bcqilc0ywi2f54")))) "08v3n58hlrwncfvz6g76v061xwcbjgabiy5gv7ainf1li5akjwz5"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs `(("pkg-config" ,pkg-config) (native-inputs `(("pkg-config" ,pkg-config)
("perl" ,perl))) ("perl" ,perl)))

View file

@ -69,7 +69,7 @@ (define-module (gnu packages wine)
(define-public wine (define-public wine
(package (package
(name "wine") (name "wine")
(version "3.0") (version "3.0.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://dl.winehq.org/wine/source/" (uri (string-append "https://dl.winehq.org/wine/source/"
@ -77,7 +77,7 @@ (define-public wine
"/wine-" version ".tar.xz")) "/wine-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1v7vq9iinkscbq6wg85fb0d2137660fg2nk5iabxkl2wr850asil")))) "1wr63n70pli83p3rmclr2j4lxzs4ll1cwlpdlaajfrf6v9yhvl5s"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs `(("pkg-config" ,pkg-config) (native-inputs `(("pkg-config" ,pkg-config)
("gettext" ,gettext-minimal) ("gettext" ,gettext-minimal)
@ -223,7 +223,7 @@ (define-public wine64
(define-public wine-staging-patchset-data (define-public wine-staging-patchset-data
(package (package
(name "wine-staging-patchset-data") (name "wine-staging-patchset-data")
(version "3.7") (version "3.8")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -232,7 +232,7 @@ (define-public wine-staging-patchset-data
(file-name (string-append name "-" version ".zip")) (file-name (string-append name "-" version ".zip"))
(sha256 (sha256
(base32 (base32
"112sy32sja4cc3rv8x6v4cdi3jfxdgzwfra8f78hzdf8a2wrjqz6")))) "1z1a9zlhcglyzfxdilrsz558qpn69b4mzp086s364jqgzj930sja"))))
(build-system trivial-build-system) (build-system trivial-build-system)
(native-inputs (native-inputs
`(("bash" ,bash) `(("bash" ,bash)
@ -279,7 +279,7 @@ (define-public wine-staging
(file-name (string-append name "-" version ".tar.xz")) (file-name (string-append name "-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1drbzk3y0m14lkq3vzwwkvain5shykgcbmyzh6gcb5r4sxh3givn")))) "0l8dqb8r72i6n7yh2bmx738i8ss0lmsj07hvgrqsnfwbjin0rc02"))))
(inputs `(("autoconf" ,autoconf) ; for autoreconf (inputs `(("autoconf" ,autoconf) ; for autoreconf
("gtk+" ,gtk+) ("gtk+" ,gtk+)
("libva" ,libva) ("libva" ,libva)

View file

@ -136,14 +136,14 @@ (define-public bspwm
(define-public i3status (define-public i3status
(package (package
(name "i3status") (name "i3status")
(version "2.11") (version "2.12")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://i3wm.org/i3status/i3status-" (uri (string-append "https://i3wm.org/i3status/i3status-"
version ".tar.bz2")) version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"0pwcy599fw8by1a1sf91crkqba7679qhvhbacpmhis8c1xrpxnwq")))) "06krpbijv4yi33nypg6qcn4hilcrdyarsdpd9fmr2cq46qaqiikg"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:make-flags (list "CC=gcc" (string-append "PREFIX=" %output)) `(#:make-flags (list "CC=gcc" (string-append "PREFIX=" %output))

View file

@ -18,7 +18,7 @@
;;; Copyright © 2016 Petter <petter@mykolab.ch> ;;; Copyright © 2016 Petter <petter@mykolab.ch>
;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com> ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
;;; Copyright © 2017 Nils Gillmann <ng0@n0.is> ;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Marek Benc <dusxmt@gmx.com> ;;; Copyright © 2017 Marek Benc <dusxmt@gmx.com>
;;; Copyright © 2017 Mike Gerwitz <mtg@gnu.org> ;;; Copyright © 2017 Mike Gerwitz <mtg@gnu.org>
;;; Copyright © 2018 Thomas Sigurdsen <tonton@riseup.net> ;;; Copyright © 2018 Thomas Sigurdsen <tonton@riseup.net>
@ -529,7 +529,7 @@ (define-public slop
(define-public maim (define-public maim
(package (package
(name "maim") (name "maim")
(version "5.5") (version "5.5.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -538,7 +538,7 @@ (define-public maim
(file-name (string-append name "-" version ".tar.gz")) (file-name (string-append name "-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"02blbimjdckbcb04crhv0k2vxnp3rcgskyq66sk0v13l2h52849v")))) "1dvw0axnr9hhjg6zdcq9lwvaq0x7vrzlz00p8n3hj25qzsi4z5as"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
'(#:tests? #f)) ; no "check" target '(#:tests? #f)) ; no "check" target

View file

@ -636,14 +636,14 @@ (define-public perl-xml-dom
(define-public perl-xml-compile-tester (define-public perl-xml-compile-tester
(package (package
(name "perl-xml-compile-tester") (name "perl-xml-compile-tester")
(version "0.90") (version "0.91")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/" (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/"
"XML-Compile-Tester-" version ".tar.gz")) "XML-Compile-Tester-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1bcl8x8cyacqv9yjp97aq9qq85sy8wv78kd8c16yd9yw3by4cpp1")))) "1drzwziwi96rfkh48qpw4l225mcbk8ppl2157nj92cslcpwwdk75"))))
(build-system perl-build-system) (build-system perl-build-system)
(propagated-inputs (propagated-inputs
`(("perl-log-report" ,perl-log-report) `(("perl-log-report" ,perl-log-report)
@ -735,14 +735,14 @@ (define-public perl-xml-compile-soap
(define-public perl-xml-compile-wsdl11 (define-public perl-xml-compile-wsdl11
(package (package
(name "perl-xml-compile-wsdl11") (name "perl-xml-compile-wsdl11")
(version "3.06") (version "3.07")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/" (uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/"
"XML-Compile-WSDL11-" version ".tar.gz")) "XML-Compile-WSDL11-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0vbq05cpynm3jj81fw1k4nsb3wv4zngi6blvi1jhdarmh2rfg1x2")))) "09ayl442hzvn97q4ghn5rz4r82dm9w3l69hixhb29h9xq9ysi7ba"))))
(build-system perl-build-system) (build-system perl-build-system)
(propagated-inputs (propagated-inputs
`(("perl-log-report" ,perl-log-report) `(("perl-log-report" ,perl-log-report)

View file

@ -5899,7 +5899,7 @@ (define-public xcompmgr
(define-public xpra (define-public xpra
(package (package
(name "xpra") (name "xpra")
(version "2.2.6") (version "2.3")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -5907,7 +5907,7 @@ (define-public xpra
version ".tar.xz")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1zyynghhzjbgnmzcibm17wpj9f7jy31d7dr373li8cwg2yl2swyz")))) "0kq0ambpy8r7m3wxdp79cgxgnl9yfmr19lv88f617gnv0sp0aarp"))))
(build-system python-build-system) (build-system python-build-system)
(inputs `(("ffmpeg" ,ffmpeg) (inputs `(("ffmpeg" ,ffmpeg)
("flac" ,flac) ("flac" ,flac)
@ -6000,15 +6000,15 @@ (define-public xpra
(define-public uim (define-public uim
(package (package
(name "uim") (name "uim")
(version "1.8.6") (version "1.8.8")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://github.com/uim/uim/releases/download/uim-" (uri (string-append "https://github.com/uim/uim/releases/download/"
version "/uim-" version ".tar.bz2")) version "/uim-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"0pr3rfqpxha8p6cxzdjsxbbmmr76riklzw36f68phd1zqw1sh7kv")))) "1p7sl0js47ja4glmax93ci59h02ipqw3wxkh4f1qgaz5qjy9nn9l"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("anthy" ,anthy) `(("anthy" ,anthy)

View file

@ -29,6 +29,7 @@ (define-module (gnu services desktop)
#:use-module (gnu services avahi) #:use-module (gnu services avahi)
#:use-module (gnu services xorg) #:use-module (gnu services xorg)
#:use-module (gnu services networking) #:use-module (gnu services networking)
#:use-module (gnu services sound)
#:use-module ((gnu system file-systems) #:use-module ((gnu system file-systems)
#:select (%elogind-file-systems)) #:select (%elogind-file-systems))
#:use-module (gnu system shadow) #:use-module (gnu system shadow)
@ -934,6 +935,8 @@ (define %desktop-services
x11-socket-directory-service x11-socket-directory-service
(service alsa-service-type)
%base-services)) %base-services))
;;; desktop.scm ends here ;;; desktop.scm ends here

View file

@ -27,7 +27,7 @@ (define-module (gnu services games)
#:use-module (guix records) #:use-module (guix records)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:export (wesnothd-configuration #:export (wesnothd-configuration
wesnoth-configuration? wesnothd-configuration?
wesnothd-service-type)) wesnothd-service-type))
;;; ;;;

View file

@ -2,6 +2,7 @@
;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -790,20 +791,24 @@ (define-record-type* <bitlbee-configuration>
(default "127.0.0.1")) (default "127.0.0.1"))
(port bitlbee-configuration-port (port bitlbee-configuration-port
(default 6667)) (default 6667))
(plugins bitlbee-plugins
(default '()))
(extra-settings bitlbee-configuration-extra-settings (extra-settings bitlbee-configuration-extra-settings
(default ""))) (default "")))
(define bitlbee-shepherd-service (define bitlbee-shepherd-service
(match-lambda (match-lambda
(($ <bitlbee-configuration> bitlbee interface port extra-settings) (($ <bitlbee-configuration> bitlbee interface port
(let ((conf (plain-file "bitlbee.conf" plugins extra-settings)
(string-append " (let ((conf (mixed-text-file "bitlbee.conf"
"
[settings] [settings]
User = bitlbee User = bitlbee
ConfigDir = /var/lib/bitlbee ConfigDir = /var/lib/bitlbee
DaemonInterface = " interface " DaemonInterface = " interface "
DaemonPort = " (number->string port) " DaemonPort = " (number->string port) "
" extra-settings)))) PluginDir = " (directory-union "bitlbee-plugins" plugins) "/lib/bitlbee
" extra-settings)))
(with-imported-modules (source-module-closure (with-imported-modules (source-module-closure
'((gnu build shepherd) '((gnu build shepherd)

View file

@ -49,7 +49,10 @@ (define-module (gnu system install)
a20-olinuxino-micro-installation-os a20-olinuxino-micro-installation-os
banana-pi-m2-ultra-installation-os banana-pi-m2-ultra-installation-os
beaglebone-black-installation-os beaglebone-black-installation-os
nintendo-nes-classic-edition-installation-os)) mx6cuboxi-installation-os
nintendo-nes-classic-edition-installation-os
novena-installation-os
wandboard-installation-os))
;;; Commentary: ;;; Commentary:
;;; ;;;
@ -429,11 +432,26 @@ (define banana-pi-m2-ultra-installation-os
"/dev/mmcblk1" ; eMMC storage "/dev/mmcblk1" ; eMMC storage
"ttyS0")) "ttyS0"))
(define mx6cuboxi-installation-os
(embedded-installation-os u-boot-mx6cuboxi-bootloader
"/dev/mmcblk0" ; SD card storage
"ttymxc0"))
(define novena-installation-os
(embedded-installation-os u-boot-novena-bootloader
"/dev/mmcblk1" ; SD card storage
"ttymxc1"))
(define nintendo-nes-classic-edition-installation-os (define nintendo-nes-classic-edition-installation-os
(embedded-installation-os u-boot-nintendo-nes-classic-edition-bootloader (embedded-installation-os u-boot-nintendo-nes-classic-edition-bootloader
"/dev/mmcblk0" ; SD card (solder it yourself) "/dev/mmcblk0" ; SD card (solder it yourself)
"ttyS0")) "ttyS0"))
(define wandboard-installation-os
(embedded-installation-os u-boot-wandboard-bootloader
"/dev/mmcblk0" ; SD card storage
"ttymxc0"))
;; Return the default os here so 'guix system' can consume it directly. ;; Return the default os here so 'guix system' can consume it directly.
installation-os installation-os

View file

@ -0,0 +1,127 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix build-system android-ndk)
#:use-module (guix search-paths)
#:use-module (guix store)
#:use-module (guix utils)
#:use-module (guix derivations)
#:use-module (guix packages)
#:use-module (guix build-system)
#:use-module (guix build-system gnu)
#:use-module (ice-9 match)
#:use-module (srfi srfi-26)
#:export (android-ndk-build-system))
(define %android-ndk-build-system-modules
;; Build-side modules imported by default.
`((guix build android-ndk-build-system)
(guix build syscalls)
,@%gnu-build-system-modules))
(define* (android-ndk-build store name inputs
#:key
(tests? #t)
(test-target #f)
(phases '(@ (guix build android-ndk-build-system)
%standard-phases))
(outputs '("out"))
(make-flags ''())
(search-paths '())
(system (%current-system))
(guile #f)
(imported-modules %android-ndk-build-system-modules)
(modules '((guix build android-ndk-build-system)
(guix build utils))))
"Build SOURCE using Android NDK, and with INPUTS."
(define builder
`(begin
(use-modules ,@modules)
(android-ndk-build #:name ,name
#:source ,(match (assoc-ref inputs "source")
(((? derivation? source))
(derivation->output-path source))
((source)
source)
(source
source))
#:system ,system
#:test-target ,test-target
#:tests? ,tests?
#:phases ,phases
#:make-flags (cons* "-f"
,(string-append
(derivation->output-path
(car (assoc-ref inputs "android-build")))
"/share/android/build/core/main.mk")
,make-flags)
#:outputs %outputs
#:search-paths ',(map search-path-specification->sexp
search-paths)
#:inputs %build-inputs)))
(define guile-for-build
(match guile
((? package?)
(package-derivation store guile system #:graft? #f))
(#f ; the default
(let* ((distro (resolve-interface '(gnu packages commencement)))
(guile (module-ref distro 'guile-final)))
(package-derivation store guile system #:graft? #f)))))
(build-expression->derivation store name builder
#:inputs inputs
#:system system
#:modules imported-modules
#:outputs outputs
#:guile-for-build guile-for-build))
(define* (lower name
#:key source inputs native-inputs outputs system target
#:allow-other-keys
#:rest arguments)
"Return a bag for NAME."
(define private-keywords
'(#:source #:target #:inputs #:native-inputs #:outputs))
(and (not target) ;; TODO: support cross-compilation
(bag
(name name)
(system system)
(target target)
(host-inputs `(,@(if source
`(("source" ,source))
'())
,@inputs
;; Keep the standard inputs of 'gnu-build-system'
,@(standard-packages)))
(build-inputs `(("android-build" ,(module-ref (resolve-interface '(gnu packages android)) 'android-make-stub))
("android-googletest" ,(module-ref (resolve-interface '(gnu packages android)) 'android-googletest))
,@native-inputs))
(outputs outputs)
(build android-ndk-build)
(arguments (strip-keyword-arguments private-keywords arguments)))))
(define android-ndk-build-system
(build-system
(name 'android-ndk)
(description
"Android NDK build system, to build Android NDK packages")
(lower lower)))

View file

@ -0,0 +1,88 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix build android-ndk-build-system)
#:use-module ((guix build gnu-build-system) #:prefix gnu:)
#:use-module (guix build syscalls)
#:use-module (guix build utils)
#:use-module (ice-9 popen)
#:use-module (ice-9 rdelim)
#:use-module (ice-9 ftw)
#:use-module (ice-9 format)
#:use-module (ice-9 match)
#:use-module (rnrs io ports)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:export (%standard-phases
android-ndk-build))
;; Commentary:
;;
;; Builder-side code of the Android NDK build system.
;;
;; Code:
(define* (configure #:key inputs outputs #:allow-other-keys)
(let ((library-directories (filter-map (match-lambda
((name . path)
(if (eq? 'directory (stat:type (stat path)))
path
#f)))
inputs)))
(setenv "CC" "gcc")
(setenv "CXX" "g++")
(setenv "CPPFLAGS"
(string-join
(map (cut string-append "-I " <> "/include") library-directories)
" "))
(setenv "LDFLAGS"
(string-append "-L . "
(string-join
(map (lambda (x)
(string-append "-L " x "/lib" " -Wl,-rpath=" x "/lib"))
library-directories)
" ")))
#t))
(define* (install #:key inputs outputs (make-flags '()) #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(apply invoke "make" "install"
(string-append "prefix=" out)
make-flags)
#t))
(define* (check #:key target inputs outputs (tests? (not target)) (make-flags '()) #:allow-other-keys)
(if tests?
(begin
(apply invoke "make" "check" make-flags)
(when (and (file-exists? "tests") tests?)
(with-directory-excursion "tests"
(apply invoke "make" "check" make-flags))))
(format #t "test suite not run~%"))
#t)
(define %standard-phases
(modify-phases gnu:%standard-phases
(replace 'configure configure)
(replace 'install install)
(replace 'check check)))
(define* (android-ndk-build #:key inputs (phases %standard-phases)
#:allow-other-keys #:rest args)
"Build the given Android NDK package, applying all of PHASES in order."
(apply gnu:gnu-build #:inputs inputs #:phases phases args))

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -24,6 +24,7 @@ (define-module (guix build profiles)
#:use-module (ice-9 ftw) #:use-module (ice-9 ftw)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (ice-9 pretty-print) #:use-module (ice-9 pretty-print)
#:re-export (symlink-relative) ;for convenience
#:export (ensure-writable-directory #:export (ensure-writable-directory
build-profile)) build-profile))
@ -129,12 +130,15 @@ (define (unsymlink link)
(apply throw args)))))) (apply throw args))))))
(define* (build-profile output inputs (define* (build-profile output inputs
#:key manifest search-paths) #:key manifest search-paths
"Build a user profile from INPUTS in directory OUTPUT. Write MANIFEST, an (symlink symlink))
sexp, to OUTPUT/manifest. Create OUTPUT/etc/profile with Bash definitions for "Build a user profile from INPUTS in directory OUTPUT, using SYMLINK to
-all the variables listed in SEARCH-PATHS." create symlinks. Write MANIFEST, an sexp, to OUTPUT/manifest. Create
OUTPUT/etc/profile with Bash definitions for -all the variables listed in
SEARCH-PATHS."
;; Make the symlinks. ;; Make the symlinks.
(union-build output inputs (union-build output inputs
#:symlink symlink
#:log-port (%make-void-port "w")) #:log-port (%make-void-port "w"))
;; Store meta-data. ;; Store meta-data.

View file

@ -27,7 +27,10 @@ (define-module (guix build union)
#:use-module (rnrs io ports) #:use-module (rnrs io ports)
#:export (union-build #:export (union-build
warn-about-collision)) warn-about-collision
relative-file-name
symlink-relative))
;;; Commentary: ;;; Commentary:
;;; ;;;
@ -174,4 +177,47 @@ (define (add-to-table! file dir)
(union-of-directories output (delete-duplicates inputs))) (union-of-directories output (delete-duplicates inputs)))
;;;
;;; Relative symlinks.
;;;
(define %not-slash
(char-set-complement (char-set #\/)))
(define (relative-file-name reference file)
"Given REFERENCE and FILE, both of which are absolute file names, return the
file name of FILE relative to REFERENCE.
(relative-file-name \"/gnu/store/foo\" \"/gnu/store/bin/bar\")
=> \"../bin/bar\"
Note that this is from a purely lexical standpoint; conversely, \"..\" is
*not* resolved lexically on POSIX in the presence of symlinks."
(if (and (string-prefix? "/" file) (string-prefix? "/" reference))
(let loop ((reference (string-tokenize reference %not-slash))
(file (string-tokenize file %not-slash)))
(define (finish)
(string-join (append (make-list (length reference) "..") file)
"/"))
(match reference
(()
(finish))
((head . tail)
(match file
(()
(finish))
((head* . tail*)
(if (string=? head head*)
(loop tail tail*)
(finish)))))))
file))
(define (symlink-relative old new)
"Assuming both OLD and NEW are absolute file names, make NEW a symlink to
OLD, but using a relative file name."
(symlink (relative-file-name (dirname new) old)
new))
;;; union.scm ends here ;;; union.scm ends here

View file

@ -664,7 +664,9 @@ (define (graphs-file-names graphs)
(imported-modules %modules (imported-modules %modules
#:system system #:system system
#:module-path module-path #:module-path module-path
#:guile guile-for-build) #:guile guile-for-build
#:deprecation-warnings
deprecation-warnings)
(return #f))) (return #f)))
(compiled (if (pair? %modules) (compiled (if (pair? %modules)
(compiled-modules %modules (compiled-modules %modules
@ -974,7 +976,15 @@ (define %utils-module
(define* (imported-files files (define* (imported-files files
#:key (name "file-import") #:key (name "file-import")
(system (%current-system)) (system (%current-system))
(guile (%guile-for-build))) (guile (%guile-for-build))
;; XXX: The only reason we have
;; #:deprecation-warnings is because (guix build
;; utils), which we use here, relies on _IO*, which
;; is deprecated in 2.2. On the next full-rebuild
;; cycle, we should disable such warnings
;; unconditionally.
(deprecation-warnings #f))
"Return a derivation that imports FILES into STORE. FILES must be a list "Return a derivation that imports FILES into STORE. FILES must be a list
of (FINAL-PATH . FILE) pairs. Each FILE is mapped to FINAL-PATH in the of (FINAL-PATH . FILE) pairs. Each FILE is mapped to FINAL-PATH in the
resulting store path. FILE can be either a file name, or a file-like object, resulting store path. FILE can be either a file name, or a file-like object,
@ -1010,13 +1020,25 @@ (define build
(gexp->derivation name build (gexp->derivation name build
#:system system #:system system
#:guile-for-build guile #:guile-for-build guile
#:local-build? #t))) #:local-build? #t
;; TODO: On the next rebuild cycle, set to "no"
;; unconditionally.
#:env-vars
(case deprecation-warnings
((#f)
'(("GUILE_WARN_DEPRECATED" . "no")))
((detailed)
'(("GUILE_WARN_DEPRECATED" . "detailed")))
(else
'())))))
(define* (imported-modules modules (define* (imported-modules modules
#:key (name "module-import") #:key (name "module-import")
(system (%current-system)) (system (%current-system))
(guile (%guile-for-build)) (guile (%guile-for-build))
(module-path %load-path)) (module-path %load-path)
(deprecation-warnings #f))
"Return a derivation that contains the source files of MODULES, a list of "Return a derivation that contains the source files of MODULES, a list of
module names such as `(ice-9 q)'. All of MODULES must be either names of module names such as `(ice-9 q)'. All of MODULES must be either names of
modules to be found in the MODULE-PATH search path, or a module name followed modules to be found in the MODULE-PATH search path, or a module name followed
@ -1041,7 +1063,8 @@ (define* (imported-modules modules
(cons f (search-path* module-path f)))))) (cons f (search-path* module-path f))))))
modules))) modules)))
(imported-files files #:name name #:system system (imported-files files #:name name #:system system
#:guile guile))) #:guile guile
#:deprecation-warnings deprecation-warnings)))
(define* (compiled-modules modules (define* (compiled-modules modules
#:key (name "module-import-compiled") #:key (name "module-import-compiled")
@ -1058,7 +1081,9 @@ (define total (length modules))
#:system system #:system system
#:guile guile #:guile guile
#:module-path #:module-path
module-path))) module-path
#:deprecation-warnings
deprecation-warnings)))
(define build (define build
(gexp (gexp
(begin (begin

View file

@ -388,10 +388,11 @@ (define-condition-type &package-input-error &package-error
(define-condition-type &package-cross-build-system-error &package-error (define-condition-type &package-cross-build-system-error &package-error
package-cross-build-system-error?) package-cross-build-system-error?)
(define* (package-full-name package #:optional (delimiter "@"))
(define (package-full-name package) "Return the full name of PACKAGE--i.e., `NAME@VERSION'. By specifying
"Return the full name of PACKAGE--i.e., `NAME-VERSION'." DELIMITER (a string), you can customize what will appear between the name and
(string-append (package-name package) "-" (package-version package))) the version. By default, DELIMITER is \"@\"."
(string-append (package-name package) delimiter (package-version package)))
(define (%standard-patch-inputs) (define (%standard-patch-inputs)
(let* ((canonical (module-ref (resolve-interface '(gnu packages base)) (let* ((canonical (module-ref (resolve-interface '(gnu packages base))
@ -945,6 +946,10 @@ (define* (package->bag package #:optional
(($ <package> name version source build-system (($ <package> name version source build-system
args inputs propagated-inputs native-inputs args inputs propagated-inputs native-inputs
self-native-input? outputs) self-native-input? outputs)
;; Even though we prefer to use "@" to separate the package
;; name from the package version in various user-facing parts
;; of Guix, checkStoreName (in nix/libstore/store-api.cc)
;; prohibits the use of "@", so use "-" instead.
(or (make-bag build-system (string-append name "-" version) (or (make-bag build-system (string-append name "-" version)
#:system system #:system system
#:target target #:target target

View file

@ -168,7 +168,7 @@ (define-record-type* <manifest-entry> manifest-entry
(version manifest-entry-version) ; string (version manifest-entry-version) ; string
(output manifest-entry-output ; string (output manifest-entry-output ; string
(default "out")) (default "out"))
(item manifest-entry-item) ; package | store path (item manifest-entry-item) ; package | file-like | store path
(dependencies manifest-entry-dependencies ; <manifest-entry>* (dependencies manifest-entry-dependencies ; <manifest-entry>*
(default '())) (default '()))
(search-paths manifest-entry-search-paths ; search-path-specification* (search-paths manifest-entry-search-paths ; search-path-specification*
@ -318,7 +318,7 @@ (define (entry->gexp entry)
(propagated-inputs #$(map entry->gexp deps)) (propagated-inputs #$(map entry->gexp deps))
(search-paths #$(map search-path-specification->sexp (search-paths #$(map search-path-specification->sexp
search-paths)))) search-paths))))
(($ <manifest-entry> name version output (? package? package) (($ <manifest-entry> name version output package
(deps ...) (search-paths ...)) (deps ...) (search-paths ...))
#~(#$name #$version #$output #~(#$name #$version #$output
(ungexp package (or output "out")) (ungexp package (or output "out"))
@ -671,7 +671,13 @@ (define (find-among-store-items items)
(return (find-among-inputs inputs))))) (return (find-among-inputs inputs)))))
((? string? item) ((? string? item)
(mlet %store-monad ((refs (references* item))) (mlet %store-monad ((refs (references* item)))
(return (find-among-store-items refs))))))) (return (find-among-store-items refs))))
(item
;; XXX: ITEM might be a 'computed-file' or anything like that, in
;; which case we don't know what to do. The fix may be to check
;; references once ITEM is compiled, as proposed at
;; <https://bugs.gnu.org/29927>.
(return #f)))))
(anym %store-monad (anym %store-monad
entry-lookup-package (manifest-entries manifest))) entry-lookup-package (manifest-entries manifest)))
@ -1202,6 +1208,7 @@ (define* (profile-derivation manifest
(hooks %default-profile-hooks) (hooks %default-profile-hooks)
(locales? #t) (locales? #t)
(allow-collisions? #f) (allow-collisions? #f)
(relative-symlinks? #f)
system target) system target)
"Return a derivation that builds a profile (aka. 'user environment') with "Return a derivation that builds a profile (aka. 'user environment') with
the given MANIFEST. The profile includes additional derivations returned by the given MANIFEST. The profile includes additional derivations returned by
@ -1213,6 +1220,9 @@ (define* (profile-derivation manifest
When LOCALES? is true, the build is performed under a UTF-8 locale; this adds When LOCALES? is true, the build is performed under a UTF-8 locale; this adds
a dependency on the 'glibc-utf8-locales' package. a dependency on the 'glibc-utf8-locales' package.
When RELATIVE-SYMLINKS? is true, use relative file names for symlink targets.
This is one of the things to do for the result to be relocatable.
When TARGET is true, it must be a GNU triplet, and the packages in MANIFEST When TARGET is true, it must be a GNU triplet, and the packages in MANIFEST
are cross-built for TARGET." are cross-built for TARGET."
(mlet* %store-monad ((system (if system (mlet* %store-monad ((system (if system
@ -1275,6 +1285,9 @@ (define search-paths
(manifest-entries manifest)))))) (manifest-entries manifest))))))
(build-profile #$output '#$inputs (build-profile #$output '#$inputs
#:symlink #$(if relative-symlinks?
#~symlink-relative
#~symlink)
#:manifest '#$(manifest->gexp manifest) #:manifest '#$(manifest->gexp manifest)
#:search-paths search-paths)))) #:search-paths search-paths))))

View file

@ -1037,7 +1037,7 @@ (define %checkers
(check check-inputs-should-be-native)) (check check-inputs-should-be-native))
(lint-checker (lint-checker
(name 'inputs-should-not-be-input) (name 'inputs-should-not-be-input)
(description "Identify inputs that should be inputs at all") (description "Identify inputs that shouldn't be inputs at all")
(check check-inputs-should-not-be-an-input-at-all)) (check check-inputs-should-not-be-an-input-at-all))
(lint-checker (lint-checker
(name 'patch-file-names) (name 'patch-file-names)

View file

@ -32,6 +32,8 @@ (define-module (guix scripts pack)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix profiles) #:use-module (guix profiles)
#:use-module (guix derivations) #:use-module (guix derivations)
#:use-module (guix search-paths)
#:use-module (guix build-system gnu)
#:use-module (guix scripts build) #:use-module (guix scripts build)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages bootstrap) #:use-module (gnu packages bootstrap)
@ -100,11 +102,14 @@ (define* (self-contained-tarball name profile
SYMLINKS must be a list of (SOURCE -> TARGET) tuples denoting symlinks to be SYMLINKS must be a list of (SOURCE -> TARGET) tuples denoting symlinks to be
added to the pack." added to the pack."
(define build (define build
(with-imported-modules '((guix build utils) (with-imported-modules (source-module-closure
(guix build store-copy) '((guix build utils)
(gnu build install)) (guix build union)
(guix build store-copy)
(gnu build install)))
#~(begin #~(begin
(use-modules (guix build utils) (use-modules (guix build utils)
((guix build union) #:select (relative-file-name))
(gnu build install) (gnu build install)
(srfi srfi-1) (srfi srfi-1)
(srfi srfi-26) (srfi srfi-26)
@ -117,9 +122,17 @@ (define symlink->directives
;; parent directories. ;; parent directories.
(match-lambda (match-lambda
((source '-> target) ((source '-> target)
(let ((target (string-append #$profile "/" target))) (let ((target (string-append #$profile "/" target))
`((directory ,(dirname source)) (parent (dirname source)))
(,source -> ,target)))))) ;; Never add a 'directory' directive for "/" so as to
;; preserve its ownnership when extracting the archive (see
;; below), and also because this would lead to adding the
;; same entries twice in the tarball.
`(,@(if (string=? parent "/")
'()
`((directory ,parent)))
(,source
-> ,(relative-file-name parent target)))))))
(define directives (define directives
;; Fully-qualified symlinks. ;; Fully-qualified symlinks.
@ -140,9 +153,11 @@ (define tar-supports-sort?
"") "")
#$tar "/bin")) #$tar "/bin"))
;; Note: there is not much to gain here with deduplication and ;; Note: there is not much to gain here with deduplication and there
;; there is the overhead of the '.links' directory, so turn it ;; is the overhead of the '.links' directory, so turn it off.
;; off. ;; Furthermore GNU tar < 1.30 sometimes fails to extract tarballs
;; with hard links:
;; <http://lists.gnu.org/archive/html/bug-tar/2017-11/msg00009.html>.
(populate-single-profile-directory %root (populate-single-profile-directory %root
#:profile #$profile #:profile #$profile
#:closure "profile" #:closure "profile"
@ -189,6 +204,8 @@ (define tar-supports-sort?
(filter-map (match-lambda (filter-map (match-lambda
(('directory directory) (('directory directory)
(string-append "." directory)) (string-append "." directory))
((source '-> _)
(string-append "." source))
(_ #f)) (_ #f))
directives))))))))) directives)))))))))
@ -217,11 +234,13 @@ (define not-config?
(('gnu rest ...) #t) (('gnu rest ...) #t)
(rest #f))) (rest #f)))
(define defmod 'define-module) ;trick Geiser
(define config (define config
;; (guix config) module for consumption by (guix gcrypt). ;; (guix config) module for consumption by (guix gcrypt).
(scheme-file "gcrypt-config.scm" (scheme-file "gcrypt-config.scm"
#~(begin #~(begin
(define-module (guix config) (#$defmod (guix config)
#:export (%libgcrypt)) #:export (%libgcrypt))
;; XXX: Work around <http://bugs.gnu.org/15602>. ;; XXX: Work around <http://bugs.gnu.org/15602>.
@ -265,6 +284,165 @@ (define build
build build
#:references-graphs `(("profile" ,profile)))) #:references-graphs `(("profile" ,profile))))
;;;
;;; Compiling C programs.
;;;
;; A C compiler. That lowers to a single program that can be passed typical C
;; compiler flags, and it makes sure the whole toolchain is available.
(define-record-type <c-compiler>
(%c-compiler toolchain guile)
c-compiler?
(toolchain c-compiler-toolchain)
(guile c-compiler-guile))
(define* (c-compiler #:optional inputs
#:key (guile (default-guile)))
(%c-compiler inputs guile))
(define (bootstrap-c-compiler)
"Return the C compiler that uses the bootstrap toolchain. This is used only
by '--bootstrap', for testing purposes."
(define bootstrap-toolchain
(list (first (assoc-ref %bootstrap-inputs "gcc"))
(first (assoc-ref %bootstrap-inputs "binutils"))
(first (assoc-ref %bootstrap-inputs "libc"))))
(c-compiler bootstrap-toolchain
#:guile %bootstrap-guile))
(define-gexp-compiler (c-compiler-compiler (compiler <c-compiler>) system target)
"Lower COMPILER to a single script that does the right thing."
(define toolchain
(or (c-compiler-toolchain compiler)
(list (first (assoc-ref (standard-packages) "gcc"))
(first (assoc-ref (standard-packages) "ld-wrapper"))
(first (assoc-ref (standard-packages) "binutils"))
(first (assoc-ref (standard-packages) "libc"))
(gexp-input (first (assoc-ref (standard-packages) "libc"))
"static"))))
(define inputs
(match (append-map package-propagated-inputs
(filter package? toolchain))
(((labels things . _) ...)
(append toolchain things))))
(define search-paths
(cons $PATH
(append-map package-native-search-paths
(filter package? inputs))))
(define run
(with-imported-modules (source-module-closure
'((guix build utils)
(guix search-paths)))
#~(begin
(use-modules (guix build utils) (guix search-paths)
(ice-9 match))
(define (output-file args)
(let loop ((args args))
(match args
(() "a.out")
(("-o" file _ ...) file)
((head rest ...) (loop rest)))))
(set-search-paths (map sexp->search-path-specification
'#$(map search-path-specification->sexp
search-paths))
'#$inputs)
(let ((output (output-file (command-line))))
(apply invoke "gcc" (cdr (command-line)))
(invoke "strip" output)))))
(when target
;; TODO: Yep, we'll have to do it someday!
(leave (G_ "cross-compilation not implemented here;
please email '~a'~%")
(@ (guix config) %guix-bug-report-address)))
(gexp->script "c-compiler" run
#:guile (c-compiler-guile compiler)))
;;;
;;; Wrapped package.
;;;
(define* (wrapped-package package
#:optional (compiler (c-compiler)))
(define runner
(local-file (search-auxiliary-file "run-in-namespace.c")))
(define build
(with-imported-modules (source-module-closure
'((guix build utils)
(guix build union)))
#~(begin
(use-modules (guix build utils)
((guix build union) #:select (relative-file-name))
(ice-9 ftw)
(ice-9 match))
(define (strip-store-prefix file)
;; Given a file name like "/gnu/store/…-foo-1.2/bin/foo", return
;; "/bin/foo".
(let* ((len (string-length (%store-directory)))
(base (string-drop file (+ 1 len))))
(match (string-index base #\/)
(#f base)
(index (string-drop base index)))))
(define (build-wrapper program)
;; Build a user-namespace wrapper for PROGRAM.
(format #t "building wrapper for '~a'...~%" program)
(copy-file #$runner "run.c")
(substitute* "run.c"
(("@WRAPPED_PROGRAM@") program)
(("@STORE_DIRECTORY@") (%store-directory)))
(let* ((base (strip-store-prefix program))
(result (string-append #$output "/" base)))
(mkdir-p (dirname result))
(invoke #$compiler "-std=gnu99" "-static" "-Os" "-g0" "-Wall"
"run.c" "-o" result)
(delete-file "run.c")))
(setvbuf (current-output-port)
(cond-expand (guile-2.2 'line)
(else _IOLBF)))
;; Link the top-level files of PACKAGE so that search paths are
;; properly defined in PROFILE/etc/profile.
(mkdir #$output)
(for-each (lambda (file)
(unless (member file '("." ".." "bin" "sbin" "libexec"))
(let ((file* (string-append #$package "/" file)))
(symlink (relative-file-name #$output file*)
(string-append #$output "/" file)))))
(scandir #$package))
(for-each build-wrapper
(append (find-files #$(file-append package "/bin"))
(find-files #$(file-append package "/sbin"))
(find-files #$(file-append package "/libexec")))))))
(computed-file (string-append (package-full-name package "-") "R")
build))
(define (map-manifest-entries proc manifest)
"Apply PROC to all the entries of MANIFEST and return a new manifest."
(make-manifest
(map (lambda (entry)
(manifest-entry
(inherit entry)
(item (proc (manifest-entry-item entry)))))
(manifest-entries manifest))))
;;; ;;;
;;; Command-line options. ;;; Command-line options.
@ -302,6 +480,9 @@ (define %options
(option '(#\f "format") #t #f (option '(#\f "format") #t #f
(lambda (opt name arg result) (lambda (opt name arg result)
(alist-cons 'format (string->symbol arg) result))) (alist-cons 'format (string->symbol arg) result)))
(option '(#\R "relocatable") #f #f
(lambda (opt name arg result)
(alist-cons 'relocatable? #t result)))
(option '(#\e "expression") #t #f (option '(#\e "expression") #t #f
(lambda (opt name arg result) (lambda (opt name arg result)
(alist-cons 'expression arg result))) (alist-cons 'expression arg result)))
@ -354,6 +535,8 @@ (define (show-help)
(display (G_ " (display (G_ "
-f, --format=FORMAT build a pack in the given FORMAT")) -f, --format=FORMAT build a pack in the given FORMAT"))
(display (G_ " (display (G_ "
-R, --relocatable produce relocatable executables"))
(display (G_ "
-e, --expression=EXPR consider the package EXPR evaluates to")) -e, --expression=EXPR consider the package EXPR evaluates to"))
(display (G_ " (display (G_ "
-s, --system=SYSTEM attempt to build for SYSTEM--e.g., \"i686-linux\"")) -s, --system=SYSTEM attempt to build for SYSTEM--e.g., \"i686-linux\""))
@ -417,6 +600,9 @@ (define (manifest-from-args store opts)
(with-error-handling (with-error-handling
(with-store store (with-store store
;; Set the build options before we do anything else.
(set-build-options-from-command-line store opts)
(parameterize ((%graft? (assoc-ref opts 'graft?)) (parameterize ((%graft? (assoc-ref opts 'graft?))
(%guile-for-build (package-derivation (%guile-for-build (package-derivation
store store
@ -425,7 +611,13 @@ (define (manifest-from-args store opts)
(canonical-package guile-2.2)) (canonical-package guile-2.2))
#:graft? (assoc-ref opts 'graft?)))) #:graft? (assoc-ref opts 'graft?))))
(let* ((dry-run? (assoc-ref opts 'dry-run?)) (let* ((dry-run? (assoc-ref opts 'dry-run?))
(manifest (manifest-from-args store opts)) (relocatable? (assoc-ref opts 'relocatable?))
(manifest (let ((manifest (manifest-from-args store opts)))
;; Note: We cannot honor '--bootstrap' here because
;; 'glibc-bootstrap' lacks 'libc.a'.
(if relocatable?
(map-manifest-entries wrapped-package manifest)
manifest)))
(pack-format (assoc-ref opts 'format)) (pack-format (assoc-ref opts 'format))
(name (string-append (symbol->string pack-format) (name (string-append (symbol->string pack-format)
"-pack")) "-pack"))
@ -444,12 +636,10 @@ (define (manifest-from-args store opts)
(leave (G_ "~a: unknown pack format") (leave (G_ "~a: unknown pack format")
format)))) format))))
(localstatedir? (assoc-ref opts 'localstatedir?))) (localstatedir? (assoc-ref opts 'localstatedir?)))
;; Set the build options before we do anything else.
(set-build-options-from-command-line store opts)
(run-with-store store (run-with-store store
(mlet* %store-monad ((profile (profile-derivation (mlet* %store-monad ((profile (profile-derivation
manifest manifest
#:relative-symlinks? relocatable?
#:hooks (if bootstrap? #:hooks (if bootstrap?
'() '()
%default-profile-hooks) %default-profile-hooks)

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -38,7 +38,8 @@ (define-module (guix search-paths)
string-tokenize* string-tokenize*
evaluate-search-paths evaluate-search-paths
environment-variable-definition environment-variable-definition
search-path-definition)) search-path-definition
set-search-paths))
;;; Commentary: ;;; Commentary:
;;; ;;;
@ -196,4 +197,14 @@ (define* (search-path-definition search-path value
#:kind kind #:kind kind
#:separator separator)))) #:separator separator))))
(define* (set-search-paths search-paths directories
#:key (setenv setenv))
"Set the search path environment variables specified by SEARCH-PATHS for the
given directories."
(for-each (match-lambda
((spec . value)
(setenv (search-path-specification-variable spec)
value)))
(evaluate-search-paths search-paths directories)))
;;; search-paths.scm ends here ;;; search-paths.scm ends here

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014, 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2013, 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net> ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
@ -84,6 +84,7 @@ (define-module (guix utils)
version-major+minor version-major+minor
version-major version-major
guile-version>? guile-version>?
version-prefix?
string-replace-substring string-replace-substring
arguments-from-environment-variable arguments-from-environment-variable
file-extension file-extension
@ -521,6 +522,27 @@ (define (guile-version>? str)
(micro-version)) (micro-version))
str)) str))
(define version-prefix?
(let ((not-dot (char-set-complement (char-set #\.))))
(lambda (v1 v2)
"Return true if V1 is a version prefix of V2:
(version-prefix? \"4.1\" \"4.16.2\") => #f
(version-prefix? \"4.1\" \"4.1.2\") => #t
"
(define (list-prefix? lst1 lst2)
(match lst1
(() #t)
((head1 tail1 ...)
(match lst2
(() #f)
((head2 tail2 ...)
(and (equal? head1 head2)
(list-prefix? tail1 tail2)))))))
(list-prefix? (string-tokenize v1 not-dot)
(string-tokenize v2 not-dot)))))
(define (file-extension file) (define (file-extension file)
"Return the extension of FILE or #f if there is none." "Return the extension of FILE or #f if there is none."
(let ((dot (string-rindex file #\.))) (let ((dot (string-rindex file #\.)))

View file

@ -134,7 +134,7 @@ (define (edge->tuple source target)
(map (lambda (destination) (map (lambda (destination)
(list "p-0.drv" (list "p-0.drv"
(string-append (string-append
(package-full-name destination) (package-full-name destination "-")
".drv"))) ".drv")))
implicit))))))) implicit)))))))

View file

@ -20,9 +20,9 @@
# Test the `guix pack' command-line utility. # Test the `guix pack' command-line utility.
# #
# A network connection is required to build %bootstrap-coreutils&co, # The bootstrap binaries are needed to run these tests, which usually requires
# which is required to run these tests with the --bootstrap option. # a network connection.
if ! guile -c '(getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)' 2> /dev/null; then if ! guix build -q guile-bootstrap; then
exit 77 exit 77
fi fi
@ -87,6 +87,10 @@ guix pack --dry-run --bootstrap -f docker -S /opt/gnu=/ guile-bootstrap
# guile-bootstrap is not intended to be cross-compiled. # guile-bootstrap is not intended to be cross-compiled.
guix pack --dry-run --bootstrap --target=arm-unknown-linux-gnueabihf coreutils guix pack --dry-run --bootstrap --target=arm-unknown-linux-gnueabihf coreutils
# Likewise, 'guix pack -R' requires a full-blown toolchain (because
# 'glibc-bootstrap' lacks 'libc.a'), hence '--dry-run'.
guix pack -R --dry-run --bootstrap -S /mybin=bin guile-bootstrap
# Make sure package transformation options are honored. # Make sure package transformation options are honored.
mkdir -p "$test_directory" mkdir -p "$test_directory"
drv1="`guix pack -n guile 2>&1 | grep pack.*\.drv`" drv1="`guix pack -n guile 2>&1 | grep pack.*\.drv`"

View file

@ -223,6 +223,52 @@ (define glibc
(string=? (dirname (readlink bindir)) (string=? (dirname (readlink bindir))
(derivation->output-path guile)))))) (derivation->output-path guile))))))
(test-assertm "profile-derivation relative symlinks, one entry"
(mlet* %store-monad
((entry -> (package->manifest-entry %bootstrap-guile))
(guile (package->derivation %bootstrap-guile))
(drv (profile-derivation (manifest (list entry))
#:relative-symlinks? #t
#:hooks '()
#:locales? #f))
(profile -> (derivation->output-path drv))
(bindir -> (string-append profile "/bin"))
(_ (built-derivations (list drv))))
(return (and (file-exists? (string-append bindir "/guile"))
(string=? (readlink bindir)
(string-append "../"
(basename
(derivation->output-path guile))
"/bin"))))))
(unless (network-reachable?) (test-skip 1))
(test-assertm "profile-derivation relative symlinks, two entries"
(mlet* %store-monad
((gnu-make-boot0 -> (@@ (gnu packages commencement) gnu-make-boot0))
(manifest -> (packages->manifest
(list %bootstrap-guile gnu-make-boot0)))
(guile (package->derivation %bootstrap-guile))
(make (package->derivation gnu-make-boot0))
(drv (profile-derivation manifest
#:relative-symlinks? #t
#:hooks '()
#:locales? #f))
(profile -> (derivation->output-path drv))
(bindir -> (string-append profile "/bin"))
(_ (built-derivations (list drv))))
(return (and (file-exists? (string-append bindir "/guile"))
(file-exists? (string-append bindir "/make"))
(string=? (readlink (string-append bindir "/guile"))
(string-append "../../"
(basename
(derivation->output-path guile))
"/bin/guile"))
(string=? (readlink (string-append bindir "/make"))
(string-append "../../"
(basename
(derivation->output-path make))
"/bin/make"))))))
(test-assertm "profile-derivation, inputs" (test-assertm "profile-derivation, inputs"
(mlet* %store-monad (mlet* %store-monad
((entry -> (package->manifest-entry packages:glibc "debug")) ((entry -> (package->manifest-entry packages:glibc "debug"))
@ -242,8 +288,8 @@ (define glibc
#:hooks '() #:hooks '()
#:locales? #t #:locales? #t
#:target target))) #:target target)))
(define (find-input name) (define (find-input package)
(let ((name (string-append name ".drv"))) (let ((name (string-append (package-full-name package "-") ".drv")))
(any (lambda (input) (any (lambda (input)
(let ((input (derivation-input-path input))) (let ((input (derivation-input-path input)))
(and (string-suffix? name input) input))) (and (string-suffix? name input) input)))
@ -252,12 +298,11 @@ (define (find-input name)
;; The inputs for grep and sed should be cross-build derivations, but that ;; The inputs for grep and sed should be cross-build derivations, but that
;; for the glibc-utf8-locales should be a native build. ;; for the glibc-utf8-locales should be a native build.
(return (and (string=? (derivation-system drv) (%current-system)) (return (and (string=? (derivation-system drv) (%current-system))
(string=? (find-input (package-full-name packages:grep)) (string=? (find-input packages:grep)
(derivation-file-name grep)) (derivation-file-name grep))
(string=? (find-input (package-full-name packages:sed)) (string=? (find-input packages:sed)
(derivation-file-name sed)) (derivation-file-name sed))
(string=? (find-input (string=? (find-input packages:glibc-utf8-locales)
(package-full-name packages:glibc-utf8-locales))
(derivation-file-name locales)))))) (derivation-file-name locales))))))
(test-assert "package->manifest-entry defaults to \"out\"" (test-assert "package->manifest-entry defaults to \"out\""

View file

@ -184,4 +184,22 @@ (define %store
(file-is-directory? "bin") (file-is-directory? "bin")
(eq? 'symlink (stat:type (lstat "bin/guile")))))))) (eq? 'symlink (stat:type (lstat "bin/guile"))))))))
(letrec-syntax ((test-relative-file-name
(syntax-rules (=>)
((_ (reference file => expected) rest ...)
(begin
(test-equal (string-append "relative-file-name "
reference " " file)
expected
(relative-file-name reference file))
(test-relative-file-name rest ...)))
((_)
#t))))
(test-relative-file-name
("/a/b" "/a/c/d" => "../c/d")
("/a/b" "/a/b" => "")
("/a/b" "/a" => "..")
("/a/b" "/a/b/c/d" => "c/d")
("/a/b/c" "/a/d/e/f" => "../../d/e/f")))
(test-end) (test-end)

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org> ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
;;; ;;;
@ -72,6 +72,12 @@ (define temp-file
(test-assert "guile-version>? 10.5" (test-assert "guile-version>? 10.5"
(not (guile-version>? "10.5"))) (not (guile-version>? "10.5")))
(test-assert "version-prefix?"
(and (version-prefix? "4.1" "4.1.2")
(version-prefix? "4.1" "4.1")
(not (version-prefix? "4.1" "4.16.2"))
(not (version-prefix? "4.1" "4"))))
(test-equal "string-tokenize*" (test-equal "string-tokenize*"
'(("foo") '(("foo")
("foo" "bar" "baz") ("foo" "bar" "baz")