mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 13:28:12 -05:00
Merge branch 'master' into core-updates
This commit is contained in:
commit
539bf8f2c0
98 changed files with 4416 additions and 924 deletions
|
@ -96,6 +96,7 @@ MODULES = \
|
|||
guix/workers.scm \
|
||||
guix/zlib.scm \
|
||||
guix/build-system.scm \
|
||||
guix/build-system/android-ndk.scm \
|
||||
guix/build-system/ant.scm \
|
||||
guix/build-system/cargo.scm \
|
||||
guix/build-system/cmake.scm \
|
||||
|
@ -128,6 +129,7 @@ MODULES = \
|
|||
guix/svn-download.scm \
|
||||
guix/i18n.scm \
|
||||
guix/ui.scm \
|
||||
guix/build/android-ndk-build-system.scm \
|
||||
guix/build/ant-build-system.scm \
|
||||
guix/build/download.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-x86_64.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.
|
||||
EXAMPLES = \
|
||||
|
|
5
NEWS
5
NEWS
|
@ -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.
|
||||
|
||||
* 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)
|
||||
|
||||
** Package management
|
||||
|
|
|
@ -264,7 +264,8 @@ (define (->job name drv)
|
|||
|
||||
(define job-name
|
||||
;; Return the name of a package's job.
|
||||
(compose string->symbol package-full-name))
|
||||
(compose string->symbol
|
||||
(cut package-full-name <> "-")))
|
||||
|
||||
(define package->job
|
||||
(let ((base-packages
|
||||
|
|
|
@ -132,6 +132,7 @@ then
|
|||
|
||||
for file in "$bootstrap_directory"/guile-*
|
||||
do
|
||||
[ -f "$file" ] && \
|
||||
"@abs_top_builddir@/pre-inst-env" \
|
||||
guix download "file://$file" > /dev/null
|
||||
done
|
||||
|
|
122
doc/guix.texi
122
doc/guix.texi
|
@ -2834,6 +2834,15 @@ guix pack -S /opt/gnu/bin=bin guile emacs geiser
|
|||
@noindent
|
||||
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
|
||||
the following command:
|
||||
|
||||
|
@ -2867,6 +2876,39 @@ This produces a tarball that follows the
|
|||
Docker Image Specification}.
|
||||
@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}
|
||||
@itemx -e @var{expr}
|
||||
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
|
||||
|
||||
@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
|
||||
@defvrx {Scheme Variable} asdf-build-system/sbcl
|
||||
@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
|
||||
@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
|
||||
uses, as in this example:
|
||||
name and version of the package when they differ from the name or version
|
||||
that Guix uses, as in this example:
|
||||
|
||||
@example
|
||||
(package
|
||||
(name "grub")
|
||||
;; @dots{}
|
||||
;; 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
|
||||
|
||||
@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
|
||||
@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
|
||||
example:
|
||||
|
||||
@example
|
||||
$ guix size coreutils
|
||||
store item total self
|
||||
/gnu/store/@dots{}-coreutils-8.23 70.0 13.9 19.8%
|
||||
/gnu/store/@dots{}-gmp-6.0.0a 55.3 2.5 3.6%
|
||||
/gnu/store/@dots{}-acl-2.2.52 53.7 0.5 0.7%
|
||||
/gnu/store/@dots{}-attr-2.4.46 53.2 0.3 0.5%
|
||||
/gnu/store/@dots{}-gcc-4.8.4-lib 52.9 15.7 22.4%
|
||||
/gnu/store/@dots{}-glibc-2.21 37.2 37.2 53.1%
|
||||
/gnu/store/@dots{}-gcc-5.5.0-lib 60.4 30.1 38.1%
|
||||
/gnu/store/@dots{}-glibc-2.27 30.3 28.8 36.6%
|
||||
/gnu/store/@dots{}-coreutils-8.28 78.9 15.0 19.0%
|
||||
/gnu/store/@dots{}-gmp-6.1.2 63.1 2.7 3.4%
|
||||
/gnu/store/@dots{}-bash-static-4.4.12 1.5 1.5 1.9%
|
||||
/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
|
||||
|
||||
@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.
|
||||
|
||||
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
|
||||
large fraction of the closure is not a problem @i{per se} because it is
|
||||
always available on the system anyway.)
|
||||
79@tie{}MiB, most of which is taken by libc and GCC's run-time support
|
||||
libraries. (That libc and GCC's libraries represent a large fraction of
|
||||
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
|
||||
store, @command{guix size} queries the daemon to determine its
|
||||
When the package(s) passed to @command{guix size} are available in the
|
||||
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
|
||||
-ms --apparent-size} (@pxref{du invocation,,, coreutils, GNU
|
||||
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
|
||||
(@pxref{Substitutes}). This makes it possible it to profile disk usage of
|
||||
store items that are not even on disk, only available remotely.
|
||||
|
@ -14924,6 +15011,9 @@ networking interface.
|
|||
@item @code{package} (default: @code{bitlbee})
|
||||
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{""})
|
||||
Configuration snippet added as-is to the BitlBee configuration file.
|
||||
@end table
|
||||
|
|
|
@ -64,6 +64,7 @@ (define builder
|
|||
(format port "# This file was generated from your GuixSD configuration. Any changes
|
||||
# will be lost upon reconfiguration.
|
||||
UI menu.c32
|
||||
MENU TITLE GuixSD Boot Options
|
||||
PROMPT ~a
|
||||
TIMEOUT ~a~%"
|
||||
(if (> timeout 0) 1 0)
|
||||
|
|
|
@ -33,7 +33,10 @@ (define-module (gnu bootloader u-boot)
|
|||
u-boot-a20-olinuxino-micro-bootloader
|
||||
u-boot-banana-pi-m2-ultra-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
|
||||
#~(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))
|
||||
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)
|
||||
(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
|
||||
(bootloader
|
||||
(inherit u-boot-allwinner-bootloader)
|
||||
|
@ -110,3 +127,18 @@ (define u-boot-banana-pi-m2-ultra-bootloader
|
|||
(bootloader
|
||||
(inherit u-boot-allwinner-bootloader)
|
||||
(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)))
|
||||
|
|
16
gnu/local.mk
16
gnu/local.mk
|
@ -202,6 +202,7 @@ GNU_SYSTEM_MODULES = \
|
|||
%D%/packages/graphics.scm \
|
||||
%D%/packages/graphviz.scm \
|
||||
%D%/packages/groff.scm \
|
||||
%D%/packages/groovy.scm \
|
||||
%D%/packages/gsasl.scm \
|
||||
%D%/packages/gstreamer.scm \
|
||||
%D%/packages/gtk.scm \
|
||||
|
@ -343,6 +344,7 @@ GNU_SYSTEM_MODULES = \
|
|||
%D%/packages/plotutils.scm \
|
||||
%D%/packages/polkit.scm \
|
||||
%D%/packages/popt.scm \
|
||||
%D%/packages/printers.scm \
|
||||
%D%/packages/profiling.scm \
|
||||
%D%/packages/pth.scm \
|
||||
%D%/packages/pulseaudio.scm \
|
||||
|
@ -552,6 +554,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/abiword-black-drawing-with-gtk322.patch \
|
||||
%D%/packages/patches/acl-fix-perl-regex.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-perl-tempdir1.patch \
|
||||
%D%/packages/patches/aegis-perl-tempdir2.patch \
|
||||
|
@ -746,6 +749,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/gpsbabel-qstring.patch \
|
||||
%D%/packages/patches/grep-timing-sensitive-test.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/gspell-dash-test.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/hydra-disable-darcs-test.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-harfbuzz.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/kdbusaddons-kinit-file-name.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-makefile.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/libusb-0.1-disable-tests.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/libvpx-CVE-2016-2818.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-version-detection.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-video-z64-glew-correct-path.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/netcdf-date-time.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-pillow-fix-failing-tests.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-configobj-setuptools.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-7254.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-get-selected-profile-fix.patch \
|
||||
%D%/packages/patches/wicd-urwid-1.3.patch \
|
||||
|
|
|
@ -188,7 +188,7 @@ (define find-packages-by-name
|
|||
version>?)))
|
||||
(if version
|
||||
(filter (lambda (package)
|
||||
(string-prefix? version (package-version package)))
|
||||
(version-prefix? version (package-version package)))
|
||||
matching)
|
||||
matching)))))
|
||||
|
||||
|
|
|
@ -27,18 +27,73 @@ (define-module (gnu packages android)
|
|||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system android-ndk)
|
||||
#:use-module (guix build-system python)
|
||||
#:use-module (guix build-system trivial)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages check)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages gnupg)
|
||||
#:use-module (gnu packages pcre)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages selinux)
|
||||
#:use-module (gnu packages ssh)
|
||||
#:use-module (gnu packages version-control)
|
||||
#:use-module (gnu packages tls)
|
||||
#: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
|
||||
;; packages. They are licensed under GPL-2 and have copyright:
|
||||
;; 2012, Stefan Handschuh <handschuh.stefan@googlemail.com>
|
||||
|
@ -58,52 +113,69 @@ (define (android-platform-system-core version)
|
|||
version "-checkout"))
|
||||
(sha256
|
||||
(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
|
||||
(name "liblog")
|
||||
(name "android-liblog")
|
||||
(version (android-platform-version))
|
||||
(source (android-platform-system-core version))
|
||||
(build-system gnu-build-system)
|
||||
(build-system android-ndk-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; TODO.
|
||||
#:make-flags '("CC=gcc")
|
||||
`(#:make-flags '("LDLIBS=-lpthread")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'enter-source
|
||||
(lambda _ (chdir "liblog") #t))
|
||||
(add-after 'enter-source 'create-Makefile
|
||||
(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
|
||||
(add-after 'install 'ldconfig
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(lib (string-append out "/lib")))
|
||||
(install-file "liblog.so.0" lib)
|
||||
(with-directory-excursion lib
|
||||
(symlink "liblog.so.0" "liblog.so"))
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(symlink "liblog.so.0" (string-append out "/lib/liblog.so"))
|
||||
#t))))))
|
||||
(home-page "https://developer.android.com/")
|
||||
(synopsis "Logging library from the Android platform.")
|
||||
|
@ -113,62 +185,29 @@ (define liblog
|
|||
in Main, System, Radio and Events sub-logs.")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define libbase
|
||||
(define android-libbase
|
||||
(package
|
||||
(name "libbase")
|
||||
(name "android-libbase")
|
||||
(version (android-platform-version))
|
||||
(source (origin
|
||||
(inherit (android-platform-system-core version))
|
||||
(patches
|
||||
(search-patches "libbase-use-own-logging.patch"
|
||||
"libbase-fix-includes.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(source (android-platform-system-core version))
|
||||
(build-system android-ndk-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; TODO.
|
||||
`(#:tests? #f ; Test failure: logging.UNIMPLEMENTED
|
||||
#:make-flags '("CXXFLAGS=-std=gnu++11")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'enter-source
|
||||
(lambda _ (chdir "base") #t))
|
||||
(add-after 'enter-source 'create-Makefile
|
||||
(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)))
|
||||
(lambda _ (chdir "base") #t)))))
|
||||
(inputs `(("android-liblog" ,android-liblog)))
|
||||
(home-page "https://developer.android.com/")
|
||||
(synopsis "Android platform base library")
|
||||
(description "@code{libbase} is a library in common use by the
|
||||
various Android core host applications.")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define libcutils
|
||||
(define android-libcutils
|
||||
(package
|
||||
(name "libcutils")
|
||||
(name "android-libcutils")
|
||||
(version (android-platform-version))
|
||||
(source (android-platform-system-core version))
|
||||
(build-system gnu-build-system)
|
||||
|
@ -206,10 +245,13 @@ (define libcutils
|
|||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(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)
|
||||
(with-directory-excursion lib
|
||||
(symlink "libcutils.so.0" "libcutils.so"))
|
||||
(copy-recursively "../include/cutils"
|
||||
(string-append include "/cutils"))
|
||||
#t))))))
|
||||
(home-page "https://developer.android.com/")
|
||||
(synopsis "Android platform c utils library")
|
||||
|
@ -217,90 +259,92 @@ (define libcutils
|
|||
various Android core host applications.")
|
||||
(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
|
||||
(package
|
||||
(name "adb")
|
||||
(version (android-platform-version))
|
||||
(source (origin
|
||||
(inherit (android-platform-system-core version))
|
||||
(patches
|
||||
(search-patches "libbase-use-own-logging.patch"
|
||||
"libbase-fix-includes.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(source (android-platform-system-core version))
|
||||
(build-system android-ndk-build-system)
|
||||
(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
|
||||
(add-after 'unpack 'enter-source
|
||||
(lambda _ (chdir "adb") #t))
|
||||
(add-before 'build 'fix-clang
|
||||
(lambda _
|
||||
;; adb_client.h contains _Nonnull and _Nullable attributes, that
|
||||
;; are not understood by gcc.
|
||||
(substitute* "adb_client.h"
|
||||
(("_Nonnull") "")
|
||||
(("_Nullable") ""))
|
||||
(add-after 'enter-source 'make-libs-available
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(substitute* "Android.mk"
|
||||
(("libcrypto_static") "libcrypto"))
|
||||
#t))
|
||||
(add-before 'build 'fix-main
|
||||
(lambda _
|
||||
;; main.cpp used to be adb_main.cpp in the current directory
|
||||
;; rather than in its own subdirectory, but it was not fixed.
|
||||
;; 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))
|
||||
(add-after 'install 'install-headers
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(install-file "diagnose_usb.h" (string-append (assoc-ref outputs "out") "/include"))
|
||||
#t)))))
|
||||
(inputs
|
||||
`(("libbase" ,libbase)
|
||||
("libcutils" ,libcutils)
|
||||
`(("android-libbase" ,android-libbase)
|
||||
("android-libcutils" ,android-libcutils)
|
||||
("android-liblog" ,android-liblog)
|
||||
("openssl" ,openssl)))
|
||||
(home-page "https://developer.android.com/studio/command-line/adb.html")
|
||||
(synopsis "Android Debug Bridge")
|
||||
|
@ -329,8 +373,10 @@ (define-public mkbootimg
|
|||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(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 "bootimg.h" include)
|
||||
#t))))))
|
||||
(home-page "https://developer.android.com/studio/command-line/adb.html")
|
||||
(synopsis "Tool to create Android boot images")
|
||||
|
@ -338,6 +384,263 @@ (define-public mkbootimg
|
|||
Images.")
|
||||
(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
|
||||
(package
|
||||
(name "android-udev-rules")
|
||||
|
|
313
gnu/packages/aux-files/run-in-namespace.c
Normal file
313
gnu/packages/aux-files/run-in-namespace.c
Normal 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;
|
||||
}
|
|
@ -29,6 +29,38 @@ (define-module (gnu packages bioconductor)
|
|||
#:use-module (gnu packages statistics)
|
||||
#: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
|
||||
(package
|
||||
(name "r-hpar")
|
||||
|
|
|
@ -2088,7 +2088,7 @@ (define-public delly
|
|||
(define-public diamond
|
||||
(package
|
||||
(name "diamond")
|
||||
(version "0.9.21")
|
||||
(version "0.9.22")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
|
@ -2097,7 +2097,7 @@ (define-public diamond
|
|||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1cf98vcsiwcv3c4apg50w1240v1mpw0zln1sdw3g692dqa4y041z"))))
|
||||
"0adp87r9ak63frdrdmrdfhsn6g0jnnyq1lr2wibvqbxcl37iir9m"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f ; no "check" target
|
||||
|
@ -11151,25 +11151,22 @@ (define-public ritornello
|
|||
(define-public trim-galore
|
||||
(package
|
||||
(name "trim-galore")
|
||||
(version "0.4.2")
|
||||
(version "0.4.5")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://www.bioinformatics.babraham.ac.uk/"
|
||||
"projects/trim_galore/trim_galore_v"
|
||||
version ".zip"))
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/FelixKrueger/TrimGalore.git")
|
||||
(commit version)))
|
||||
(file-name (string-append name "-" version "-checkout"))
|
||||
(sha256
|
||||
(base32
|
||||
"0b9qdxi4521gsrjvbhgky8g7kry9b5nx3byzaxkgxz7p4k8bn1mn"))))
|
||||
"0x5892l48c816pf00wmnz5vq0zq6170d3xc8zrxncd4jcz7h1p71"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; no tests
|
||||
#: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 'build)
|
||||
(add-after 'unpack 'hardcode-tool-references
|
||||
|
@ -11581,47 +11578,62 @@ (define-public f-seq
|
|||
(define-public bismark
|
||||
(package
|
||||
(name "bismark")
|
||||
(version "0.16.3")
|
||||
(version "0.19.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://github.com/FelixKrueger/Bismark/"
|
||||
"archive/" version ".tar.gz"))
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/FelixKrueger/Bismark.git")
|
||||
(commit version)))
|
||||
(file-name (string-append name "-" version "-checkout"))
|
||||
(sha256
|
||||
(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)
|
||||
(arguments
|
||||
`(#:tests? #f ; there are no tests
|
||||
`(#:tests? #f ; there are no tests
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
(delete 'build)
|
||||
(replace 'install
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let ((bin (string-append (assoc-ref outputs "out")
|
||||
"/bin"))
|
||||
(docdir (string-append (assoc-ref outputs "out")
|
||||
"/share/doc/bismark"))
|
||||
(docs '("Bismark_User_Guide.pdf"
|
||||
"RELEASE_NOTES.txt"))
|
||||
(scripts '("bismark"
|
||||
"bismark_genome_preparation"
|
||||
"bismark_methylation_extractor"
|
||||
"bismark2bedGraph"
|
||||
"bismark2report"
|
||||
"coverage2cytosine"
|
||||
"deduplicate_bismark"
|
||||
"bismark_sitrep.tpl"
|
||||
"bam2nuc"
|
||||
"bismark2summary")))
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bin (string-append out "/bin"))
|
||||
(share (string-append out "/share/bismark"))
|
||||
(docdir (string-append out "/share/doc/bismark"))
|
||||
(docs '("Docs/Bismark_User_Guide.html"))
|
||||
(scripts '("bismark"
|
||||
"bismark_genome_preparation"
|
||||
"bismark_methylation_extractor"
|
||||
"bismark2bedGraph"
|
||||
"bismark2report"
|
||||
"coverage2cytosine"
|
||||
"deduplicate_bismark"
|
||||
"filter_non_conversion"
|
||||
"bam2nuc"
|
||||
"bismark2summary")))
|
||||
(mkdir-p share)
|
||||
(mkdir-p docdir)
|
||||
(mkdir-p bin)
|
||||
(for-each (lambda (file) (install-file file bin))
|
||||
scripts)
|
||||
(for-each (lambda (file) (install-file file docdir))
|
||||
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
|
||||
(substitute* (map (lambda (file)
|
||||
(string-append bin "/" file))
|
||||
|
|
|
@ -338,7 +338,7 @@ (define-public dtc
|
|||
(define u-boot
|
||||
(package
|
||||
(name "u-boot")
|
||||
(version "2018.01")
|
||||
(version "2018.05")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
|
@ -346,10 +346,10 @@ (define u-boot
|
|||
"u-boot-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1nidnnjprgxdhiiz7gmaj8cgcf52l5gbv64cmzjq4gmkjirmk3wk"))))
|
||||
"0j60p4iskzb4hamxgykc6gd7xchxfka1zwh8hv08r9rrc4m3r8ad"))))
|
||||
(native-inputs
|
||||
`(("bc" ,bc)
|
||||
;("dtc" ,dtc) ; they have their own incompatible copy.
|
||||
("dtc" ,dtc)
|
||||
("python-2" ,python-2)
|
||||
("swig" ,swig)))
|
||||
(build-system gnu-build-system)
|
||||
|
@ -392,15 +392,17 @@ (define (make-u-boot-package board triplet)
|
|||
(if (file-exists? (string-append "configs/" config-name))
|
||||
(zero? (apply system* "make" `(,@make-flags ,config-name)))
|
||||
(begin
|
||||
(display "Invalid board name. Valid board names are:")
|
||||
(let ((suffix-len (string-length "_defconfig")))
|
||||
(scandir "configs"
|
||||
(lambda (file-name)
|
||||
(when (string-suffix? "_defconfig" file-name)
|
||||
(format #t
|
||||
"- ~A\n"
|
||||
(string-drop-right file-name
|
||||
suffix-len))))))
|
||||
(display "Invalid board name. Valid board names are:"
|
||||
(current-error-port))
|
||||
(let ((suffix-len (string-length "_defconfig"))
|
||||
(entries (scandir "configs")))
|
||||
(for-each (lambda (file-name)
|
||||
(when (string-suffix? "_defconfig" file-name)
|
||||
(format (current-error-port)
|
||||
"- ~A\n"
|
||||
(string-drop-right file-name
|
||||
suffix-len))))
|
||||
(sort entries string<)))
|
||||
#f)))))
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
|
@ -411,6 +413,8 @@ (define (make-u-boot-package board triplet)
|
|||
(find-files "." "^(MLO|SPL)$"))))
|
||||
(mkdir-p libexec)
|
||||
(install-file ".config" libexec)
|
||||
;; Useful for "qemu -kernel".
|
||||
(install-file "u-boot" libexec)
|
||||
(for-each
|
||||
(lambda (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")
|
||||
"/bl31.bin")))
|
||||
(setenv "BL31" bl31)
|
||||
;; This is necessary while we're using the bundled dtc.
|
||||
(setenv "PATH" (string-append (getenv "PATH") ":"
|
||||
"scripts/dtc")))
|
||||
;; This is necessary when we're using the bundled dtc.
|
||||
;(setenv "PATH" (string-append (getenv "PATH") ":"
|
||||
; "scripts/dtc"))
|
||||
)
|
||||
#t))))))
|
||||
(native-inputs
|
||||
`(("firmware" ,arm-trusted-firmware-pine64-plus)
|
||||
|
@ -469,6 +474,12 @@ (define-public u-boot-wandboard
|
|||
(define-public u-boot-mx6cuboxi
|
||||
(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
|
||||
(package
|
||||
(name "vboot-utils")
|
||||
|
|
|
@ -267,7 +267,7 @@ (define gcc-boot0
|
|||
;; Drop trailing letters, as gmp-6.0.0a unpacks
|
||||
;; into gmp-6.0.0.
|
||||
`(symlink ,(string-trim-right
|
||||
(package-full-name lib)
|
||||
(package-full-name lib "-")
|
||||
char-set:letter)
|
||||
,(package-name lib)))
|
||||
(list gmp-6.0 mpfr mpc))
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2015, 2017, 2018 Alex Kost <alezost@gmail.com>
|
||||
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -32,7 +33,7 @@ (define-module (gnu packages dunst)
|
|||
(define-public dunst
|
||||
(package
|
||||
(name "dunst")
|
||||
(version "1.3.1")
|
||||
(version "1.3.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
|
@ -41,7 +42,7 @@ (define-public dunst
|
|||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1mkdp1vqc376z8clwm5s9070jq1g92j8hv2rr231jr2468fnwaga"))))
|
||||
"12nj8qw3y3nl8sm24wizy2a7k06v1p88bnz1xr9l39h527xyidma"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f ; no check target
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
|
||||
;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -22,27 +23,33 @@
|
|||
(define-module (gnu packages education)
|
||||
#:use-module (ice-9 regex)
|
||||
#: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 databases)
|
||||
#:use-module (gnu packages freedesktop)
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages gnome)
|
||||
#:use-module (gnu packages gtk)
|
||||
#:use-module (gnu packages javascript)
|
||||
#:use-module (gnu packages kde-frameworks) ; extra-cmake-modules
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages qt)
|
||||
#:use-module (gnu packages sdl)
|
||||
#:use-module (gnu packages texinfo)
|
||||
#:use-module (gnu packages xml)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix svn-download)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system trivial)
|
||||
#:use-module (srfi srfi-1))
|
||||
|
||||
(define-public gcompris
|
||||
|
@ -224,3 +231,65 @@ (define-public tipp10
|
|||
and the ability to create your own practice lessons make learning to type
|
||||
easy.")
|
||||
(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+)))
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
;;; Copyright © 2016, 2017 Alex Vong <alexvong1995@gmail.com>
|
||||
;;; Copyright © 2016, 2017, 2018 Arun Isaac <arunisaac@systemreboot.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 Vasile Dumitrascu <va511e@yahoo.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 fontutils)
|
||||
#:use-module (gnu packages password-utils)
|
||||
#:use-module (gnu packages xdisorg)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (ice-9 match))
|
||||
|
@ -4731,6 +4732,29 @@ (define-public emacs-monroe
|
|||
distribution, primarily targeting Clojure users")
|
||||
(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
|
||||
(package
|
||||
(name "emacs-writegood-mode")
|
||||
|
@ -4777,35 +4801,35 @@ (define-public emacs-org
|
|||
(name "emacs-org")
|
||||
;; emacs-org-contrib inherits from this package. Please update its sha256
|
||||
;; checksum as well.
|
||||
(version "9.1.11")
|
||||
(version "9.1.13")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://elpa.gnu.org/packages/org-"
|
||||
version ".tar"))
|
||||
(sha256
|
||||
(base32
|
||||
"0i27g5qbkfqbxhgiz917pjwkxg3rwid99d0ickwx43bzq0zi7c1m"))))
|
||||
"1vx0n32gvrgy2bl2b4pvxf00cywxwm57gi46f2b2zlrnmd5n85pr"))))
|
||||
(build-system emacs-build-system)
|
||||
(home-page "https://orgmode.org/")
|
||||
(synopsis "Outline-based notes management and organizer")
|
||||
(description "Org is an Emacs mode for keeping notes, maintaining TODO
|
||||
lists, and project planning with a fast and effective plain-text system. It
|
||||
also is an authoring system with unique support for literate programming and
|
||||
reproducible research.")
|
||||
lists, and project planning with a fast and effective lightweight markup
|
||||
language. It also is an authoring system with unique support for literate
|
||||
programming and reproducible research.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public emacs-org-contrib
|
||||
(package
|
||||
(inherit emacs-org)
|
||||
(name "emacs-org-contrib")
|
||||
(version "20180423")
|
||||
(version "20180507")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://orgmode.org/elpa/org-plus-contrib-"
|
||||
version ".tar"))
|
||||
(sha256
|
||||
(base32
|
||||
"1aggvdy74q8p79xyc19zring5gjvlzp6lbsq8ar319zkmcjrapqd"))))
|
||||
"190iwjpdjrhg7gl2d4bri2y0y679vlrwd841r6dvhza0yy338d2d"))))
|
||||
(arguments
|
||||
`(#:modules ((guix build emacs-build-system)
|
||||
(guix build utils)
|
||||
|
@ -8359,23 +8383,34 @@ (define-public emacs-helm-bibtex
|
|||
(license license:gpl3+))))
|
||||
|
||||
(define-public emacs-ewmctrl
|
||||
(let ((commit "3d0217c4d6cdb5c308b6cb4293574f470d4faacf")
|
||||
(revision "1"))
|
||||
(let ((commit "3d0217c4d6cdb5c308b6cb4293574f470d4faacf"))
|
||||
(package
|
||||
(name "emacs-ewmctrl")
|
||||
(version (string-append "0.0.1" "-" revision "."
|
||||
(string-take commit 7)))
|
||||
(version (git-version "0.0.1" "1" commit))
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/flexibeast/ewmctrl.git")
|
||||
(commit commit)))
|
||||
(file-name (string-append name "-" version "-checkout"))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0ilwvx0qryv3v6xf0gxqwnfm6pf96gxap8h9g3f6z6lk9ff4n1wi"))))
|
||||
(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")
|
||||
(synopsis "Emacs interface to @code{wmctrl}")
|
||||
(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
|
||||
@command{rg} installed.")
|
||||
(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+))))
|
||||
|
|
|
@ -45,6 +45,7 @@ (define-module (gnu packages emulators)
|
|||
#:use-module (gnu packages fontutils)
|
||||
#:use-module (gnu packages freedesktop)
|
||||
#:use-module (gnu packages game-development)
|
||||
#:use-module (gnu packages gcc)
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages gl)
|
||||
#: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.
|
||||
(define-public dolphin-emu
|
||||
(let ((commit "d04b179111f8d863f360839474cb82c766f762b8")
|
||||
(revision "0"))
|
||||
(let ((commit "47fd8c6eff4cdea7660d0fa78040f98d1d4fa136")
|
||||
(revision "1"))
|
||||
(package
|
||||
(name "dolphin-emu")
|
||||
(version (git-version "5.0" revision commit))
|
||||
|
@ -134,7 +135,7 @@ (define-public dolphin-emu
|
|||
#t))
|
||||
(sha256
|
||||
(base32
|
||||
"0g725wmhlim73zrhi47wmr1bmplpy4b7sbimd5pm8xpfhj5nm10l"))))
|
||||
"1gp2sshnr0dswdawxd5ix96nksp435b52bqvpjx8pmn523k29zsw"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f
|
||||
|
@ -143,6 +144,10 @@ (define-public dolphin-emu
|
|||
|
||||
#: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
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let ((fontfile
|
||||
|
@ -179,6 +184,7 @@ (define-public dolphin-emu
|
|||
"-DX11_FOUND=1")))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)
|
||||
("gcc" ,gcc-7) ; Building with gcc@5 doesn't work anymore.
|
||||
("gettext" ,gnu-gettext)))
|
||||
(inputs
|
||||
`(("alsa-lib" ,alsa-lib)
|
||||
|
|
|
@ -169,7 +169,7 @@ (define-public weex
|
|||
(define-public libfilezilla
|
||||
(package
|
||||
(name "libfilezilla")
|
||||
(version "0.12.1")
|
||||
(version "0.12.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -177,7 +177,7 @@ (define-public libfilezilla
|
|||
name "/" name "-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1gbqm42dd0m3fvqz3bk53889479dvn8679zp6ba8a9q2br2wkvv0"))))
|
||||
"1v461hwdk74whp89s490dj1z18gfqf9bz9140m5f11rsvrpid33p"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("cppunit" ,cppunit)
|
||||
|
|
|
@ -1819,7 +1819,7 @@ (define-public gnujump
|
|||
(define-public wesnoth
|
||||
(package
|
||||
(name "wesnoth")
|
||||
(version "1.14.0")
|
||||
(version "1.14.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/wesnoth/wesnoth-"
|
||||
|
@ -1828,8 +1828,7 @@ (define-public wesnoth
|
|||
name "-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"09niq53y17faizhmd98anx3dha7hvacvj9a0a64lg8wn915cm0bw"))
|
||||
(patches (search-patches "wesnoth-fix-std-bad-cast.patch"))))
|
||||
"1mzrnbv71b4s41c5x8clhb53l8lidiwzny1hl828228pvys5bxkb"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f)) ; no check target
|
||||
|
|
|
@ -536,7 +536,7 @@ (define-public gnome-doc-utils
|
|||
(define-public gnome-disk-utility
|
||||
(package
|
||||
(name "gnome-disk-utility")
|
||||
(version "3.28.1")
|
||||
(version "3.28.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnome/sources/" name "/"
|
||||
|
@ -544,7 +544,7 @@ (define-public gnome-disk-utility
|
|||
name "-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"09dmknfas8iifv6k5jb4a9ag57s8awrn0f26fd1qlg0mbfjlnfd6"))))
|
||||
"1j3l4b1prbnixzy6srvcsjfg1dx5nqys2lmygm31ygfdq7svp3m6"))))
|
||||
(build-system meson-build-system)
|
||||
(native-inputs
|
||||
`(("glib:bin" ,glib "bin")
|
||||
|
@ -3877,7 +3877,7 @@ (define-public eog-plugins
|
|||
;; 'XDG_DATA_DIRS' appropriately set.
|
||||
(package
|
||||
(name "eog-plugins")
|
||||
(version "3.26.1")
|
||||
(version "3.26.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnome/sources/" name "/"
|
||||
|
@ -3885,7 +3885,7 @@ (define-public eog-plugins
|
|||
name "-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0v45f2m3b60ygkwpq6jrl49nwrivw6qy0ciibpv821qrm73hsgd7"))))
|
||||
"1w8zw7kwfvlwlyb1k1inqdvbwnzq959sqawlmnwfb8ykn98hbk8y"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "https://wiki.gnome.org/Apps/EyeOfGnome/Plugins")
|
||||
(synopsis "Extensions for the Eye of GNOME image viewer")
|
||||
|
|
|
@ -459,27 +459,29 @@ (define-public icecat
|
|||
(mozilla-patch "icecat-CVE-2018-5146.patch" "494e5d5278ba" "1yb4lxjw499ppwhk31vz0vzl0cfqvj9d4jwqag7ayj53ybwsqgjr")
|
||||
(mozilla-patch "icecat-CVE-2018-5147.patch" "5cd5586a2f48" "10s774pwvj6xfk3kk6ivnhp2acc8x9sqq6na8z47nkhgwl2712i5")
|
||||
(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-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-1409440.patch" "2f3e1ccf1661" "0azl8g81kpc0w2xpjpgm1154ll12g0a8n6i7bl3s9nnrk2i26n74")
|
||||
(mozilla-patch "icecat-bug-1441941.patch" "8ff2c4d68e36" "0kz1rqhnz8ca4z20hnpcafidhsrwhnm0h2gmlgchni33h8pisr1f")
|
||||
(mozilla-patch "icecat-bug-1443092.patch" "b8c430253efd" "1arjcaps9axhxh5ff84n9bydhhzrihn7hbq7v69nvqwqrjp3lgg9")
|
||||
(mozilla-patch "icecat-bug-1448774.patch" "05cadfa3ac39" "0q0vh7vy7x0l8jp6376fn10qljfp4mnp4m9zfn90j4m19pfl86a0")
|
||||
(mozilla-patch "icecat-bug-1449548.patch" "48a678d7cb81" "1yfh7kxxxvqck2hpn98pwag4splyc6c9brc5haq28fp8x9r9qvlk")
|
||||
(mozilla-patch "icecat-bug-1448705.patch" "112032576872" "1x1hxyggbxlnlj0n9cbp03hjnfvm6cq8nqj0jizrd8cfyd5aig8p")
|
||||
(mozilla-patch "icecat-bug-1388020.patch" "ad9a885b0df4" "1hrk1q9mk59jww55g4lqmaflznk87x3vvjn2mxfgfbbjs8l1cyz4")
|
||||
(mozilla-patch "icecat-CVE-2018-5150-pt02.patch" "2f3e1ccf1661" "0azl8g81kpc0w2xpjpgm1154ll12g0a8n6i7bl3s9nnrk2i26n74")
|
||||
(mozilla-patch "icecat-CVE-2018-5159.patch" "8ff2c4d68e36" "0kz1rqhnz8ca4z20hnpcafidhsrwhnm0h2gmlgchni33h8pisr1f")
|
||||
(mozilla-patch "icecat-CVE-2018-5154.patch" "b8c430253efd" "1arjcaps9axhxh5ff84n9bydhhzrihn7hbq7v69nvqwqrjp3lgg9")
|
||||
(mozilla-patch "icecat-CVE-2018-5155.patch" "05cadfa3ac39" "0q0vh7vy7x0l8jp6376fn10qljfp4mnp4m9zfn90j4m19pfl86a0")
|
||||
(mozilla-patch "icecat-CVE-2018-5168.patch" "48a678d7cb81" "1yfh7kxxxvqck2hpn98pwag4splyc6c9brc5haq28fp8x9r9qvlk")
|
||||
(mozilla-patch "icecat-CVE-2018-5150-pt03.patch" "112032576872" "1x1hxyggbxlnlj0n9cbp03hjnfvm6cq8nqj0jizrd8cfyd5aig8p")
|
||||
(mozilla-patch "icecat-CVE-2018-5150-pt04.patch" "ad9a885b0df4" "1hrk1q9mk59jww55g4lqmaflznk87x3vvjn2mxfgfbbjs8l1cyz4")
|
||||
(mozilla-patch "icecat-bug-1452416.patch" "f89ab96a2532" "1dqchxdyznhgyxhfq0hm0vg1p597hjqflfzigc7j3s5vxf9rg2nv")
|
||||
(mozilla-patch "icecat-bug-1451376.patch" "af885a1bd293" "1wfpqhm2dp4fsx6zbrncngsqz7g2x09b625zcighixrbpvybyww3")
|
||||
(mozilla-patch "icecat-bug-1444668.patch" "666fc84ec72d" "0lml2wqd4yqidhi364x8r90f78397k2y0kq5z5bv8l8j4bhcnb9v")
|
||||
(search-patch "icecat-bug-1452075.patch")
|
||||
(mozilla-patch "icecat-bug-1393367.patch" "1ab40761a856" "1kgwypy7k5b33jwkni4025za4kcnv5m6klsx4wsswlixmljmkbc7")
|
||||
(mozilla-patch "icecat-CVE-2018-5150-pt05.patch" "af885a1bd293" "1wfpqhm2dp4fsx6zbrncngsqz7g2x09b625zcighixrbpvybyww3")
|
||||
(mozilla-patch "icecat-CVE-2018-5150-pt06.patch" "666fc84ec72d" "0lml2wqd4yqidhi364x8r90f78397k2y0kq5z5bv8l8j4bhcnb9v")
|
||||
(search-patch "icecat-CVE-2018-5157-and-CVE-2018-5158.patch")
|
||||
(mozilla-patch "icecat-CVE-2018-5150-pt07.patch" "1ab40761a856" "1kgwypy7k5b33jwkni4025za4kcnv5m6klsx4wsswlixmljmkbc7")
|
||||
(mozilla-patch "icecat-bug-1453339.patch" "0edb8dca7087" "0b30pipqryh311sc97rcmwnx9n8qdlbbz90b2hkybjnprmbhfxrm")
|
||||
(mozilla-patch "icecat-bug-1452202.patch" "134c728799c1" "16hbwx6fx1hrddsyjjbd3z954ql3pg348xs13h9riyblq8crzmam")
|
||||
(mozilla-patch "icecat-bug-1411415.patch" "14eab155eaa8" "0wr4xgblxzk4c2gvlnpl7ic1196mrhry1hgwdl1jivq0ji5cbvbd")
|
||||
(mozilla-patch "icecat-CVE-2018-5150-pt08.patch" "134c728799c1" "16hbwx6fx1hrddsyjjbd3z954ql3pg348xs13h9riyblq8crzmam")
|
||||
(mozilla-patch "icecat-CVE-2018-5150-pt09.patch" "14eab155eaa8" "0wr4xgblxzk4c2gvlnpl7ic1196mrhry1hgwdl1jivq0ji5cbvbd")
|
||||
(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)))
|
||||
(snippet
|
||||
'(begin
|
||||
|
|
|
@ -214,7 +214,7 @@ (define-public go-1.9
|
|||
(package
|
||||
(inherit go-1.4)
|
||||
(name "go")
|
||||
(version "1.9.5")
|
||||
(version "1.9.6")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -222,7 +222,7 @@ (define-public go-1.9
|
|||
name version ".src.tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1g4zqhbh1yw3gnb400szzwrdz0k5s3h0h5nc35xgmn5v69zvphpi"))))
|
||||
"0a2qkvzr0g5cbd66wi7b6r40qyp9p55y0zz2j5qg1xsqwsdhbx1n"))))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments go-1.4)
|
||||
((#:phases phases)
|
||||
|
@ -383,7 +383,7 @@ (define-public go-1.10
|
|||
(package
|
||||
(inherit go-1.9)
|
||||
(name "go")
|
||||
(version "1.10.1")
|
||||
(version "1.10.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -391,7 +391,7 @@ (define-public go-1.10
|
|||
name version ".src.tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1p1xyyxicp752n9wj10sljjl6mjxpfsplkhx74fzzjrwdkzlk52q"))))
|
||||
"1gcqbac3wbhbcr0ri9zgfj6qkqbwf9fn116a0a7fvn4wdff60r32"))))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments go-1.9)
|
||||
((#:phases phases)
|
||||
|
|
|
@ -117,13 +117,13 @@ (define-public graphviz
|
|||
(define-public python-graphviz
|
||||
(package
|
||||
(name "python-graphviz")
|
||||
(version "0.8.2")
|
||||
(version "0.8.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "graphviz" version ".zip"))
|
||||
(sha256
|
||||
(base32
|
||||
"148h7ln8z65c1723w9vpx8khkvl9iigh8csv0qd4pidc53042rv0"))))
|
||||
"0gnl11w98iib7vif92f3vircavy2v1yl9sl54y6hhk1mwm0f07f6"))))
|
||||
(build-system python-build-system)
|
||||
(native-inputs
|
||||
`(("unzip" ,unzip)))
|
||||
|
|
1156
gnu/packages/groovy.scm
Normal file
1156
gnu/packages/groovy.scm
Normal file
File diff suppressed because it is too large
Load diff
|
@ -353,7 +353,6 @@ (define-public gst-plugins-ugly
|
|||
(inputs
|
||||
`(("gst-plugins-base" ,gst-plugins-base)
|
||||
("liba52" ,liba52)
|
||||
("libmad" ,libmad)
|
||||
("lame" ,lame)
|
||||
("libcdio" ,libcdio)
|
||||
("twolame" ,twolame)
|
||||
|
|
|
@ -17,6 +17,8 @@
|
|||
;;; Copyright © 2017 Nils Gillmann <ng0@n0.is>
|
||||
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; 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.
|
||||
;;;
|
||||
|
@ -66,6 +68,7 @@ (define-module (gnu packages guile)
|
|||
#:use-module (gnu packages version-control)
|
||||
#:use-module (gnu packages xdisorg)
|
||||
#:use-module (gnu packages xorg)
|
||||
#:use-module (gnu packages networking)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
|
@ -1569,6 +1572,9 @@ (define-public guile-dbi
|
|||
'(#:configure-flags
|
||||
(list (string-append
|
||||
"--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
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'install 'patch-extension-path
|
||||
|
@ -1579,6 +1585,8 @@ (define-public guile-dbi
|
|||
(ext (string-append out "/lib/libguile-dbi")))
|
||||
(substitute* dbi.scm (("libguile-dbi") ext))
|
||||
#t))))))
|
||||
(inputs
|
||||
`(("guile-dbd-sqlite3" ,guile-dbd-sqlite3))) ; only shared library, no scheme files
|
||||
(propagated-inputs
|
||||
`(("guile" ,guile-2.2)))
|
||||
(synopsis "Guile database abstraction layer")
|
||||
|
@ -1590,6 +1598,15 @@ (define-public guile-dbi
|
|||
It currently supports MySQL, Postgres and SQLite3.")
|
||||
(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
|
||||
(package
|
||||
(name "guile-dbd-sqlite3")
|
||||
|
@ -1604,12 +1621,11 @@ (define-public guile-dbd-sqlite3
|
|||
"0rg71jchxd2y8x496s8zmfmikr5g8zxi8zv2ar3f7a23pph92iw2"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
`(("pkg-config" ,pkg-config)
|
||||
("guile-dbi-bootstrap" ,guile-dbi-bootstrap))) ; only required for headers
|
||||
(inputs
|
||||
`(("sqlite" ,sqlite)
|
||||
("zlib" ,(@ (gnu packages compression) zlib))))
|
||||
(propagated-inputs
|
||||
`(("guile-dbi" ,guile-dbi)))
|
||||
(synopsis "Guile DBI driver for SQLite")
|
||||
(home-page "https://github.com/jkalbhenn/guile-dbd-sqlite3")
|
||||
(description
|
||||
|
@ -2109,4 +2125,93 @@ (define-public guile-colorized
|
|||
"Guile-colorized provides you with a colorized REPL for GNU Guile.")
|
||||
(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
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
;;; Copyright © 2017 Danny Milosavljevic <dannym@scratchpost.org>
|
||||
;;; Copyright © 2017 rsiddharth <s@ricketyspace.net>
|
||||
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2018 Tonton <tonton@riseup.net>
|
||||
;;;
|
||||
;;; 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.")
|
||||
(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
|
||||
(package (inherit ghc-quickcheck)
|
||||
(version "2.11.3")
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
;;; Copyright © 2017, 2018 Alex Vong <alexvong1995@gmail.com>
|
||||
;;; Copyright © 2017 rsiddharth <s@ricketyspace.net>
|
||||
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2018 Tonton <tonton@riseup.net>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -9468,4 +9469,58 @@ (define-public ghc-email-validate
|
|||
address string against RFC 5322.")
|
||||
(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
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
|
||||
;;; 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.
|
||||
;;;
|
||||
|
@ -38,12 +39,16 @@ (define-module (gnu packages image-processing)
|
|||
#:use-module (gnu packages gnome)
|
||||
#:use-module (gnu packages graphics)
|
||||
#:use-module (gnu packages graphviz)
|
||||
#:use-module (gnu packages gtk)
|
||||
#:use-module (gnu packages image)
|
||||
#:use-module (gnu packages maths)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages photo)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages protobuf)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages serialization)
|
||||
#:use-module (gnu packages video)
|
||||
#:use-module (gnu packages xiph)
|
||||
#:use-module (gnu packages xml)
|
||||
#:use-module (gnu packages xorg))
|
||||
|
@ -191,3 +196,203 @@ (define-public vtk
|
|||
a suite of 3D interaction widgets, supports parallel processing, and
|
||||
integrates with various databases on GUI toolkits such as Qt and Tk.")
|
||||
(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)))
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
;;; Copyright © 2013, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
|
||||
;;; 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 Nils Gillmann <ng0@n0.is>
|
||||
;;; 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 build-system gnu)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system meson)
|
||||
#:use-module (guix build-system python)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages algebra)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages boost)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages curl)
|
||||
#:use-module (gnu packages fontutils)
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages ghostscript)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages gnome)
|
||||
|
@ -59,7 +60,7 @@ (define-module (gnu packages image-viewers)
|
|||
(define-public feh
|
||||
(package
|
||||
(name "feh")
|
||||
(version "2.26")
|
||||
(version "2.26.2")
|
||||
(home-page "https://feh.finalrewind.org/")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
|
@ -67,7 +68,7 @@ (define-public feh
|
|||
name "-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"11kckzwk3b734l0n4j41k40liq1v2lbbj1gzir5qc386g7fvzmmi"))))
|
||||
"07hn5d5m1jsqp6qb2d3lah1js8382hrf225y0q8776m2k3vzylk3"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:phases (modify-phases %standard-phases (delete 'configure))
|
||||
|
@ -231,43 +232,36 @@ (define-public sxiv
|
|||
(define-public viewnior
|
||||
(package
|
||||
(name "viewnior")
|
||||
(version "1.6")
|
||||
(version "1.7")
|
||||
(source
|
||||
(origin
|
||||
(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"))
|
||||
(sha256
|
||||
(base32
|
||||
"18309qjgwak3kn228z3p3nx7yxasqgzx69v3rgc23hf161nky0c9"))))
|
||||
(build-system gnu-build-system)
|
||||
"1rpkk721s3xas125q3g0fl11b5zsrmzv9pzl6ddzcy4sj2rd7ymr"))))
|
||||
(build-system meson-build-system)
|
||||
(arguments
|
||||
'(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'autogen
|
||||
(lambda _
|
||||
(zero? (system* "sh" "autogen.sh"))))
|
||||
(add-before 'install 'skip-gtk-update-icon-cache
|
||||
(add-after 'unpack 'patch-source
|
||||
(lambda _
|
||||
;; Don't create 'icon-theme.cache'
|
||||
(substitute* (find-files "data" "^Makefile$")
|
||||
(("gtk-update-icon-cache") (which "true")))
|
||||
#t)))))
|
||||
(substitute* "meson.build"
|
||||
(("meson.add_install_script*") ""))
|
||||
#t)))
|
||||
#:tests? #f)) ; no tests
|
||||
(native-inputs
|
||||
`(("automake" ,automake)
|
||||
("autoconf" ,autoconf)
|
||||
("intltool" ,intltool)
|
||||
`(("gettext" ,gettext-minimal)
|
||||
("glib" ,glib "bin") ; glib-genmarshal
|
||||
("gnome-common" ,gnome-common)
|
||||
("libtool" ,libtool)
|
||||
("pkg-config" ,pkg-config)
|
||||
("shared-mime-info" ,shared-mime-info)
|
||||
("which" ,which)))
|
||||
("shared-mime-info" ,shared-mime-info)))
|
||||
(inputs
|
||||
`(("exiv2" ,exiv2)
|
||||
("gdk-pixbuf" ,gdk-pixbuf)
|
||||
("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")
|
||||
(description "Viewnior is an image viewer program. Created to be simple,
|
||||
fast and elegant. Its minimalistic interface provides more screenspace for
|
||||
|
|
|
@ -47,14 +47,14 @@ (define-public imagemagick
|
|||
;; 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
|
||||
;; users are ready for the 7-series API.
|
||||
(version "6.9.9-39")
|
||||
(version "6.9.9-43")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://imagemagick/ImageMagick-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0cgrvfg8722cdv2y0hw2f7xhzdfmfiqc1348l71ki38dg4b0q4sn"))))
|
||||
"09vfxb1ljfma7mvkcqp17bs7adlrfh6kc6k9hifkhgxf51vr7hk6"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags '("--with-frozenpaths" "--without-gcc-arch")
|
||||
|
@ -169,7 +169,7 @@ (define-public perl-image-magick
|
|||
(define-public graphicsmagick
|
||||
(package
|
||||
(name "graphicsmagick")
|
||||
(version "1.3.28")
|
||||
(version "1.3.29")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
|
@ -181,7 +181,7 @@ (define-public graphicsmagick
|
|||
"/GraphicsMagick-" version ".tar.xz")))
|
||||
(sha256
|
||||
(base32
|
||||
"0jlrrimrajcmwp7llivyj14qnzb1mpqd8vw95dl6zbx5m2lnhall"))))
|
||||
"1m0cc6kpky06lpcipj7rfwc2jbw2igr0jk97zqmw3j1ld5mg93g1"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
|
|
|
@ -80,8 +80,13 @@ (define-public inkscape
|
|||
;; FIXME: tests require gmock
|
||||
(arguments
|
||||
`(#:tests? #f
|
||||
#:make-flags
|
||||
'("gtk_update_icon_cache=true")))
|
||||
#:phases
|
||||
(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/")
|
||||
(synopsis "Vector graphics editor")
|
||||
(description "Inkscape is a vector graphics editor. What sets Inkscape
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
|
||||
;;;
|
||||
;;; 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.")
|
||||
(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
|
||||
(package
|
||||
(name "mujs")
|
||||
|
|
|
@ -142,7 +142,7 @@ (define-public extra-cmake-modules
|
|||
(define-public phonon
|
||||
(package
|
||||
(name "phonon")
|
||||
(version "4.10.0")
|
||||
(version "4.10.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
|
@ -151,7 +151,7 @@ (define-public phonon
|
|||
name "-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0gyhlnwamzfw31kw4qh0v6rj0m47k9wfygd6h07klg9ggp60xhg2"))))
|
||||
"1dwdw0hm6685psrp7v9frhkhqvsxrbdnm3gw794j5z7g3brqvag5"))))
|
||||
(build-system cmake-build-system)
|
||||
(native-inputs
|
||||
;; TODO: Think about adding pulseaudio. Is it required for sound?
|
||||
|
|
|
@ -838,7 +838,7 @@ (define-public mythes
|
|||
(define-public libreoffice
|
||||
(package
|
||||
(name "libreoffice")
|
||||
(version "5.4.6.2")
|
||||
(version "5.4.7.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -848,7 +848,7 @@ (define-public libreoffice
|
|||
(version-prefix version 3) "/libreoffice-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0icd8h221gp2dsbn6d35flwhqhcfpx66cjc5dg8yifhhvrfam74i"))))
|
||||
"0g60wzg90n1kanmkiwy01jz4s4xgdkpczvm7vdrmjpp7ifrgijbv"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("bison" ,bison)
|
||||
|
|
|
@ -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.
|
||||
;; See : https://wiki.debian.org/DebianKernel/ARMMP.
|
||||
|
||||
(define %linux-libre-version "4.16.7")
|
||||
(define %linux-libre-hash "145hv7paw5zd6bnkk0agxyg2a37066xhrxszbq3d03mjvi8ap117")
|
||||
(define %linux-libre-version "4.16.9")
|
||||
(define %linux-libre-hash "13v5pb30v16cn81w2gnwaa4zhxas7q3zz10igpa2rqd5fdiy3rlz")
|
||||
|
||||
(define-public linux-libre
|
||||
(make-linux-libre %linux-libre-version
|
||||
|
@ -401,8 +401,8 @@ (define-public linux-libre
|
|||
%linux-compatible-systems
|
||||
#:configuration-file kernel-config))
|
||||
|
||||
(define %linux-libre-4.14-version "4.14.39")
|
||||
(define %linux-libre-4.14-hash "0r6fydsgspnskh5n1hfrkyrlrmql635zqr44ajafmqimldc0bplz")
|
||||
(define %linux-libre-4.14-version "4.14.41")
|
||||
(define %linux-libre-4.14-hash "0qcfw4spnjlzri8bgch1j0yxsw75gjx1m9qyn3h1lk4a33gczih6")
|
||||
|
||||
(define-public linux-libre-4.14
|
||||
(make-linux-libre %linux-libre-4.14-version
|
||||
|
@ -411,14 +411,14 @@ (define-public linux-libre-4.14
|
|||
#:configuration-file kernel-config))
|
||||
|
||||
(define-public linux-libre-4.9
|
||||
(make-linux-libre "4.9.98"
|
||||
"14mqg2hvxg4zwajwly18akyaca821sp4iz5w3xmikwndn2j8y1lw"
|
||||
(make-linux-libre "4.9.100"
|
||||
"1zphlisrjzbgk7nvclbwm23kmrx7vw13w02r1va3g5lzh0rlwx71"
|
||||
%intel-compatible-systems
|
||||
#:configuration-file kernel-config))
|
||||
|
||||
(define-public linux-libre-4.4
|
||||
(make-linux-libre "4.4.131"
|
||||
"1phah297rxjwy22wfaqlzpbk71ddp3drma5dx3i8xv6g8vijd08x"
|
||||
(make-linux-libre "4.4.132"
|
||||
"012nmbvvi8sg0iav5aibk8qx189iwqjadnr4h5jv65gzi7i79li9"
|
||||
%intel-compatible-systems
|
||||
#:configuration-file kernel-config))
|
||||
|
||||
|
@ -716,7 +716,7 @@ (define-public procps
|
|||
(define-public usbutils
|
||||
(package
|
||||
(name "usbutils")
|
||||
(version "009")
|
||||
(version "010")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -724,7 +724,7 @@ (define-public usbutils
|
|||
"usbutils-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0q3iavmak2bs9xw486w4xfbjl0hbzii93ssgpr95mxmm9kjz1gwb"))))
|
||||
"06aag4jfgsfjxk563xsp9ik9nadihmasrr37a1gb0vwqni5kdiv1"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("libusb" ,libusb)
|
||||
|
@ -3268,8 +3268,51 @@ (define-public btrfs-progs/static
|
|||
from the btrfs-progs package. It is meant to be used in initrds.")
|
||||
(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
|
||||
(package
|
||||
(inherit f2fs-tools-1.7)
|
||||
(name "f2fs-tools")
|
||||
(version "1.8.0")
|
||||
(source (origin
|
||||
|
@ -3280,23 +3323,8 @@ (define-public f2fs-tools
|
|||
(sha256
|
||||
(base32
|
||||
"1bir9ladb58ijlcvrjrq1fb1xv5ys50zdjaq0yzliib0apsyrnyl"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("autoconf" ,autoconf)
|
||||
("automake" ,automake)
|
||||
("libtool" ,libtool)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
`(("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))))
|
||||
`(("libuuid" ,util-linux)))))
|
||||
|
||||
(define-public freefall
|
||||
(package
|
||||
|
@ -3493,7 +3521,7 @@ (define-public rdma-core
|
|||
(define-public rng-tools
|
||||
(package
|
||||
(name "rng-tools")
|
||||
(version "6.1")
|
||||
(version "6.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(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"))
|
||||
(sha256
|
||||
(base32
|
||||
"00ywsknjpc9jd9kfmz2syk9l0xkiiwyx5qhl5zvhhc69v6682i31"))))
|
||||
"0xy4qmfhvkr5z4jr9j55dn5gnajr2jccdp6n0xsxkipjcgag342j"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(;; Avoid using OpenSSL, curl, and libxml2, reducing the closure by 166 MiB.
|
||||
|
@ -4136,7 +4164,7 @@ (define-public libmnl
|
|||
(define-public libnftnl
|
||||
(package
|
||||
(name "libnftnl")
|
||||
(version "1.0.9")
|
||||
(version "1.1.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -4144,7 +4172,7 @@ (define-public libnftnl
|
|||
"libnftnl-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0d9nkdbdck8sg6msysqyv3m9kjr9sjif5amf26dfa0g3mqjdihgy"))))
|
||||
"0v4gywcjvv2vg4zk632al1zv3ad0lx87nshynv110l8n3fhsq3pc"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
|
|
|
@ -48,7 +48,7 @@ (define-module (gnu packages lxde)
|
|||
(define-public libfm
|
||||
(package
|
||||
(name "libfm")
|
||||
(version "1.3.0")
|
||||
(version "1.3.0.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/pcmanfm/"
|
||||
|
@ -56,7 +56,7 @@ (define-public libfm
|
|||
"%29/LibFM/" name "-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"151jyy8ipmp2h829gd9s4s429qafv1zxl7j6zaj1k1gzm9s5rmnb"))))
|
||||
"0wkwbi1nyvqza3r1dhrq846axiiq0fy0dqgngnagh76fjrwnzl0q"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs `(("glib" ,glib)
|
||||
("gtk+" ,gtk+-2)))
|
||||
|
|
|
@ -481,7 +481,10 @@ (define-public arpack-ng-openmpi
|
|||
(inputs
|
||||
`(("mpi" ,openmpi)
|
||||
,@(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")))
|
||||
|
||||
(define-public lapack
|
||||
|
@ -3466,6 +3469,7 @@ (define-public hypre
|
|||
(native-inputs
|
||||
`(("doc++" ,doc++)
|
||||
("netpbm" ,netpbm)
|
||||
("perl" ,perl) ;needed to run 'ppmquant' during tests
|
||||
("texlive" ,texlive) ;full package required for fonts
|
||||
("ghostscript" ,ghostscript)))
|
||||
(inputs
|
||||
|
@ -3900,14 +3904,14 @@ (define-public r-subplex
|
|||
(define-public r-desolve
|
||||
(package
|
||||
(name "r-desolve")
|
||||
(version "1.20")
|
||||
(version "1.21")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (cran-uri "deSolve" version))
|
||||
(sha256
|
||||
(base32
|
||||
"18nx3maww979a8p8ly4hv63y65mnjx8vbj2fpipd6rhcbf1lbsan"))))
|
||||
"0qqc4mknw1jblzcmph1dg3k1p6w42yal0k1xjh8pqk7yb3a75hs5"))))
|
||||
(properties `((upstream-name . "deSolve")))
|
||||
(build-system r-build-system)
|
||||
(native-inputs
|
||||
|
|
|
@ -627,7 +627,15 @@ (define-public gajim
|
|||
(with-directory-excursion icons
|
||||
(symlink adwaita "Adwaita")
|
||||
(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
|
||||
`(("intltool" ,intltool)
|
||||
("xorg-server" ,xorg-server)))
|
||||
|
@ -728,14 +736,14 @@ (define-public dino
|
|||
(define-public prosody
|
||||
(package
|
||||
(name "prosody")
|
||||
(version "0.10.0")
|
||||
(version "0.10.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://prosody.im/downloads/source/"
|
||||
"prosody-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1644jy5dk46vahmh6nna36s79k8k668sbi3qamjb4q3c4m3y853l"))))
|
||||
"1kmmpkkgymg1r8r0k8j83pgmiskg1phl8hmpzjrnvlvsfnrnjplr"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; no "check" target
|
||||
|
|
|
@ -119,9 +119,10 @@ (define-public mpd
|
|||
("flac" ,flac)
|
||||
("glib" ,glib)
|
||||
("icu4c" ,icu4c)
|
||||
;; The LAME decoder comes from FFmpeg, but is added here so that
|
||||
;; configure picks up the LAME encoder.
|
||||
("lame" ,lame)
|
||||
("libid3tag" ,libid3tag)
|
||||
("libmad" ,libmad)
|
||||
("libmpdclient" ,libmpdclient)
|
||||
("libsamplerate" ,libsamplerate)
|
||||
("libsndfile" ,libsndfile)
|
||||
|
|
|
@ -30,7 +30,7 @@ (define-module (gnu packages nano)
|
|||
(define-public nano
|
||||
(package
|
||||
(name "nano")
|
||||
(version "2.9.6")
|
||||
(version "2.9.7")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -38,7 +38,7 @@ (define-public nano
|
|||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1inl8ljkc711969ncwy7irf0464psasikg1g42l0g4sfpdz50wx3"))))
|
||||
"1ga4sdk3ikx1ilggc6c77vyfpbmq3nrhg6svgglpf5sv60bv0jmn"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("gettext" ,gettext-minimal)
|
||||
|
|
|
@ -1333,7 +1333,7 @@ (define-public python2-ipy
|
|||
(define-public speedtest-cli
|
||||
(package
|
||||
(name "speedtest-cli")
|
||||
(version "1.0.7")
|
||||
(version "2.0.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -1342,7 +1342,7 @@ (define-public speedtest-cli
|
|||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1fbq4kpx8sj50g74hwpixisfjjgxq6zyn40d3m28dxhn7mxbnlrq"))))
|
||||
"16kcpba7nmszz2h0fq7qvv6src20syck2wlknaacg69kk88aybbk"))))
|
||||
(build-system python-build-system)
|
||||
(home-page "https://github.com/sivel/speedtest-cli")
|
||||
(synopsis "Internet bandwidth tester")
|
||||
|
|
|
@ -544,13 +544,13 @@ (define-public rpm
|
|||
(define-public diffoscope
|
||||
(package
|
||||
(name "diffoscope")
|
||||
(version "93")
|
||||
(version "94")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0g90nf7817jk03hzk36l3hymky4xqs50iynfld3r0in7hffly5nj"))))
|
||||
"07pcc4r9kz8zfr4pfkzk3ipgyv7m5h9vwicrzdgjpa87nbbdgjx6"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:phases (modify-phases %standard-phases
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
|
||||
;;; Copyright © 2018 Konrad Hinsen <konrad.hinsen@fastmail.net>
|
||||
;;; Copyright © 2018 Thomas Sigurdsen <tonton@riseup.net>
|
||||
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
|
||||
;;;
|
||||
;;; 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 pkg-config)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages python-web)
|
||||
#:use-module (gnu packages suckless)
|
||||
#:use-module (gnu packages tls)
|
||||
#:use-module (gnu packages qt)
|
||||
|
@ -94,7 +96,7 @@ (define-public pwgen
|
|||
(define-public keepassxc
|
||||
(package
|
||||
(name "keepassxc")
|
||||
(version "2.3.1")
|
||||
(version "2.3.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -103,7 +105,7 @@ (define-public keepassxc
|
|||
version "-src.tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1gdrbpzwbs56anc3k5vklvcackcn214pc8gm5xh5zcymsi8q4zff"))))
|
||||
"1m8alsp39vk21zgcvy5zswk0dc1xmajbwnccg7n0lndsi7pqbzyg"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
'(#:configure-flags '("-DWITH_XC_NETWORKING=YES"
|
||||
|
@ -659,3 +661,30 @@ (define-public fpm2
|
|||
to use a different password manager.")
|
||||
(home-page "https://als.regnet.cz/fpm2/")
|
||||
(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)))
|
||||
|
|
30
gnu/packages/patches/adb-add-libraries.patch
Normal file
30
gnu/packages/patches/adb-add-libraries.patch
Normal 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"
|
|
@ -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
|
||||
|
11
gnu/packages/patches/libutils-add-includes.patch
Normal file
11
gnu/packages/patches/libutils-add-includes.patch
Normal 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>
|
21
gnu/packages/patches/libutils-remove-damaging-includes.patch
Normal file
21
gnu/packages/patches/libutils-remove-damaging-includes.patch
Normal 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
|
||||
}
|
10
gnu/packages/patches/libziparchive-add-includes.patch
Normal file
10
gnu/packages/patches/libziparchive-add-includes.patch
Normal 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>
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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>
|
69
gnu/packages/patches/myrepos-CVE-2018-7032.patch
Normal file
69
gnu/packages/patches/myrepos-CVE-2018-7032.patch
Normal 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
|
||||
|
|
@ -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
|
|
@ -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
|
||||
}
|
||||
|
|
@ -5,7 +5,7 @@
|
|||
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
|
||||
;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
|
||||
;;; 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 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu>
|
||||
|
@ -597,19 +597,15 @@ (define-public podofo
|
|||
(define-public mupdf
|
||||
(package
|
||||
(name "mupdf")
|
||||
(version "1.12.0")
|
||||
(version "1.13.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://mupdf.com/downloads/archive/"
|
||||
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
|
||||
(base32
|
||||
"0b9j0gqbc3jhmx87r6idcsh8lnb30840c3hyx6dk2gdjqqh3hysp"))
|
||||
"0129k92bav692l6lyw10ryldx7h2f9khjpgnp3f3n4fdsph9hrkl"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet '(begin (delete-file-recursively "thirdparty") #t))))
|
||||
(build-system gnu-build-system)
|
||||
|
|
|
@ -69,14 +69,14 @@ (define-module (gnu packages photo)
|
|||
(define-public libraw
|
||||
(package
|
||||
(name "libraw")
|
||||
(version "0.18.10")
|
||||
(version "0.18.11")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://www.libraw.org/data/LibRaw-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0klrzg1cn8ksxqbhx52dldi5bbmad190npnhhgkyr2jzpgrbpj88"))))
|
||||
"07a7k83hx7icahh6jaxfbd7pw5jjm5i11xcqjj31b28d1aj29xvw"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "https://www.libraw.org")
|
||||
(synopsis "Raw image decoder")
|
||||
|
|
69
gnu/packages/printers.scm
Normal file
69
gnu/packages/printers.scm
Normal 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+)))
|
|
@ -16,6 +16,7 @@
|
|||
;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net>
|
||||
;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
|
||||
;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
|
||||
;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
|
||||
;;;
|
||||
;;; 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 protobuf)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages python-web)
|
||||
#:use-module (gnu packages time)
|
||||
#:use-module (gnu packages tls)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#: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
|
||||
(package
|
||||
(name "python-bcrypt")
|
||||
|
@ -821,3 +843,105 @@ (define-public python-m2crypto
|
|||
|
||||
(define-public python2-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+)))
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
|
||||
;;; Copyright © 2017 Mark Meyer <mark@ofosos.org>
|
||||
;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
|
||||
;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
|
||||
;;;
|
||||
;;; 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 (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
|
||||
(package
|
||||
(name "python-furl")
|
||||
|
@ -2511,3 +2576,47 @@ (define-public python2-urlgrabber
|
|||
more.")
|
||||
(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)))
|
||||
|
|
|
@ -51,6 +51,7 @@
|
|||
;;; Copyright © 2018 Mathieu Lirzin <mthl@gnu.org>
|
||||
;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com>
|
||||
;;; Copyright © 2016, 2018 Tomáš Čech <sleep_walker@gnu.org>
|
||||
;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -3369,14 +3370,14 @@ (define-public python2-numpydoc
|
|||
(define-public python-numexpr
|
||||
(package
|
||||
(name "python-numexpr")
|
||||
(version "2.6.4")
|
||||
(version "2.6.5")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "numexpr" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1kpnbb5d5n927113zccfibn16z7gidjipyac6kbbhzs0lnizkgph"))))
|
||||
"1frnbcwmsi312154x274xl28xazr1k8vjby83fwyla2n10a81bgq"))))
|
||||
(build-system python-build-system)
|
||||
(arguments `(#:tests? #f)) ; no tests included
|
||||
(propagated-inputs
|
||||
|
@ -3872,6 +3873,27 @@ (define-public python-pycodestyle
|
|||
(define-public python2-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
|
||||
(package
|
||||
(name "python-orderedmultidict")
|
||||
|
@ -5030,14 +5052,14 @@ (define-public python2-beautifulsoup4
|
|||
(define-public python-netifaces
|
||||
(package
|
||||
(name "python-netifaces")
|
||||
(version "0.10.6")
|
||||
(version "0.10.7")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "netifaces" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1q7bi5k2r955rlcpspx4salvkkpk28jky67fjbpz2dkdycisak8c"))))
|
||||
"1gccklrcplbbqh81g1mdgpa5y8na7kkf29cq2ka3f5a2fp5hyndx"))))
|
||||
(build-system python-build-system)
|
||||
(home-page "https://github.com/al45tair/netifaces")
|
||||
(synopsis
|
||||
|
@ -6373,6 +6395,26 @@ (define-public python-idna
|
|||
(define-public python2-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
|
||||
(package
|
||||
(name "python-pretend")
|
||||
|
@ -10606,14 +10648,14 @@ (define-public python2-ansi2html
|
|||
(define-public python-ddt
|
||||
(package
|
||||
(name "python-ddt")
|
||||
(version "1.1.2")
|
||||
(version "1.1.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "ddt" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1wqkmz0yhanly8sif5vb02p2iik7mwxwph8ywph2kbb8ws8szdpx"))))
|
||||
"1lw17420iimhghkgzgax85nn8d1an2d6k2cfvb7j5kwn2dqlr1vk"))))
|
||||
(build-system python-build-system)
|
||||
(native-inputs
|
||||
`(("python-mock" ,python-mock)
|
||||
|
@ -10827,10 +10869,12 @@ (define-public python-attrs
|
|||
"1jafnn1kzd6qhxgprhx6y6ik1r5m2rilx25syzcmq03azp660y8w"))))
|
||||
(build-system python-build-system)
|
||||
(native-inputs
|
||||
`(("python-pytest" ,python-pytest)
|
||||
`(("python-coverage" ,python-coverage)
|
||||
("python-hypothesis" ,python-hypothesis)
|
||||
("python-zope-interface" ,python-zope-interface)
|
||||
("python-six" ,python-six)))
|
||||
("python-pytest" ,python-pytest)
|
||||
("python-six" ,python-six)
|
||||
("python-sphinx" ,python-sphinx)
|
||||
("python-zope-interface" ,python-zope-interface)))
|
||||
(home-page "https://github.com/python-attrs/attrs/")
|
||||
(synopsis "Attributes without boilerplate")
|
||||
(description "@code{attrs} is a Python package with class decorators that
|
||||
|
@ -13336,3 +13380,43 @@ (define-public python-parso
|
|||
|
||||
(define-public python2-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)))
|
||||
|
||||
|
|
|
@ -237,8 +237,21 @@ (define-public rust-1.19
|
|||
("llvm" ,llvm-3.9.1)
|
||||
("openssl" ,openssl)
|
||||
("libcurl" ,curl))) ; For "cargo"
|
||||
|
||||
;; 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")
|
||||
(description "Rust is a systems programming language that provides memory
|
||||
safety and thread safety guarantees.")
|
||||
|
|
|
@ -52,7 +52,7 @@ (define-module (gnu packages shells)
|
|||
(define-public dash
|
||||
(package
|
||||
(name "dash")
|
||||
(version "0.5.9.1")
|
||||
(version "0.5.10.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -60,7 +60,7 @@ (define-public dash
|
|||
"dash-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0ng695mq5ngg43h7ljhxvbjm46ym3nayj6ssn47d2gm9fbm5pkay"))
|
||||
"1bl4brz5vy07lrss54glp4vfca3q8d73hyc87sqdk99f76z95b6s"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
|
|
|
@ -639,14 +639,14 @@ (define-public r
|
|||
(define-public r-bit
|
||||
(package
|
||||
(name "r-bit")
|
||||
(version "1.1-12")
|
||||
(version "1.1-13")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (cran-uri "bit" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0a6ig6nnjzq80r2ll4hc74za3xwzbzig6wlyb4dby0knzf3iqa6f"))))
|
||||
"1yhpwvfkxpb773h8khjzyamqxl2jn7pjjmxjfawq626hhds8fsh6"))))
|
||||
(build-system r-build-system)
|
||||
(home-page "http://ff.r-forge.r-project.org")
|
||||
(synopsis "Class for vectors of 1-bit booleans")
|
||||
|
@ -965,13 +965,13 @@ (define-public r-stringi
|
|||
(define-public r-stringr
|
||||
(package
|
||||
(name "r-stringr")
|
||||
(version "1.3.0")
|
||||
(version "1.3.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (cran-uri "stringr" version))
|
||||
(sha256
|
||||
(base32 "07dvfbkhv8gk6l32j43jvxpmqlhqp0mdby406h5a3bsc6k94ic13"))))
|
||||
(base32 "0hq3ybz7clnifi5wdm2s6p2i0kzljdkv26blg6yphng472h8x2vs"))))
|
||||
(build-system r-build-system)
|
||||
(propagated-inputs
|
||||
`(("r-glue" ,r-glue)
|
||||
|
@ -1824,14 +1824,15 @@ (define-public python-statsmodels
|
|||
(uri (pypi-uri "statsmodels" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0j30v3932shnj9368c9jr3svkyrvfj90h2l7nxnqkbpv0svilhr6"))
|
||||
(patches (search-patches "python-statsmodels-fix-tests.patch"))))
|
||||
"0j30v3932shnj9368c9jr3svkyrvfj90h2l7nxnqkbpv0svilhr6"))))
|
||||
(build-system python-build-system)
|
||||
(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
|
||||
;; tests must be run after installation
|
||||
(delete 'check)
|
||||
(add-after 'unpack 'set-matplotlib-backend-to-agg
|
||||
(lambda _
|
||||
;; 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');"
|
||||
line)))
|
||||
#t))
|
||||
(add-after 'install 'check
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
;; Make installed package available for running the tests
|
||||
(add-installed-pythonpath inputs outputs)
|
||||
(with-directory-excursion "/tmp"
|
||||
(zero? (system* "nosetests"
|
||||
"--stop"
|
||||
"-v" "statsmodels"))))))))
|
||||
;; FIXME: This is a bug in version 0.8 since the upgrade to scipy 1.0.
|
||||
;; See https://github.com/statsmodels/statsmodels/issues/3931
|
||||
;; This has been fixed in version 0.9.
|
||||
(add-after 'unpack 'patch-for-scipy
|
||||
(lambda _
|
||||
(substitute* "statsmodels/discrete/discrete_model.py"
|
||||
(("return stats.chisqprob" match)
|
||||
(string-append
|
||||
"stats.chisqprob = lambda chisq, df: stats.chi2.sf(chisq, df);"
|
||||
match)))
|
||||
#t)))))
|
||||
(propagated-inputs
|
||||
`(("python-numpy" ,python-numpy)
|
||||
("python-scipy" ,python-scipy)
|
||||
|
@ -2423,13 +2427,13 @@ (define-public r-readr
|
|||
(define-public r-plotrix
|
||||
(package
|
||||
(name "r-plotrix")
|
||||
(version "3.7")
|
||||
(version "3.7-1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (cran-uri "plotrix" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0rw81n9p3d2i03b4pgcfj5blryc94f29bm9a4j9bnp5h8qjj6pry"))))
|
||||
"16p6d2dna6dah7rg2xknhyy65jkfn0zzivx1nnfxhd4f5q0v87w2"))))
|
||||
(build-system r-build-system)
|
||||
(home-page "https://cran.r-project.org/web/packages/plotrix")
|
||||
(synopsis "Various plotting functions")
|
||||
|
@ -5195,14 +5199,14 @@ (define-public r-caret
|
|||
(define-public r-rcppprogress
|
||||
(package
|
||||
(name "r-rcppprogress")
|
||||
(version "0.4")
|
||||
(version "0.4.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (cran-uri "RcppProgress" version))
|
||||
(sha256
|
||||
(base32
|
||||
"09ayw6d69i0lplmaj5md25p5hn1nmiyp6a4sh60v93nrrs1cq7iv"))))
|
||||
"0yk01hfv961zyp569682k9igvhnwqyg5j0n5fm63sxigj82l2xhi"))))
|
||||
(properties `((upstream-name . "RcppProgress")))
|
||||
(build-system r-build-system)
|
||||
(propagated-inputs
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
|
||||
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2018 Jovany Leandro G.C <bit4bit@riseup.net>
|
||||
;;;
|
||||
;;; 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 boost)
|
||||
#:use-module (gnu packages check)
|
||||
#:use-module (gnu packages file)
|
||||
#:use-module (gnu packages protobuf)
|
||||
#:use-module (gnu packages gnupg)
|
||||
#:use-module (gnu packages linux)
|
||||
|
@ -42,9 +44,15 @@ (define-module (gnu packages telephony)
|
|||
#:use-module (gnu packages tls)
|
||||
#:use-module (gnu packages xiph)
|
||||
#: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 packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system gnu))
|
||||
|
||||
(define-public commoncpp
|
||||
|
@ -482,3 +490,64 @@ (define-public mumble
|
|||
(license (list license:bsd-3
|
||||
;; The bundled celt is bsd-2. Remove after 1.3.0.
|
||||
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+))))
|
||||
|
|
|
@ -449,14 +449,14 @@ (define-public openssl-next
|
|||
(define-public libressl
|
||||
(package
|
||||
(name "libressl")
|
||||
(version "2.7.2")
|
||||
(version "2.7.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://openbsd/LibreSSL/"
|
||||
name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1589f0kg7kj51j9hid542s4isb96s1azjaqsfprpy5s2qdwqfyli"))))
|
||||
"1597kj9jy3jyw52ys19sd4blg2gkam5q0rqdxbnrnvnyw67hviqn"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
;; Do as if 'getentropy' was missing since older Linux kernels lack it
|
||||
|
|
|
@ -1570,7 +1570,8 @@ (define-public myrepos
|
|||
(commit version)))
|
||||
(file-name (string-append name "-" version "-checkout"))
|
||||
(sha256
|
||||
(base32 "10q7lpx152xnkk701fscn4dq99q9znnmv3bc2482khhjg7z8rps0"))))
|
||||
(base32 "10q7lpx152xnkk701fscn4dq99q9znnmv3bc2482khhjg7z8rps0"))
|
||||
(patches (search-patches "myrepos-CVE-2018-7032.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("perl" ,perl)))
|
||||
|
|
|
@ -472,7 +472,7 @@ (define-public libcaca
|
|||
(define-public libdca
|
||||
(package
|
||||
(name "libdca")
|
||||
(version "0.0.5")
|
||||
(version "0.0.6")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
|
@ -480,7 +480,7 @@ (define-public libdca
|
|||
version "/libdca-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0hh6a7l8vvccsd5i1fkv9av2gzv9fy8m0b8jpsn5p6hh4bh2586v"))))
|
||||
"0h0zvcn97i9kyljdpifzi8in9xnw31fx3b3ggj96p8h0l2d8mycq"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "https://www.videolan.org/developers/libdca.html")
|
||||
(synopsis "DTS Coherent Acoustics decoder")
|
||||
|
@ -1156,7 +1156,7 @@ (define-public libvpx
|
|||
(define-public youtube-dl
|
||||
(package
|
||||
(name "youtube-dl")
|
||||
(version "2018.04.25")
|
||||
(version "2018.05.09")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://yt-dl.org/downloads/"
|
||||
|
@ -1164,7 +1164,7 @@ (define-public youtube-dl
|
|||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"17zxgwfcy7c6gdyxdgh02f5zi52gvmy0zpccfj6zjkhw5iqj1vbw"))))
|
||||
"0sl4bi2jls3417rd62awbqdq1b6wskkjbfwpnyw4a61qarfxid1d"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
;; The problem here is that the directory for the man page and completion
|
||||
|
|
|
@ -79,14 +79,14 @@ (define-public dillo
|
|||
(define-public links
|
||||
(package
|
||||
(name "links")
|
||||
(version "2.15")
|
||||
(version "2.16")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://links.twibright.com/download/"
|
||||
name "-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1jp3xyvp87a188b4kg5ycqahrazj7928zncgsznzn54w8d5iqahy"))))
|
||||
"0gsa2gpb1grhssl5jzpc5pa0zi21mxi8g25rh5bacl70slw31w42"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
|
@ -130,7 +130,7 @@ (define-public links
|
|||
(define-public lynx
|
||||
(package
|
||||
(name "lynx")
|
||||
(version "2.8.9dev.17")
|
||||
(version "2.8.9dev.18")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
|
@ -138,7 +138,7 @@ (define-public lynx
|
|||
"/lynx" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1lvfsnrw5mmwrmn1m76q9mx287xwm3h5lg8sv7bcqilc0ywi2f54"))))
|
||||
"08v3n58hlrwncfvz6g76v061xwcbjgabiy5gv7ainf1li5akjwz5"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs `(("pkg-config" ,pkg-config)
|
||||
("perl" ,perl)))
|
||||
|
|
|
@ -69,7 +69,7 @@ (define-module (gnu packages wine)
|
|||
(define-public wine
|
||||
(package
|
||||
(name "wine")
|
||||
(version "3.0")
|
||||
(version "3.0.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://dl.winehq.org/wine/source/"
|
||||
|
@ -77,7 +77,7 @@ (define-public wine
|
|||
"/wine-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1v7vq9iinkscbq6wg85fb0d2137660fg2nk5iabxkl2wr850asil"))))
|
||||
"1wr63n70pli83p3rmclr2j4lxzs4ll1cwlpdlaajfrf6v9yhvl5s"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs `(("pkg-config" ,pkg-config)
|
||||
("gettext" ,gettext-minimal)
|
||||
|
@ -223,7 +223,7 @@ (define-public wine64
|
|||
(define-public wine-staging-patchset-data
|
||||
(package
|
||||
(name "wine-staging-patchset-data")
|
||||
(version "3.7")
|
||||
(version "3.8")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -232,7 +232,7 @@ (define-public wine-staging-patchset-data
|
|||
(file-name (string-append name "-" version ".zip"))
|
||||
(sha256
|
||||
(base32
|
||||
"112sy32sja4cc3rv8x6v4cdi3jfxdgzwfra8f78hzdf8a2wrjqz6"))))
|
||||
"1z1a9zlhcglyzfxdilrsz558qpn69b4mzp086s364jqgzj930sja"))))
|
||||
(build-system trivial-build-system)
|
||||
(native-inputs
|
||||
`(("bash" ,bash)
|
||||
|
@ -279,7 +279,7 @@ (define-public wine-staging
|
|||
(file-name (string-append name "-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1drbzk3y0m14lkq3vzwwkvain5shykgcbmyzh6gcb5r4sxh3givn"))))
|
||||
"0l8dqb8r72i6n7yh2bmx738i8ss0lmsj07hvgrqsnfwbjin0rc02"))))
|
||||
(inputs `(("autoconf" ,autoconf) ; for autoreconf
|
||||
("gtk+" ,gtk+)
|
||||
("libva" ,libva)
|
||||
|
|
|
@ -136,14 +136,14 @@ (define-public bspwm
|
|||
(define-public i3status
|
||||
(package
|
||||
(name "i3status")
|
||||
(version "2.11")
|
||||
(version "2.12")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://i3wm.org/i3status/i3status-"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0pwcy599fw8by1a1sf91crkqba7679qhvhbacpmhis8c1xrpxnwq"))))
|
||||
"06krpbijv4yi33nypg6qcn4hilcrdyarsdpd9fmr2cq46qaqiikg"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:make-flags (list "CC=gcc" (string-append "PREFIX=" %output))
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
;;; Copyright © 2016 Petter <petter@mykolab.ch>
|
||||
;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
|
||||
;;; 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 Mike Gerwitz <mtg@gnu.org>
|
||||
;;; Copyright © 2018 Thomas Sigurdsen <tonton@riseup.net>
|
||||
|
@ -529,7 +529,7 @@ (define-public slop
|
|||
(define-public maim
|
||||
(package
|
||||
(name "maim")
|
||||
(version "5.5")
|
||||
(version "5.5.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
|
@ -538,7 +538,7 @@ (define-public maim
|
|||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"02blbimjdckbcb04crhv0k2vxnp3rcgskyq66sk0v13l2h52849v"))))
|
||||
"1dvw0axnr9hhjg6zdcq9lwvaq0x7vrzlz00p8n3hj25qzsi4z5as"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f)) ; no "check" target
|
||||
|
|
|
@ -636,14 +636,14 @@ (define-public perl-xml-dom
|
|||
(define-public perl-xml-compile-tester
|
||||
(package
|
||||
(name "perl-xml-compile-tester")
|
||||
(version "0.90")
|
||||
(version "0.91")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/"
|
||||
"XML-Compile-Tester-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1bcl8x8cyacqv9yjp97aq9qq85sy8wv78kd8c16yd9yw3by4cpp1"))))
|
||||
"1drzwziwi96rfkh48qpw4l225mcbk8ppl2157nj92cslcpwwdk75"))))
|
||||
(build-system perl-build-system)
|
||||
(propagated-inputs
|
||||
`(("perl-log-report" ,perl-log-report)
|
||||
|
@ -735,14 +735,14 @@ (define-public perl-xml-compile-soap
|
|||
(define-public perl-xml-compile-wsdl11
|
||||
(package
|
||||
(name "perl-xml-compile-wsdl11")
|
||||
(version "3.06")
|
||||
(version "3.07")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://cpan/authors/id/M/MA/MARKOV/"
|
||||
"XML-Compile-WSDL11-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0vbq05cpynm3jj81fw1k4nsb3wv4zngi6blvi1jhdarmh2rfg1x2"))))
|
||||
"09ayl442hzvn97q4ghn5rz4r82dm9w3l69hixhb29h9xq9ysi7ba"))))
|
||||
(build-system perl-build-system)
|
||||
(propagated-inputs
|
||||
`(("perl-log-report" ,perl-log-report)
|
||||
|
|
|
@ -5899,7 +5899,7 @@ (define-public xcompmgr
|
|||
(define-public xpra
|
||||
(package
|
||||
(name "xpra")
|
||||
(version "2.2.6")
|
||||
(version "2.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -5907,7 +5907,7 @@ (define-public xpra
|
|||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1zyynghhzjbgnmzcibm17wpj9f7jy31d7dr373li8cwg2yl2swyz"))))
|
||||
"0kq0ambpy8r7m3wxdp79cgxgnl9yfmr19lv88f617gnv0sp0aarp"))))
|
||||
(build-system python-build-system)
|
||||
(inputs `(("ffmpeg" ,ffmpeg)
|
||||
("flac" ,flac)
|
||||
|
@ -6000,15 +6000,15 @@ (define-public xpra
|
|||
(define-public uim
|
||||
(package
|
||||
(name "uim")
|
||||
(version "1.8.6")
|
||||
(version "1.8.8")
|
||||
(source
|
||||
(origin
|
||||
(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"))
|
||||
(sha256
|
||||
(base32
|
||||
"0pr3rfqpxha8p6cxzdjsxbbmmr76riklzw36f68phd1zqw1sh7kv"))))
|
||||
"1p7sl0js47ja4glmax93ci59h02ipqw3wxkh4f1qgaz5qjy9nn9l"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("anthy" ,anthy)
|
||||
|
|
|
@ -29,6 +29,7 @@ (define-module (gnu services desktop)
|
|||
#:use-module (gnu services avahi)
|
||||
#:use-module (gnu services xorg)
|
||||
#:use-module (gnu services networking)
|
||||
#:use-module (gnu services sound)
|
||||
#:use-module ((gnu system file-systems)
|
||||
#:select (%elogind-file-systems))
|
||||
#:use-module (gnu system shadow)
|
||||
|
@ -934,6 +935,8 @@ (define %desktop-services
|
|||
|
||||
x11-socket-directory-service
|
||||
|
||||
(service alsa-service-type)
|
||||
|
||||
%base-services))
|
||||
|
||||
;;; desktop.scm ends here
|
||||
|
|
|
@ -27,7 +27,7 @@ (define-module (gnu services games)
|
|||
#:use-module (guix records)
|
||||
#:use-module (ice-9 match)
|
||||
#:export (wesnothd-configuration
|
||||
wesnoth-configuration?
|
||||
wesnothd-configuration?
|
||||
wesnothd-service-type))
|
||||
|
||||
;;;
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
|
||||
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; 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.
|
||||
;;;
|
||||
|
@ -790,20 +791,24 @@ (define-record-type* <bitlbee-configuration>
|
|||
(default "127.0.0.1"))
|
||||
(port bitlbee-configuration-port
|
||||
(default 6667))
|
||||
(plugins bitlbee-plugins
|
||||
(default '()))
|
||||
(extra-settings bitlbee-configuration-extra-settings
|
||||
(default "")))
|
||||
|
||||
(define bitlbee-shepherd-service
|
||||
(match-lambda
|
||||
(($ <bitlbee-configuration> bitlbee interface port extra-settings)
|
||||
(let ((conf (plain-file "bitlbee.conf"
|
||||
(string-append "
|
||||
(($ <bitlbee-configuration> bitlbee interface port
|
||||
plugins extra-settings)
|
||||
(let ((conf (mixed-text-file "bitlbee.conf"
|
||||
"
|
||||
[settings]
|
||||
User = bitlbee
|
||||
ConfigDir = /var/lib/bitlbee
|
||||
DaemonInterface = " interface "
|
||||
DaemonPort = " (number->string port) "
|
||||
" extra-settings))))
|
||||
PluginDir = " (directory-union "bitlbee-plugins" plugins) "/lib/bitlbee
|
||||
" extra-settings)))
|
||||
|
||||
(with-imported-modules (source-module-closure
|
||||
'((gnu build shepherd)
|
||||
|
|
|
@ -49,7 +49,10 @@ (define-module (gnu system install)
|
|||
a20-olinuxino-micro-installation-os
|
||||
banana-pi-m2-ultra-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:
|
||||
;;;
|
||||
|
@ -429,11 +432,26 @@ (define banana-pi-m2-ultra-installation-os
|
|||
"/dev/mmcblk1" ; eMMC storage
|
||||
"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
|
||||
(embedded-installation-os u-boot-nintendo-nes-classic-edition-bootloader
|
||||
"/dev/mmcblk0" ; SD card (solder it yourself)
|
||||
"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.
|
||||
installation-os
|
||||
|
||||
|
|
127
guix/build-system/android-ndk.scm
Normal file
127
guix/build-system/android-ndk.scm
Normal 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)))
|
88
guix/build/android-ndk-build-system.scm
Normal file
88
guix/build/android-ndk-build-system.scm
Normal 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))
|
|
@ -1,5 +1,5 @@
|
|||
;;; 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.
|
||||
;;;
|
||||
|
@ -24,6 +24,7 @@ (define-module (guix build profiles)
|
|||
#:use-module (ice-9 ftw)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 pretty-print)
|
||||
#:re-export (symlink-relative) ;for convenience
|
||||
#:export (ensure-writable-directory
|
||||
build-profile))
|
||||
|
||||
|
@ -129,12 +130,15 @@ (define (unsymlink link)
|
|||
(apply throw args))))))
|
||||
|
||||
(define* (build-profile output inputs
|
||||
#:key manifest search-paths)
|
||||
"Build a user profile from INPUTS in directory OUTPUT. Write MANIFEST, an
|
||||
sexp, to OUTPUT/manifest. Create OUTPUT/etc/profile with Bash definitions for
|
||||
-all the variables listed in SEARCH-PATHS."
|
||||
#:key manifest search-paths
|
||||
(symlink symlink))
|
||||
"Build a user profile from INPUTS in directory OUTPUT, using SYMLINK to
|
||||
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.
|
||||
(union-build output inputs
|
||||
#:symlink symlink
|
||||
#:log-port (%make-void-port "w"))
|
||||
|
||||
;; Store meta-data.
|
||||
|
|
|
@ -27,7 +27,10 @@ (define-module (guix build union)
|
|||
#:use-module (rnrs io ports)
|
||||
#:export (union-build
|
||||
|
||||
warn-about-collision))
|
||||
warn-about-collision
|
||||
|
||||
relative-file-name
|
||||
symlink-relative))
|
||||
|
||||
;;; Commentary:
|
||||
;;;
|
||||
|
@ -174,4 +177,47 @@ (define (add-to-table! file dir)
|
|||
|
||||
(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
|
||||
|
|
|
@ -664,7 +664,9 @@ (define (graphs-file-names graphs)
|
|||
(imported-modules %modules
|
||||
#:system system
|
||||
#:module-path module-path
|
||||
#:guile guile-for-build)
|
||||
#:guile guile-for-build
|
||||
#:deprecation-warnings
|
||||
deprecation-warnings)
|
||||
(return #f)))
|
||||
(compiled (if (pair? %modules)
|
||||
(compiled-modules %modules
|
||||
|
@ -974,7 +976,15 @@ (define %utils-module
|
|||
(define* (imported-files files
|
||||
#:key (name "file-import")
|
||||
(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
|
||||
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,
|
||||
|
@ -1010,13 +1020,25 @@ (define build
|
|||
(gexp->derivation name build
|
||||
#:system system
|
||||
#: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
|
||||
#:key (name "module-import")
|
||||
(system (%current-system))
|
||||
(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
|
||||
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
|
||||
|
@ -1041,7 +1063,8 @@ (define* (imported-modules modules
|
|||
(cons f (search-path* module-path f))))))
|
||||
modules)))
|
||||
(imported-files files #:name name #:system system
|
||||
#:guile guile)))
|
||||
#:guile guile
|
||||
#:deprecation-warnings deprecation-warnings)))
|
||||
|
||||
(define* (compiled-modules modules
|
||||
#:key (name "module-import-compiled")
|
||||
|
@ -1058,7 +1081,9 @@ (define total (length modules))
|
|||
#:system system
|
||||
#:guile guile
|
||||
#:module-path
|
||||
module-path)))
|
||||
module-path
|
||||
#:deprecation-warnings
|
||||
deprecation-warnings)))
|
||||
(define build
|
||||
(gexp
|
||||
(begin
|
||||
|
|
|
@ -388,10 +388,11 @@ (define-condition-type &package-input-error &package-error
|
|||
(define-condition-type &package-cross-build-system-error &package-error
|
||||
package-cross-build-system-error?)
|
||||
|
||||
|
||||
(define (package-full-name package)
|
||||
"Return the full name of PACKAGE--i.e., `NAME-VERSION'."
|
||||
(string-append (package-name package) "-" (package-version package)))
|
||||
(define* (package-full-name package #:optional (delimiter "@"))
|
||||
"Return the full name of PACKAGE--i.e., `NAME@VERSION'. By specifying
|
||||
DELIMITER (a string), you can customize what will appear between the name and
|
||||
the version. By default, DELIMITER is \"@\"."
|
||||
(string-append (package-name package) delimiter (package-version package)))
|
||||
|
||||
(define (%standard-patch-inputs)
|
||||
(let* ((canonical (module-ref (resolve-interface '(gnu packages base))
|
||||
|
@ -945,6 +946,10 @@ (define* (package->bag package #:optional
|
|||
(($ <package> name version source build-system
|
||||
args inputs propagated-inputs native-inputs
|
||||
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)
|
||||
#:system system
|
||||
#:target target
|
||||
|
|
|
@ -168,7 +168,7 @@ (define-record-type* <manifest-entry> manifest-entry
|
|||
(version manifest-entry-version) ; string
|
||||
(output manifest-entry-output ; string
|
||||
(default "out"))
|
||||
(item manifest-entry-item) ; package | store path
|
||||
(item manifest-entry-item) ; package | file-like | store path
|
||||
(dependencies manifest-entry-dependencies ; <manifest-entry>*
|
||||
(default '()))
|
||||
(search-paths manifest-entry-search-paths ; search-path-specification*
|
||||
|
@ -318,7 +318,7 @@ (define (entry->gexp entry)
|
|||
(propagated-inputs #$(map entry->gexp deps))
|
||||
(search-paths #$(map search-path-specification->sexp
|
||||
search-paths))))
|
||||
(($ <manifest-entry> name version output (? package? package)
|
||||
(($ <manifest-entry> name version output package
|
||||
(deps ...) (search-paths ...))
|
||||
#~(#$name #$version #$output
|
||||
(ungexp package (or output "out"))
|
||||
|
@ -671,7 +671,13 @@ (define (find-among-store-items items)
|
|||
(return (find-among-inputs inputs)))))
|
||||
((? string? 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
|
||||
entry-lookup-package (manifest-entries manifest)))
|
||||
|
@ -1202,6 +1208,7 @@ (define* (profile-derivation manifest
|
|||
(hooks %default-profile-hooks)
|
||||
(locales? #t)
|
||||
(allow-collisions? #f)
|
||||
(relative-symlinks? #f)
|
||||
system target)
|
||||
"Return a derivation that builds a profile (aka. 'user environment') with
|
||||
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
|
||||
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
|
||||
are cross-built for TARGET."
|
||||
(mlet* %store-monad ((system (if system
|
||||
|
@ -1275,6 +1285,9 @@ (define search-paths
|
|||
(manifest-entries manifest))))))
|
||||
|
||||
(build-profile #$output '#$inputs
|
||||
#:symlink #$(if relative-symlinks?
|
||||
#~symlink-relative
|
||||
#~symlink)
|
||||
#:manifest '#$(manifest->gexp manifest)
|
||||
#:search-paths search-paths))))
|
||||
|
||||
|
|
|
@ -1037,7 +1037,7 @@ (define %checkers
|
|||
(check check-inputs-should-be-native))
|
||||
(lint-checker
|
||||
(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))
|
||||
(lint-checker
|
||||
(name 'patch-file-names)
|
||||
|
|
|
@ -32,6 +32,8 @@ (define-module (guix scripts pack)
|
|||
#:use-module (guix packages)
|
||||
#:use-module (guix profiles)
|
||||
#:use-module (guix derivations)
|
||||
#:use-module (guix search-paths)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix scripts build)
|
||||
#:use-module (gnu packages)
|
||||
#: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
|
||||
added to the pack."
|
||||
(define build
|
||||
(with-imported-modules '((guix build utils)
|
||||
(guix build store-copy)
|
||||
(gnu build install))
|
||||
(with-imported-modules (source-module-closure
|
||||
'((guix build utils)
|
||||
(guix build union)
|
||||
(guix build store-copy)
|
||||
(gnu build install)))
|
||||
#~(begin
|
||||
(use-modules (guix build utils)
|
||||
((guix build union) #:select (relative-file-name))
|
||||
(gnu build install)
|
||||
(srfi srfi-1)
|
||||
(srfi srfi-26)
|
||||
|
@ -117,9 +122,17 @@ (define symlink->directives
|
|||
;; parent directories.
|
||||
(match-lambda
|
||||
((source '-> target)
|
||||
(let ((target (string-append #$profile "/" target)))
|
||||
`((directory ,(dirname source))
|
||||
(,source -> ,target))))))
|
||||
(let ((target (string-append #$profile "/" target))
|
||||
(parent (dirname source)))
|
||||
;; 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
|
||||
;; Fully-qualified symlinks.
|
||||
|
@ -140,9 +153,11 @@ (define tar-supports-sort?
|
|||
"")
|
||||
#$tar "/bin"))
|
||||
|
||||
;; Note: there is not much to gain here with deduplication and
|
||||
;; there is the overhead of the '.links' directory, so turn it
|
||||
;; off.
|
||||
;; Note: there is not much to gain here with deduplication and there
|
||||
;; is the overhead of the '.links' directory, so turn it 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
|
||||
#:profile #$profile
|
||||
#:closure "profile"
|
||||
|
@ -189,6 +204,8 @@ (define tar-supports-sort?
|
|||
(filter-map (match-lambda
|
||||
(('directory directory)
|
||||
(string-append "." directory))
|
||||
((source '-> _)
|
||||
(string-append "." source))
|
||||
(_ #f))
|
||||
directives)))))))))
|
||||
|
||||
|
@ -217,11 +234,13 @@ (define not-config?
|
|||
(('gnu rest ...) #t)
|
||||
(rest #f)))
|
||||
|
||||
(define defmod 'define-module) ;trick Geiser
|
||||
|
||||
(define config
|
||||
;; (guix config) module for consumption by (guix gcrypt).
|
||||
(scheme-file "gcrypt-config.scm"
|
||||
#~(begin
|
||||
(define-module (guix config)
|
||||
(#$defmod (guix config)
|
||||
#:export (%libgcrypt))
|
||||
|
||||
;; XXX: Work around <http://bugs.gnu.org/15602>.
|
||||
|
@ -265,6 +284,165 @@ (define build
|
|||
build
|
||||
#: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.
|
||||
|
@ -302,6 +480,9 @@ (define %options
|
|||
(option '(#\f "format") #t #f
|
||||
(lambda (opt name 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
|
||||
(lambda (opt name arg result)
|
||||
(alist-cons 'expression arg result)))
|
||||
|
@ -354,6 +535,8 @@ (define (show-help)
|
|||
(display (G_ "
|
||||
-f, --format=FORMAT build a pack in the given FORMAT"))
|
||||
(display (G_ "
|
||||
-R, --relocatable produce relocatable executables"))
|
||||
(display (G_ "
|
||||
-e, --expression=EXPR consider the package EXPR evaluates to"))
|
||||
(display (G_ "
|
||||
-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-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?))
|
||||
(%guile-for-build (package-derivation
|
||||
store
|
||||
|
@ -425,7 +611,13 @@ (define (manifest-from-args store opts)
|
|||
(canonical-package guile-2.2))
|
||||
#:graft? (assoc-ref opts 'graft?))))
|
||||
(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))
|
||||
(name (string-append (symbol->string pack-format)
|
||||
"-pack"))
|
||||
|
@ -444,12 +636,10 @@ (define (manifest-from-args store opts)
|
|||
(leave (G_ "~a: unknown pack format")
|
||||
format))))
|
||||
(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
|
||||
(mlet* %store-monad ((profile (profile-derivation
|
||||
manifest
|
||||
#:relative-symlinks? relocatable?
|
||||
#:hooks (if bootstrap?
|
||||
'()
|
||||
%default-profile-hooks)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;;; 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.
|
||||
;;;
|
||||
|
@ -38,7 +38,8 @@ (define-module (guix search-paths)
|
|||
string-tokenize*
|
||||
evaluate-search-paths
|
||||
environment-variable-definition
|
||||
search-path-definition))
|
||||
search-path-definition
|
||||
set-search-paths))
|
||||
|
||||
;;; Commentary:
|
||||
;;;
|
||||
|
@ -196,4 +197,14 @@ (define* (search-path-definition search-path value
|
|||
#:kind kind
|
||||
#: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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;;; 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 © 2014 Eric Bavier <bavier@member.fsf.org>
|
||||
;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
|
||||
|
@ -84,6 +84,7 @@ (define-module (guix utils)
|
|||
version-major+minor
|
||||
version-major
|
||||
guile-version>?
|
||||
version-prefix?
|
||||
string-replace-substring
|
||||
arguments-from-environment-variable
|
||||
file-extension
|
||||
|
@ -521,6 +522,27 @@ (define (guile-version>? str)
|
|||
(micro-version))
|
||||
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)
|
||||
"Return the extension of FILE or #f if there is none."
|
||||
(let ((dot (string-rindex file #\.)))
|
||||
|
|
|
@ -134,7 +134,7 @@ (define (edge->tuple source target)
|
|||
(map (lambda (destination)
|
||||
(list "p-0.drv"
|
||||
(string-append
|
||||
(package-full-name destination)
|
||||
(package-full-name destination "-")
|
||||
".drv")))
|
||||
implicit)))))))
|
||||
|
||||
|
|
|
@ -20,9 +20,9 @@
|
|||
# Test the `guix pack' command-line utility.
|
||||
#
|
||||
|
||||
# A network connection is required to build %bootstrap-coreutils&co,
|
||||
# which is required to run these tests with the --bootstrap option.
|
||||
if ! guile -c '(getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)' 2> /dev/null; then
|
||||
# The bootstrap binaries are needed to run these tests, which usually requires
|
||||
# a network connection.
|
||||
if ! guix build -q guile-bootstrap; then
|
||||
exit 77
|
||||
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.
|
||||
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.
|
||||
mkdir -p "$test_directory"
|
||||
drv1="`guix pack -n guile 2>&1 | grep pack.*\.drv`"
|
||||
|
|
|
@ -223,6 +223,52 @@ (define glibc
|
|||
(string=? (dirname (readlink bindir))
|
||||
(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"
|
||||
(mlet* %store-monad
|
||||
((entry -> (package->manifest-entry packages:glibc "debug"))
|
||||
|
@ -242,8 +288,8 @@ (define glibc
|
|||
#:hooks '()
|
||||
#:locales? #t
|
||||
#:target target)))
|
||||
(define (find-input name)
|
||||
(let ((name (string-append name ".drv")))
|
||||
(define (find-input package)
|
||||
(let ((name (string-append (package-full-name package "-") ".drv")))
|
||||
(any (lambda (input)
|
||||
(let ((input (derivation-input-path 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
|
||||
;; for the glibc-utf8-locales should be a native build.
|
||||
(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))
|
||||
(string=? (find-input (package-full-name packages:sed))
|
||||
(string=? (find-input packages:sed)
|
||||
(derivation-file-name sed))
|
||||
(string=? (find-input
|
||||
(package-full-name packages:glibc-utf8-locales))
|
||||
(string=? (find-input packages:glibc-utf8-locales)
|
||||
(derivation-file-name locales))))))
|
||||
|
||||
(test-assert "package->manifest-entry defaults to \"out\""
|
||||
|
|
|
@ -184,4 +184,22 @@ (define %store
|
|||
(file-is-directory? "bin")
|
||||
(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)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;;; 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 © 2016 Mathieu Lirzin <mthl@gnu.org>
|
||||
;;;
|
||||
|
@ -72,6 +72,12 @@ (define temp-file
|
|||
(test-assert "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*"
|
||||
'(("foo")
|
||||
("foo" "bar" "baz")
|
||||
|
|
Loading…
Reference in a new issue