Merge branch 'master' into core-updates

This commit is contained in:
Marius Bakke 2017-10-24 22:00:23 +02:00
commit ca4fd41de8
No known key found for this signature in database
GPG Key ID: A2A06DF2A33A54FA
50 changed files with 3503 additions and 349 deletions

View File

@ -133,6 +133,7 @@ MODULES = \
guix/build/utils.scm \
guix/build/union.scm \
guix/build/profiles.scm \
guix/build/compile.scm \
guix/build/pull.scm \
guix/build/rpath.scm \
guix/build/cvs.scm \

View File

@ -245,6 +245,7 @@ Please upgrade to an intermediate version first, for instance with:
(gexp->derivation "guix-latest" builder
#:modules '((guix build pull)
(guix build utils)
(guix build compile)
;; Closure of (guix modules).
(guix modules)

View File

@ -17,21 +17,13 @@
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(use-modules (system base target)
(system base message)
(ice-9 match)
(use-modules (ice-9 match)
(ice-9 threads)
(srfi srfi-1)
(guix build compile)
(guix build utils))
(define warnings
;; FIXME: 'format' is missing because it reports "non-literal format
;; strings" due to the fact that we use 'G_' instead of '_'. We'll need
;; help from Guile to solve this.
'(unsupported-warning unbound-variable arity-mismatch
macro-use-before-definition)) ;new in 2.2
(define host (getenv "host"))
(define srcdir (getenv "srcdir"))
(define (relative-file file)
@ -53,61 +45,38 @@
(or (not (file-exists? go))
(file-mtime<? go file))))
(define (file->module file)
(let* ((relative (relative-file file))
(module-path (string-drop-right relative 4)))
(map string->symbol
(string-split module-path #\/))))
;;; To work around <http://bugs.gnu.org/15602> (FIXME), we want to load all
;;; files to be compiled first. We do this via resolve-interface so that the
;;; top-level of each file (module) is only executed once.
(define (load-module-file file)
(let ((module (file->module file)))
(format #t " LOAD ~a~%" module)
(resolve-interface module)))
(cond-expand
(guile-2.2 (use-modules (language tree-il optimize)
(language cps optimize)))
(else #f))
(define %default-optimizations
;; Default optimization options (equivalent to -O2 on Guile 2.2).
(cond-expand
(guile-2.2 (append (tree-il-default-optimization-options)
(cps-default-optimization-options)))
(else '())))
(define %lightweight-optimizations
;; Lightweight optimizations (like -O0, but with partial evaluation).
(let loop ((opts %default-optimizations)
(result '()))
(match opts
(() (reverse result))
((#:partial-eval? _ rest ...)
(loop rest `(#t #:partial-eval? ,@result)))
((kw _ rest ...)
(loop rest `(#f ,kw ,@result))))))
(define (optimization-options file)
(if (string-contains file "gnu/packages/")
%lightweight-optimizations ;build faster
'()))
(define (compile-file* file output-mutex)
(let ((go (scm->go file)))
(with-mutex output-mutex
(format #t " GUILEC ~a~%" go)
(force-output))
(mkdir-p (dirname go))
(with-fluids ((*current-warning-prefix* ""))
(with-target host
(lambda ()
(compile-file file
#:output-file go
#:opts `(#:warnings ,warnings
,@(optimization-options file))))))))
(define* (parallel-job-count #:optional (flags (getenv "MAKEFLAGS")))
"Return the number of parallel jobs as determined by FLAGS, the flags passed
to 'make'."
(match flags
(#f (current-processor-count))
(flags
(let ((initial-flags (string-tokenize flags)))
(let loop ((flags initial-flags))
(match flags
(()
;; Note: GNU make prior to version 4.2 would hide "-j" flags from
;; $MAKEFLAGS. Thus, check for a "--jobserver" flag here and
;; assume we're using all cores if specified.
(if (any (lambda (flag)
(string-prefix? "--jobserver" flag))
initial-flags)
(current-processor-count) ;GNU make < 4.2
1)) ;sequential make
(("-j" (= string->number count) _ ...)
(if (integer? count)
count
(current-processor-count)))
((head tail ...)
(if (string-prefix? "-j" head)
(match (string-drop head 2)
(""
(current-processor-count))
((= string->number count)
(if (integer? count)
count
(current-processor-count))))
(loop tail)))))))))
;; Install a SIGINT handler to give unwind handlers in 'compile-file' an
;; opportunity to run upon SIGINT and to remove temporary output files.
@ -117,16 +86,14 @@
(match (command-line)
((_ . files)
(let ((files (filter file-needs-compilation? files)))
(for-each load-module-file files)
(let ((mutex (make-mutex)))
;; Make sure compilation related modules are loaded before starting to
;; compile files in parallel.
(compile #f)
(par-for-each (lambda (file)
(compile-file* file mutex))
files)))))
;;; Local Variables:
;;; eval: (put 'with-target 'scheme-indent-function 1)
;;; End:
(compile-files srcdir (getcwd)
(filter file-needs-compilation? files)
#:workers (parallel-job-count)
#:host host
#:report-load (lambda (file total completed)
(when file
(format #t " LOAD ~a~%" file)))
#:report-compilation (lambda (file total completed)
(when file
(format #t " GUILEC ~a~%"
(scm->go file)))))))

View File

@ -4990,6 +4990,34 @@ as in:
This is the declarative counterpart of @code{text-file*}.
@end deffn
@deffn {Scheme Procedure} file-union @var{name} @var{files}
Return a @code{<computed-file>} that builds a directory containing all of @var{files}.
Each item in @var{files} must be a two-element list where the first element is the
file name to use in the new directory, and the second element is a gexp
denoting the target file. Here's an example:
@example
(file-union "etc"
`(("hosts" ,(plain-file "hosts"
"127.0.0.1 localhost"))
("bashrc" ,(plain-file "bashrc"
"alias ls='ls --color'"))))
@end example
This yields an @code{etc} directory containing these two files.
@end deffn
@deffn {Scheme Procedure} directory-union @var{name} @var{things}
Return a directory that is the union of @var{things}, where @var{things} is a list of
file-like objects denoting directories. For example:
@example
(directory-union "guile+emacs" (list guile emacs))
@end example
yields a directory that is the union of the @code{guile} and @code{emacs} packages.
@end deffn
@deffn {Scheme Procedure} file-append @var{obj} @var{suffix} @dots{}
Return a file-like object that expands to the concatenation of @var{obj}
and @var{suffix}, where @var{obj} is a lowerable object and each
@ -9790,35 +9818,112 @@ Return a service that runs the Guix build daemon according to
@var{config}.
@end deffn
@cindex udev-service
@cindex udev-rule
@deffn {Scheme Procedure} udev-service [#:udev @var{udev}] [#:rules @var{'()}]
@deffn {Scheme Procedure} udev-service [#:udev @var{eudev} #:rules @code{'()}]
Run @var{udev}, which populates the @file{/dev} directory dynamically.
Additional udev rules can be provided as a list of files through the
@var{rules} variable. The procedure @var{udev-rule} simplifies the
creation of these rule files.
udev rules can be provided as a list of files through the @var{rules}
variable. The procedures @var{udev-rule} and @var{file->udev-rule} from
@code{(gnu services base)} simplify the creation of such rule files.
@deffn {Scheme Procedure} udev-rule [@var{file-name} @var{contents}]
Return a udev-rule file named @var{file-name} containing the rules
defined by the @var{contents} literal.
In the following example, a rule for a USB device is defined to be
stored in the file @file{90-usb-thing.rules}, and the default
@var{udev-service} is extended with it. The rule runs a script upon
detecting a USB device with a given product identifier.
stored in the file @file{90-usb-thing.rules}. The rule runs a script
upon detecting a USB device with a given product identifier.
@example
(define %example-udev-rule
(udev-rule "90-usb-thing.rules"
"ACTION==\"add\", SUBSYSTEM==\"usb\", ATTR@{product@}==\"Example\", RUN+=\"/path/to/script\""))
(udev-rule
"90-usb-thing.rules"
(string-append "ACTION==\"add\", SUBSYSTEM==\"usb\", "
"ATTR@{product@}==\"Example\", "
"RUN+=\"/path/to/script\"")))
@end example
@end deffn
Here we show how the default @var{udev-service} can be extended with it.
@example
(operating-system
;; @dots{}
(services (modify-services %desktop-services
(services
(modify-services %desktop-services
(udev-service-type config =>
(udev-configuration (inherit config)
(rules (append (udev-configuration-rules config)
(list %example-udev-rule))))))))
@end example
@deffn {Scheme Procedure} file->udev-rule [@var{file-name} @var{file}]
Return a udev file named @var{file-name} containing the rules defined
within @var{file}, a file-like object.
The following example showcases how we can use an existing rule file.
@example
(use-modules (guix download) ;for url-fetch
(guix packages) ;for origin
;; @dots{})
(define %android-udev-rules
(file->udev-rule
"51-android-udev.rules"
(let ((version "20170910"))
(origin
(method url-fetch)
(uri (string-append "https://raw.githubusercontent.com/M0Rf30/"
"android-udev-rules/" version "/51-android.rules"))
(sha256
(base32 "0lmmagpyb6xsq6zcr2w1cyx9qmjqmajkvrdbhjx32gqf1d9is003"))))))
@end example
@end deffn
@deffn {Scheme Procedure} urandom-seed-service @var{#f}
Additionally, Guix package definitions can be included in @var{rules} in
order to extend the udev rules with the definitions found under their
@file{lib/udev/rules.d} sub-directory. In lieu of the previous
@var{file->udev-rule} example, we could have used the
@var{android-udev-rules} package which exists in Guix in the @code{(gnu
packages android)} module.
The following example shows how to use the @var{android-udev-rules}
package so that the Android tool @command{adb} can detect devices
without root privileges. It also details how to create the
@code{adbusers} group, which is required for the proper functioning of
the rules defined within the @var{android-udev-rules} package. To
create such a group, we must define it both as part of the
@var{supplementary-groups} of our @var{user-account} declaration, as
well as in the @var{groups} field of the @var{operating-system} record.
@example
(use-modules (gnu packages android) ;for android-udev-rules
(gnu system shadow) ;for user-group
;; @dots{})
(operating-system
;; @dots{}
(users (cons (user-acount
;; @dots{}
(supplementary-groups
'("adbusers" ;for adb
"wheel" "netdev" "audio" "video"))
;; @dots{})))
(groups (cons (user-group (system? #t) (name "adbusers"))
%base-groups))
;; @dots{}
(services
(modify-services %desktop-services
(udev-service-type config =>
(udev-configuration (inherit config)
(rules (cons* android-udev-rules
(udev-configuration-rules config))))))))
@end example
@end deffn
@deffn {Scheme Procedure} urandom-seed-service
Save some entropy in @var{%random-seed-file} to seed @file{/dev/urandom}
when rebooting.
@end deffn
@ -9930,7 +10035,7 @@ to add @var{device} to the kernel's entropy pool. The service will fail if
@cindex session limits
@cindex ulimit
@cindex priority
@deffn {Scheme Procedure} pam-limits-service [#:limits @var{limits}]
@deffn {Scheme Procedure} pam-limits-service [#:limits @code{'()}]
Return a service that installs a configuration file for the
@uref{http://linux-pam.org/Linux-PAM-html/sag-pam_limits.html,

View File

@ -662,6 +662,7 @@ dist_patch_DATA = \
%D%/packages/patches/glibc-CVE-2017-1000366-pt1.patch \
%D%/packages/patches/glibc-CVE-2017-1000366-pt2.patch \
%D%/packages/patches/glibc-CVE-2017-1000366-pt3.patch \
%D%/packages/patches/glibc-CVE-2017-15670-15671.patch \
%D%/packages/patches/glibc-bootstrap-system.patch \
%D%/packages/patches/glibc-ldd-x86_64.patch \
%D%/packages/patches/glibc-locales.patch \
@ -729,6 +730,7 @@ dist_patch_DATA = \
%D%/packages/patches/hydra-disable-darcs-test.patch \
%D%/packages/patches/icecat-avoid-bundled-libraries.patch \
%D%/packages/patches/icu4c-CVE-2017-7867-CVE-2017-7868.patch \
%D%/packages/patches/icu4c-CVE-2017-14952.patch \
%D%/packages/patches/icu4c-reset-keyword-list-iterator.patch \
%D%/packages/patches/id3lib-CVE-2007-4460.patch \
%D%/packages/patches/ilmbase-fix-tests.patch \
@ -866,6 +868,9 @@ dist_patch_DATA = \
%D%/packages/patches/mozjs38-version-detection.patch \
%D%/packages/patches/mumps-build-parallelism.patch \
%D%/packages/patches/mupdf-build-with-openjpeg-2.1.patch \
%D%/packages/patches/mupdf-CVE-2017-14685.patch \
%D%/packages/patches/mupdf-CVE-2017-14686.patch \
%D%/packages/patches/mupdf-CVE-2017-14687.patch \
%D%/packages/patches/mupdf-CVE-2017-15587.patch \
%D%/packages/patches/mupen64plus-ui-console-notice.patch \
%D%/packages/patches/mutt-store-references.patch \

View File

@ -19,6 +19,7 @@
(define-module (gnu packages animation)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix utils)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix build-system gnu)
@ -34,6 +35,8 @@
#:use-module (gnu packages image)
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages qt)
#:use-module (gnu packages video))
(define-public etl
@ -185,3 +188,71 @@ be capable of producing feature-film quality animation. It eliminates the
need for tweening, preventing the need to hand-draw each frame. This package
contains the graphical user interface for synfig.")
(license license:gpl3+)))
(define-public papagayo
(let ((commit "e143684b30e59fe4a554f965cb655d23cbe93ee7")
(revision "1"))
(package
(name "papagayo")
(version (string-append "2.0b1-" revision "." (string-take commit 9)))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/LostMoho/Papagayo.git")
(commit commit)))
(sha256
(base32
"1p9gffjhbph34jhrvgpg93yha75bf88vkvlnk06x1r9601ph5321"))
(modules '((guix build utils)))
;; Delete bundled libsndfile sources.
(snippet
'(begin
(delete-file-recursively "libsndfile_1.0.19")
(delete-file-recursively "libsndfile_1.0.25")
#t))))
(build-system gnu-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(replace 'configure
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((libsndfile (assoc-ref inputs "libsndfile")))
;; Do not use bundled libsndfile sources
(substitute* "Papagayo.pro"
(("else \\{")
(string-append "\nINCLUDEPATH += " libsndfile
"/include"
"\nLIBS +=" libsndfile
"/lib/libsndfile.so\n"
"win32 {"))))
(zero? (system* "qmake"
(string-append "DESTDIR="
(assoc-ref outputs "out")
"/bin")))))
;; Ensure that all required Qt plugins are found at runtime.
(add-after 'install 'wrap-executable
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(qt '("qt" "qtmultimedia")))
(wrap-program (string-append out "/bin/Papagayo")
`("QT_PLUGIN_PATH" ":" prefix
,(map (lambda (label)
(string-append (assoc-ref inputs label)
"/lib/qt5/plugins/"))
qt)))
#t))))))
(inputs
`(("qt" ,qtbase)
("qtmultimedia" ,qtmultimedia)
("libsndfile" ,libsndfile)))
(native-inputs
`(("qttools" ,qttools)))
(home-page "http://www.lostmarble.com/papagayo/")
(synopsis "Lip-syncing for animations")
(description
"Papagayo is a lip-syncing program designed to help you line up
phonemes with the actual recorded sound of actors speaking. Papagayo makes it
easy to lip sync animated characters by making the process very simple just
type in the words being spoken, then drag the words on top of the sounds
waveform until they line up with the proper sounds.")
(license license:gpl3+))))

View File

@ -1065,20 +1065,35 @@ PS, and DAB+.")
(define-public faust-2
(package
(inherit faust)
(version "2.0.a51")
(version "2.1.0")
(source (origin
(method url-fetch)
(uri (string-append
"mirror://sourceforge/faudiostream/faust-" version ".tgz"))
(method git-fetch)
(uri (git-reference
(url "https://github.com/grame-cncm/faust.git")
(commit (string-append "v"
(string-map (lambda (c)
(if (char=? c #\.) #\- c))
version)))))
(sha256
(base32
"1yryjqfqmxs7lxy95hjgmrncvl9kig3rcsmg0v49ghzz7vs7haxf"))))
"06km0ygwxxwgw1lqldccqidxhmjfz8ck0wnbd95qk5sg8sbpc068"))))
(build-system gnu-build-system)
(arguments
(substitute-keyword-arguments (package-arguments faust)
((#:make-flags flags)
`(list (string-append "prefix=" (assoc-ref %outputs "out"))
"world"))))
"world"))
((#:phases phases)
`(modify-phases ,phases
;; Files appear under $out/share/faust that are read-only. The
;; install phase tries to overwrite them and fails, so we change
;; the permissions first.
(add-before 'install 'fix-permissions
(lambda* (#:key outputs #:allow-other-keys)
(for-each (lambda (file)
(chmod file #o644))
(find-files "architecture/max-msp" ".*"))
#t))))))
(native-inputs
`(("llvm" ,llvm-with-rtti)
("which" ,which)

View File

@ -449,13 +449,13 @@ detection, and lossless compression.")
(define-public borg
(package
(name "borg")
(version "1.1.0")
(version "1.1.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "borgbackup" version))
(sha256
(base32
"0vwyg0b4kxb0rspqwhvgi5c78dzimgkydf03wif27a40qhh1235l"))
"0iik5lq349cl87imlwra2pp0j36wjhpn8r1d3778azvvqpyjq2d5"))
(modules '((guix build utils)))
(snippet
'(for-each
@ -505,7 +505,7 @@ detection, and lossless compression.")
"and not test_fuse "
"and not test_fuse_allow_damaged_files"))))))
(add-after 'install 'install-doc
(lambda* (#:key outputs #:allow-other-keys)
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(man (string-append out "/share/man/man1"))
(misc (string-append out "/share/borg/misc")))
@ -513,11 +513,11 @@ detection, and lossless compression.")
'("docs/misc/create_chunker-params.txt"
"docs/misc/internals-picture.txt"
"docs/misc/prune-example.txt"))
(add-installed-pythonpath inputs outputs)
(and
(zero? (system* "python3" "setup.py" "build_ext" "--inplace"))
(zero? (system* "make" "-C" "docs" "man"))
(zero? (system* "python3" "setup.py" "build_man"))
(begin
(install-file "docs/_build/man/borg.1" man)
(copy-recursively "docs/man" man)
#t))))))))
(native-inputs
`(("python-cython" ,python-cython)

View File

@ -509,6 +509,7 @@ store.")
(package
(name "glibc")
(version "2.25")
(replacement glibc/fixed)
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/glibc/glibc-"
@ -812,6 +813,15 @@ GLIBC/HURD for a Hurd host"
(define-syntax glibc
(identifier-syntax (glibc-for-target)))
(define glibc/fixed
(package
(inherit glibc)
(source (origin
(inherit (package-source glibc))
(patches (append
(origin-patches (package-source glibc))
(search-patches "glibc-CVE-2017-15670-15671.patch")))))))
;; Below are old libc versions, which we use mostly to build locale data in
;; the old format (which the new libc cannot cope with.)
@ -831,6 +841,7 @@ GLIBC/HURD for a Hurd host"
"glibc-o-largefile.patch"
"glibc-vectorized-strcspn-guards.patch"
"glibc-CVE-2015-5180.patch"
"glibc-CVE-2017-15670-15671.patch"
"glibc-CVE-2017-1000366-pt1.patch"
"glibc-CVE-2017-1000366-pt2.patch"
"glibc-CVE-2017-1000366-pt3.patch"))))))
@ -854,6 +865,7 @@ GLIBC/HURD for a Hurd host"
"glibc-CVE-2016-3075.patch"
"glibc-CVE-2016-3706.patch"
"glibc-CVE-2016-4429.patch"
"glibc-CVE-2017-15670-15671.patch"
"glibc-CVE-2017-1000366-pt1.patch"
"glibc-CVE-2017-1000366-pt2.patch"
"glibc-CVE-2017-1000366-pt3.patch"))))))
@ -876,6 +888,7 @@ GLIBC/HURD for a Hurd host"
"glibc-CVE-2016-3075.patch"
"glibc-CVE-2016-3706.patch"
"glibc-CVE-2016-4429.patch"
"glibc-CVE-2017-15670-15671.patch"
"glibc-CVE-2017-1000366-pt1.patch"
"glibc-CVE-2017-1000366-pt2.patch"
"glibc-CVE-2017-1000366-pt3.patch"))))

View File

@ -7,6 +7,7 @@
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2016 Raoul Bonnal <ilpuccio.febo@gmail.com>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
;;;
@ -3615,7 +3616,7 @@ assembled metagenomic sequence.")
(define-public miso
(package
(name "miso")
(version "0.5.3")
(version "0.5.4")
(source (origin
(method url-fetch)
(uri (string-append
@ -3623,7 +3624,7 @@ assembled metagenomic sequence.")
version ".tar.gz"))
(sha256
(base32
"0x446867az8ir0z8c1vjqffkp0ma37wm4sylixnkhgawllzx8v5w"))
"1z3x0vd8ma7pdrnywj7i3kgwl89sdkwrrn62zl7r5calqaq2hyip"))
(modules '((guix build utils)))
(snippet
'(substitute* "setup.py"

View File

@ -18,6 +18,7 @@
;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at>
;;; Copyright © 2017 Petter <petter@mykolab.ch>
;;;
;;; This file is part of GNU Guix.
;;;
@ -1612,3 +1613,24 @@ extract files to standard out). As @command{atool} invokes external programs
to handle the archives, not all commands may be supported for a certain type
of archives.")
(license license:gpl2+)))
(define-public perl-archive-extract
(package
(name "perl-archive-extract")
(version "0.80")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cpan/authors/id/B/BI/BINGOS/Archive-Extract-"
version ".tar.gz"))
(sha256
(base32
"1x15j1q6w6z8hqyqgap0lz4qbq2174wfhksy1fdd653ccbaw5jr5"))))
(build-system perl-build-system)
(home-page "http://search.cpan.org/dist/Archive-Extract/")
(synopsis "Generic archive extracting mechanism")
(description "It allows you to extract any archive file of the type .tar,
.tar.gz, .gz, .Z, tar.bz2, .tbz, .bz2, .zip, .xz,, .txz, .tar.xz or .lzma
without having to worry how it does so, or use different interfaces for each
type by using either Perl modules, or command-line tools on your system.")
(license license:perl-license)))

View File

@ -44,6 +44,7 @@
(package
(name "curl")
(version "7.56.0")
(replacement curl-7.56.1)
(source (origin
(method url-fetch)
(uri (string-append "https://curl.haxx.se/download/curl-"
@ -130,3 +131,16 @@ tunneling, and so on.")
(license (license:non-copyleft "file://COPYING"
"See COPYING in the distribution."))
(home-page "https://curl.haxx.se/")))
(define-public curl-7.56.1
(package
(inherit curl)
(version "7.56.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://curl.haxx.se/download/curl-"
version ".tar.xz"))
(sha256
(base32
"1l9r386qz7l7h4n5lysrf1wq93lyc72a7shgg9b8s5d0ycn2ivcf"))))))

View File

@ -1582,14 +1582,14 @@ on another machine, accessed via TCP/IP.")
(define-public python-peewee
(package
(name "python-peewee")
(version "2.8.3")
(version "2.10.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "peewee" version))
(sha256
(base32
"1605bk11s7aap2q4qyba93rx7yfh8b11kk0cqi08z8klx2iar8yd"))))
"10f2mrd5hw6rjklrzaix2lsxlgc8vx3xak54arcy6yd791zhchi3"))))
(build-system python-build-system)
(arguments
`(#:tests? #f)) ; Fails to import test data
@ -1728,13 +1728,13 @@ etc., and an SQL engine for performing simple SQL queries.")
(define-public python-lmdb
(package
(name "python-lmdb")
(version "0.92")
(version "0.93")
(source (origin
(method url-fetch)
(uri (pypi-uri "lmdb" version))
(sha256
(base32
"01nw6r08jkipx6v92kw49z34wmwikrpvc5j9xawdiyg1n2526wrx"))
"0xdpb298fyl68acadbwv5801wcwfpnhc7sm4bnrq1x4bd5dhhsql"))
(modules '((guix build utils)))
(snippet
;; Delete bundled lmdb source files.

View File

@ -2,6 +2,7 @@
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
;;;
@ -150,7 +151,7 @@ with arguments to the field constructor.")
`(("python-django" ,python-django)
("python-setuptools-scm" ,python-setuptools-scm)))
(propagated-inputs
`(("python-pytest" ,python-pytest)))
`(("python-pytest" ,python-pytest-3.0)))
(home-page "http://pytest-django.readthedocs.org/")
(synopsis "Django plugin for py.test")
(description "Pytest-django is a plugin for py.test that provides a set of

View File

@ -42,6 +42,8 @@
#:use-module (gnu packages libusb)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages swig)
#:use-module (gnu packages texinfo)
#:use-module (srfi srfi-1))
@ -867,3 +869,66 @@ the Raspberry Pi chip.")
(synopsis "GCC for VC4")
(description "This package provides @code{gcc} for VideoCore IV,
the Raspberry Pi chip."))))
(define-public python2-libmpsse
(package
(name "python2-libmpsse")
(version "1.3")
(source
(origin
(method url-fetch)
(uri (string-append "https://storage.googleapis.com/"
"google-code-archive-downloads/v2/"
"code.google.com/libmpsse/"
"libmpsse-" version ".tar.gz"))
(sha256
(base32
"0jq7nhqq3na8675jnpfcar3pd3dp3adhhc4lw900swkla01a1wh8"))))
(build-system gnu-build-system)
(inputs
`(("libftdi" ,libftdi)
("python" ,python-2)))
(native-inputs
`(("pkg-config" ,pkg-config)
("swig" ,swig)
("which" ,base:which)))
(arguments
`(#:tests? #f ; No tests exist.
#:make-flags
(list (string-append "CFLAGS=-Wall -fPIC -fno-strict-aliasing -g -O2 "
"$(shell pkg-config --cflags libftdi1)"))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'set-environment-up
(lambda* (#:key inputs outputs #:allow-other-keys)
(chdir "src")
(setenv "PYDEV" (string-append (assoc-ref inputs "python")
"/include/python2.7"))
#t))
(add-after 'unpack 'patch-global-variable
(lambda _
;; fast_rw_buf was defined in a header file which was making
;; the build not reproducible.
(substitute* "src/fast.c"
(("^int fast_build_block_buffer") "
unsigned char fast_rw_buf[SPI_RW_SIZE + CMD_SIZE];
int fast_build_block_buffer"))
(substitute* "src/mpsse.h"
(("unsigned char fast_rw_buf.*") "
"))
#t))
(replace 'install
(lambda* (#:key outputs make-flags #:allow-other-keys #:rest args)
(let* ((out (assoc-ref outputs "out"))
(out-python (string-append out
"/lib/python2.7/site-packages"))
(install (assoc-ref %standard-phases 'install)))
(install #:make-flags (cons (string-append "PYLIB=" out-python)
make-flags))))))))
(home-page "https://code.google.com/archive/p/libmpsse/")
(synopsis "Python library for MPSSE SPI I2C JTAG adapter by FTDI")
(description "This package provides a library in order to support the
MPSSE (Multi-Protocol Synchronous Serial Engine) adapter by FTDI that can do
SPI, I2C, JTAG.")
(license license:gpl2+)))

View File

@ -267,7 +267,8 @@ the others like yourself, that want what you have.")
(lambda* (#:key outputs #:allow-other-keys)
(zero? (system* "sh" "install.sh"
(assoc-ref outputs "out")))))
(replace 'check
(delete 'check)
(add-after 'install 'check
(lambda* (#:key outputs #:allow-other-keys)
(zero? (system* (string-append (assoc-ref outputs "out")
"/bin/cowsay")

View File

@ -5,13 +5,14 @@
;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
;;; Copyright © 2016, 2017 ng0 <ng0@infotropique.org>
;;; Copyright © 2016 Christopher Baines <mail@cbaines.net>
;;; Copyright © 2016 Mike Gerwitz <mtg@gnu.org>
;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2017 Petter <petter@mykolab.ch>
;;;
;;; This file is part of GNU Guix.
;;;
@ -837,3 +838,40 @@ them to transform your existing public key into a secret key.")
@uref{https://gnupg.org, GnuPG}. It can be used to encrypt, decrypt, and sign
files, to verify signatures, and to manage the private and public keys.")
(license license:gpl3+)))
(define-public perl-gnupg-interface
(package
(name "perl-gnupg-interface")
(version "0.52")
(source (origin
(method url-fetch)
(uri (string-append "mirror://cpan/authors/id/A/AL/ALEXMV/"
"GnuPG-Interface-" version ".tar.gz"))
(sha256
(base32
"0dgx8yhdsmhkazcrz14n4flrk1afv7azgl003hl4arxvi1d9yyi4"))))
(build-system perl-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
;; FIXME: This test fails for unknown reasons
(add-after 'unpack 'delete-broken-test
(lambda _
(delete-file "t/encrypt_symmetrically.t")
#t)))))
(inputs
`(("gnupg" ,gnupg-1)))
(propagated-inputs
`(("perl-moo" ,perl-moo)
("perl-moox-handlesvia" ,perl-moox-handlesvia)
("perl-moox-late" ,perl-moox-late)))
(native-inputs
`(("which" ,which)
("perl-module-install" ,perl-module-install)))
(home-page "http://search.cpan.org/dist/GnuPG-Interface/")
(synopsis "Perl interface to GnuPG")
(description "@code{GnuPG::Interface} and its associated modules are
designed to provide an object-oriented method for interacting with GnuPG,
being able to perform functions such as but not limited to encrypting,
signing, decryption, verification, and key-listing parsing.")
(license license:perl-license)))

View File

@ -441,7 +441,16 @@ standards.")
(mozilla-patch "icecat-bug-1368269.patch" "0cff5e66e0f4" "0jb0wqi7c0ih4441s1908j6gv18v4inh7k2w47h3c9nhz4rgyrw7")
(mozilla-patch "icecat-CVE-2017-7793.patch" "6ff3c82962f0" "0bw82034kdmrpznigbavzzsiybzrw8giyf8v0z2cxf6mwl72bf9k")
(mozilla-patch "icecat-bug-1400399.patch" "d6f78b1349b7" "0i3gwr2al3xl65yfa3nimvy8dp0jzpx21f6bjw18xwn7zkkh9j54")
(mozilla-patch "icecat-bug-1400721.patch" "285cde398833" "0a1i32zl30wfyw7zkqj595s94n6wdlg5c495m0910pd05pjg3qam")))
(mozilla-patch "icecat-bug-1400721.patch" "285cde398833" "0a1i32zl30wfyw7zkqj595s94n6wdlg5c495m0910pd05pjg3qam")
(mozilla-patch "icecat-bug-1395138.patch" "98b3988592a6" "03wy173lj6mvmh5q92brf596h8676h0zasgqfnndpvsmsiaih120")
(mozilla-patch "icecat-bug-1369561.patch" "47590f0c274b" "0zsys6dcyhfb4a8k2dhsls7425jg6r1ijlrsn1lc5smwyf62zx5v")
(mozilla-patch "icecat-bug-1375146.patch" "55b435cbbb55" "1gcasaqrxa13a55v05bkxl3d1md829kpfhqiaws83wn08x28l0my")
(mozilla-patch "icecat-bug-1394530.patch" "8549cf2dab3e" "168gs32ncavaj9xn4gwhh9i01cbpnhgx9yn333apsrc1gwknpvsr")
(mozilla-patch "icecat-bug-1400554.patch" "349acf56ff49" "1vwn87rdryfjsn809pl50xmr82q98gz3vz9h6clkd905vbd9rwz7")
(mozilla-patch "icecat-bug-1400003.patch" "3af5bf8bdea0" "07az28dnpxr36j7i3llxkrlkrmg0bwk4f3sm75x1f0r1v5575p3p")
(mozilla-patch "icecat-bug-1407751.patch" "592df6088926" "1gy27idik4b6wcg4szww08cmpcljssja8wql6w1d807h7ni65lr7")
(mozilla-patch "icecat-bug-1261175.patch" "77a2d4610275" "13ysbwflnysj4rs45ibckd621s0vyg1s8dvannlvanvrz1g72zcz")
(mozilla-patch "icecat-bug-1394265.patch" "2b30335d0b95" "0hs5cwickvfw7r5dn7y148jgr2b21hl613qp83k56634d0y64qwp")))
(modules '((guix build utils)))
(snippet
'(begin

View File

@ -3,6 +3,7 @@
;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Theodoros Foradis <theodoros@foradis.org>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
;;;
@ -112,13 +113,13 @@ interfaces for other technical domains.")
(define-public python-graphviz
(package
(name "python-graphviz")
(version "0.8")
(version "0.8.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "graphviz" version ".zip"))
(sha256
(base32
"0i738qb32w93hraxzjwkvnxmrfwcalhjd14fdbah9f2mk46p5748"))))
"00rzqsmq25b0say05vix5xivchdvsv83jl2i8pkryqd0nz4bxzvb"))))
(build-system python-build-system)
(native-inputs
`(("unzip" ,unzip)))

File diff suppressed because it is too large Load Diff

View File

@ -32,6 +32,7 @@
(define-public icu4c
(package
(name "icu4c")
(replacement icu4c-fixed)
(version "58.2")
(source (origin
(method url-fetch)
@ -70,6 +71,15 @@ C/C++ part.")
(license x11)
(home-page "http://site.icu-project.org/")))
(define icu4c-fixed
(package
(inherit icu4c)
(source (origin
(inherit (package-source icu4c))
(patches (append
(origin-patches (package-source icu4c))
(search-patches "icu4c-CVE-2017-14952.patch")))))))
(define-public java-icu4j
(package
(name "java-icu4j")

View File

@ -54,6 +54,7 @@
#:use-module (gnu packages image)
#:use-module (gnu packages libffi)
#:use-module (gnu packages linux) ;alsa
#:use-module (gnu packages web)
#:use-module (gnu packages wget)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages perl)
@ -6020,3 +6021,213 @@ provides low-level abstractions (@code{JsonParser}, @code{JsonGenerator},
@code{JsonFactory}) as well as small number of higher level overrides needed to
make data-binding work.")
(license license:asl2.0))); found on wiki.fasterxml.com/JacksonLicensing
(define-public java-hdrhistogram
(package
(name "java-hdrhistogram")
(version "2.1.9")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/HdrHistogram/HdrHistogram/"
"archive/HdrHistogram-" version ".tar.gz"))
(sha256
(base32
"1sicbmc3sr42nw93qbkb26q9rn33ag33k6k77phjc3j5h5gjffqv"))))
(build-system ant-build-system)
(arguments
`(#:jar-name "java-hdrhistogram.jar"
#:source-dir "src/main/java"
#:phases
(modify-phases %standard-phases
(add-before 'configure 'set-version
(lambda _
(let* ((version-java "src/main/java/org/HdrHistogram/Version.java")
(template (string-append version-java ".template")))
(copy-file template version-java)
(substitute* version-java
(("\\$VERSION\\$") ,version)
(("\\$BUILD_TIME\\$") "0"))
#t))))))
(native-inputs
`(("junit" ,java-junit)
("hamcrest" ,java-hamcrest-core)))
(home-page "https://hdrhistogram.github.io/HdrHistogram")
(synopsis "High dynamic range histogram")
(description "Hdrhistogram allows to create histograms that support
recording and analyzing sampled data value counts across a configurable integer
value range with configurable value precision within the range. Value precision
is expressed as the number of significant digits in the value recording, and
provides control over value quantization behavior across the value range and
the subsequent value resolution at any given level.")
(license license:public-domain)))
(define-public java-aopalliance
(package
(name "java-aopalliance")
(version "1.0")
(source (origin
(method git-fetch)
;; Note: this git repository is not official, but contains the
;; source code that is in the CVS repository. Downloading the
;; tarball from sourceforge is undeterministic, and the cvs download
;; fails.
(uri (git-reference
(url "https://github.com/hoverruan/aopalliance")
(commit "0d7757ae204e5876f69431421fe9bc2a4f01e8a0")))
(file-name (string-append name "-" version))
(sha256
(base32
"0rsg2b0v3hxlq2yk1i3m2gw3xwq689j3cwx9wbxvqfpdcjbca0qr"))))
(build-system ant-build-system)
(arguments
`(#:jar-name "java-aopalliance.jar"
#:jdk ,icedtea-8
#:tests? #f; no tests
#:source-dir "aopalliance/src/main"))
(home-page "http://aopalliance.sourceforge.net")
(synopsis "Aspect-Oriented Programming")
(description "The AOP Alliance project is a joint project between several
software engineering people who are interested in Aspect-Oriented Programming
(AOP) and Java.")
(license license:public-domain)))
(define-public java-javax-inject
(package
(name "java-javax-inject")
(version "tck-1")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/javax-inject/javax-inject/"
"archive/javax.inject-" version ".tar.gz"))
(sha256
(base32
"1ydrlvh2r7vr1g7lhjwy3w2dggpj9h6pix1lakkkgdywb365n6g0"))))
(build-system ant-build-system)
(arguments
`(#:jar-name "java-javax-inject.jar"
#:jdk ,icedtea-8
#:tests? #f)); no tests
(home-page "http://github.com/javax-inject/javax-inject")
(synopsis "JSR-330: Dependency Injection for Java")
(description "This package specifies a means for obtaining objects in such
a way as to maximize reusability, testability and maintainability compared to
traditional approaches such as constructors, factories, and service locators
(e.g., JNDI). This process, known as dependency injection, is beneficial to
most nontrivial applications.
Many types depend on other types. For example, a @var{Stopwatch} might depend
on a @var{TimeSource}. The types on which a type depends are known as its
dependencies. The process of finding an instance of a dependency to use at run
time is known as resolving the dependency. If no such instance can be found,
the dependency is said to be unsatisfied, and the application is broken.")
(license license:asl2.0)))
(define-public java-guice
(package
(name "java-guice")
(version "4.1")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/google/guice/archive/"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0dwmqjzlavb144ywqqglj3h68hqszkff8ai0a42hyb5il0qh4rbp"))))
(build-system ant-build-system)
(arguments
`(#:jar-name "java-guice.jar"
#:jdk ,icedtea-8
#:tests? #f; FIXME: tests are not in a java sub directory
#:source-dir "core/src"))
(inputs
`(("guava" ,java-guava)
("java-cglib" ,java-cglib)
("java-aopalliance" ,java-aopalliance)
("java-javax-inject" ,java-javax-inject)
("java-asm" ,java-asm)))
(home-page "https://github.com/google/guice")
(synopsis "Lightweight dependency injection framework")
(description "Guice is a lightweight dependency injection framework fo
Java 6 and above.")
(license license:asl2.0)))
(define-public java-guice-servlet
(package
(inherit java-guice)
(name "java-guice-servlet")
(arguments
`(#:jar-name "guice-servlet.jar"
#:source-dir "extensions/servlet/src/"
#:jdk ,icedtea-8
#:tests? #f)); FIXME: not in a java subdir
(inputs
`(("guice" ,java-guice)
("servlet" ,java-tomcat)
,@(package-inputs java-guice)))))
(define-public java-assertj
(package
(name "java-assertj")
(version "3.8.0")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/joel-costigliola/"
"assertj-core/archive/"
"assertj-core-" version ".tar.gz"))
(sha256
(base32
"1kf124fxskf548rklkg86294w2x6ajqrff94rrhyqns31danqkfz"))))
(build-system ant-build-system)
(arguments
`(#:jar-name "java-assertj.jar"
#:jdk ,icedtea-8
#:source-dir "src/main/java"
#:tests? #f)); depends on tng-junit which depends on assertj
(inputs
`(("cglib" ,java-cglib)
("junit" ,java-junit)
("hamcrest" ,java-hamcrest-core)))
(native-inputs
`(("mockito" ,java-mockito-1)))
(home-page "https://joel-costigliola.github.io/assertj/index.html")
(synopsis "Fluent assertions for java")
(description "AssertJ core is a Java library that provides a fluent
interface for writing assertions. Its main goal is to improve test code
readability and make maintenance of tests easier.")
(license license:asl2.0)))
(define-public java-jboss-javassist
(package
(name "java-jboss-javassist")
(version "3.21.0")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/jboss-javassist/javassist/"
"archive/rel_"
(string-map (lambda (x) (if (eq? x #\.) #\_ x)) version)
"_ga.tar.gz"))
(sha256
(base32
"10lpcr3sbf7y6fq6fc2h2ik7rqrivwcy4747bg0kxhwszil3cfmf"))))
(build-system ant-build-system)
(arguments
`(#:jar-name "java-jboss-javassist.jar"
#:jdk ,icedtea-8
#:source-dir "src/main"
#:tests? #f; FIXME: requires junit-awtui and junit-swingui from junit3
#:phases
(modify-phases %standard-phases
(add-before 'configure 'remove-binary
(lambda _
(delete-file "javassist.jar")
#t)))))
(native-inputs
`(("junit" ,java-junit)))
(home-page "https://github.com/jboss-javassist/javassist")
(synopsis "Java bytecode engineering toolkit")
(description "Javassist (JAVA programming ASSISTant) makes Java bytecode
manipulation simple. It is a class library for editing bytecodes in Java; it
enables Java programs to define a new class at runtime and to modify a class
file when the JVM loads it.")
(license (list license:gpl2 license:cddl1.0)))); either gpl2 only or cddl.

View File

@ -368,8 +368,8 @@ It has been modified to remove all non-free binary blobs.")
(define %intel-compatible-systems '("x86_64-linux" "i686-linux"))
(define %linux-libre-version "4.13.8")
(define %linux-libre-hash "0qi2n5lczqwq2v0q5zl08ac3x4lixpj1dmb0kza6hsllmx8hbybw")
(define %linux-libre-version "4.13.9")
(define %linux-libre-hash "1ymsdvm4djh7hg2wmn2v11w380i0ss9nkp4slfrgihdvn6yp5gbv")
(define-public linux-libre
(make-linux-libre %linux-libre-version
@ -378,14 +378,14 @@ It has been modified to remove all non-free binary blobs.")
#:configuration-file kernel-config))
(define-public linux-libre-4.9
(make-linux-libre "4.9.57"
"02ldxzbazdbhvgkwxl6xblkwj75s5cm33fpm77kv394w35jan3by"
(make-linux-libre "4.9.58"
"0f1yxdvzdr1zfkh86i9z0p7ywdlz0blxnd11wbnw763qyk3qydyk"
%intel-compatible-systems
#:configuration-file kernel-config))
(define-public linux-libre-4.4
(make-linux-libre "4.4.93"
"1llpqkm7vvwi5fm92y4n6qrc89ps7kdfl83s7m38a2yivm3kgzr6"
(make-linux-libre "4.4.94"
"0g63is8d2k1mf1kaljkll79n7gzh4qn0fmrm2r9sab2sq41hch1m"
%intel-compatible-systems
#:configuration-file kernel-config))

View File

@ -90,62 +90,6 @@ in Qt.")
components of the LXQt desktop environment.")
(license lgpl2.1+)))
(define-public lxqt-common
(package
(name "lxqt-common")
(version "0.9.1")
(source
(origin
(method url-fetch)
(uri
(string-append "https://github.com/lxde/" name
"/archive/" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1vd3zarvl44l3y6wn7kgxcd2f1bygsmk5bcfqwa3568cq3b57aw0"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ; no check target
#:phases
(modify-phases %standard-phases
(add-before 'configure 'fix-installation-paths
(lambda _
;; The variable LXQT_ETC_XDG_DIR is set in
;; liblxqt-0.9.0/share/cmake/lxqt/lxqt-config.cmake
;; to the Qt5 installation directory, followed by "/etc/xdg".
;; We need to have it point to the current installation
;; directory instead.
(substitute* '("config/CMakeLists.txt"
"menu/CMakeLists.txt")
(("\\$\\{LXQT_ETC_XDG_DIR\\}")
"${CMAKE_INSTALL_PREFIX}/etc/xdg")
;; In the same file, LXQT_SHARE_DIR is set to the installation
;; directory of liblxqt, followed by "/share/lxqt".
(("\\$\\{LXQT_SHARE_DIR\\}")
"${CMAKE_INSTALL_PREFIX}/share/lxqt"))
;; Replace absolute directories.
(substitute* "autostart/CMakeLists.txt"
(("/etc/xdg")
"${CMAKE_INSTALL_PREFIX}/etc/xdg"))
(substitute* "xsession/CMakeLists.txt"
(("/usr/share")
"${CMAKE_INSTALL_PREFIX}/share")))))))
(inputs
`(("kwindowsystem" ,kwindowsystem)
("liblxqt" ,liblxqt)
("libqtxdg" ,libqtxdg)
("qtbase" ,qtbase)
("qttools" ,qttools)
("qtx11extras" ,qtx11extras)))
(home-page "http://lxqt.org/")
(synopsis "Common files for LXQt")
(description "lxqt-common provides the desktop integration files
(themes, icons, configuration files etc.) for the LXQt
desktop environment.")
(license lgpl2.1+)))
(define-public lxqt-session
(package
(name "lxqt-session")

View File

@ -48,6 +48,7 @@
#:use-module (gnu packages backup)
#:use-module (gnu packages bash)
#:use-module (gnu packages bison)
#:use-module (gnu packages calendar)
#:use-module (gnu packages crypto)
#:use-module (gnu packages curl)
#:use-module (gnu packages cyrus-sasl)
@ -939,6 +940,7 @@ compresses it.")
("libarchive" ,libarchive)
("libcanberra" ,libcanberra)
("libetpan" ,libetpan)
("libical" ,libical)
("libnotify" ,libnotify)
("libsm" ,libsm)
("libxml2" ,libxml2)

View File

@ -3296,3 +3296,41 @@ based around a MIDI sequencer that features a rich understanding of music
notation and includes basic support for digital audio.")
(home-page "http://www.rosegardenmusic.com/")
(license license:gpl2)))
(define-public sorcer
(package
(name "sorcer")
(version "1.1.3")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/openAVproductions/"
"openAV-Sorcer/archive/release-"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"07iyqj28wm0xc4arrq893bm12xjpz65db7ynrlmf6w8krg8wjmd0"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ; no tests included
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'build-faust-sources
(lambda* (#:key inputs #:allow-other-keys)
(with-directory-excursion "faust"
(delete-file "main.cpp")
(zero? (system* "faust" "-i"
"-a" "lv2synth.cpp"
"-o" "main.cpp" "main.dsp"))))))))
(inputs
`(("boost" ,boost)
("lv2" ,lv2)
("ntk" ,ntk)))
(native-inputs
`(("faust" ,faust)
("pkg-config" ,pkg-config)))
(home-page "http://openavproductions.com/sorcer/")
(synopsis "Wavetable LV2 plugin synth")
(description "Sorcer is a wavetable LV2 plugin synthesizer, targeted at
the electronic or dubstep genre.")
(license license:gpl3+)))

View File

@ -48,6 +48,7 @@
#:use-module (gnu packages adns)
#:use-module (gnu packages algebra)
#:use-module (gnu packages audio)
#:use-module (gnu packages autotools)
#:use-module (gnu packages bison)
#:use-module (gnu packages check)
#:use-module (gnu packages code)
@ -55,6 +56,7 @@
#:use-module (gnu packages curl)
#:use-module (gnu packages databases)
#:use-module (gnu packages dejagnu)
#:use-module (gnu packages documentation)
#:use-module (gnu packages flex)
#:use-module (gnu packages gettext)
#:use-module (gnu packages glib)
@ -1494,3 +1496,42 @@ interface and a programmable text output for scripting.")
;; Update the license field when upstream responds.
(license (list license:bsd-2
license:expat))))
(define-public libnet
(package
(name "libnet")
(version "1.1.6")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/sam-github/libnet/"
"archive/libnet-" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0l4gbzzvr199fzczzricjz7b825i7dlk6sgl5p5alnkcagmq0xys"))))
(build-system gnu-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'chdir
(lambda _ (chdir "libnet") #t))
(add-after 'chdir 'bootstrap
(lambda _ (zero? (system* "autoreconf" "-vif"))))
(add-before 'build 'build-doc
(lambda* (#:key make-flags #:allow-other-keys)
(zero? (apply system* "make" "-C" "doc" "doc"
make-flags)))))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)
("doxygen" ,doxygen)))
(home-page "https://sourceforge.net/projects/libnet-dev/")
(synopsis "Framework for low-level network packet construction")
(description
"Libnet provides a fairly portable framework for network packet
construction and injection. It features portable packet creation interfaces
at the IP layer and link layer, as well as a host of supplementary
functionality. Using libnet, quick and simple packet assembly applications
can be whipped up with little effort.")
(license license:bsd-2)))

View File

@ -0,0 +1,27 @@
Fix CVE-2017-15670:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-15670
https://sourceware.org/bugzilla/show_bug.cgi?id=22320
https://bugzilla.redhat.com/show_bug.cgi?id=1504804
And CVE-2017-15671:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-15671
https://sourceware.org/bugzilla/show_bug.cgi?id=22325
https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2017-15671
Copied from upstream:
<https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=2d1bd71ec70a31b01d01b734faa66bb1ed28961f>
diff --git a/posix/glob.c b/posix/glob.c
--- a/posix/glob.c
+++ b/posix/glob.c
@@ -843,7 +843,7 @@
*p = '\0';
}
else
- *((char *) mempcpy (newp, dirname + 1, end_name - dirname))
+ *((char *) mempcpy (newp, dirname + 1, end_name - dirname - 1))
= '\0';
user_name = newp;
}

View File

@ -0,0 +1,18 @@
Fix CVE-2017-14952:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14952
Patch copied from upstream source repository:
http://bugs.icu-project.org/trac/changeset/40324/trunk/icu4c/source/i18n/zonemeta.cpp#file0
Index: trunk/icu4c/source/i18n/zonemeta.cpp
===================================================================
--- icu/source/i18n/zonemeta.cpp (revision 40283)
+++ icu/source/i18n/zonemeta.cpp (revision 40324)
@@ -691,5 +691,4 @@
if (U_FAILURE(status)) {
delete mzMappings;
- deleteOlsonToMetaMappingEntry(entry);
uprv_free(entry);
break;

View File

@ -0,0 +1,34 @@
Fix CVE-2017-14685:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14685
Patch copied from upstream source repository:
https://git.ghostscript.com/?p=mupdf.git;h=ab1a420613dec93c686acbee2c165274e922f82a
From ab1a420613dec93c686acbee2c165274e922f82a Mon Sep 17 00:00:00 2001
From: Tor Andersson <tor.andersson@artifex.com>
Date: Tue, 19 Sep 2017 15:23:04 +0200
Subject: [PATCH] Fix 698539: Don't use xps font if it could not be loaded.
xps_load_links_in_glyphs did not cope with font loading failures.
---
source/xps/xps-link.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/source/xps/xps-link.c b/source/xps/xps-link.c
index c07e0d7..c26a8d9 100644
--- a/source/xps/xps-link.c
+++ b/source/xps/xps-link.c
@@ -91,6 +91,8 @@ xps_load_links_in_glyphs(fz_context *ctx, xps_document *doc, const fz_matrix *ct
bidi_level = atoi(bidi_level_att);
font = xps_lookup_font(ctx, doc, base_uri, font_uri_att, style_att);
+ if (!font)
+ return;
text = xps_parse_glyphs_imp(ctx, doc, &local_ctm, font, fz_atof(font_size_att),
fz_atof(origin_x_att), fz_atof(origin_y_att),
is_sideways, bidi_level, indices_att, unicode_att);
--
2.9.1

View File

@ -0,0 +1,34 @@
Fix CVE-2017-14686:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14686
Patch copied from upstream source repository:
https://git.ghostscript.com/?p=mupdf.git;h=0f0fbc07d9be31f5e83ec5328d7311fdfd8328b1
From 0f0fbc07d9be31f5e83ec5328d7311fdfd8328b1 Mon Sep 17 00:00:00 2001
From: Tor Andersson <tor.andersson@artifex.com>
Date: Tue, 19 Sep 2017 16:33:38 +0200
Subject: [PATCH] Fix 698540: Check name, comment and meta size field signs.
---
source/fitz/unzip.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/source/fitz/unzip.c b/source/fitz/unzip.c
index f2d4f32..0bcce0f 100644
--- a/source/fitz/unzip.c
+++ b/source/fitz/unzip.c
@@ -141,6 +141,9 @@ static void read_zip_dir_imp(fz_context *ctx, fz_zip_archive *zip, int start_off
(void) fz_read_int32_le(ctx, file); /* ext file atts */
offset = fz_read_int32_le(ctx, file);
+ if (namesize < 0 || metasize < 0 || commentsize < 0)
+ fz_throw(ctx, FZ_ERROR_GENERIC, "invalid size in zip entry");
+
name = fz_malloc(ctx, namesize + 1);
n = fz_read(ctx, file, (unsigned char*)name, namesize);
if (n < (size_t)namesize)
--
2.9.1

View File

@ -0,0 +1,130 @@
Fix CVE-2017-14687:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14687
Patch copied from upstream source repository:
https://git.ghostscript.com/?p=mupdf.git;h=2b16dbd8f73269cb15ca61ece75cf8d2d196ed28
From 2b16dbd8f73269cb15ca61ece75cf8d2d196ed28 Mon Sep 17 00:00:00 2001
From: Tor Andersson <tor.andersson@artifex.com>
Date: Tue, 19 Sep 2017 17:17:12 +0200
Subject: [PATCH] Fix 698558: Handle non-tags in tag name comparisons.
Use fz_xml_is_tag instead of fz_xml_tag && !strcmp idiom.
---
source/html/css-apply.c | 2 +-
source/svg/svg-run.c | 2 +-
source/xps/xps-common.c | 6 +++---
source/xps/xps-glyphs.c | 2 +-
source/xps/xps-path.c | 4 ++--
source/xps/xps-resource.c | 2 +-
6 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/source/html/css-apply.c b/source/html/css-apply.c
index de55490..6a91df0 100644
--- a/source/html/css-apply.c
+++ b/source/html/css-apply.c
@@ -328,7 +328,7 @@ match_selector(fz_css_selector *sel, fz_xml *node)
if (sel->name)
{
- if (strcmp(sel->name, fz_xml_tag(node)))
+ if (!fz_xml_is_tag(node, sel->name))
return 0;
}
diff --git a/source/svg/svg-run.c b/source/svg/svg-run.c
index f974c67..5302c64 100644
--- a/source/svg/svg-run.c
+++ b/source/svg/svg-run.c
@@ -1044,7 +1044,7 @@ svg_run_use(fz_context *ctx, fz_device *dev, svg_document *doc, fz_xml *root, co
fz_xml *linked = fz_tree_lookup(ctx, doc->idmap, xlink_href_att + 1);
if (linked)
{
- if (!strcmp(fz_xml_tag(linked), "symbol"))
+ if (fz_xml_is_tag(linked, "symbol"))
svg_run_use_symbol(ctx, dev, doc, root, linked, &local_state);
else
svg_run_element(ctx, dev, doc, linked, &local_state);
diff --git a/source/xps/xps-common.c b/source/xps/xps-common.c
index cc7fed9..f2f9b93 100644
--- a/source/xps/xps-common.c
+++ b/source/xps/xps-common.c
@@ -47,7 +47,7 @@ xps_parse_brush(fz_context *ctx, xps_document *doc, const fz_matrix *ctm, const
else if (fz_xml_is_tag(node, "RadialGradientBrush"))
xps_parse_radial_gradient_brush(ctx, doc, ctm, area, base_uri, dict, node);
else
- fz_warn(ctx, "unknown brush tag: %s", fz_xml_tag(node));
+ fz_warn(ctx, "unknown brush tag");
}
void
@@ -85,7 +85,7 @@ xps_begin_opacity(fz_context *ctx, xps_document *doc, const fz_matrix *ctm, cons
if (opacity_att)
opacity = fz_atof(opacity_att);
- if (opacity_mask_tag && !strcmp(fz_xml_tag(opacity_mask_tag), "SolidColorBrush"))
+ if (fz_xml_is_tag(opacity_mask_tag, "SolidColorBrush"))
{
char *scb_opacity_att = fz_xml_att(opacity_mask_tag, "Opacity");
char *scb_color_att = fz_xml_att(opacity_mask_tag, "Color");
@@ -129,7 +129,7 @@ xps_end_opacity(fz_context *ctx, xps_document *doc, char *base_uri, xps_resource
if (opacity_mask_tag)
{
- if (strcmp(fz_xml_tag(opacity_mask_tag), "SolidColorBrush"))
+ if (!fz_xml_is_tag(opacity_mask_tag, "SolidColorBrush"))
fz_pop_clip(ctx, dev);
}
}
diff --git a/source/xps/xps-glyphs.c b/source/xps/xps-glyphs.c
index 29dc5b3..5b26d78 100644
--- a/source/xps/xps-glyphs.c
+++ b/source/xps/xps-glyphs.c
@@ -592,7 +592,7 @@ xps_parse_glyphs(fz_context *ctx, xps_document *doc, const fz_matrix *ctm,
/* If it's a solid color brush fill/stroke do a simple fill */
- if (fill_tag && !strcmp(fz_xml_tag(fill_tag), "SolidColorBrush"))
+ if (fz_xml_is_tag(fill_tag, "SolidColorBrush"))
{
fill_opacity_att = fz_xml_att(fill_tag, "Opacity");
fill_att = fz_xml_att(fill_tag, "Color");
diff --git a/source/xps/xps-path.c b/source/xps/xps-path.c
index 6faeb0c..021d202 100644
--- a/source/xps/xps-path.c
+++ b/source/xps/xps-path.c
@@ -879,14 +879,14 @@ xps_parse_path(fz_context *ctx, xps_document *doc, const fz_matrix *ctm, char *b
if (!data_att && !data_tag)
return;
- if (fill_tag && !strcmp(fz_xml_tag(fill_tag), "SolidColorBrush"))
+ if (fz_xml_is_tag(fill_tag, "SolidColorBrush"))
{
fill_opacity_att = fz_xml_att(fill_tag, "Opacity");
fill_att = fz_xml_att(fill_tag, "Color");
fill_tag = NULL;
}
- if (stroke_tag && !strcmp(fz_xml_tag(stroke_tag), "SolidColorBrush"))
+ if (fz_xml_is_tag(stroke_tag, "SolidColorBrush"))
{
stroke_opacity_att = fz_xml_att(stroke_tag, "Opacity");
stroke_att = fz_xml_att(stroke_tag, "Color");
diff --git a/source/xps/xps-resource.c b/source/xps/xps-resource.c
index c2292e6..8e81ab8 100644
--- a/source/xps/xps-resource.c
+++ b/source/xps/xps-resource.c
@@ -84,7 +84,7 @@ xps_parse_remote_resource_dictionary(fz_context *ctx, xps_document *doc, char *b
if (!xml)
return NULL;
- if (strcmp(fz_xml_tag(xml), "ResourceDictionary"))
+ if (!fz_xml_is_tag(xml, "ResourceDictionary"))
{
fz_drop_xml(ctx, xml);
fz_throw(ctx, FZ_ERROR_GENERIC, "expected ResourceDictionary element");
--
2.9.1

View File

@ -7,7 +7,7 @@
;;; Coypright © 2016 ng0 <ng0@we.make.ritual.n0.is>
;;; Coypright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Coypright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
;;; Coypright © 2016 Ludovic Courtès <ludo@gnu.org>
;;; Coypright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Coypright © 2016 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
@ -576,6 +576,9 @@ extracting content or merging files.")
(base32
"02phamcchgsmvjnb3ir7r5sssvx9fcrscn297z73b82n1jl79510"))
(patches (search-patches "mupdf-build-with-openjpeg-2.1.patch"
"mupdf-CVE-2017-14685.patch"
"mupdf-CVE-2017-14686.patch"
"mupdf-CVE-2017-14687.patch"
"mupdf-CVE-2017-15587.patch"))
(modules '((guix build utils)))
(snippet
@ -747,7 +750,7 @@ vector formats.")
(build-system python-build-system)
;; TODO: Add dependency on pdftk.
(inputs `(("python-pygame" ,python-pygame)
(inputs `(("python2-pygame" ,python2-pygame)
("python2-pillow" ,python2-pillow)
("sdl" ,sdl)
("xpdf" ,xpdf)))

View File

@ -2378,6 +2378,29 @@ based memory management, circular references will cause memory leaks.")
equivalent of \"$@{^GLOBAL_PHASE@} eq 'DESTRUCT'\" for older perls.")
(license (package-license perl))))
(define-public perl-devel-hide
(package
(name "perl-devel-hide")
(version "0.0009")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cpan/authors/id/F/FE/FERREIRA/Devel-Hide-"
version ".tar.gz"))
(sha256
(base32
"1phnzbw58v6551nhv6sg86m72nx9w5j4msh1hg4jvkakkq5w9pki"))))
(build-system perl-build-system)
(propagated-inputs
`(("perl-test-pod" ,perl-test-pod)
("perl-test-pod-coverage" ,perl-test-pod-coverage)))
(home-page "http://search.cpan.org/dist/Devel-Hide/")
(synopsis "Forces the unavailability of specified Perl modules (for testing)")
(description "Given a list of Perl modules/filenames, this module makes
@code{require} and @code{use} statements fail (no matter whether the specified
files/modules are installed or not).")
(license (package-license perl))))
(define-public perl-devel-lexalias
(package
(name "perl-devel-lexalias")
@ -6059,6 +6082,32 @@ Module::Build project, but has been externalized here for general use.")
"Probe-Perl-" version))
(license (package-license perl))))
(define-public perl-proc-invokeeditor
(package
(name "perl-proc-invokeeditor")
(version "1.13")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cpan/authors/id/M/MS/MSTEVENS/Proc-InvokeEditor-"
version ".tar.gz"))
(sha256
(base32
"0xc1416kvhq904ribpwh2lbxryh41dzl2glzpgr32b68s4fbwbaa"))))
(build-system perl-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'set-EDITOR
(lambda _ (setenv "EDITOR" "echo") #t)))))
(propagated-inputs
`(("perl-carp-assert" ,perl-carp-assert)))
(home-page "http://search.cpan.org/dist/Proc-InvokeEditor/")
(synopsis "Interface to external editor from Perl")
(description "This module provides the ability to supply some text to an
external text editor, have it edited by the user, and retrieve the results.")
(license (package-license perl))))
(define-public perl-readonly
(package
(name "perl-readonly")
@ -6294,6 +6343,27 @@ compact.")
arrays by one or multiple calculated keys.")
(license (package-license perl))))
(define-public perl-sort-naturally
(package
(name "perl-sort-naturally")
(version "1.03")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cpan/authors/id/B/BI/BINGOS/Sort-Naturally-"
version ".tar.gz"))
(sha256
(base32
"0ip7q5g8d3lr7ri3ffcbrpk1hzzsiwgsn14k10k7hnjphxf1raza"))))
(build-system perl-build-system)
(home-page "http://search.cpan.org/dist/Sort-Naturally/")
(synopsis "Sort lexically, but sort numeral parts numerically")
(description "This module exports two functions, @code{nsort} and
@code{ncmp}; they are used in implementing a \"natural sorting\" algorithm.
Under natural sorting, numeric substrings are compared numerically, and other
word-characters are compared lexically.")
(license (package-license perl))))
(define-public perl-specio
(package
(name "perl-specio")
@ -6888,6 +6958,50 @@ other terminal related features, including retrieval/modification of the
screen size, and retrieval/modification of the control characters.")
(license (package-license perl))))
(define-public perl-term-size-any
(package
(name "perl-term-size-any")
(version "0.002")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cpan/authors/id/F/FE/FERREIRA/"
"Term-Size-Any-" version ".tar.gz"))
(sha256
(base32
"1lnynd8pwjp3g85bl4nav6yigg2lag3sx5da989j7a733bdmzyk4"))))
(build-system perl-build-system)
(native-inputs
`(("perl-devel-hide" ,perl-devel-hide)))
(propagated-inputs
`(("perl-term-size-perl" ,perl-term-size-perl)))
(home-page "http://search.cpan.org/dist/Term-Size-Any/")
(synopsis "Retrieve terminal size")
(description "This is a unified interface to retrieve terminal size. It
loads one module of a list of known alternatives, each implementing some way
to get the desired terminal information. This loaded module will actually do
the job on behalf of @code{Term::Size::Any}.")
(license (package-license perl))))
(define-public perl-term-size-perl
(package
(name "perl-term-size-perl")
(version "0.029")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cpan/authors/id/F/FE/FERREIRA/"
"Term-Size-Perl-" version ".tar.gz"))
(sha256
(base32
"1rvm91bhdlxfwx5zka023p7szf2s7gm16wl27qiivvj66svsl6lc"))))
(build-system perl-build-system)
(home-page "http://search.cpan.org/dist/Term-Size-Perl/")
(synopsis "Perl extension for retrieving terminal size (Perl version)")
(description "This is yet another implementation of @code{Term::Size}.
Now in pure Perl, with the exception of a C probe run at build time.")
(license (package-license perl))))
(define-public perl-term-table
(package
(name "perl-term-table")
@ -7782,6 +7896,32 @@ makes fork(2) safe to use in test cases.")
"Test-Simple-" version))
(license (package-license perl))))
(define-public perl-test-taint
(package
(name "perl-test-taint")
(version "1.06")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cpan/authors/id/P/PE/PETDANCE/Test-Taint-"
version ".tar.gz"))
(sha256
(base32
"01rip5d7gdr1c7lq6yczzkqfd0500nfa977ryigylj6jj75526vj"))))
(build-system perl-build-system)
(home-page "http://search.cpan.org/dist/Test-Taint/")
(synopsis "Checks for taintedness of variables")
(description "Tainted data is data that comes from an unsafe source, such
as the command line, or, in the case of web apps, any @code{GET} or
@code{POST} transactions. Read the @code{perlsec} man page for details on why
tainted data is bad, and how to untaint the data.
When you're writing unit tests for code that deals with tainted data, you'll
want to have a way to provide tainted data for your routines to handle, and
easy ways to check and report on the taintedness of your data, in standard
@code{Test::More} style.")
(license (package-license perl))))
(define-public perl-test-tester
(package
(name "perl-test-tester")
@ -8575,6 +8715,53 @@ distributed as part of @code{Type::Tiny} but has since been spun off), and can
be used with Moose, Mouse and Moo (or none of the above).")
(license (package-license perl))))
(define-public perl-type-tiny-xs
(package
(name "perl-type-tiny-xs")
(version "0.012")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cpan/authors/id/T/TO/TOBYINK/Type-Tiny-XS-"
version ".tar.gz"))
(sha256
(base32
"05nbr898cvjjh1wsy55l84zasx65gijdxc6dnn558ihns8zx6gm9"))))
(build-system perl-build-system)
(home-page "http://search.cpan.org/dist/Type-Tiny-XS/")
(synopsis "Provides an XS boost for some of Type::Tiny's built-in type constraints")
(description "This module is optionally used by @code{Type::Tiny} to
provide faster, C-based implementations of some type constraints. This
package has only core dependencies, and does not depend on @code{Type::Tiny},
so other data validation frameworks might also consider using it.")
(license perl-license)))
(define-public perl-types-path-tiny
(package
(name "perl-types-path-tiny")
(version "0.005")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cpan/authors/id/D/DA/DAGOLDEN/"
"Types-Path-Tiny-" version ".tar.gz"))
(sha256
(base32
"09nf167ssi4rgj8hhzylwp3zdx61njdpyfri43arcmk9aqn7f0pp"))))
(build-system perl-build-system)
(propagated-inputs
`(("perl-file-pushd" ,perl-file-pushd)
("perl-path-tiny" ,perl-path-tiny)
("perl-type-tiny" ,perl-type-tiny)
("perl-exporter-tiny" ,perl-exporter-tiny)))
(home-page "http://search.cpan.org/dist/Types-Path-Tiny/")
(synopsis "Types and coercions for Moose and Moo")
(description "This module provides @code{Path::Tiny} types for Moose, Moo,
etc. It handles two important types of coercion: coercing objects with
overloaded stringification, and coercing to absolute paths. It also can check
to ensure that files or directories exist.")
(license artistic2.0)))
(define-public perl-types-serialiser
(package
(name "perl-types-serialiser")

View File

@ -3191,14 +3191,14 @@ logging and tracing of the execution.")
(define-public python-docutils
(package
(name "python-docutils")
(version "0.13.1")
(version "0.14")
(source
(origin
(method url-fetch)
(uri (pypi-uri "docutils" version))
(sha256
(base32
"1gkma47i609jfs7dssxn4y9vsz06qi0l5q41nws0zgkpnrghz33i"))))
"0x22fs3pdmr42kvz6c654756wja305qv6cx1zbhwlagvxgr4xrji"))))
(build-system python-build-system)
(arguments
'(#:tests? #f)) ; no setup.py test command
@ -8624,10 +8624,7 @@ simulation, statistical modeling, machine learning and much more.")
(source
(origin
(method url-fetch)
(uri (string-append
"https://pypi.python.org/packages/source/c/chardet/chardet-"
version
".tar.gz"))
(uri (pypi-uri "chardet" version))
(sha256
(base32
"1bpalpia6r5x1kknbk11p1fzph56fmmnp405ds8icksd3knr5aw4"))))
@ -13172,18 +13169,14 @@ from Facebook.")
(base32
"09zhac7igh9ixdz0ay6csy35b40l1jwbf2wrbxmgxwfhy51iy06q"))))
(build-system python-build-system)
(native-inputs
`(("python-django-filter" ,python-django-filter)
("python-mock" ,python-mock)
("python-psycopg2" ,python-psycopg2)
("python-pytest-django" ,python-pytest-django)
("python-sqlalchemy-utils" ,python-sqlalchemy-utils)))
(propagated-inputs
`(("python-graphql-core" ,python-graphql-core)
("python-graphql-relay" ,python-graphql-relay)
("python-iso8601" ,python-iso8601)
("python-promise" ,python-promise)
("python-six" ,python-six)))
(arguments
`(#:tests? #f)) ; no tests/ in the PyPI tarball
(home-page "http://graphene-python.org/")
(synopsis "GraphQL Framework for Python")
(description

View File

@ -38,13 +38,13 @@
(define-public screen
(package
(name "screen")
(version "4.6.1")
(version "4.6.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/screen/screen-"
version ".tar.gz"))
(sha256
(base32 "0r3wpfxnr5kw73b8ndja26jk03nfbks06iyfmgb5aqb2rdkazadb"))))
(base32 "0fps0fsipfbh7c2cnp7rjw9n79j0ysq21mk8hzifa33a1r924s8v"))))
(build-system gnu-build-system)
(native-inputs
`(("makeinfo" ,texinfo)))

View File

@ -38,9 +38,15 @@
(base32
"07mrvd3vq0p4f550dpq73xg1vpa2h7xxz7vq07sjw0whapknkw9f"))))
(build-system go-build-system)
;; The primary Syncthing executable goes to "out", while the auxiliary
;; server programs and utility tools go to "utils". This reduces the size
;; of "out" by ~80 MiB.
(outputs '("out" "utils"))
(arguments
`(#:import-path "github.com/syncthing/syncthing"
#:unpack-path "github.com/syncthing"
;; We don't need to install the source code for end-user applications.
#:install-source? #f
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'delete-bundled-source-code
@ -55,9 +61,6 @@
"src/github.com/syncthing/syncthing/vendor/github.com/cznic")
#t))
;; We don't need to install the source code for end-user applications.
(delete 'install-source)
(add-before 'build 'increase-test-timeout
(lambda _
(substitute* "src/github.com/syncthing/syncthing/build.go"
@ -75,21 +78,39 @@
(zero? (system* "go" "run" "build.go" "test")))))
(replace 'install
(lambda _
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(utils (assoc-ref outputs "utils"))
(src "src/github.com/syncthing/syncthing/bin/"))
(install-file (string-append src "/syncthing")
(string-append out "/bin"))
(delete-file (string-append src "/syncthing"))
(copy-recursively "src/github.com/syncthing/syncthing/bin/"
(string-append (assoc-ref %outputs "out") "/bin"))
#t))
(string-append utils "/bin"))
#t)))
(add-after 'install 'install-docs
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(man (string-append out "/share/man/man"))
(utils (assoc-ref outputs "utils"))
(man "/share/man")
(man-section (string-append man "/man"))
(src "src/github.com/syncthing/syncthing/man/"))
;; Install all the man pages to "out".
(for-each
(lambda (file)
(install-file file
(string-append man (string-take-right file 1))))
(string-append out man-section
(string-take-right file 1))))
(find-files src "\\.[1-9]"))
;; Copy all the man pages to "utils"
(copy-recursively (string-append out man)
(string-append utils man))
;; Delete extraneous man pages from "out" and "utils",
;; respectively.
(delete-file (string-append out man "/man1/stdiscosrv.1"))
(delete-file (string-append out man "/man1/strelaysrv.1"))
(delete-file (string-append utils man "/man1/syncthing.1"))
#t))))))
;; When updating Syncthing, check 'vendor/manifest' in the source
;; distribution to ensure we are using the correct versions of these

View File

@ -124,14 +124,14 @@ as well as the classic centralized workflow.")
(name "git")
;; XXX When updating Git, check if the special 'git:src' input to cgit needs
;; to be updated as well.
(version "2.14.2")
(version "2.14.3")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/software/scm/git/git-"
version ".tar.xz"))
(sha256
(base32
"18f70gfzwqd210806hmf94blcd7yv5h9ka6xqkpd2jhijqwp5sah"))))
"078m0za5gyzcah5iaxdwx663yvdp8byvjc8rpzjzcrr4sl6rcc2k"))))
(build-system gnu-build-system)
(native-inputs
`(("native-perl" ,perl)
@ -145,7 +145,7 @@ as well as the classic centralized workflow.")
(sha256
(base32
"1z05a7hxxndyby3dbj3gaw91sjwmky5d1yph96jmj0fhx78m1lvd"))))))
"00dh878pwl94p6syh6zgwn7f0zv2bl5xny3pnr390lzxpa9ks3jv"))))))
(inputs
`(("curl" ,curl)
("expat" ,expat)

View File

@ -2,7 +2,7 @@
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2016, 2017 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2017 Andy Patterson <ajpatter@uwaterloo.ca>
;;;
@ -32,6 +32,8 @@
#:use-module (gnu packages cyrus-sasl)
#:use-module (gnu packages disk)
#:use-module (gnu packages dns)
#:use-module (gnu packages docbook)
#:use-module (gnu packages documentation)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
@ -40,9 +42,11 @@
#:use-module (gnu packages libusb)
#:use-module (gnu packages linux)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages networking)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages polkit)
#:use-module (gnu packages protobuf)
#:use-module (gnu packages python)
#:use-module (gnu packages selinux)
#:use-module (gnu packages sdl)
@ -55,7 +59,7 @@
#:use-module (guix build-system gnu)
#:use-module (guix build-system python)
#:use-module (guix download)
#:use-module ((guix licenses) #:select (gpl2 gpl2+ lgpl2.1+))
#:use-module ((guix licenses) #:select (gpl2 gpl2+ lgpl2.1 lgpl2.1+))
#:use-module (guix packages)
#:use-module (guix utils)
#:use-module (srfi srfi-1))
@ -573,3 +577,97 @@ virtual machines through libvirt. It primarily targets KVM VMs, but also
manages Xen and LXC (Linux containers). It presents a summary view of running
domains, their live performance and resource utilization statistics.")
(license gpl2+)))
(define-public criu
(package
(name "criu")
(version "3.5")
(source (origin
(method url-fetch)
(uri (string-append "http://download.openvz.org/criu/criu-"
version ".tar.bz2"))
(sha256
(base32
"1w0ybla7ac0ql0jzh0vxdf2w9amqp88jcg0na3b33r3hq8acry6x"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
#:tests? #f ; tests require mounting as root
#:make-flags
(list (string-append "PREFIX=" (assoc-ref %outputs "out"))
(string-append "LIBDIR=" (assoc-ref %outputs "out")
"/lib"))
#:phases
(modify-phases %standard-phases
(replace 'configure
(lambda* (#:key inputs #:allow-other-keys)
;; The includes for libnl are located in a sub-directory.
(setenv "C_INCLUDE_PATH"
(string-append (assoc-ref inputs "libnl")
"/include/libnl3:"
(getenv "C_INCLUDE_PATH")))
;; Prevent xmlto from failing the install phase.
(substitute* "Documentation/Makefile"
(("XMLTO.*:=.*")
(string-append "XMLTO:="
(assoc-ref inputs "xmlto")
"/bin/xmlto"
" --skip-validation "
" -x "
(assoc-ref inputs "docbook-xsl")
"/xml/xsl/docbook-xsl-"
,(package-version docbook-xsl)
"/manpages/docbook.xsl")))
#t))
(add-before 'build 'fix-symlink
(lambda* (#:key inputs #:allow-other-keys)
;; The file 'images/google/protobuf/descriptor.proto' points to
;; /usr/include/..., which obviously does not exist.
(let* ((file "google/protobuf/descriptor.proto")
(target (string-append "images/" file))
(source (string-append (assoc-ref inputs "protobuf")
"/include/" file)))
(delete-file target)
(symlink source target)
#t)))
(add-after 'install 'wrap
(lambda* (#:key inputs outputs #:allow-other-keys)
;; Make sure 'crit' runs with the correct PYTHONPATH.
(let* ((out (assoc-ref outputs "out"))
(path (string-append out
"/lib/python"
(string-take (string-take-right
(assoc-ref inputs "python") 5) 3)
"/site-packages:"
(getenv "PYTHONPATH"))))
(wrap-program (string-append out "/bin/crit")
`("PYTHONPATH" ":" prefix (,path))))
#t)))))
(inputs
`(("protobuf" ,protobuf)
("python" ,python-2)
("python2-protobuf" ,python2-protobuf)
("python2-ipaddr" ,python2-ipaddr)
("iproute" ,iproute)
("libaio" ,libaio)
("libcap" ,libcap)
("libnet" ,libnet)
("libnl" ,libnl)))
(native-inputs
`(("pkg-config" ,pkg-config)
("perl" ,perl)
("protobuf-c" ,protobuf-c)
("asciidoc" ,asciidoc)
("xmlto" ,xmlto)
("docbook-xml" ,docbook-xml)
("docbook-xsl" ,docbook-xsl)))
(home-page "https://criu.org")
(synopsis "Checkpoint and restore in user space")
(description "Using this tool, you can freeze a running application (or
part of it) and checkpoint it to a hard drive as a collection of files. You
can then use the files to restore and run the application from the point it
was frozen at. The distinctive feature of the CRIU project is that it is
mainly implemented in user space.")
;; The project is licensed under GPLv2; files in the lib/ directory are
;; LGPLv2.1.
(license (list gpl2 lgpl2.1))))

View File

@ -20,6 +20,7 @@
;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
;;; Copyright © 2017 Petter <petter@mykolab.ch>
;;;
;;; This file is part of GNU Guix.
;;;
@ -52,6 +53,7 @@
#:use-module (guix build-system r)
#:use-module (guix build-system trivial)
#:use-module (guix build-system python)
#:use-module (guix build-system ant)
#:use-module (gnu packages)
#:use-module (gnu packages apr)
#:use-module (gnu packages check)
@ -2890,6 +2892,35 @@ contains modules that are of more general use and even classes that
help you implement simple HTTP servers.")
(home-page "http://search.cpan.org/dist/libwww-perl/")))
(define-public perl-lwp-online
(package
(name "perl-lwp-online")
(version "1.08")
(source
(origin
(method url-fetch)
(uri (string-append
"mirror://cpan/authors/id/A/AD/ADAMK/LWP-Online-"
version ".tar.gz"))
(sha256
(base32
"176f6vbk1018i0y7xj9d406ndbjgwzan2j9nihxnsahzg2vr2vz2"))))
(build-system perl-build-system)
(propagated-inputs
`(("perl-libwww" ,perl-libwww)
("perl-uri" ,perl-uri)))
(native-inputs
`(("perl-module-install" ,perl-module-install)))
(home-page "http://search.cpan.org/dist/LWP-Online/")
(synopsis "Checks whether your process has access to the web")
(description "This module attempts to answer, as accurately as it can, one
of the nastiest technical questions there is: am I on the internet?
A host of networking and security issues make this problem very difficult.
There are firewalls, proxies (both well behaved and badly behaved). We might
not have DNS. We might not have a network card at all!")
(license l:perl-license)))
(define-public perl-lwp-mediatypes
(package
(name "perl-lwp-mediatypes")
@ -5384,3 +5415,583 @@ collection creation and deletion, and locking operations.")
"Py-ubjson is a Python module providing an Universal Binary JSON
encoder/decoder based on the draft-12 specification for UBJSON.")
(license l:asl2.0)))
(define-public java-tomcat
(package
(name "java-tomcat")
(version "8.5.23")
(source (origin
(method url-fetch)
(uri (string-append "mirror://apache/tomcat/tomcat-8/v"
version "/src/apache-tomcat-" version "-src.tar.gz"))
(sha256
(base32
"1m6b1dikib46kbgz9gf0p6svi00nsw62b9kgjzn6sda151skbbza"))))
(build-system ant-build-system)
(inputs
`(("java-eclipse-jdt-core" ,java-eclipse-jdt-core)))
(native-inputs
`(("java-junit" ,java-junit)))
(arguments
`(#:build-target "package"
#:tests? #f; requires downloading some files.
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'prevent-download
(lambda _
;; This directory must exist
(mkdir "downloads")
;; We patch build.xml so it doesn't download any dependency, because
;; we already have all of them.
(substitute* "build.xml"
(("download-compile,") "")
(("depends=\"validate\"") "depends=\"build-prepare\"")
((",download-validate") ""))
#t))
(add-after 'unpack 'generate-properties
(lambda _
;; This could have been passed to make-flags, but getcwd returns
;; a different directory then.
(with-output-to-file "build.properties"
(lambda _
(display
(string-append "base.path=" (getcwd) "/downloads\n"))))
#t))
(replace 'install
(install-jars "output/build/lib")))))
(home-page "https://tomcat.apache.org")
(synopsis "Java Servlet, JavaServer Pages, Java Expression Language and Java
WebSocket")
(description "Apache Tomcat is a free implementation of the Java
Servlet, JavaServer Pages, Java Expression Language and Java WebSocket
technologies.")
(license l:asl2.0)))
(define-public java-eclipse-jetty-test-helper
(package
(name "java-eclipse-jetty-test-helper")
(version "4.2")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/eclipse/jetty.toolchain/"
"archive/jetty-test-helper-" version ".tar.gz"))
(sha256
(base32
"1jd6r9wc26fa11si4rn2gvy8ml8q4zw1nr6v04mjp8wvwpgvzwx5"))))
(build-system ant-build-system)
(arguments
`(#:jar-name "eclipse-jetty-test-helper.jar"
#:source-dir "src/main/java"
#:test-dir "src/test"
#:jdk ,icedtea-8
#:phases
(modify-phases %standard-phases
(add-before 'configure 'chdir
(lambda _
(chdir "jetty-test-helper")))
(add-before 'build 'fix-paths
(lambda _
;; TODO:
;; This file assumes that the build directory is named "target"
;; but it is not the case with our ant-build-system. Once we have
;; maven though, we will have to rebuild this package because this
;; assumption is correct with maven-build-system.
(substitute*
"src/main/java/org/eclipse/jetty/toolchain/test/MavenTestingUtils.java"
(("\"target\"") "\"build\"")
(("\"tests\"") "\"test-classes\""))
;; Tests assume we are building with maven, so that the build
;; directory is named "target", and not "build".
(with-directory-excursion "src/test/java/org/eclipse/jetty/toolchain/test"
(substitute* '("FSTest.java" "OSTest.java" "TestingDirTest.java"
"MavenTestingUtilsTest.java")
(("target/tests") "build/test-classes")
(("\"target") "\"build")))
#t)))))
(inputs
`(("junit" ,java-junit)
("hamcrest" ,java-hamcrest-all)))
(home-page "https://www.eclipse.org/jetty/")
(synopsis "Helper classes for jetty tests")
(description "This packages contains helper classes for testing the Jetty
Web Server.")
;; This program is licensed under both epl and asl.
(license (list l:epl1.0 l:asl2.0))))
(define-public java-eclipse-jetty-perf-helper
(package
(inherit java-eclipse-jetty-test-helper)
(name "java-eclipse-jetty-perf-helper")
(arguments
`(#:jar-name "eclipse-jetty-perf-helper.jar"
#:source-dir "src/main/java"
#:tests? #f; no tests
#:jdk ,icedtea-8
#:phases
(modify-phases %standard-phases
(add-before 'configure 'chdir
(lambda _
(chdir "jetty-perf-helper")
#t)))))
(inputs
`(("hdrhistogram" ,java-hdrhistogram)))))
(define-public java-eclipse-jetty-util
(package
(name "java-eclipse-jetty-util")
(version "9.4.6")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/eclipse/jetty.project/"
"archive/jetty-" version ".v20170531.tar.gz"))
(sha256
(base32
"0x7kbdvkmgr6kbsmbwiiyv3bb0d6wk25frgvld9cf8540136z9p1"))))
(build-system ant-build-system)
(arguments
`(#:jar-name "eclipse-jetty-util.jar"
#:source-dir "src/main/java"
#:test-exclude
(list "**/Abstract*.java"
;; requires network
"**/InetAddressSetTest.java"
;; Assumes we are using maven
"**/TypeUtilTest.java"
;; Error on the style of log
"**/StdErrLogTest.java")
#:jdk ,icedtea-8
#:phases
(modify-phases %standard-phases
(add-before 'configure 'chdir
(lambda _
(chdir "jetty-util")
#t)))))
(inputs
`(("slf4j" ,java-slf4j-api)
("servlet" ,java-tomcat)))
(native-inputs
`(("junit" ,java-junit)
("hamcrest" ,java-hamcrest-all)
("perf-helper" ,java-eclipse-jetty-perf-helper)
("test-helper" ,java-eclipse-jetty-test-helper)))
(home-page "https://www.eclipse.org/jetty/")
(synopsis "Utility classes for Jetty")
(description "The Jetty Web Server provides an HTTP server and Servlet
container capable of serving static and dynamic content either from a standalone
or embedded instantiation. This package provides utility classes.")
(license (list l:epl1.0 l:asl2.0))))
;; This version is required by maven-wagon
(define-public java-eclipse-jetty-util-9.2
(package
(inherit java-eclipse-jetty-util)
(version "9.2.22")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/eclipse/jetty.project/"
"archive/jetty-" version ".v20170606.tar.gz"))
(sha256
(base32
"1i51qlsd7h06d35kx5rqpzbfadbcszycx1iwr6vz7qc9gf9f29la"))))
(arguments
`(#:jar-name "eclipse-jetty-util.jar"
#:source-dir "src/main/java"
#:jdk ,icedtea-8
#:test-exclude
(list "**/Abstract*.java"
;; requires network
"**/InetAddressSetTest.java"
;; Assumes we are using maven
"**/TypeUtilTest.java"
;; We don't have an implementation for slf4j
"**/LogTest.java"
;; Error on the style of log
"**/StdErrLogTest.java")
#:phases
(modify-phases %standard-phases
(add-before 'configure 'chdir
(lambda _
(chdir "jetty-util")
#t))
(add-before 'build 'fix-test-sources
(lambda _
;; We need to fix issues caused by changes in newer versions of
;; jetty-test-helper
(let ((src "src/test/java/org/eclipse/jetty/util/resource"))
(substitute* (string-append src "/AbstractFSResourceTest.java")
(("testdir.getDir\\(\\)") "testdir.getPath().toFile()")
(("testdir.getFile\\(\"foo\"\\)")
"testdir.getPathFile(\"foo\").toFile()")
(("testdir.getFile\\(name\\)")
"testdir.getPathFile(name).toFile()")))
#t)))))))
(define-public java-eclipse-jetty-io
(package
(inherit java-eclipse-jetty-util)
(name "java-eclipse-jetty-io")
(arguments
`(#:jar-name "eclipse-jetty-io.jar"
#:source-dir "src/main/java"
#:jdk ,icedtea-8
#:test-exclude (list "**/Abstract*.java"
;; Abstract class
"**/EndPointTest.java")
#:phases
(modify-phases %standard-phases
(add-before 'configure 'chdir
(lambda _
(chdir "jetty-io")
#t)))))
(inputs
`(("slf4j" ,java-slf4j-api)
("servlet" ,java-tomcat)
("util" ,java-eclipse-jetty-util)))
(synopsis "Jetty :: IO Utility")
(description "The Jetty Web Server provides an HTTP server and Servlet
container capable of serving static and dynamic content either from a standalone
or embedded instantiation. This package provides IO-related utility classes.")))
(define-public java-eclipse-jetty-io-9.2
(package
(inherit java-eclipse-jetty-io)
(version (package-version java-eclipse-jetty-util-9.2))
(source (package-source java-eclipse-jetty-util-9.2))
(inputs
`(("util" ,java-eclipse-jetty-util-9.2)
,@(package-inputs java-eclipse-jetty-util-9.2)))
(native-inputs
`(("mockito" ,java-mockito-1)
("cglib" ,java-cglib)
("objenesis" ,java-objenesis)
("asm" ,java-asm)
,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
(define-public java-eclipse-jetty-http
(package
(inherit java-eclipse-jetty-util)
(name "java-eclipse-jetty-http")
(arguments
`(#:jar-name "eclipse-jetty-http.jar"
#:source-dir "src/main/java"
#:jdk ,icedtea-8
#:phases
(modify-phases %standard-phases
(add-before 'configure 'chdir
(lambda _
(chdir "jetty-http")
#t))
(add-before 'build 'copy-resources
(lambda _
(mkdir-p "build/classes")
(copy-recursively "src/main/resources/" "build/classes/")
#t)))))
(inputs
`(("slf4j" ,java-slf4j-api)
("servlet" ,java-tomcat)
("io" ,java-eclipse-jetty-io)
("util" ,java-eclipse-jetty-util)))
(synopsis "Jetty :: Http Utility")
(description "The Jetty Web Server provides an HTTP server and Servlet
container capable of serving static and dynamic content either from a standalone
or embedded instantiation. This package provides HTTP-related utility classes.")))
(define-public java-eclipse-jetty-http-9.2
(package
(inherit java-eclipse-jetty-http)
(version (package-version java-eclipse-jetty-util-9.2))
(source (package-source java-eclipse-jetty-util-9.2))
(inputs
`(("util" ,java-eclipse-jetty-util-9.2)
("io" ,java-eclipse-jetty-io-9.2)
,@(package-inputs java-eclipse-jetty-util-9.2)))))
(define-public java-eclipse-jetty-jmx
(package
(inherit java-eclipse-jetty-util)
(name "java-eclipse-jetty-jmx")
(arguments
`(#:jar-name "eclipse-jetty-jmx.jar"
#:source-dir "src/main/java"
#:jdk ,icedtea-8
#:tests? #f; FIXME: requires com.openpojo.validation
#:phases
(modify-phases %standard-phases
(add-before 'configure 'chdir
(lambda _
(chdir "jetty-jmx")
#t)))))
(inputs
`(("slf4j" ,java-slf4j-api)
("servlet" ,java-tomcat)
("util" ,java-eclipse-jetty-util)))
(synopsis "Jetty :: JMX Management")
(description "The Jetty Web Server provides an HTTP server and Servlet
container capable of serving static and dynamic content either from a standalone
or embedded instantiation. This package provides the JMX management.")))
(define-public java-eclipse-jetty-jmx-9.2
(package
(inherit java-eclipse-jetty-jmx)
(version (package-version java-eclipse-jetty-util-9.2))
(source (package-source java-eclipse-jetty-util-9.2))
(inputs
`(("util" ,java-eclipse-jetty-util-9.2)
,@(package-inputs java-eclipse-jetty-util-9.2)))))
(define java-eclipse-jetty-http-test-classes
(package
(inherit java-eclipse-jetty-util)
(name "java-eclipse-jetty-http-test-classes")
(arguments
`(#:jar-name "eclipse-jetty-http.jar"
#:source-dir "src/test"
#:tests? #f
#:jdk ,icedtea-8
#:phases
(modify-phases %standard-phases
(add-before 'configure 'chdir
(lambda _
(chdir "jetty-http"))))))
(inputs
`(("slf4j" ,java-slf4j-api)
("servlet" ,java-tomcat)
("http" ,java-eclipse-jetty-http)
("io" ,java-eclipse-jetty-io)
("util" ,java-eclipse-jetty-util)))))
(define java-eclipse-jetty-http-test-classes-9.2
(package
(inherit java-eclipse-jetty-http-test-classes)
(version (package-version java-eclipse-jetty-util-9.2))
(source (package-source java-eclipse-jetty-util-9.2))
(inputs
`(("http" ,java-eclipse-jetty-http-9.2)
,@(package-inputs java-eclipse-jetty-http-9.2)))))
(define-public java-eclipse-jetty-server
(package
(inherit java-eclipse-jetty-util)
(name "java-eclipse-jetty-server")
(arguments
`(#:jar-name "eclipse-jetty-server.jar"
#:source-dir "src/main/java"
#:jdk ,icedtea-8
#:tests? #f; requires a mockito version we don't have
#:phases
(modify-phases %standard-phases
(add-before 'configure 'chdir
(lambda _
(chdir "jetty-server")
#t))
(add-before 'build 'fix-source
(lambda _
;; Explicit casts to prevent build failures
(substitute* "src/main/java/org/eclipse/jetty/server/Request.java"
(("append\\(LazyList")
"append((CharSequence)LazyList"))
(substitute*
"src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java"
(((string-append
"Class<\\? extends EventListener> clazz = _classLoader==null"
"\\?Loader.loadClass\\(ContextHandler.class,className\\):"
"_classLoader.loadClass\\(className\\);"))
(string-append "Class<? extends EventListener> clazz = "
"(Class<? extends EventListener>) "
"(_classLoader==null?Loader.loadClass("
"ContextHandler.class,className):"
"_classLoader.loadClass(className));")))
#t)))))
(inputs
`(("slf4j" ,java-slf4j-api)
("servlet" ,java-tomcat)
("http" ,java-eclipse-jetty-http)
("io" ,java-eclipse-jetty-io)
("jmx" ,java-eclipse-jetty-jmx)
("util" ,java-eclipse-jetty-util)))
(native-inputs
`(("test-classes" ,java-eclipse-jetty-http-test-classes)
,@(package-native-inputs java-eclipse-jetty-util)))
(synopsis "Core jetty server artifact")
(description "The Jetty Web Server provides an HTTP server and Servlet
container capable of serving static and dynamic content either from a standalone
or embedded instantiation. This package provides the core jetty server
artifact.")))
(define-public java-eclipse-jetty-server-9.2
(package
(inherit java-eclipse-jetty-server)
(version (package-version java-eclipse-jetty-util-9.2))
(source (package-source java-eclipse-jetty-util-9.2))
(inputs
`(("util" ,java-eclipse-jetty-util-9.2)
("jmx" ,java-eclipse-jetty-jmx-9.2)
("io" ,java-eclipse-jetty-io-9.2)
("http" ,java-eclipse-jetty-http-9.2)
,@(package-inputs java-eclipse-jetty-util-9.2)))
(native-inputs
`(("test-classes" ,java-eclipse-jetty-http-test-classes-9.2)
,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
(define-public java-eclipse-jetty-security
(package
(inherit java-eclipse-jetty-util)
(name "java-eclipse-jetty-security")
(arguments
`(#:jar-name "eclipse-jetty-security.jar"
#:source-dir "src/main/java"
#:jdk ,icedtea-8
#:phases
(modify-phases %standard-phases
(add-before 'configure 'chdir
(lambda _
(chdir "jetty-security")
#t)))))
(inputs
`(("slf4j" ,java-slf4j-api)
("servlet" ,java-tomcat)
("http" ,java-eclipse-jetty-http)
("server" ,java-eclipse-jetty-server)
("util" ,java-eclipse-jetty-util)))
(native-inputs
`(("io" ,java-eclipse-jetty-io)
,@(package-native-inputs java-eclipse-jetty-util)))
(synopsis "Jetty security infrastructure")
(description "The Jetty Web Server provides an HTTP server and Servlet
container capable of serving static and dynamic content either from a standalone
or embedded instantiation. This package provides the core jetty security
infrastructure")))
(define-public java-eclipse-jetty-security-9.2
(package
(inherit java-eclipse-jetty-security)
(version (package-version java-eclipse-jetty-util-9.2))
(source (package-source java-eclipse-jetty-util-9.2))
(inputs
`(("util" ,java-eclipse-jetty-util-9.2)
("http" ,java-eclipse-jetty-http-9.2)
("server" ,java-eclipse-jetty-server-9.2)
,@(package-inputs java-eclipse-jetty-util-9.2)))
(native-inputs
`(("io" ,java-eclipse-jetty-io-9.2)
,@(package-native-inputs java-eclipse-jetty-util-9.2)))))
(define-public java-eclipse-jetty-servlet
(package
(inherit java-eclipse-jetty-util)
(name "java-eclipse-jetty-servlet")
(arguments
`(#:jar-name "eclipse-jetty-servlet.jar"
#:source-dir "src/main/java"
#:jdk ,icedtea-8
#:phases
(modify-phases %standard-phases
(add-before 'configure 'chdir
(lambda _
(chdir "jetty-servlet")
#t)))))
(inputs
`(("slf4j" ,java-slf4j-api)
("servlet" ,java-tomcat)
("http" ,java-eclipse-jetty-http)
("http-test" ,java-eclipse-jetty-http-test-classes)
("io" ,java-eclipse-jetty-io)
("jmx" ,java-eclipse-jetty-jmx)
("security" ,java-eclipse-jetty-security)
("server" ,java-eclipse-jetty-server)
("util" ,java-eclipse-jetty-util)))
(synopsis "Jetty Servlet Container")
(description "The Jetty Web Server provides an HTTP server and Servlet
container capable of serving static and dynamic content either from a standalone
or embedded instantiation. This package provides the core jetty servlet
container.")))
(define-public java-eclipse-jetty-servlet-9.2
(package
(inherit java-eclipse-jetty-servlet)
(version (package-version java-eclipse-jetty-util-9.2))
(source (package-source java-eclipse-jetty-util-9.2))
(arguments
`(#:jar-name "eclipse-jetty-servlet.jar"
#:source-dir "src/main/java"
#:jdk ,icedtea-8
#:tests? #f; doesn't work
#:phases
(modify-phases %standard-phases
(add-before 'configure 'chdir
(lambda _
(chdir "jetty-servlet")
#t)))))
(inputs
`(("util" ,java-eclipse-jetty-util-9.2)
("jmx" ,java-eclipse-jetty-jmx-9.2)
("io" ,java-eclipse-jetty-io-9.2)
("http" ,java-eclipse-jetty-http-9.2)
("security" ,java-eclipse-jetty-security-9.2)
("http-test" ,java-eclipse-jetty-http-test-classes-9.2)
("server" ,java-eclipse-jetty-server-9.2)
,@(package-inputs java-eclipse-jetty-util-9.2)))))
(define-public tidyp
(package
(name "tidyp")
(version "1.04")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/downloads/petdance/tidyp/tidyp-"
version ".tar.gz"))
(sha256
(base32
"0f5ky0ih4vap9c6j312jn73vn8m2bj69pl2yd3a5nmv35k9zmc10"))))
(build-system gnu-build-system)
;; ./test-thing.sh tries to run ./testall.sh, which is not included.
(arguments `(#:tests? #f))
(home-page "http://www.tidyp.com/")
(synopsis "Validate HTML")
(description "Tidyp is a program that can validate your HTML, as well as
modify it to be more clean and standard. tidyp does not validate HTML 5.
libtidyp is the library on which the program is based. It can be used by any
other program that can interface to it. The Perl module @code{HTML::Tidy} is
based on this library, allowing Perl programmers to easily validate HTML.")
;; See htmldoc/license.html
(license l:bsd-3)))
(define-public perl-html-tidy
(package
(name "perl-html-tidy")
(version "1.60")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cpan/authors/id/P/PE/PETDANCE/HTML-Tidy-"
version ".tar.gz"))
(sha256
(base32
"1iyp2fd6j75cn1xvcwl2lxr8qpjxssy2360cyqn6g3kzd1fzdyxw"))))
(build-system perl-build-system)
(arguments
'(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-tidyp-paths
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "Makefile.PL"
(("^my \\$inc = \"" line)
(string-append line
"-I" (assoc-ref inputs "tidyp") "/include/tidyp "))
(("-L/usr/lib")
(string-append
"-L" (assoc-ref inputs "tidyp") "/lib")))
#t)))))
(inputs
`(("perl-libwww" ,perl-libwww)
("tidyp" ,tidyp)))
(native-inputs
`(("perl-test-exception" ,perl-test-exception)))
(home-page "http://search.cpan.org/dist/HTML-Tidy/")
(synopsis "(X)HTML validation in a Perl object")
(description "@code{HTML::Tidy} is an HTML checker in a handy dandy
object. It's meant as a replacement for @code{HTML::Lint}, which is written
in Perl but is not nearly as capable as @code{HTML::Tidy}.")
(license l:artistic2.0)))

View File

@ -17,6 +17,7 @@
;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2017 Petter <petter@mykolab.ch>
;;;
;;; This file is part of GNU Guix.
;;;
@ -1235,3 +1236,160 @@ This framework aids the development of XML systems with minimal effort and
reduced errors. It offers full object serialization and deserialization,
maintaining each reference encountered.")
(license license:asl2.0)))
(define-public perl-xml-xpathengine
(package
(name "perl-xml-xpathengine")
(version "0.14")
(source (origin
(method url-fetch)
(uri (string-append "mirror://cpan/authors/id/M/MI/MIROD/"
"XML-XPathEngine-" version ".tar.gz"))
(sha256
(base32
"0r72na14bmsxfd16s9nlza155amqww0k8wsa9x2a3sqbpp5ppznj"))))
(build-system perl-build-system)
(home-page "http://search.cpan.org/dist/XML-XPathEngine/")
(synopsis "Re-usable XPath engine for DOM-like trees")
(description
"This module provides an XPath engine, that can be re-used by other
modules/classes that implement trees.
In order to use the XPath engine, nodes in the user module need to mimick DOM
nodes. The degree of similitude between the user tree and a DOM dictates how
much of the XPath features can be used. A module implementing all of the DOM
should be able to use this module very easily (you might need to add the
@code{cmp} method on nodes in order to get ordered result sets).")
(license license:perl-license)))
(define-public perl-tree-xpathengine
(package
(name "perl-tree-xpathengine")
(version "0.05")
(source (origin
(method url-fetch)
(uri (string-append "mirror://cpan/authors/id/M/MI/MIROD/"
"Tree-XPathEngine-" version ".tar.gz"))
(sha256
(base32
"1vbbw8wxm79r3xbra8narw1dqvm34510q67wbmg2zmj6zd1k06r9"))))
(build-system perl-build-system)
(home-page "http://search.cpan.org/dist/Tree-XPathEngine/")
(synopsis "Re-usable XPath engine")
(description
"This module provides an XPath engine, that can be re-used by other
module/classes that implement trees. It is designed to be compatible with
@code{Class::XPath}, ie it passes its tests if you replace @code{Class::XPath}
by @code{Tree::XPathEngine}.")
(license license:perl-license)))
(define-public perl-xml-filter-buffertext
(package
(name "perl-xml-filter-buffertext")
(version "1.01")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cpan/authors/id/R/RB/RBERJON/"
"XML-Filter-BufferText-" version ".tar.gz"))
(sha256
(base32
"0p5785c1dsk6kdp505vapb5h54k8krrz8699hpgm9igf7dni5llg"))))
(build-system perl-build-system)
(propagated-inputs
`(("perl-xml-sax-base" ,perl-xml-sax-base)))
(home-page "http://search.cpan.org/dist/XML-Filter-BufferText/")
(synopsis "Filter to put all characters() in one event")
(description "This is a very simple filter. One common cause of
grief (and programmer error) is that XML parsers aren't required to provide
character events in one chunk. They can, but are not forced to, and most
don't. This filter does the trivial but oft-repeated task of putting all
characters into a single event.")
(license license:perl-license)))
(define-public perl-xml-sax-writer
(package
(name "perl-xml-sax-writer")
(version "0.57")
(source (origin
(method url-fetch)
(uri (string-append
"mirror://cpan/authors/id/P/PE/PERIGRIN/"
"XML-SAX-Writer-" version ".tar.gz"))
(sha256
(base32
"1w1cd1ybxdvhmnxdlkywi3x5ka3g4md42kyynksjc09vyizd0q9x"))))
(build-system perl-build-system)
(propagated-inputs
`(("perl-libxml" ,perl-libxml)
("perl-xml-filter-buffertext" ,perl-xml-filter-buffertext)
("perl-xml-namespacesupport", perl-xml-namespacesupport)
("perl-xml-sax-base" ,perl-xml-sax-base)))
(home-page "http://search.cpan.org/dist/XML-SAX-Writer/")
(synopsis "SAX2 XML Writer")
(description
"This is an XML writer that understands SAX2. It is based on
@code{XML::Handler::YAWriter}.")
(license license:perl-license)))
(define-public perl-xml-handler-yawriter
(package
(name "perl-xml-handler-yawriter")
(version "0.23")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://cpan/authors/id/K/KR/KRAEHE/"
"XML-Handler-YAWriter-" version ".tar.gz"))
(sha256
(base32
"11d45a1sz862va9rry3p2m77pwvq3kpsvgwhc5ramh9mbszbnk77"))))
(build-system perl-build-system)
(propagated-inputs
`(("perl-libxml" ,perl-libxml)))
(home-page "http://search.cpan.org/dist/XML-Handler-YAWriter/")
(synopsis "Yet another Perl SAX XML Writer")
(description "YAWriter implements Yet Another @code{XML::Handler::Writer}.
It provides a flexible escaping technique and pretty printing.")
(license license:perl-license)))
(define-public perl-xml-twig
(package
(name "perl-xml-twig")
(version "3.52")
(source (origin
(method url-fetch)
(uri (string-append "mirror://cpan/authors/id/M/MI/MIROD/"
"XML-Twig-" version ".tar.gz"))
(sha256
(base32
"1bc0hrz4jp6199hi29sdxmb9gyy45whla9hd19yqfasgq8k5ixzy"))))
(build-system perl-build-system)
(inputs
`(("expat" ,expat)))
(propagated-inputs
`(("perl-html-tidy" ,perl-html-tidy)
("perl-html-tree" ,perl-html-tree)
("perl-io-captureoutput" ,perl-io-captureoutput)
("perl-io-string" ,perl-io-string)
("perl-io-stringy" ,perl-io-stringy)
("perl-libxml" ,perl-libxml)
("perl-xml-filter-buffertext" ,perl-xml-filter-buffertext)
("perl-xml-handler-yawriter" ,perl-xml-handler-yawriter)
("perl-xml-parser" ,perl-xml-parser)
("perl-xml-sax-writer" ,perl-xml-sax-writer)
("perl-xml-simple" ,perl-xml-simple)
("perl-xml-xpathengine" ,perl-xml-xpathengine)
("perl-test-pod", perl-test-pod)
("perl-tree-xpathengine" ,perl-tree-xpathengine)))
(home-page "http://search.cpan.org/dist/XML-Twig/")
(synopsis "Perl module for processing huge XML documents in tree mode")
(description "@code{XML::Twig} is an XML transformation module. Its
strong points: can be used to process huge documents while still being in tree
mode; not bound by DOM or SAX, so it is very perlish and offers a very
comprehensive set of methods; simple to use; DWIMs as much as possible.
What it doesn't offer: full SAX support (it can export SAX, but only reads
XML), full XPath support (unless you use @code{XML::Twig::XPath}), nor DOM
support.")
(license license:perl-license)))

View File

@ -95,10 +95,7 @@
%boot-service
%activation-service
etc-service
file-union ;XXX: for lack of a better place
directory-union))
etc-service))
;;; Comment:
;;;
@ -388,38 +385,6 @@ boot."
(list (service-extension boot-service-type
cleanup-gexp)))))
(define* (file-union name files) ;FIXME: Factorize.
"Return a <computed-file> that builds a directory containing all of FILES.
Each item in FILES must be a list where the first element is the file name to
use in the new directory, and the second element is a gexp denoting the target
file."
(computed-file name
#~(begin
(mkdir #$output)
(chdir #$output)
#$@(map (match-lambda
((target source)
#~(begin
;; Stat the source to abort early if it
;; does not exist.
(stat #$source)
(symlink #$source #$target))))
files))))
(define (directory-union name things)
"Return a directory that is the union of THINGS."
(match things
((one)
;; Only one thing; return it.
one)
(_
(computed-file name
(with-imported-modules '((guix build union))
#~(begin
(use-modules (guix build union))
(union-build #$output '#$things)))))))
(define* (activation-service->script service)
"Return as a monadic value the activation script for SERVICE, a service of
ACTIVATION-SCRIPT-TYPE."

View File

@ -71,6 +71,7 @@
udev-service-type
udev-service
udev-rule
file->udev-rule
login-configuration
login-configuration?
@ -1630,6 +1631,22 @@ item of @var{packages}."
(lambda (port)
(display #$contents port)))))))
(define (file->udev-rule file-name file)
"Return a directory with a udev rule file FILE-NAME which is a copy of FILE."
(computed-file file-name
(with-imported-modules '((guix build utils))
#~(begin
(use-modules (guix build utils))
(define rules.d
(string-append #$output "/lib/udev/rules.d"))
(define file-copy-dest
(string-append rules.d "/" #$file-name))
(mkdir-p rules.d)
(copy-file #$file file-copy-dest)))))
(define kvm-udev-rule
;; Return a directory with a udev rule that changes the group of /dev/kvm to
;; "kvm" and makes it #o660. Apparently QEMU-KVM used to ship this rule,

View File

@ -78,6 +78,7 @@
%standard-phases))
(outputs '("out"))
(search-paths '())
(install-source? #t)
(import-path "")
(unpack-path "")
(tests? #t)
@ -102,6 +103,7 @@
#:outputs %outputs
#:search-paths ',(map search-path-specification->sexp
search-paths)
#:install-source? ,install-source?
#:import-path ,import-path
#:unpack-path ,unpack-path
#:tests? ,tests?

165
guix/build/compile.scm Normal file
View File

@ -0,0 +1,165 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix build compile)
#:use-module (ice-9 match)
#:use-module (ice-9 format)
#:use-module (ice-9 threads)
#:use-module (system base target)
#:use-module (system base compile)
#:use-module (system base message)
#:use-module (guix modules)
#:use-module (guix build utils)
#:export (%default-optimizations
%lightweight-optimizations
compile-files))
;;; Commentary:
;;;
;;; Support code to compile Guile code as efficiently as possible (both with
;;; Guile 2.0 and 2.2).
;;;
;;; Code:
(cond-expand
(guile-2.2 (use-modules (language tree-il optimize)
(language cps optimize)))
(else #f))
(define %default-optimizations
;; Default optimization options (equivalent to -O2 on Guile 2.2).
(cond-expand
(guile-2.2 (append (tree-il-default-optimization-options)
(cps-default-optimization-options)))
(else '())))
(define %lightweight-optimizations
;; Lightweight optimizations (like -O0, but with partial evaluation).
(let loop ((opts %default-optimizations)
(result '()))
(match opts
(() (reverse result))
((#:partial-eval? _ rest ...)
(loop rest `(#t #:partial-eval? ,@result)))
((kw _ rest ...)
(loop rest `(#f ,kw ,@result))))))
(define %warnings
;; FIXME: 'format' is missing because it reports "non-literal format
;; strings" due to the fact that we use 'G_' instead of '_'. We'll need
;; help from Guile to solve this.
'(unsupported-warning unbound-variable arity-mismatch
macro-use-before-definition)) ;new in 2.2
(define (optimization-options file)
"Return the default set of optimizations options for FILE."
(if (string-contains file "gnu/packages/")
%lightweight-optimizations ;build faster
'()))
(define (scm->go file)
"Strip the \".scm\" suffix from FILE, and append \".go\"."
(string-append (string-drop-right file 4) ".go"))
(define* (load-files directory files
#:key
(report-load (const #f))
(debug-port (%make-void-port "w")))
"Load FILES, a list of relative file names, from DIRECTORY."
(define total
(length files))
(let loop ((files files)
(completed 0))
(match files
(()
(unless (zero? total)
(report-load #f total completed))
*unspecified*)
((file files ...)
(report-load file total completed)
(format debug-port "~%loading '~a'...~%" file)
(parameterize ((current-warning-port debug-port))
(resolve-interface (file-name->module-name file)))
(loop files (+ 1 completed))))))
(define-syntax-rule (with-augmented-search-path path item body ...)
"Within the dynamic extent of BODY, augment PATH by adding ITEM to the
front."
(let ((initial-value path))
(dynamic-wind
(lambda ()
(set! path (cons item path)))
(lambda ()
body ...)
(lambda ()
(set! path initial-value)))))
(define* (compile-files source-directory build-directory files
#:key
(host %host-type)
(workers (current-processor-count))
(optimization-options optimization-options)
(warning-options `(#:warnings ,%warnings))
(report-load (const #f))
(report-compilation (const #f))
(debug-port (%make-void-port "w")))
"Compile FILES, a list of source files taken from SOURCE-DIRECTORY, to
BUILD-DIRECTORY, using up to WORKERS parallel workers. The resulting object
files are for HOST, a GNU triplet such as \"x86_64-linux-gnu\"."
(define progress-lock (make-mutex))
(define total (length files))
(define completed 0)
(define (build file)
(with-mutex progress-lock
(report-compilation file total completed))
(with-fluids ((*current-warning-prefix* ""))
(with-target host
(lambda ()
(compile-file file
#:output-file (string-append build-directory "/"
(scm->go file))
#:opts (append warning-options
(optimization-options file))))))
(with-mutex progress-lock
(set! completed (+ 1 completed))))
(with-augmented-search-path %load-path source-directory
(with-augmented-search-path %load-compiled-path build-directory
;; FIXME: To work around <https://bugs.gnu.org/15602>, we first load all
;; of FILES.
(load-files source-directory files
#:report-load report-load
#:debug-port debug-port)
;; Make sure compilation related modules are loaded before starting to
;; compile files in parallel.
(compile #f)
(n-par-for-each workers build files)
(unless (zero? total)
(report-compilation #f total total)))))
;;; Local Variables:
;;; eval: (put 'with-augmented-search-path 'scheme-indent-function 2)
;;; eval: (put 'with-target 'scheme-indent-function 1)
;;; End:

View File

@ -126,13 +126,14 @@ unset. When SOURCE is a directory, copy it instead of unpacking."
(zero? (system* "unzip" "-d" dest source))
(zero? (system* "tar" "-C" dest "-xvf" source))))))
(define* (install-source #:key outputs #:allow-other-keys)
(define* (install-source #:key install-source? outputs #:allow-other-keys)
"Install the source code to the output directory."
(let* ((out (assoc-ref outputs "out"))
(source "src")
(dest (string-append out "/" source)))
(if install-source?
(copy-recursively source dest #:keep-mtime? #t)
#t))
#t)))
(define (go-package? name)
(string-prefix? "go-" name))
@ -179,6 +180,9 @@ respectively."
(zero? (system* "go" "install"
"-v" ; print the name of packages as they are compiled
"-x" ; print each command as it is invoked
;; Respectively, strip the symbol table and debug
;; information, and the DWARF symbol table.
"-ldflags=-s -w"
import-path))
(begin
(display (string-append "Building '" import-path "' failed.\n"

View File

@ -20,11 +20,10 @@
(define-module (guix build pull)
#:use-module (guix modules)
#:use-module (guix build utils)
#:use-module (system base compile)
#:use-module (guix build compile)
#:use-module (ice-9 ftw)
#:use-module (ice-9 match)
#:use-module (ice-9 format)
#:use-module (ice-9 threads)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-26)
@ -63,34 +62,6 @@ available, false otherwise."
(string-prefix? gnu b))
(string<? a b))))))
(cond-expand
(guile-2.2 (use-modules (language tree-il optimize)
(language cps optimize)))
(else #f))
(define %default-optimizations
;; Default optimization options (equivalent to -O2 on Guile 2.2).
(cond-expand
(guile-2.2 (append (tree-il-default-optimization-options)
(cps-default-optimization-options)))
(else '())))
(define %lightweight-optimizations
;; Lightweight optimizations (like -O0, but with partial evaluation).
(let loop ((opts %default-optimizations)
(result '()))
(match opts
(() (reverse result))
((#:partial-eval? _ rest ...)
(loop rest `(#t #:partial-eval? ,@result)))
((kw _ rest ...)
(loop rest `(#f ,kw ,@result))))))
(define (optimization-options file)
(if (string-contains file "gnu/packages/")
%lightweight-optimizations ;build faster
'()))
(define* (build-guix out source
#:key
@ -148,53 +119,43 @@ containing the source code. Write any debugging output to DEBUG-PORT."
(set! %load-path (cons out %load-path))
(set! %load-compiled-path (cons out %load-compiled-path))
;; Compile the .scm files. Load all the files before compiling them to
;; work around <http://bugs.gnu.org/15602> (FIXME).
;; Compile the .scm files. Hide warnings.
(parameterize ((current-warning-port (%make-void-port "w")))
(with-directory-excursion out
;; Filter out files depending on Guile-SSH when Guile-SSH is missing.
(let* ((files (filter has-all-its-dependencies?
(all-scheme-files out)))
(total (length files)))
(let loop ((files files)
(completed 0))
(match files
(() *unspecified*)
((file . files)
(let ((files (filter has-all-its-dependencies?
(all-scheme-files "."))))
(compile-files out out
;; XXX: 'compile-files' except ready-to-use relative
;; file names.
(map (lambda (file)
(if (string-prefix? "./" file)
(string-drop file 2)
file))
files)
#:workers (parallel-job-count)
;; Disable warnings.
#:warning-options '()
#:report-load
(lambda (file total completed)
(display #\cr log-port)
(format log-port "loading...\t~5,1f% of ~d files" ;FIXME: i18n
(format log-port
"loading...\t~5,1f% of ~d files" ;FIXME: i18n
(* 100. (/ completed total)) total)
(force-output log-port)
(format debug-port "~%loading '~a'...~%" file)
;; Turn "<out>/foo/bar.scm" into (foo bar).
(let* ((relative-file (string-drop file (+ (string-length out) 1)))
(module-path (string-drop-right relative-file 4))
(module-name (map string->symbol
(string-split module-path #\/))))
(parameterize ((current-warning-port debug-port))
(resolve-interface module-name)))
(loop files (+ 1 completed)))))
(newline)
(let ((mutex (make-mutex))
(completed 0))
;; Make sure compilation related modules are loaded before starting to
;; compile files in parallel.
(compile #f)
(n-par-for-each
(parallel-job-count)
(lambda (file)
(with-mutex mutex
(format debug-port "~%loading '~a'...~%" file))
#:report-compilation
(lambda (file total completed)
(display #\cr log-port)
(format log-port "compiling...\t~5,1f% of ~d files" ;FIXME: i18n
(* 100. (/ completed total)) total)
(force-output log-port)
(format debug-port "~%compiling '~a'...~%" file))
(let ((go (string-append (string-drop-right file 4) ".go")))
(parameterize ((current-warning-port (%make-void-port "w")))
(compile-file file
#:output-file go
#:opts (optimization-options file))))
(with-mutex mutex
(set! completed (+ 1 completed))))
files))))
(format debug-port "~%compiling '~a'...~%" file)))))))
(newline)
#t)

View File

@ -18,6 +18,7 @@
(define-module (guix discovery)
#:use-module (guix ui)
#:use-module (guix modules)
#:use-module (guix combinators)
#:use-module (guix build syscalls)
#:use-module (srfi srfi-1)
@ -88,13 +89,6 @@ DIRECTORY is not accessible."
directory (strerror errno)))
'())))))
(define file-name->module-name
(let ((not-slash (char-set-complement (char-set #\/))))
(lambda (file)
"Return the module name (a list of symbols) corresponding to FILE."
(map string->symbol
(string-tokenize (string-drop-right file 4) not-slash)))))
(define* (scheme-modules directory #:optional sub-directory)
"Return the list of Scheme modules available under DIRECTORY.
Optionally, narrow the search to SUB-DIRECTORY."

View File

@ -78,6 +78,8 @@
gexp->script
text-file*
mixed-text-file
file-union
directory-union
imported-files
imported-modules
compiled-modules
@ -1171,6 +1173,56 @@ This is the declarative counterpart of 'text-file*'."
(computed-file name build))
(define (file-union name files)
"Return a <computed-file> that builds a directory containing all of FILES.
Each item in FILES must be a two-element list where the first element is the
file name to use in the new directory, and the second element is a gexp
denoting the target file. Here's an example:
(file-union \"etc\"
`((\"hosts\" ,(plain-file \"hosts\"
\"127.0.0.1 localhost\"))
(\"bashrc\" ,(plain-file \"bashrc\"
\"alias ls='ls --color'\"))))
This yields an 'etc' directory containing these two files."
(computed-file name
(gexp
(begin
(mkdir (ungexp output))
(chdir (ungexp output))
(ungexp-splicing
(map (match-lambda
((target source)
(gexp
(begin
;; Stat the source to abort early if it does
;; not exist.
(stat (ungexp source))
(symlink (ungexp source)
(ungexp target))))))
files))))))
(define (directory-union name things)
"Return a directory that is the union of THINGS, where THINGS is a list of
file-like objects denoting directories. For example:
(directory-union \"guile+emacs\" (list guile emacs))
yields a directory that is the union of the 'guile' and 'emacs' packages."
(match things
((one)
;; Only one thing; return it.
one)
(_
(computed-file name
(with-imported-modules '((guix build union))
(gexp (begin
(use-modules (guix build union))
(union-build (ungexp output)
'(ungexp things)))))))))
;;;
;;; Syntactic sugar.

View File

@ -26,6 +26,9 @@
#:export (missing-dependency-error?
missing-dependency-module
file-name->module-name
module-name->file-name
source-module-closure
live-module-closure
guix-module-name?))
@ -93,6 +96,13 @@ depends on."
(_
'()))))))
(define file-name->module-name
(let ((not-slash (char-set-complement (char-set #\/))))
(lambda (file)
"Return the module name (a list of symbols) corresponding to FILE."
(map string->symbol
(string-tokenize (string-drop-right file 4) not-slash)))))
(define (module-name->file-name module)
"Return the file name for MODULE."
(string-append (string-join (map symbol->string module) "/")