Merge branch 'master' into core-updates
This commit is contained in:
commit
ca4fd41de8
|
@ -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 \
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)))))))
|
||||
|
|
147
doc/guix.texi
147
doc/guix.texi
|
@ -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\""))
|
||||
|
||||
(operating-system
|
||||
;; @dots{}
|
||||
(services (modify-services %desktop-services
|
||||
(udev-service-type config =>
|
||||
(udev-configuration (inherit config)
|
||||
(rules (append (udev-configuration-rules config)
|
||||
(list %example-udev-rule))))))))
|
||||
(udev-rule
|
||||
"90-usb-thing.rules"
|
||||
(string-append "ACTION==\"add\", SUBSYSTEM==\"usb\", "
|
||||
"ATTR@{product@}==\"Example\", "
|
||||
"RUN+=\"/path/to/script\"")))
|
||||
@end example
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} urandom-seed-service @var{#f}
|
||||
Here we show how the default @var{udev-service} can be extended with it.
|
||||
|
||||
@example
|
||||
(operating-system
|
||||
;; @dots{}
|
||||
(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
|
||||
|
||||
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,
|
||||
|
|
|
@ -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 \
|
||||
|
|
|
@ -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 sound’s
|
||||
waveform until they line up with the proper sounds.")
|
||||
(license license:gpl3+))))
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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"))))
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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"))))))
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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+)))
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
@ -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")
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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))
|
||||
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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+)))
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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)))
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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 _
|
||||
(copy-recursively "src/github.com/syncthing/syncthing/bin/"
|
||||
(string-append (assoc-ref %outputs "out") "/bin"))
|
||||
#t))
|
||||
(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 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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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))))
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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."
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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?
|
||||
|
|
|
@ -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:
|
|
@ -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)))
|
||||
(copy-recursively source dest #:keep-mtime? #t)
|
||||
#t))
|
||||
(if install-source?
|
||||
(copy-recursively source dest #:keep-mtime? #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"
|
||||
|
|
|
@ -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).
|
||||
;; 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)
|
||||
(display #\cr log-port)
|
||||
(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
|
||||
(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))))
|
||||
;; 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 "."))))
|
||||
(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
|
||||
(* 100. (/ completed total)) total)
|
||||
(force-output log-port)
|
||||
(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)))))))
|
||||
|
||||
(newline)
|
||||
#t)
|
||||
|
|
|
@ -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."
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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) "/")
|
||||
|
|
Loading…
Reference in New Issue