Merge branch 'master' into core-updates

master
Marius Bakke 2019-09-27 19:11:27 +02:00
commit e7f62a41b2
No known key found for this signature in database
GPG Key ID: A2A06DF2A33A54FA
70 changed files with 3088 additions and 2374 deletions

View File

@ -215,6 +215,58 @@ its <pre class=\"lisp\"> blocks (as produced by 'makeinfo --html')."
(ice-9 match)
(ice-9 threads))
(define (pair-open/close lst)
;; Pair 'open' and 'close' tags produced by 'highlights' and
;; produce nested 'paren' tags instead.
(let loop ((lst lst)
(level 0)
(result '()))
(match lst
((('open open) rest ...)
(call-with-values
(lambda ()
(loop rest (+ 1 level) '()))
(lambda (inner close rest)
(loop rest level
(cons `(paren ,level ,open ,inner ,close)
result)))))
((('close str) rest ...)
(if (> level 0)
(values (reverse result) str rest)
(begin
(format (current-error-port)
"warning: extra closing paren; context:~% ~y~%"
(reverse result))
(loop rest 0 (cons `(close ,str) result)))))
((item rest ...)
(loop rest level (cons item result)))
(()
(when (> level 0)
(format (current-error-port)
"warning: missing ~a closing parens; context:~% ~y%"
level (reverse result)))
(values (reverse result) "" '())))))
(define (highlights->sxml* highlights)
;; Like 'highlights->sxml', but handle nested 'paren tags. This
;; allows for paren matching highlights via appropriate CSS
;; "hover" properties.
(define (tag->class tag)
(string-append "syntax-" (symbol->string tag)))
(map (match-lambda
((? string? str) str)
(('paren level open (body ...) close)
`(span (@ (class ,(string-append "syntax-paren"
(number->string level))))
,open
(span (@ (class "syntax-symbol"))
,@(highlights->sxml* body))
,close))
((tag text)
`(span (@ (class ,(tag->class tag))) ,text)))
highlights))
(define entity->string
(match-lambda
("rArr" "⇒")
@ -252,9 +304,10 @@ its <pre class=\"lisp\"> blocks (as produced by 'makeinfo --html')."
(href #$syntax-css-url)))))
(('pre ('@ ('class "lisp")) code-snippet ...)
`(pre (@ (class "lisp"))
,(highlights->sxml
(highlight lex-scheme
(concatenate-snippets code-snippet)))))
,@(highlights->sxml*
(pair-open/close
(highlight lex-scheme
(concatenate-snippets code-snippet))))))
((tag ('@ attributes ...) body ...)
`(,tag (@ ,@attributes) ,@(map syntax-highlight body)))
((tag body ...)

View File

@ -2431,7 +2431,7 @@ Create a disk image that will hold the installed system. To make a
qcow2-formatted disk image, use the @command{qemu-img} command:
@example
qemu-img create -f qcow2 guixsd.img 50G
qemu-img create -f qcow2 guix-system.img 50G
@end example
The resulting file will be much smaller than 50 GB (typically less than
@ -2442,17 +2442,13 @@ Boot the USB installation image in an VM:
@example
qemu-system-x86_64 -m 1024 -smp 1 -enable-kvm \
-net user -net nic,model=virtio -boot menu=on \
-drive file=guix-system-install-@value{VERSION}.@var{system}.iso \
-drive file=guixsd.img
-net user -net nic,model=virtio -boot menu=on,order=d \
-drive file=guix-system.img \
-drive media=cdrom,file=guix-system-install-@value{VERSION}.@var{system}.iso
@end example
The ordering of the drives matters. @code{-enable-kvm} is optional, but
significantly improves performance, @pxref{Running Guix in a VM}.
In the VM console, quickly press the @kbd{F12} key to enter the boot
menu. Then press the @kbd{2} key and the @kbd{RET} key to validate your
selection.
@code{-enable-kvm} is optional, but significantly improves performance,
@pxref{Running Guix in a VM}.
@item
You're now root in the VM, proceed with the installation process.
@ -2460,7 +2456,7 @@ You're now root in the VM, proceed with the installation process.
@end enumerate
Once installation is complete, you can boot the system that's on your
@file{guixsd.img} image. @xref{Running Guix in a VM}, for how to do
@file{guix-system.img} image. @xref{Running Guix in a VM}, for how to do
that.
@node Building the Installation Image
@ -2759,7 +2755,7 @@ As an example, @var{file} might contain a definition like this
(@pxref{Defining Packages}):
@lisp
@verbatiminclude package-hello.scm
@include package-hello.scm
@end lisp
Developers may find it useful to include such a @file{guix.scm} file
@ -2937,6 +2933,19 @@ siblings that point to specific generations:
$ rm ~/code/my-profile ~/code/my-profile-*-link
@end example
@item --list-profiles
List all the user's profiles:
@example
$ guix package --list-profiles
/home/charlie/.guix-profile
/home/charlie/code/my-profile
/home/charlie/code/devel-profile
/home/charlie/tmp/test
@end example
When running as root, list all the profiles of all the users.
@cindex collisions, in a profile
@cindex colliding packages in profiles
@cindex profile collisions
@ -8235,7 +8244,7 @@ As an example, @var{file} might contain a package definition like this
(@pxref{Defining Packages}):
@lisp
@verbatiminclude package-hello.scm
@include package-hello.scm
@end lisp
@item --expression=@var{expr}
@ -9474,7 +9483,7 @@ that Guix uses, as in this example:
;; @dots{}
;; CPE calls this package "grub2".
(properties '((cpe-name . "grub2")
(cpe-version . "2.3")))
(cpe-version . "2.3"))))
@end lisp
@c See <https://www.openwall.com/lists/oss-security/2017/03/15/3>.
@ -11788,6 +11797,7 @@ declaration.
* Virtualization Services:: Virtualization services.
* Version Control Services:: Providing remote access to Git repositories.
* Game Services:: Game servers.
* Guix Services:: Services relating specifically to Guix.
* Miscellaneous Services:: Other services.
@end menu
@ -12392,7 +12402,7 @@ The following example showcases how we can use an existing rule file.
@lisp
(use-modules (guix download) ;for url-fetch
(guix packages) ;for origin
;; @dots{})
@dots{})
(define %android-udev-rules
(file->udev-rule
@ -12426,7 +12436,7 @@ well as in the @var{groups} field of the @var{operating-system} record.
@lisp
(use-modules (gnu packages android) ;for android-udev-rules
(gnu system shadow) ;for user-group
;; @dots{})
@dots{})
(operating-system
;; @dots{}
@ -12434,8 +12444,7 @@ well as in the @var{groups} field of the @var{operating-system} record.
;; @dots{}
(supplementary-groups
'("adbusers" ;for adb
"wheel" "netdev" "audio" "video"))
;; @dots{})))
"wheel" "netdev" "audio" "video")))))
(groups (cons (user-group (system? #t) (name "adbusers"))
%base-groups))
@ -13352,7 +13361,7 @@ gateway @code{hostname}:
(program (file-append openssh "/bin/ssh"))
(arguments
'("ssh" "-qT" "-i" "/path/to/ssh_key"
"-W" "smtp-server:25" "user@@hostname")))))
"-W" "smtp-server:25" "user@@hostname")))))))
@end lisp
See below for more details about @code{inetd-configuration}.
@ -19822,13 +19831,12 @@ can do something along these lines:
@lisp
(define %gnu-mirror
(plain-file
"gnu.vcl"
"vcl 4.1;
backend gnu @{ .host = "www.gnu.org"; @}"))
(plain-file "gnu.vcl"
"vcl 4.1;
backend gnu @{ .host = \"www.gnu.org\"; @}"))
(operating-system
...
;; @dots{}
(services (cons (service varnish-service-type
(varnish-configuration
(listen '(":80"))
@ -24327,6 +24335,57 @@ The port to bind the server to.
@end table
@end deftp
@node Guix Services
@subsection Guix Services
@subsubheading Guix Data Service
The @uref{http://data.guix.gnu.org,Guix Data Service} processes, stores
and provides data about GNU Guix. This includes information about
packages, derivations and lint warnings.
The data is stored in a PostgreSQL database, and available through a web
interface.
@defvar {Scheme Variable} guix-data-service-type
Service type for the Guix Data Service. Its value must be a
@code{guix-data-service-configuration} object. The service optionally
extends the getmail service, as the guix-commits mailing list is used to
find out about changes in the Guix git repository.
@end defvar
@deftp {Data Type} guix-data-service-configuration
Data type representing the configuration of the Guix Data Service.
@table @asis
@item @code{package} (default: @code{guix-data-service})
The Guix Data Service package to use.
@item @code{user} (default: @code{"guix-data-service"})
The system user to run the service as.
@item @code{group} (default: @code{"guix-data-service"})
The system group to run the service as.
@item @code{port} (default: @code{8765})
The port to bind the web service to.
@item @code{host} (default: @code{"127.0.0.1"})
The host to bind the web service to.
@item @code{getmail-idle-mailboxes} (default: @code{#f})
If set, this is the list of mailboxes that the getmail service will be
configured to listen to.
@item @code{commits-getmail-retriever-configuration} (default: @code{#f})
If set, this is the @code{getmail-retriever-configuration} object with
which to configure getmail to fetch mail from the guix-commits mailing
list.
@end table
@end deftp
@node Miscellaneous Services
@subsection Miscellaneous Services

View File

@ -359,8 +359,9 @@ the last argument of `mknod'."
(define* (mount-root-file-system root type
#:key volatile-root?)
"Mount the root file system of type TYPE at device ROOT. If VOLATILE-ROOT?
is true, mount ROOT read-only and make it a overlay with a writable tmpfs
using the kernel build-in overlayfs."
is true, mount ROOT read-only and make it an overlay with a writable tmpfs
using the kernel built-in overlayfs."
(if volatile-root?
(begin
(mkdir-p "/real-root")

View File

@ -71,8 +71,7 @@ COMPRESS? is true, compress it using GZIP. On success, return OUTPUT."
(cpio:write-cpio-archive files port
#:file->header cpio:file->cpio-header*)))
(or (not compress?)
(if compress?
;; Gzip insists on adding a '.gz' suffix and does nothing if the input
;; file already has that suffix. Shuffle files around to placate it.
(let* ((gz-suffix? (string-suffix? ".gz" output))
@ -88,7 +87,6 @@ COMPRESS? is true, compress it using GZIP. On success, return OUTPUT."
(unless gz-suffix?
(rename-file (string-append output ".gz") output))
output)))
output))
(define (cache-compiled-file-name file)

View File

@ -150,14 +150,16 @@ namespace, in addition to essential bind-mounts such /proc."
(when log-file
;; Create LOG-FILE so we can map it in the container.
(unless (file-exists? log-file)
(call-with-output-file log-file (const #t))))
(call-with-output-file log-file (const #t))
(when user
(let ((pw (getpwnam user)))
(chown log-file (passwd:uid pw) (passwd:gid pw))))))
(let ((pid (run-container container-directory
mounts namespaces 1
(lambda ()
(mkdir-p "/var/run")
(clean-up pid-file)
(clean-up log-file)
(exec-command command
#:user user

View File

@ -587,7 +587,6 @@ edit it."
disks))
(new-user-partitions
(remove-user-partition-by-disk user-partitions item)))
(disk-destroy item)
`((disks . ,(cons new-disk other-disks))
(user-partitions . ,new-user-partitions)))
`((disks . ,disks)
@ -625,7 +624,7 @@ edit it."
info-text)))
(case result
((1)
(disk-delete-all item)
(disk-remove-all-partitions item)
`((disks . ,disks)
(user-partitions
. ,(remove-user-partition-by-disk user-partitions item))))
@ -649,7 +648,7 @@ edit it."
(let ((new-user-partitions
(remove-user-partition-by-partition user-partitions
item)))
(disk-delete-partition disk item)
(disk-remove-partition* disk item)
`((disks . ,disks)
(user-partitions . ,new-user-partitions))))
(else
@ -696,9 +695,7 @@ by pressing the Exit button.~%~%")))
#f))
(check-user-partitions user-partitions))))
(if user-partitions-ok?
(begin
(for-each (cut disk-destroy <>) disks)
user-partitions)
user-partitions
(run-disk-page disks user-partitions
#:guided? guided?)))
(let* ((result-disks (assoc-ref result 'disks))

View File

@ -64,13 +64,7 @@
user-partition-parted-object
find-esp-partition
data-partition?
metadata-partition?
freespace-partition?
small-freespace-partition?
normal-partition?
extended-partition?
logical-partition?
esp-partition?
boot-partition?
default-esp-mount-point
@ -172,24 +166,6 @@
"Find and return the ESP partition among PARTITIONS."
(find esp-partition? partitions))
(define (data-partition? partition)
"Return #t if PARTITION is a partition dedicated to data (by opposition to
freespace, metadata and protected partition types), return #f otherwise."
(let ((type (partition-type partition)))
(not (any (lambda (flag)
(member flag type))
'(free-space metadata protected)))))
(define (metadata-partition? partition)
"Return #t if PARTITION is a metadata partition, #f otherwise."
(let ((type (partition-type partition)))
(member 'metadata type)))
(define (freespace-partition? partition)
"Return #t if PARTITION is a free-space partition, #f otherwise."
(let ((type (partition-type partition)))
(member 'free-space type)))
(define* (small-freespace-partition? device
partition
#:key (max-size MEBIBYTE-SIZE))
@ -200,21 +176,6 @@ inferior to MAX-SIZE, #f otherwise."
(device-sector-size device))))
(< size max-sector-size)))
(define (normal-partition? partition)
"return #t if partition is a normal partition, #f otherwise."
(let ((type (partition-type partition)))
(member 'normal type)))
(define (extended-partition? partition)
"return #t if partition is an extended partition, #f otherwise."
(let ((type (partition-type partition)))
(member 'extended type)))
(define (logical-partition? partition)
"Return #t if PARTITION is a logical partition, #f otherwise."
(let ((type (partition-type partition)))
(member 'logical type)))
(define (partition-user-type partition)
"Return the type of PARTITION, to be stored in the TYPE field of
<user-partition> record. It can be 'normal, 'extended or 'logical."
@ -813,7 +774,7 @@ cause them to cross."
(define (rmpart disk number)
"Remove the partition with the given NUMBER on DISK."
(let ((partition (disk-get-partition disk number)))
(disk-remove-partition disk partition)))
(disk-remove-partition* disk partition)))
;;
@ -928,12 +889,12 @@ exists."
(if has-extended?
;; msdos - remove everything.
(disk-delete-all disk)
(disk-remove-all-partitions disk)
;; gpt - remove everything but esp if it exists.
(for-each
(lambda (partition)
(and (data-partition? partition)
(disk-remove-partition disk partition)))
(disk-remove-partition* disk partition)))
non-boot-partitions))
(let* ((start-partition
@ -1348,7 +1309,7 @@ USER-PARTITIONS, or return nothing."
(define (init-parted)
"Initialize libparted support."
(probe-all-devices)
(probe-all-devices!)
(exception-set-handler (lambda (exception)
EXCEPTION-OPTION-UNHANDLED)))
@ -1364,7 +1325,6 @@ the devices not to be used before returning."
;; https://mail.gnome.org/archives/commits-list/2013-March/msg18423.html.
(let ((device-file-names (map device-path devices)))
(for-each force-device-sync devices)
(free-all-devices)
(for-each (lambda (file-name)
(let ((in-use? (with-delay-device-in-use? file-name)))
(and in-use?

View File

@ -146,7 +146,8 @@ GNU_SYSTEM_MODULES = \
%D%/packages/diffoscope.scm \
%D%/packages/digest.scm \
%D%/packages/direct-connect.scm \
%D%/packages/disk.scm \
%D%/packages/disk.scm \
%D%/packages/distributed.scm \
%D%/packages/display-managers.scm \
%D%/packages/django.scm \
%D%/packages/djvu.scm \
@ -534,6 +535,7 @@ GNU_SYSTEM_MODULES = \
%D%/services/authentication.scm \
%D%/services/games.scm \
%D%/services/getmail.scm \
%D%/services/guix.scm \
%D%/services/kerberos.scm \
%D%/services/lirc.scm \
%D%/services/virtualization.scm \
@ -598,6 +600,7 @@ GNU_SYSTEM_MODULES = \
%D%/tests/desktop.scm \
%D%/tests/dict.scm \
%D%/tests/docker.scm \
%D%/tests/guix.scm \
%D%/tests/monitoring.scm \
%D%/tests/nfs.scm \
%D%/tests/install.scm \
@ -707,7 +710,6 @@ dist_patch_DATA = \
%D%/packages/patches/bash-completion-directories.patch \
%D%/packages/patches/bastet-change-source-of-unordered_set.patch \
%D%/packages/patches/bazaar-CVE-2017-14176.patch \
%D%/packages/patches/beets-python-3.7-fix.patch \
%D%/packages/patches/beignet-correct-file-names.patch \
%D%/packages/patches/benchmark-unbundle-googletest.patch \
%D%/packages/patches/biber-fix-encoding-write.patch \
@ -763,6 +765,8 @@ dist_patch_DATA = \
%D%/packages/patches/dbus-c++-gcc-compat.patch \
%D%/packages/patches/dbus-c++-threading-mutex.patch \
%D%/packages/patches/dealii-mpi-deprecations.patch \
%D%/packages/patches/debops-constants-for-external-program-names.patch \
%D%/packages/patches/debops-debops-defaults-fall-back-to-less.patch \
%D%/packages/patches/deja-dup-use-ref-keyword-for-iter.patch \
%D%/packages/patches/dfu-programmer-fix-libusb.patch \
%D%/packages/patches/diffutils-gets-undeclared.patch \
@ -824,9 +828,6 @@ dist_patch_DATA = \
%D%/packages/patches/flint-ldconfig.patch \
%D%/packages/patches/foomatic-filters-CVE-2015-8327.patch \
%D%/packages/patches/foomatic-filters-CVE-2015-8560.patch \
%D%/packages/patches/freeimage-CVE-2015-0852.patch \
%D%/packages/patches/freeimage-CVE-2016-5684.patch \
%D%/packages/patches/freeimage-fix-build-with-gcc-5.patch \
%D%/packages/patches/freeimage-unbundle.patch \
%D%/packages/patches/fuse-overlapping-headers.patch \
%D%/packages/patches/gawk-shell.patch \
@ -901,10 +902,11 @@ dist_patch_DATA = \
%D%/packages/patches/glibc-versioned-locpath.patch \
%D%/packages/patches/glibc-2.27-git-fixes.patch \
%D%/packages/patches/glibc-2.28-git-fixes.patch \
%D%/packages/patches/glibc-2.28-supported-locales.patch \
%D%/packages/patches/glibc-2.29-git-updates.patch \
%D%/packages/patches/glibc-supported-locales.patch \
%D%/packages/patches/glibc-2.27-supported-locales.patch \
%D%/packages/patches/glibc-2.28-supported-locales.patch \
%D%/packages/patches/glibc-supported-locales.patch \
%D%/packages/patches/glm-restore-install-target.patch \
%D%/packages/patches/glusterfs-use-PATH-instead-of-hardcodes.patch \
%D%/packages/patches/gmp-arm-asm-nothumb.patch \
%D%/packages/patches/gmp-faulty-test.patch \
@ -972,8 +974,8 @@ dist_patch_DATA = \
%D%/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch \
%D%/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch \
%D%/packages/patches/id3lib-CVE-2007-4460.patch \
%D%/packages/patches/idris-test-no-node.patch \
%D%/packages/patches/ilmbase-fix-tests.patch \
%D%/packages/patches/ilmbase-openexr-pkg-config.patch \
%D%/packages/patches/inkscape-poppler-0.76.patch \
%D%/packages/patches/intltool-perl-compatibility.patch \
%D%/packages/patches/irrlicht-use-system-libs.patch \
@ -1180,7 +1182,6 @@ dist_patch_DATA = \
%D%/packages/patches/osip-CVE-2017-7853.patch \
%D%/packages/patches/ots-no-include-missing-file.patch \
%D%/packages/patches/owncloud-disable-updatecheck.patch \
%D%/packages/patches/p11-kit-jks-timestamps.patch \
%D%/packages/patches/p7zip-CVE-2016-9296.patch \
%D%/packages/patches/p7zip-CVE-2017-17969.patch \
%D%/packages/patches/p7zip-remove-unused-code.patch \

View File

@ -26,6 +26,7 @@
;;; Copyright © 2019 Brett Gilio <brettg@posteo.net>
;;; Copyright © 2019 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.lonestar.org>
;;; Copyright © 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -60,6 +61,7 @@
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages check)
#:use-module (gnu packages crypto)
#:use-module (gnu packages cyrus-sasl)
#:use-module (gnu packages dns)
#:use-module (gnu packages file)
@ -112,6 +114,7 @@
#:use-module (gnu packages boost)
#:use-module (gnu packages elf)
#:use-module (gnu packages mpi)
#:use-module (gnu packages version-control)
#:use-module (gnu packages web))
(define-public aide
@ -1903,6 +1906,101 @@ ad hoc task execution, and multinode orchestration---including trivializing
things like zero-downtime rolling updates with load balancers.")
(license license:gpl3+)))
(define-public debops
(package
(name "debops")
(version "1.1.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/debops/debops")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "052b2dykdn35pdpn9s4prawl6nl6yzih8nyf54hpvhpisvjrm1v5"))
(patches
(search-patches "debops-constants-for-external-program-names.patch"
"debops-debops-defaults-fall-back-to-less.patch"))))
(build-system python-build-system)
(native-inputs
`(("git" ,git)))
(inputs
`(("ansible" ,ansible)
("encfs" ,encfs)
("fuse" ,fuse)
("util-linux" ,util-linux) ;; for umount
("findutils" ,findutils)
("gnupg" ,gnupg)
("which" ,which)))
(propagated-inputs
`(("python-future" ,python-future)
("python-distro" ,python-distro)))
(arguments
`(#:tests? #f
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'nuke-debops-update
(lambda _
(chmod "bin/debops-update" #o755) ; FIXME work-around git-fetch issue
(with-output-to-file "bin/debops-update"
(lambda ()
(format #t "#!/bin/sh
echo 'debops is installed via guix. guix-update is useless in this case.
Please use `guix package -u debops` instead.'")))
#t))
;; patch shebangs only in actuall scripts, not in files included in
;; roles (which are to be delivered to the targte systems)
(delete `patch-generated-file-shebangs)
(replace 'patch-source-shebangs
(lambda _
(for-each patch-shebang
(find-files "bin"
(lambda (file stat)
;; Filter out symlinks.
(eq? 'regular (stat:type stat)))
#:stat lstat))))
(add-after 'unpack 'fix-paths
(lambda _
(define (substitute-program-names file)
;; e.g. ANSIBLE_PLAYBOOK = '/gnu/store/…/bin/ansible-playbook'
(for-each
(lambda (name)
(let ((varname (string-upcase
(string-map
(lambda (c) (if (char=? c #\-) #\_ c))
name))))
(substitute* file
(((string-append "^(" varname " = )'.*'") line prefix)
(string-append prefix "'" (which name) "'")))))
'("ansible-playbook" "encfs" "find" "fusermount"
"umount" "gpg" "ansible" "which")))
(for-each substitute-program-names
'("bin/debops"
"bin/debops-padlock"
"bin/debops-task"
"debops/__init__.py"
"debops/cmds/__init__.py"))
#t)))))
(home-page "https://www.debops.org/")
(synopsis "Collection of general-purpose Ansible roles")
(description "The Ansible roles provided by that can be used to manage
Debian or Ubuntu hosts. In addition, a default set of Ansible playbooks can
be used to apply the provided roles in a controlled way, using Ansible
inventory groups.
The roles are written with a high customization in mind, which can be done
using Ansible inventory. This way the role and playbook code can be shared
between multiple environments, with different configuration in to each one.
Services can be managed on a single host, or spread between multiple hosts.
DebOps provides support for different SQL and NoSQL databases, web servers,
programming languages and specialized applications useful in a data center
environment or in a cluster. The project can also be used to deploy
virtualization environments using KVM/libvirt, Docker or LXC technologies to
manage virtual machines and/or containers.")
(license license:gpl3+)))
(define-public emacs-ansible-doc
(let ((commit "86083a7bb2ed0468ca64e52076b06441a2f8e9e0"))
(package

View File

@ -357,7 +357,7 @@ menu to select one of the installed operating systems.")
(define-public dtc
(package
(name "dtc")
(version "1.5.0")
(version "1.5.1")
(source (origin
(method url-fetch)
(uri (string-append
@ -365,7 +365,7 @@ menu to select one of the installed operating systems.")
"dtc-" version ".tar.xz"))
(sha256
(base32
"0wh10p42hf5403ipvs0dsxddb6kzfyk2sq4fgid9zqzpr51y8wn6"))))
"07q3mdsvl4smbiakriq3hnsyyd0q344lsm306q0kgz4hjq1p82v6"))))
(build-system gnu-build-system)
(native-inputs
`(("bison" ,bison)
@ -379,6 +379,11 @@ menu to select one of the installed operating systems.")
(arguments
`(#:make-flags
(list "CC=gcc"
;; /bin/fdt{get,overlay,put} need help finding libfdt.so.1.
(string-append "LDFLAGS=-Wl,-rpath="
(assoc-ref %outputs "out") "/lib")
(string-append "PREFIX=" (assoc-ref %outputs "out"))
(string-append "SETUP_PREFIX=" (assoc-ref %outputs "out"))
"INSTALL=install")

View File

@ -35,7 +35,7 @@
(define-public keepalived
(package
(name "keepalived")
(version "2.0.5")
(version "2.0.18")
(source (origin
(method url-fetch)
(uri (string-append
@ -43,7 +43,7 @@
version ".tar.gz"))
(sha256
(base32
"021a7c1lq4aqx7dbwhlm5km6w039hapfzp5hf6wb5bfq79s25g38"))))
"1l2g0bzzbah9svfpwa0b9dgvwfv85r2y3qdr54822hg5p2qs48ql"))))
(build-system gnu-build-system)
(arguments
'(#:phases
@ -52,7 +52,7 @@
(lambda _
(invoke "make" "-C" "doc" "texinfo")
;; Put images in a subdirectory as recommended by 'texinfo'.
(install-file "doc/build/texinfo/software_design.png"
(install-file "doc/source/images/software_design.png"
"doc/build/texinfo/keepalived-figures")
(substitute* "doc/build/texinfo/keepalived.texi"
(("@image\\{software_design,")
@ -63,7 +63,7 @@
(let* ((out (assoc-ref outputs "out"))
(infodir (string-append out "/share/info")))
(install-file "doc/build/texinfo/keepalived.info" infodir)
(install-file "doc/build/texinfo/software_design.png"
(install-file "doc/source/images/software_design.png"
(string-append infodir "/keepalived-figures"))
#t))))))
(native-inputs
@ -74,7 +74,7 @@
`(("openssl" ,openssl)
("libnfnetlink" ,libnfnetlink)
("libnl" ,libnl)))
(home-page "http://www.keepalived.org/")
(home-page "https://www.keepalived.org/")
(synopsis "Load balancing and high-availability frameworks")
(description
"Keepalived provides frameworks for both load balancing and high

View File

@ -22,7 +22,7 @@
;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;;
;;; This file is part of GNU Guix.
@ -48,6 +48,7 @@
#:use-module (guix git-download)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
#:use-module (gnu packages)
#:use-module (gnu packages assembly)
#:use-module (gnu packages autotools)
@ -2048,3 +2049,50 @@ external compressors: the compressor to be used for each format is configurable
at run time, and must be installed separately.")
(license (list license:bsd-2 ; arg_parser.{cc,h}
license:gpl2+)))) ; the rest
(define-public makeself-safeextract
(let ((commit "1a95e121fa8e3c02d307ae37b9b7834e616c3683"))
(package
(name "makeself-safeextract")
(version (git-version "0.0.0" "1" commit))
(home-page "https://github.com/ssokolow/makeself_safeextract")
(source
(origin
(method git-fetch)
(uri (git-reference
(url home-page)
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"1anlinaj9lvfi8bn00wp11vzqq0f9sig4fm9yrspisx31v0z4a2c"))))
(build-system trivial-build-system)
(inputs
`(("python" ,python-2)
("p7zip" ,p7zip)
("unzip" ,unzip)))
(arguments
`(#:modules ((guix build utils))
#:builder
(begin
(use-modules (guix build utils))
(let* ((name "makeself_safeextract")
(source (string-append (assoc-ref %build-inputs "source")
"/" name ".py"))
(bin (string-append (assoc-ref %outputs "out") "/bin"))
(target (string-append bin "/" name))
(python (string-append (assoc-ref %build-inputs "python") "/bin"))
(7z (string-append (assoc-ref %build-inputs "p7zip") "/bin/7z"))
(unzip (string-append (assoc-ref %build-inputs "unzip") "/bin/unzip")))
(setenv "PATH" (string-append (getenv "PATH") ":" python))
(mkdir-p bin)
(copy-file source target)
(substitute* target
(("'7z'") (format #f "'~a'" 7z))
(("'unzip'") (format #f "'~a'" unzip)))
(patch-shebang target)))))
(synopsis "Extract makeself and mojo archives without running untrusted code")
(description "This package provides a script to unpack self-extracting
archives generated by @command{makeself} or @command{mojo} without running the
possibly untrusted extraction shell script.")
(license license:gpl3+))))

View File

@ -15610,3 +15610,30 @@ deprecated, and defunct). It makes it easy to insert badges corresponding to
these stages in your documentation. Usage of deprecated functions are
signalled with increasing levels of non-invasive verbosity.")
(license license:gpl3)))
(define-public r-assertable
(package
(name "r-assertable")
(version "0.2.6")
(source
(origin
(method url-fetch)
(uri (cran-uri "assertable" version))
(sha256
(base32
"0jjd6ylh26fykzzv1q2lbajzfj07lyxwb3b3xmr2zdg2fp5b2w4c"))))
(build-system r-build-system)
(propagated-inputs
`(("r-data-table" ,r-data-table)))
(home-page "https://cran.r-project.org/web/packages/assertable/")
(synopsis "Verbose assertions for tabular data (data.frames and data.tables)")
(description "This package provides simple, flexible assertions on
data.frame or data.table objects with verbose output for vetting. While other
assertion packages apply towards more general use-cases, @code{assertable} is
tailored towards tabular data. It includes functions to check variable names
and values, whether the dataset contains all combinations of a given set of
unique identifiers, and whether it is a certain length. In addition,
@code{assertable} includes utility functions to check the existence of target
files and to efficiently import multiple tabular data files into one
data.table.")
(license license:gpl3)))

View File

@ -402,7 +402,7 @@ systems. Output format is completely customizable.")
(define-public f3
(package
(name "f3")
(version "7.1")
(version "7.2")
(source
(origin
(method git-fetch)
@ -411,8 +411,7 @@ systems. Output format is completely customizable.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"0zglsmz683jg7f9wc6vmgljyg9w87pbnjw5x4w6x02w8233zvjqf"))))
(base32 "1iwdg0r4wkgc8rynmw1qcqz62l0ldgc8lrazq33msxnk5a818jgy"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; no check target

View File

@ -0,0 +1,95 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019 Brant Gardner <brantcgardner@brantware.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 (gnu packages distributed)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system gnu)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
#:use-module (gnu packages databases)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages tls)
#:use-module (gnu packages curl)
#:use-module (gnu packages wxwidgets)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gtk)
#:use-module (gnu packages perl)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz))
(define-public boinc-client
(package
(name "boinc-client")
(version "7.16.1")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/boinc/boinc.git")
(commit (string-append "client_release/"
"7.16/"
version))))
(sha256
(base32
"0w2qimcwyjhapk3z7zyq7jkls23hsnmm35iw7m4s4if04fp70dx0"))))
(build-system gnu-build-system)
(arguments '(#:configure-flags '("--disable-server")))
(inputs `(("openssl" ,openssl)
("curl" ,curl)
("wxwidgets" ,wxwidgets)
("gtk+" ,gtk+)
("gdk-pixbuf" ,gdk-pixbuf)
("libnotify" ,libnotify)
("sqlite" ,sqlite)
("python" ,python)
("python-pyserial" ,python-pyserial)))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)
("pkg-config" ,pkg-config)))
(synopsis "BOINC lets you help cutting-edge science research using your computer")
(description "BOINC is a platform for high-throughput computing on a large
scale (thousands or millions of computers). It can be used for volunteer
computing (using consumer devices) or grid computing (using organizational
resources). It supports virtualized, parallel, and GPU-based applications.
BOINC is distributed under the LGPL open source license. It can be used for
commercial purposes, and applications need not be open source.")
(home-page "https://boinc.berkeley.edu/")
(license license:gpl3+)))
(define-public boinc-server
(package (inherit boinc-client)
(name "boinc-server")
(arguments '(#:configure-flags '("--disable-client" "--disable-manager")
#:parallel-build? #f
#:tests? #f)) ; FIXME: Looks like bad test syntax in the
; source package, 2 tests fail. Disable for
; now.
(inputs `(("openssl" ,openssl)
("curl" ,curl)
("mariadb" ,mariadb)
("zlib" ,zlib)))
(propagated-inputs `(("python" ,python-wrapper)
("perl" ,perl)))))

View File

@ -89,6 +89,7 @@
#:use-module (gnu packages cmake)
#:use-module (gnu packages code)
#:use-module (gnu packages databases)
#:use-module (gnu packages dictionaries)
#:use-module (gnu packages emacs)
#:use-module (gnu packages guile)
#:use-module (gnu packages gtk)
@ -771,32 +772,45 @@ supports type hints, definition-jumping, completion, and more.")
(license license:gpl3+))))
(define-public emacs-flycheck
(package
(name "emacs-flycheck")
(version "31")
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/flycheck/flycheck/releases/download/"
version "/flycheck-" version ".tar"))
(sha256
(base32
"01rnwan16m7cyyrfca3c5c60mbj2r3knkpzbhji2fczsf0wns240"))
(modules '((guix build utils)))
(snippet `(begin
;; Change 'flycheck-version' so that it does not
;; attempt to get its version from pkg-info.el.
(substitute* "flycheck.el"
(("\\(pkg-info-version-info 'flycheck\\)")
(string-append "\"" ,version "\"")))
#t))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-dash" ,emacs-dash)))
(home-page "https://www.flycheck.org")
(synopsis "On-the-fly syntax checking")
(description
"This package provides on-the-fly syntax checking for GNU Emacs. It is a
;; last release version was more than 300 commits ago
(let ((commit "0006a59259ebd02c9199ddc87f0e3ce22793a2ea")
(revision "1"))
(package
(name "emacs-flycheck")
(version (git-version "31" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/flycheck/flycheck/")
(commit commit)))
(sha256
(base32
"09q3h6ldpg528cfbmsbb1x2vf5hmzgm3fshqn6kdy144jxcdjlf1"))
(file-name (git-file-name name version))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-dash" ,emacs-dash)))
(native-inputs
`(("emacs-shut-up" ,emacs-shut-up)))
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'change-flycheck-version
(lambda _
(substitute* "flycheck.el"
(("\\(pkg-info-version-info 'flycheck\\)")
(string-append "\"" ,version "\"")))
#t)))
;; TODO: many failing tests
#:tests? #f
#:test-command '("emacs" "-Q" "--batch" "-L" "."
"--load" "test/flycheck-test"
"--load" "test/run.el"
"-f" "flycheck-run-tests-main")))
(home-page "https://www.flycheck.org")
(synopsis "On-the-fly syntax checking")
(description
"This package provides on-the-fly syntax checking for GNU Emacs. It is a
replacement for the older Flymake extension which is part of GNU Emacs, with
many improvements and additional features.
@ -804,7 +818,7 @@ Flycheck provides fully-automatic, fail-safe, on-the-fly background syntax
checking for over 30 programming and markup languages with more than 70
different tools. It highlights errors and warnings inline in the buffer, and
provides an optional IDE-like error list.")
(license license:gpl3+))) ;+GFDLv1.3+ for the manual
(license license:gpl3+)))) ;+GFDLv1.3+ for the manual
(define-public emacs-a
(package
@ -3079,6 +3093,60 @@ boundaries defined by syntax highlighting.")
for Flow files.")
(license license:gpl3+))))
(define-public emacs-flycheck-grammalecte
(package
(name "emacs-flycheck-grammalecte")
(version "0.9")
(source (origin
(method url-fetch)
(uri (string-append "https://git.deparis.io/"
"flycheck-grammalecte/snapshot/"
"flycheck-grammalecte-" version ".tar.xz"))
(sha256
(base32
"0wjm9xyra870pci4bcrbnc9x66x18mi7iz08rkxa4clxv28xzryb"))))
(build-system emacs-build-system)
(arguments
`(#:include '("\\.(el|py)$")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-python
;; Hardcode python3 executable in the Emacs library.
(lambda* (#:key inputs #:allow-other-keys)
(let ((python3 (string-append (assoc-ref inputs "python")
"/bin/python3")))
(substitute* "flycheck-grammalecte.el"
(("python3") python3))
#t)))
(add-after 'install 'link-to-grammalecte
;; The package expects grammalecte to be in a sub-directory.
;; Symlink it there from the store.
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((grammalecte (assoc-ref inputs "grammalecte"))
(out (assoc-ref outputs "out"))
(version ,(version-major+minor (package-version python))))
(with-directory-excursion
(string-append out
"/share/emacs/site-lisp/guix.d/"
"flycheck-grammalecte-" ,version)
(symlink (string-append grammalecte "/lib/"
"python" version "/site-packages/"
"grammalecte")
"grammalecte"))
#t))))))
(inputs
`(("grammalecte" ,grammalecte)
("python" ,python)))
(propagated-inputs
`(("emacs-flycheck" ,emacs-flycheck)))
(home-page "https://git.deparis.io/flycheck-grammalecte/")
(synopsis "Integrate Grammalecte with Flycheck")
(description "Integrate the French grammar and typography checker
Grammalecte with Flycheck to automatically look for mistakes in your writings.
It also provides an easy way to find synonyms and antonyms for a given
word (to avoid repetitions for example).")
(license license:gpl3+)))
(define-public emacs-elisp-demos
(package
(name "emacs-elisp-demos")
@ -3484,27 +3552,31 @@ for the current function or variable in the minibuffer.")
(license license:gpl3+)))
(define-public emacs-company-quickhelp
(package
(name "emacs-company-quickhelp")
(version "2.3.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/expez/company-quickhelp.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "08ccsfvwdpzpj0gai3xrdb2bv1nl6myjkxsc5774pbvlq9nkfdvr"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-pos-tip" ,emacs-pos-tip)
("emacs-company" ,emacs-company)))
(home-page "https://github.com/expez/company-quickhelp")
(synopsis "Popup documentation for completion candidates")
(description "@code{company-quickhelp} shows documentation for the
;; XXX: release version 2.3.0 is on an unmaintained branch for some reason,
;; so we use the latest 2.2.0 commit instead
(let ((commit "479676cade80a9f03802ca3d956591820ed5c537")
(revision "1"))
(package
(name "emacs-company-quickhelp")
(version (git-version "2.2.0" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/expez/company-quickhelp.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "0hbqpnaf4hnin3nmdzmfj3v22kk9a97b6zssqs96ns36d9h52xcp"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-pos-tip" ,emacs-pos-tip)
("emacs-company" ,emacs-company)))
(home-page "https://github.com/expez/company-quickhelp")
(synopsis "Popup documentation for completion candidates")
(description "@code{company-quickhelp} shows documentation for the
completion candidate when using the Company text completion framework.")
(license license:gpl3+)))
(license license:gpl3+))))
(define-public emacs-math-symbol-lists
(let ((commit "dc7531cff0c845d5470a50c24d5d7309b2ced7eb")
@ -5822,14 +5894,14 @@ provides the following features:
(name "emacs-markdown-mode")
(version "2.3")
(source (origin
(method url-fetch)
(uri (string-append "https://raw.githubusercontent.com/jrblevin"
"/markdown-mode/v" version
"/markdown-mode.el"))
(file-name (string-append "markdown-mode-" version ".el"))
(method git-fetch)
(uri (git-reference
(url "https://github.com/jrblevin/markdown-mode.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"152whyrq3dqlqy5wv4mdd94kmal19hs5kwaxjcp2gp2r97lsmdmi"))))
"1zm1j4w0f3h01bmmpsv4j4mh6i13nnl8fcqlj2hsa1ncy1lgi8q7"))))
(build-system emacs-build-system)
(home-page "http://jblevins.org/projects/markdown-mode/")
(synopsis "Emacs Major mode for Markdown files")
@ -6184,16 +6256,21 @@ completion, interactive development and more.")
(name "emacs-rainbow-delimiters")
(version "2.1.3")
(source (origin
(method url-fetch)
(uri (string-append "https://raw.githubusercontent.com/Fanael"
"/rainbow-delimiters/" version
"/rainbow-delimiters.el"))
(file-name (string-append "rainbow-delimiters-" version ".el"))
(method git-fetch)
(uri (git-reference
(url "https://github.com/Fanael/rainbow-delimiters.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"1b3kampwsjabhcqdp0khgff13wc5jqhy3rbvaa12vnv7qy22l9ck"))))
"0vs9pf8lqq5p5qz1770pxgw47ym4xj8axxmwamn66br59mykdhv0"))))
(build-system emacs-build-system)
(home-page "https://github.com/Fanael/rainbow-delimiters")
(arguments
`(#:tests? #t
#:test-command '("emacs" "-Q" "-batch"
"-l" "rainbow-delimiters-test.el"
"-f" "ert-run-tests-batch-and-exit")))
(synopsis "Highlight brackets according to their depth")
(description
"Rainbow-delimiters is a \"rainbow parentheses\"-like mode for Emacs which
@ -6342,15 +6419,16 @@ that uses the standard completion function completing-read.")
(define-public emacs-yaml-mode
(package
(name "emacs-yaml-mode")
(version "0.0.13")
(version "0.0.14")
(source (origin
(method url-fetch)
(uri (string-append "https://raw.githubusercontent.com/yoshiki"
"/yaml-mode/v" version "/yaml-mode.el"))
(file-name (string-append "yaml-mode-" version ".el"))
(method git-fetch)
(uri (git-reference
(url "https://github.com/yoshiki/yaml-mode.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"0im88sk9dqw03x6d6zaspgvg9i0pfpgb8f2zygrmbifh2w4pwmvj"))))
"18g064ardqi1f3xz7j6rs1x9fvv9sn0iq9vgid8c6qvxq7gwj00r"))))
(build-system emacs-build-system)
(home-page "https://github.com/yoshiki/yaml-mode")
(synopsis "Major mode for editing YAML files")
@ -6392,13 +6470,14 @@ via @code{gitlab-ci-lint}.")
(name "emacs-web-mode")
(version "16")
(source (origin
(method url-fetch)
(uri (string-append "https://raw.githubusercontent.com/fxbois"
"/web-mode/v" version "/web-mode.el"))
(file-name (string-append "web-mode-" version ".el"))
(method git-fetch)
(uri (git-reference
(url "https://github.com/fxbois/web-mode.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"1hs5w7kdvcyn4ihyw1kfjg48djn5p7lz4rlbhzzdqv1g56xqx3gw"))))
"17dw6a8d0p304f2sa4f9zwd8r48w2wbkc3fvbmxwlg4w12h7cwf0"))))
(build-system emacs-build-system)
(synopsis "Major mode for editing web templates")
(description "Web-mode is an Emacs major mode for editing web templates
@ -7094,6 +7173,9 @@ pasting into and from @code{tmux} paste buffers.")
"1r8shfdddys9vqvrxf7s6z83ydqx9xhqs9sa7klbsajryqcp50b7"))))
(build-system emacs-build-system)
(propagated-inputs `(("emacs-evil" ,emacs-evil)))
(arguments
`(#:tests? #t
#:test-command '("make" "test")))
(home-page "https://github.com/redguardtoo/evil-nerd-commenter")
(synopsis "Comment and uncomment lines efficiently")
(description
@ -7449,42 +7531,75 @@ editing nginx config files.")
(license license:gpl2+)))
(define-public emacs-stream
(package
(name "emacs-stream")
(version "2.2.0")
(home-page "https://github.com/NicolasPetton/stream")
(source
(origin
(method url-fetch)
(file-name (string-append name "-" version ".tar.gz"))
(uri (string-append home-page "/archive/"version ".tar.gz"))
(sha256
(base32 "03ql4nqfz5pn55mjly6clhvc3g7x2d28kj7mrlqmigvjbql39xxc"))))
(build-system emacs-build-system)
(synopsis "Implementation of streams for Emacs")
(description "This library provides an implementation of streams for Emacs.
Streams are implemented as delayed evaluation of cons cells.")
(license license:gpl3+)))
(define-public emacs-el-search
(let ((commit "f26277bfbb3fc3fc74beea6592f294c439796bd4")
(let ((commit "a3f3da155a49c133e2692bd8789b35492bfdc4f7")
(revision "1"))
(package
(name "emacs-el-search")
;; No ufficial release.
(version (string-append "0.0-" revision "." (string-take commit 7)))
(home-page "https://github.com/emacsmirror/el-search")
(name "emacs-stream")
(version (git-version "2.2.4" revision commit))
(source
(origin
(method git-fetch)
(file-name (string-append name "-" version ".tar.gz"))
(uri (git-reference
(commit commit)
(url (string-append home-page ".git"))))
(url "https://github.com/Emacsmirror/stream.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "12xf40h9sb7xxg2r97gsia94q02543mgiiiw46fzh1ac7b7993g6"))))
(base32 "0aig0yjb9z752ijh0mzildjmh44j051inchga8qll01dr8wf7332"))))
(build-system emacs-build-system)
(inputs `(("emacs-stream" ,emacs-stream)))
(arguments
`(#:tests? #t
#:test-command '("emacs" "--batch"
"-l" "tests/stream-tests.el"
"-f" "ert-run-tests-batch-and-exit")))
(home-page "https://github.com/Emacsmirror/stream")
(synopsis "Implementation of streams for Emacs")
(description "This library provides an implementation of streams for Emacs.
Streams are implemented as delayed evaluation of cons cells.")
(license license:gpl3+))))
(define-public emacs-cl-print
(let ((commit "1a70c553dfb04352afb5b8696fe0cef8acc8f991")
(revision "1"))
(package
(name "emacs-cl-print")
(version (git-version "1.0" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/emacsmirror/cl-print.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "164zbnsi5mssvcpy0158fm7fw5cmd1r5nkpn29fmd2b2scy3gm79"))))
(build-system emacs-build-system)
(home-page "https://github.com/emacsmirror/cl-print")
(synopsis "CL-style generic printing")
(description "This package provides a generic function,
@code{cl-print-object}, to which the programmer can add any method they
please.")
(license license:gpl3+))))
(define-public emacs-el-search
(let ((commit "07bed84dd8ae9e4c6c648834224b1d33fdbd51e0")
(revision "2"))
(package
(name "emacs-el-search")
(version (git-version "1.12.6.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/emacsmirror/el-search.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "10w1ldgijdhfsrazp0y3bm76jv5wvdn94k1yp0pmc2m1896b58ak"))))
(build-system emacs-build-system)
(inputs
`(("emacs-stream" ,emacs-stream)
("emacs-cl-print" ,emacs-cl-print)))
(home-page "https://github.com/emacsmirror/el-search")
(synopsis "Expression based interactive search for emacs-lisp-mode")
(description "This package provides expression based interactive search
procedures for emacs-lisp-mode.")
@ -8604,14 +8719,14 @@ which code derived from Kelvin H's org-page.")
(define-public emacs-xelb
(package
(name "emacs-xelb")
(version "0.17")
(version "0.18")
(source (origin
(method url-fetch)
(uri (string-append "https://elpa.gnu.org/packages/xelb-"
version ".tar"))
(sha256
(base32
"0k98580vq253fjdgklgqlwl450saninfw39fbq8lv3xsnp3dcgml"))))
"1fp5mzl63sh0h3ws4l5p4qgvi7ny8a3fj6k4dhqa98xgw2bx03v7"))))
(build-system emacs-build-system)
;; The following functions and variables needed by emacs-xelb are
;; not included in emacs-minimal:
@ -8643,7 +8758,7 @@ It should enable you to implement low-level X11 applications.")
(define-public emacs-exwm
(package
(name "emacs-exwm")
(version "0.22")
(version "0.23")
(synopsis "Emacs X window manager")
(source (origin
(method url-fetch)
@ -8651,7 +8766,7 @@ It should enable you to implement low-level X11 applications.")
version ".tar"))
(sha256
(base32
"0lppm8ng37i5s4x7xdrxhjbdcnpl6pyvn4g7w52zbckjsn8qnqh0"))))
"05w1v3wrp1lzz20zd9lcvr5nhk809kgy6svvkbs15xhnr6x55ad5"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-xelb" ,emacs-xelb)))
@ -8926,6 +9041,9 @@ pressed simultaneously or a single key quickly pressed twice.")
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-evil" ,emacs-evil)))
(arguments
`(#:tests? #t
#:test-command '("make" "test")))
(home-page "https://github.com/emacs-evil/evil-surround")
(synopsis "Easily modify surrounding parentheses and quotes")
(description "@code{emacs-evil-surround} allows easy deletion, change and
@ -9794,12 +9912,11 @@ well as Github-style emojis like @code{:smile:}. It provides a minor mode
(license license:gpl3+)))
(define-public emacs-make-it-so
(let ((commit "bc3b01d6b9ed6ff66ebbd524234f9d6df60dd4be")
(version "0.1.0")
(revision "1"))
(let ((commit "b73dfb640588123c9eece230ad72b37604f5c126")
(revision "2"))
(package
(name "emacs-make-it-so")
(version (git-version version revision commit))
(version (git-version "0.1.0" revision commit))
(source
(origin
(method git-fetch)
@ -9808,7 +9925,7 @@ well as Github-style emojis like @code{:smile:}. It provides a minor mode
(commit commit)))
(sha256
(base32
"0833bzlscpnkvjnrg3g54yr246afbjwri8n5wxk8drnsq6acvd8z"))))
"0p6xhyinzzkrwzbpxqfm8hlii0ikvmmylya240bwsa77w0g1k6xq"))))
(build-system emacs-build-system)
(arguments
`(#:include (cons "^recipes/" %default-include)))
@ -9907,6 +10024,12 @@ database of references on life sciences.")
(base32
"1dgrf7na6r6mmkknphzshlbd5fnzisg0qn0j7vfpa38wgsymaq52"))))
(build-system emacs-build-system)
(arguments
`(#:tests? #t
;; TODO: also enable websocket-functional-test.el
#:test-command '("emacs" "--batch"
"-l" "websocket-test.el"
"-f" "ert-run-tests-batch-and-exit")))
(home-page "http://elpa.gnu.org/packages/websocket.html")
(synopsis "Emacs WebSocket client and server")
(description "This is an Elisp library for WebSocket clients to talk to
@ -9944,7 +10067,7 @@ value of the access token.")
(define-public emacs-circe
(package
(name "emacs-circe")
(version "2.10")
(version "2.11")
(source
(origin
(method git-fetch)
@ -9953,8 +10076,7 @@ value of the access token.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"10gi14kwxd81blddpvqh95lgmpbfgp0m955naxix3bs3r6a75n4s"))))
(base32 "0cr9flk310yn2jgvj4hbqw9nj5wlfi0fazdkqafzidgz6iq150wd"))))
(build-system emacs-build-system)
(arguments
`(#:tests? #t
@ -10531,7 +10653,7 @@ the format.")
(define-public emacs-nov-el
(package
(name "emacs-nov-el")
(version "0.2.6")
(version "0.2.9")
(source (origin
(method git-fetch)
(uri (git-reference
@ -10540,7 +10662,7 @@ the format.")
(file-name (git-file-name name version))
(sha256
(base32
"188h5gzn1zf443g0b7q5bpmvvpr6ds5h8aci8vxc92py56rhyrvc"))))
"0v01l1p35mcigixs6j4c5bpc7n7bd51kxa0p3l1xl0gr92774yq3"))))
(build-system emacs-build-system)
(arguments
`(#:phases
@ -12625,16 +12747,16 @@ powerful Org contents.")
(define-public emacs-org-re-reveal
(package
(name "emacs-org-re-reveal")
(version "1.0.3")
(version "2.5.1")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/oer/org-re-reveal.git")
(commit "50cc6574c77f12d423f6cd096d8f76feb3673abc")))
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"1v3z30gpimg4spf6zzqwp9b597zxk89h0vpq6xp58js4rjg4ixk8"))))
"1zbz6hbddxbb264ibmhc04cmnpk17kb50jpn5l8878q4hxw5wwy2"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-htmlize" ,emacs-htmlize)
@ -14067,10 +14189,11 @@ Org-mode file, and citations of Zotero items in Pandoc Markdown files.")
(deprecated-package "emacs-evil-ediff" emacs-evil-collection))
(define-public emacs-evil-magit
(let ((commit "e2fec5877994c0c19f0c25fa01f3d22cb0ab38ba"))
(let ((commit "4b66a1db8285457147a5436f209391016a819ea1")
(revision "3"))
(package
(name "emacs-evil-magit")
(version (git-version "0.4.2" "2" commit))
(version (git-version "0.4.2" revision commit))
(source
(origin
(method git-fetch)
@ -14080,11 +14203,17 @@ Org-mode file, and citations of Zotero items in Pandoc Markdown files.")
(file-name (git-file-name name version))
(sha256
(base32
"134v7s03jvbhm70mavwab85r09i68g2a5bvriirh0chz1av2y16v"))))
"0kkmbswfh34k3amfl3v140vsnz1gq4n4mg9g4khjd9yjph3zms4h"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-evil" ,emacs-evil)
("magit" ,emacs-magit)))
(arguments
`(#:tests? #t
#:test-command '("emacs" "-Q" "-batch"
"-L" "."
"-l" "evil-magit-tests"
"-f" "ert-run-tests-batch-and-exit")))
(home-page
"https://github.com/emacs-evil/evil-magit")
(synopsis "Evil-based key bindings for Magit")
@ -14727,21 +14856,21 @@ file.")
(deprecated-package "emacs-wgrep-helm" emacs-wgrep))
(define-public emacs-mu4e-conversation
(let ((commit "e7d4bfcb0d392b0aed1f705ccac2419a168d1f5e"))
(let ((commit "98110bb9c300fc9866dee8e0023355f9f79c9b96")
(revision "5"))
(package
(name "emacs-mu4e-conversation")
(version (git-version "20181126" "4" commit))
(version (git-version "0.0.1" revision commit))
(source
(origin
(method url-fetch)
(uri (string-append
"https://gitlab.com/Ambrevar/mu4e-conversation/"
"repository/archive.tar.gz?ref="
commit))
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/Ambrevar/mu4e-conversation.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"0b52hf9rm2afba9pvgink9bwqm705sk0y5qikp0ff5sk53wqvy29"))))
"080s96jkcw2p288sp1vgds91rgl693iz6hi2dv56p2ih0nnivwlg"))))
(build-system emacs-build-system)
(propagated-inputs
`(("mu" ,mu)))
@ -15066,37 +15195,31 @@ files. It focuses on highlighting the document to improve readability.")
(license license:gpl2+)))
(define-public emacs-rust-mode
(let ((commit
;; Last release is old (2016), use more recent commit to get bug
;; fixes.
"64b4a2450e4d4c47f6307851c9b2598cd2254d68")
(revision "0"))
(package
(name "emacs-rust-mode")
(version (git-version "0.3.0" revision commit))
(source (origin
(method git-fetch)
(uri
(git-reference
(url "https://github.com/rust-lang/rust-mode")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"0pbz36lljgb7bdgx3h3g0pq1nss1kvn8mhk1l3mknsmynd6w4nd8"))))
(build-system emacs-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(replace 'check
(lambda _
(invoke "sh" "run_rust_emacs_tests.sh"))))))
(home-page "https://github.com/rust-lang/rust-mode")
(synopsis "Major Emacs mode for editing Rust source code")
(description "This package provides a major Emacs mode for editing Rust
(package
(name "emacs-rust-mode")
(version "0.4.0")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/rust-lang/rust-mode")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"0bcrklyicxh032rrp585rl5mxd26nb61dp6r5bl935rlcmxzsczh"))))
(build-system emacs-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(replace 'check
(lambda _
(invoke "sh" "run_rust_emacs_tests.sh"))))))
(home-page "https://github.com/rust-lang/rust-mode")
(synopsis "Major Emacs mode for editing Rust source code")
(description "This package provides a major Emacs mode for editing Rust
source code.")
(license (list license:expat
license:asl2.0)))))
(license (list license:expat
license:asl2.0))))
(define-public emacs-ztree
(let ((commit "c54425a094353ec40a8179f9eab3596f76c6cf94"))
@ -15322,10 +15445,11 @@ News homepage.")
(license license:gpl3))))
(define-public emacs-youtube-dl
(let ((commit "7c9d7a7d05b72a7d1b1257a36c5e2b2567b185dd"))
(let ((commit "af877b5bc4f01c04fccfa7d47a2c328926f20ef4")
(revision "2"))
(package
(name "emacs-youtube-dl")
(version (git-version "1.0" "1" commit))
(version (git-version "1.0" "2" commit))
(source
(origin
(method git-fetch)
@ -15335,7 +15459,7 @@ News homepage.")
(file-name (git-file-name name version))
(sha256
(base32
"0mh4s089a4x8s380agzb2306kdp1hl204px1n5rrrrdcls7imnh6"))))
"0zkl9jkjbx0lmp9ylv4rqg1zwqibk053s4rp7s1h0i18nzk7vn8j"))))
(build-system emacs-build-system)
(inputs
`(("youtube-dl" ,youtube-dl)))
@ -15529,6 +15653,30 @@ as better scaling of and anti aliasing of the icons.")
(license
(list license:expat license:gpl3+ license:silofl1.1 license:asl2.0))))
(define-public emacs-wttrin
(let ((commit "df5427ce2a5ad4dab652dbb1c4a1834d7ddc2abc")
(revision "1"))
(package
(name "emacs-wttrin")
(version (git-version "0.2.0" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/bcbcarl/emacs-wttrin.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"1ai655f10iayb4vw0ass2j3x83f4vsv90326mnywkzfl3sxd432z"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-xterm-color" ,emacs-xterm-color)))
(home-page "https://github.com/bcbcarl/emacs-wttrin")
(synopsis "Frontend for weather web service @url{wttr.in}")
(description "This package provides local weather information from
@url{wttr.in}.")
(license license:expat))))
(define-public emacs-powerline
(package
(name "emacs-powerline")
@ -16208,6 +16356,32 @@ mode for editing gnuplot scripts. It provides syntax highlighting,
indentation and a command to plot the file.")
(license license:gpl3+)))
(define-public emacs-cmake-font-lock
(let ((commit "e0ceaaae19c13b66f781512e3295bfc6707b56f4")
(revision "1"))
(package
(name "emacs-cmake-font-lock")
(version (git-version "0.1.5" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/Lindydancer/cmake-font-lock.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"03gsyn95dlmsn15bl353bphi3qy7ccn5bss3f7n97kf38bllh0yf"))))
(build-system emacs-build-system)
(native-inputs
`(("emacs-faceup" ,emacs-faceup)))
(arguments
`(#:include (cons "^admin\\/" %default-include)))
(home-page "https://github.com/Lindydancer/cmake-font-lock")
(synopsis "Advanced type-aware syntax-highlighting for CMake")
(description "This package highlights function arguments in CMake
according to their use.")
(license license:gpl3+))))
(define-public emacs-dtrt-indent
(package
(name "emacs-dtrt-indent")
@ -16597,10 +16771,10 @@ and code peeking.")
("emacs-lsp-mode" ,emacs-lsp-mode)
("emacs-dash" ,emacs-dash)))
(home-page "https://github.com/emacs-lsp/helm-lsp")
(synopsis "Convert keyboard macros to Emacs Lisp")
(synopsis "Provide LSP-enhanced completion for symbols")
(description
"This package displays keyboard macros or latest interactive commands
as Emacs Lisp.")
"This package provides completion for symbols from workspaces with a
LSP-compliant server running.")
(license license:gpl3+))))
(define-public emacs-helm-notmuch
@ -16997,16 +17171,15 @@ compatible with Emacs' shell modes.")
(define-public emacs-vdiff
(let ((commit "09e15fc932bfd2febe1d4a65780a532394562b07")
(version "0.2.3")
(revision "1"))
(package
(name "emacs-vdiff")
(version (git-version version revision commit))
(version (git-version "0.2.3" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/justbur/emacs-vdiff/")
(url "https://github.com/justbur/emacs-vdiff.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
@ -17015,6 +17188,11 @@ compatible with Emacs' shell modes.")
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-hydra" ,emacs-hydra)))
(arguments
`(#:tests? #t
#:test-command '("emacs" "-Q" "-batch" "-L" "."
"-l" "vdiff-test.el"
"-f" "ert-run-tests-batch-and-exit")))
(home-page "https://github.com/justbur/emacs-vdiff/")
(synopsis "Frontend for diffing based on vimdiff")
(description "This package permits comparisons of two or three buffers
@ -17404,26 +17582,73 @@ and searching through @code{Ctags} files.")
copied into @code{org-mode} buffers.")
(license license:gpl3+))))
(define-public emacs-helm-dash
(let ((commit "192b862185df661439a06de644791171e899348a")
(version "1.3.0")
(revision "18"))
(define-public emacs-dash-docs
(let ((commit "111fd9b97001f1ad887b45e5308a14ddd68ce70a")
(revision "1"))
(package
(name "emacs-helm-dash")
(version (git-version version revision commit))
(name "emacs-dash-docs")
(version (git-version "1.4.0" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/areina/helm-dash")
(url "https://github.com/dash-docs-el/dash-docs.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"06am5vnr4hsxkvh2b8q8kb80y5x1h3qyv7gwggswwhfa7w2vba3w"))))
"0sckb7z0ylflva212bns7iq9mfnffgjghi0qspsbfwra35zb9xng"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-helm" ,emacs-helm)))
`(("emacs-async" ,emacs-async)))
(native-inputs
`(("emacs-undercover" ,emacs-undercover)
("emacs-ert-runner" ,emacs-ert-runner)))
(arguments
`(#:tests? #t
#:test-command '("ert-runner")
#:phases
;; this test requires network access, so remove it
(modify-phases %standard-phases
(add-before 'check 'make-tests-writable
(lambda _
(make-file-writable "test/dash-docs-test.el")
#t))
(add-before 'check 'delete-test
(lambda _
(emacs-batch-edit-file "test/dash-docs-test.el"
`(progn (progn
(goto-char (point-min))
(re-search-forward "ert-deftest dash-docs-official-docsets-test")
(beginning-of-line)
(kill-sexp))
(basic-save-buffer)))
#t)))))
(home-page "https://github.com/dash-docs-el/dash-docs")
(synopsis "Offline documentation browser for APIs using Dash docsets")
(description "This package exposes functionality to work with Dash docsets.")
(license license:gpl3+))))
(define-public emacs-helm-dash
(let ((commit "7f853bd34da666f0e9a883011c80f451b06f6c59")
(revision "2"))
(package
(name "emacs-helm-dash")
(version (git-version "1.3.0" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/areina/helm-dash.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"0r192vzry1212ihabg9pgw9xar8zdgnbgy0vsgvfm8s5wj6ny7jp"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-helm" ,emacs-helm)
("emacs-dash-docs" ,emacs-dash-docs)))
(home-page "https://github.com/areina/helm-dash")
(synopsis "Offline documentation browser for APIs using Dash docsets")
(description "This package uses Helm to install and navigate through
@ -17431,28 +17656,26 @@ Dash docsets.")
(license license:gpl3+))))
(define-public emacs-counsel-dash
(let ((commit "07fa74a94ff4da5b6c8c4810f5e143e701b480d2")
(version "0.1.3")
(revision "3"))
(let ((commit "24d370be9e94e90d045c49967e19484b9903fce9")
(revision "2"))
(package
(name "emacs-counsel-dash")
(version (git-version version revision commit))
(version (git-version "0.1.3" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/nathankot/counsel-dash")
(url "https://github.com/dash-docs-el/counsel-dash.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"17h2m9zsadq270mkq12kmdzmpbfjiwjbg8n1rg2apqnm1ndgcwf8"))))
"18gp7hhgng271c7bh06k9p24zqic0f64j5cicivljmyk9c3nh7an"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-helm-dash" ,emacs-helm-dash)
("emacs-dash" ,emacs-dash)
`(("emacs-dash-docs" ,emacs-dash-docs)
("emacs-ivy" ,emacs-ivy)))
(home-page "https://github.com/nathankot/counsel-dash")
(home-page "https://github.com/dash-docs-el/counsel-dash")
(synopsis "Offline documentation browser for APIs using Dash docsets")
(description "This package uses @code{ivy-mode} to install and navigate
through Dash docsets.")
@ -17836,27 +18059,24 @@ commands in @code{evil-mode}.")
(license license:gpl3+))))
(define-public emacs-xterm-color
(let ((commit "a452ab38a7cfae97078062ff8885b5d74fd1e5a6")
(version "1.8")
(revision "1"))
(package
(name "emacs-xterm-color")
(version (git-version version revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/atomontage/xterm-color.git")
(commit commit)))
(sha256
(base32
"02kpajb993yshhjhsizpfcbrcndyzkf4dqfipifhxxng50dhp95i"))
(file-name (git-file-name name version))))
(build-system emacs-build-system)
(home-page "https://github.com/atomontage/xterm-color")
(synopsis "ANSI & xterm-256 color text property translator for Emacs")
(description "@code{xterm-color.el} is an ANSI control sequence to
(package
(name "emacs-xterm-color")
(version "1.9")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/atomontage/xterm-color.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"0i9ivc5xhl5y5v0l18kbhfg8s2abb9zaimyx951b8bc0f5as68xm"))))
(build-system emacs-build-system)
(home-page "https://github.com/atomontage/xterm-color")
(synopsis "ANSI & xterm-256 color text property translator for Emacs")
(description "@code{xterm-color.el} is an ANSI control sequence to
text-property translator.")
(license license:bsd-2))))
(license license:bsd-2)))
(define-public emacs-org-noter
(package

View File

@ -875,30 +875,31 @@ the Raspberry Pi chip.")
(description "This package provides @code{gcc} for VideoCore IV,
the Raspberry Pi chip."))))
(define-public python2-libmpsse
(define-public python-libmpsse
(package
(name "python2-libmpsse")
(version "1.3")
(name "python-libmpsse")
(version "1.4")
(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"))
(method git-fetch)
(uri (git-reference
(url "https://github.com/daym/libmpsse.git")
(commit (string-append "v" version))))
(file-name "libmpsse-checkout")
(sha256
(base32
"0jq7nhqq3na8675jnpfcar3pd3dp3adhhc4lw900swkla01a1wh8"))))
"14f1kiiia4kfd9mzwx4h63aa8bpz9aknbrrr7mychnsp3arw0z25"))))
(build-system gnu-build-system)
(inputs
`(("libftdi" ,libftdi)
("python" ,python-2)))
("python" ,python)))
(native-inputs
`(("pkg-config" ,pkg-config)
("swig" ,swig)
("which" ,base:which)))
(arguments
`(#:tests? #f ; No tests exist.
#:parallel-build? #f ; Would be buggy.
#:make-flags
(list (string-append "CFLAGS=-Wall -fPIC -fno-strict-aliasing -g -O2 "
"$(shell pkg-config --cflags libftdi1)"))
@ -906,28 +907,20 @@ the Raspberry Pi chip."))))
(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))
(let ((python (assoc-ref inputs "python")))
(chdir "src")
(setenv "PYDEV" (string-append python
"/include/python"
,(version-major+minor (package-version python))
"m"))
#t)))
(replace 'install
(lambda* (#:key outputs make-flags #:allow-other-keys #:rest args)
(lambda* (#:key inputs outputs make-flags #:allow-other-keys #:rest args)
(let* ((out (assoc-ref outputs "out"))
(out-python (string-append out
"/lib/python2.7/site-packages"))
"/lib/python"
,(version-major+minor (package-version python))
"/site-packages"))
(install (assoc-ref %standard-phases 'install)))
(install #:make-flags (cons (string-append "PYLIB=" out-python)
make-flags))))))))
@ -938,6 +931,36 @@ MPSSE (Multi-Protocol Synchronous Serial Engine) adapter by FTDI that can do
SPI, I2C, JTAG.")
(license license:gpl2+)))
(define-public python2-libmpsse
(package
(inherit python-libmpsse)
(name "python2-libmpsse")
(arguments
(substitute-keyword-arguments (package-arguments python-libmpsse)
((#:phases phases)
`(modify-phases ,phases
(replace 'set-environment-up
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((python (assoc-ref inputs "python")))
(chdir "src")
(setenv "PYDEV" (string-append python
"/include/python"
,(version-major+minor (package-version python-2))))
#t)))
(replace 'install
(lambda* (#:key inputs outputs make-flags #:allow-other-keys #:rest args)
(let* ((out (assoc-ref outputs "out"))
(out-python (string-append out
"/lib/python"
,(version-major+minor (package-version python-2))
"/site-packages"))
(install (assoc-ref %standard-phases 'install)))
(install #:make-flags (cons (string-append "PYLIB=" out-python)
make-flags)))))))))
(inputs
(alist-replace "python" (list python-2)
(package-inputs python-libmpsse)))))
(define-public picprog
(package
(name "picprog")

View File

@ -1137,7 +1137,7 @@ of use.")
("libxt" ,libxt)
("mygui" ,mygui-gl) ; OpenMW does not need Ogre.
("openal" ,openal)
("openscenegraph" ,openscenegraph)
("openscenegraph" ,openmw-openscenegraph)
("qtbase" ,qtbase)
("sdl" ,sdl2)
("unshield" ,unshield)))

View File

@ -937,7 +937,7 @@ map display. Downloads map data from a number of websites, including
(define-public xygrib
(package
(name "xygrib")
(version "1.2.6")
(version "1.2.6.1")
(source (origin
(method git-fetch)
(uri (git-reference
@ -946,7 +946,7 @@ map display. Downloads map data from a number of websites, including
(file-name (git-file-name name version))
(sha256
(base32
"0qzaaavil2c7mkkai5mg54cv8r452i7psy7cg75qjja96d2d7rbd"))
"0xzsm8pr0zjk3f8j880fg5n82jyxn8xf1330qmmq1fqv7rsrg9ia"))
(modules '((guix build utils)))
(snippet
'(begin (delete-file-recursively "data/fonts") #t))))

View File

@ -10,6 +10,7 @@
;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@ -52,6 +53,7 @@
#:use-module (gnu packages xorg)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix hg-download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system cmake)
#:use-module (guix build-system meson)
@ -809,3 +811,81 @@ applications to 3D accelerator hardware in a dedicated server and displays the
rendered output interactively to a thin client located elsewhere on the
network.")
(license license:wxwindows3.1+)))
(define-public mojoshader
(let ((changeset "5887634ea695"))
(package
(name "mojoshader")
(version (string-append "20190825" "-" changeset))
(source
(origin
(method hg-fetch)
(uri (hg-reference
(url "https://hg.icculus.org/icculus/mojoshader/")
(changeset changeset)))
(file-name (git-file-name name version))
(sha256
(base32 "0ibl4z1696jiifv9j5drir7jm0b5px0vwkwckbi7cfd46p7p6wcy"))))
(arguments
;; Tests only for COMPILER_SUPPORT=ON.
`(#:tests? #f
#:configure-flags '("-DBUILD_SHARED=ON"
"-DFLIP_VIEWPORT=ON"
"-DDEPTH_CLIPPING=ON")
#:phases
(modify-phases %standard-phases
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(lib (string-append out "/lib"))
(header (string-append out "/include")))
(install-file "libmojoshader.so" lib)
(for-each (lambda (f)
(install-file f header))
(find-files "../source" "mojoshader.*\\.h$"))
(let ((profiles-header (string-append header "/profiles")))
(mkdir-p profiles-header)
(rename-file (string-append header "/mojoshader_profile.h")
(string-append profiles-header "/mojoshader_profile.h"))))
#t)))))
(build-system cmake-build-system)
(home-page "https://www.icculus.org/mojoshader/")
(synopsis "Work with Direct3D shaders on alternate 3D APIs")
(description "MojoShader is a library to work with Direct3D shaders on
alternate 3D APIs and non-Windows platforms. The primary motivation is moving
shaders to OpenGL languages on the fly. The developer deals with \"profiles\"
that represent various target languages, such as GLSL or ARB_*_program.
This allows a developer to manage one set of shaders, presumably written in
Direct3D HLSL, and use them across multiple rendering backends. This also
means that the developer only has to worry about one (offline) compiler to
manage program complexity, while MojoShader itself deals with the reduced
complexity of the bytecode at runtime.
MojoShader provides both a simple API to convert bytecode to various profiles,
and (optionally) basic glue to rendering APIs to abstract the management of
the shaders at runtime.")
(license license:zlib))))
(define-public mojoshader-with-viewport-flip
;; Changeset c586d4590241 replaced glProgramViewportFlip with
;; glProgramViewportInfo.
;; https://hg.icculus.org/icculus/mojoshader/rev/c586d4590241
(let ((changeset "2e37299b13d8"))
(package
(inherit mojoshader)
(name "mojoshader-with-viewport-flip")
(version (string-append "20190725" "-" changeset))
(source
(origin
(method hg-fetch)
(uri (hg-reference
(url "https://hg.icculus.org/icculus/mojoshader/")
(changeset changeset)))
(file-name (git-file-name name version))
(sha256
(base32 "0ffws7cqbskxwc3hjsnnzq4r2bbf008kdr3b11pa3kr7dsi50y6i"))))
(synopsis "Work with Direct3D shaders on alternate 3D APIs (with viewport flip)")
(description "This is the last version of the mojoshader library with
the glProgramViewportFlip before it was replaced with glProgramViewportInfo.")
(license license:zlib))))

View File

@ -11,6 +11,7 @@
;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -974,3 +975,37 @@ safe to use from any GObject-Introspectable language.
Template-GLib allows you to access properties on GObjects as well as call
simple methods via GObject-Introspection.")
(license license:lgpl2.1+)))
(define-public xdg-dbus-proxy
(package
(name "xdg-dbus-proxy")
(version "0.1.2")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/flatpak/xdg-dbus-proxy"
"/releases/download/" version
"/xdg-dbus-proxy-" version ".tar.xz"))
(sha256
(base32
"03sj1h0c2l08xa8phw013fnxr4fgav7l2mkjhzf9xk3dykwxcj8p"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
;; For tests.
("dbus" ,dbus)
;; These are required to build the manual.
("docbook-xml" ,docbook-xml-4.3)
("docbook-xsl" ,docbook-xsl)
("libxml2" ,libxml2)
("xsltproc" ,libxslt)))
(inputs
`(("glib" ,glib)))
(home-page "https://github.com/flatpak/xdg-dbus-proxy")
(synopsis "D-Bus connection proxy")
(description
"xdg-dbus-proxy is a filtering proxy for D-Bus connections. It can be
used to create D-Bus sockets inside a Linux container that forwards requests
to the host system, optionally with filters applied.")
(license license:lgpl2.1+)))

View File

@ -15,6 +15,8 @@
;;; Copyright © 2019 Carlo Zancanaro <carlo@zancanaro.id.au>
;;; Copyright © 2019 Steve Sprang <scs@stevesprang.com>
;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -326,18 +328,26 @@ many more.")
(define-public ilmbase
(package
(name "ilmbase")
(version "2.3.0")
(version "2.4.0")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/openexr/openexr/releases"
"/download/v" version "/ilmbase-"
version ".tar.gz"))
(method git-fetch)
(uri (git-reference
(url "https://github.com/openexr/openexr")
(commit (string-append "v" version))))
(file-name (git-file-name "ilmbase" version))
(sha256
(base32
"0qiq5bqq9rxhqjiym2k36sx4vq8adgrz6xf6qwizi9bqm78phsa5"))
(patches (search-patches "ilmbase-fix-tests.patch"))))
(build-system gnu-build-system)
(home-page "http://www.openexr.com/")
"0g3rz11cvb7gnphp2np9z7bfl7v4dprq4w5hnsvx7yrasgsdyn8s"))
(patches (search-patches "ilmbase-fix-tests.patch"
"ilmbase-openexr-pkg-config.patch"))))
(build-system cmake-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
(add-after 'unpack 'change-directory
(lambda _
(chdir "IlmBase")
#t)))))
(home-page "https://www.openexr.com/")
(synopsis "Utility C++ libraries for threads, maths, and exceptions")
(description
"IlmBase provides several utility libraries for C++. Half is a class
@ -408,27 +418,26 @@ graphics.")
(define-public openexr
(package
(name "openexr")
(version "2.3.0")
(version (package-version ilmbase))
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/openexr/openexr/releases"
"/download/v" version "/openexr-"
version ".tar.gz"))
(sha256
(base32
"19jywbs9qjvsbkvlvzayzi81s976k53wg53vw4xj66lcgylb6v7x"))
(inherit (package-source ilmbase))
(file-name (git-file-name "openexr" version))
(modules '((guix build utils)))
(snippet
'(begin
(substitute* (find-files "." "tmpDir\\.h")
(substitute* (find-files "OpenEXR" "tmpDir\\.h")
(("\"/var/tmp/\"")
"\"/tmp/\""))
#t))))
(build-system gnu-build-system)
(build-system cmake-build-system)
(arguments
'(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'disable-broken-test
(add-after 'unpack 'change-directory
(lambda _
(chdir "OpenEXR")
#t))
(add-after 'change-directory 'disable-broken-test
;; This test fails on i686. Upstream developers suggest that
;; this test is broken on i686 and can be safely disabled:
;; https://github.com/openexr/openexr/issues/67#issuecomment-21169748
@ -444,7 +453,7 @@ graphics.")
(propagated-inputs
`(("ilmbase" ,ilmbase) ;used in public headers
("zlib" ,zlib))) ;OpenEXR.pc reads "-lz"
(home-page "http://www.openexr.com")
(home-page "https://www.openexr.com/")
(synopsis "High-dynamic range file format library")
(description
"OpenEXR is a high dynamic-range (HDR) image file format developed for
@ -511,7 +520,7 @@ visual effects work for film.")
(define-public openscenegraph
(package
(name "openscenegraph")
(version "3.6.3")
(version "3.6.4")
(source
(origin
(method git-fetch)
@ -520,7 +529,7 @@ visual effects work for film.")
(commit (string-append "OpenSceneGraph-" version))))
(sha256
(base32
"0h32z15sa8sbq276j0iib0n707m8bs4p5ji9z2ah411446paad9q"))
"0x8hdbzw0b71j91fzp9cwmy9a7ava8v8wwyj8nxijq942vdx1785"))
(file-name (git-file-name name version))))
(properties
`((upstream-name . "OpenSceneGraph")))
@ -539,6 +548,7 @@ visual effects work for film.")
("unzip" ,unzip)))
(inputs
`(("giflib" ,giflib)
("libjpeg" ,libjpeg) ; Required for the JPEG texture plugin.
("jasper" ,jasper)
("librsvg" ,librsvg)
("libxrandr" ,libxrandr)
@ -580,6 +590,42 @@ virtual reality, scientific visualization and modeling.")
`(("libjpeg" ,libjpeg)
,@(package-inputs openscenegraph)))))
(define-public openmw-openscenegraph
;; OpenMW prefers its own fork of openscenegraph:
;; https://wiki.openmw.org/index.php?title=Development_Environment_Setup#OpenSceneGraph.
(let ((commit "36a962845a2c87a6671fd822157e0729d164e940"))
(hidden-package
(package
(inherit openscenegraph)
(version (git-version "3.6" "1" commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/OpenMW/osg/")
(commit commit)))
(file-name (git-file-name (package-name openscenegraph) version))
(sha256
(base32
"05yhgq3qm5q277y32n5sf36vx5nv5qd3zlhz4csgd3a6190jrnia"))))
(arguments
(substitute-keyword-arguments (package-arguments openscenegraph)
((#:configure-flags flags)
;; As per the above wiki link, the following plugins are enough:
`(append
'("-DBUILD_OSG_PLUGINS_BY_DEFAULT=0"
"-DBUILD_OSG_PLUGIN_OSG=1"
"-DBUILD_OSG_PLUGIN_DDS=1"
"-DBUILD_OSG_PLUGIN_TGA=1"
"-DBUILD_OSG_PLUGIN_BMP=1"
"-DBUILD_OSG_PLUGIN_JPEG=1"
"-DBUILD_OSG_PLUGIN_PNG=1"
"-DBUILD_OSG_DEPRECATED_SERIALIZERS=0"
;; The jpeg plugin requires conversion between integers and booleans
"-DCMAKE_CXX_FLAGS=-fpermissive")
,flags))))))))
(define-public povray
(package
(name "povray")

View File

@ -286,6 +286,11 @@ developers consider to have good quality code and correct functionality.")
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; XXX: 13 of 53 tests fail
;; FIXME: OpenEXR 2.4.0 requires C++ 11 or later. Remove when the
;; default compiler is >= GCC 5.
#:make-flags '("CXXFLAGS=-std=gnu++11")
#:configure-flags
(list (string-append "--with-html-dir="
(assoc-ref %outputs "doc")

View File

@ -12,7 +12,7 @@
;;; Copyright © 2016, 2019 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2017 Andy Wingo <wingo@igalia.com>
;;; Copyright © 2017 David Thompson <davet@gnu.org>
;;; Copyright © 2017, 2018 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2017, 2018, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
;;; Copyright © 2017 ng0 <ng0@n0.is>
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
@ -1024,7 +1024,7 @@ microblogging service.")
(define-public guile-parted
(package
(name "guile-parted")
(version "0.0.1")
(version "0.0.2")
(source (origin
(method git-fetch)
(uri (git-reference
@ -1033,7 +1033,7 @@ microblogging service.")
(file-name (git-file-name name version))
(sha256
(base32
"1q7425gpjlwi2wvhzq7kw046yyx7v6j6jyzkd1cr861iz34mjwiq"))))
"01qmv6xnbbq3wih0dl9bscvca2d7zx7bjiqf35y6dkaqsp8nvdxf"))))
(build-system gnu-build-system)
(arguments
'(#:make-flags

View File

@ -62,6 +62,7 @@
#:use-module (guix build-system haskell)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix utils)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages))
@ -6070,6 +6071,24 @@ Megaparsec is a feature-rich package that strikes a nice balance between
speed, flexibility, and quality of parse errors.")
(license license:bsd-2)))
;;; Idris 1.3.2 requires 'megaparse>=7.0.4' but we'd like to keep the public
;;; package at the current Stackage LTS version:
(define-public ghc-megaparsec-7
(hidden-package
(package
(inherit ghc-megaparsec)
(version "7.0.5")
(source
(origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/megaparsec/"
"megaparsec-" version ".tar.gz"))
(sha256
(base32
"0bqx1icbmk8s7wmbcdzsgnlh607c7kzg8l80cp02dxr5valjxp7j"))))
(arguments (strip-keyword-arguments (list #:cabal-revision)
(package-arguments ghc-megaparsec))))))
(define-public ghc-memory
(package
(name "ghc-memory")
@ -6740,6 +6759,24 @@ between 2 and 3 times faster than the Mersenne Twister.")
"This package provides a low-level networking interface.")
(license license:bsd-3)))
;;; Until we update our default GHC to >=8.6 we cannot update our ghc-network
;;; package, since the 'cabal-install' package that supports the current
;;; 'Cabal' module requires 'network==2.6.*'. Here we provide an updated
;;; version to be used for our idris package.
(define-public ghc-network-2.8
(hidden-package
(package
(inherit ghc-network)
(version "2.8.0.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/network/"
"network-" version ".tar.gz"))
(sha256
(base32
"0im8k51rw3ahmr23ny10pshwbz09jfg0fdpam0hzf2hgxnzmvxb1")))))))
(define-public ghc-network-info
(package
(name "ghc-network-info")

View File

@ -38,7 +38,7 @@
(define-public idris
(package
(name "idris")
(version "1.3.1")
(version "1.3.2")
(source (origin
(method url-fetch)
(uri (string-append
@ -46,8 +46,7 @@
"idris-" version "/idris-" version ".tar.gz"))
(sha256
(base32
"0fn9h58l592j72njwma1ia48h8h87wi2rjqfxs7j2lfmvgfv18fi"))
(patches (search-patches "idris-test-no-node.patch"))))
"0wychzkg0yghd2pp8fqz78vp1ayzks191knfpl7mhh8igsmb6bc7"))))
(build-system haskell-build-system)
(native-inputs ;For tests
`(("perl" ,perl)
@ -71,8 +70,8 @@
("ghc-fsnotify" ,ghc-fsnotify)
("ghc-ieee754" ,ghc-ieee754)
("ghc-libffi" ,ghc-libffi)
("ghc-megaparsec" ,ghc-megaparsec)
("ghc-network" ,ghc-network)
("ghc-megaparsec" ,ghc-megaparsec-7)
("ghc-network" ,ghc-network-2.8)
("ghc-optparse-applicative" ,ghc-optparse-applicative)
("ghc-regex-tdfa" ,ghc-regex-tdfa)
("ghc-safe" ,ghc-safe)

View File

@ -269,6 +269,10 @@ integrates with various databases on GUI toolkits such as Qt and Tk.")
"-DWITH_CAROTENE=OFF" ; only visible on arm/aarch64
"-DENABLE_PRECOMPILED_HEADERS=OFF"
;; FIXME: OpenEXR requires C++11 or later. Remove this when
;; the default compiler is GCC 7.
"-DCMAKE_CXX_FLAGS=-std=gnu++11"
;; CPU-Features:
;; See cmake/OpenCVCompilerOptimizations.cmake
;; (CPU_ALL_OPTIMIZATIONS) for a list of all optimizations

View File

@ -419,36 +419,66 @@ lossless JPEG manipulations such as rotation, scaling or cropping:
(patches (search-patches "libjxr-fix-function-signature.patch"
"libjxr-fix-typos.patch"))))
(build-system gnu-build-system)
(arguments '(#:make-flags '("CC=gcc")
#:tests? #f ; no check target
#:phases
(modify-phases %standard-phases
(delete 'configure) ; no configure script
;; The upstream makefile does not include an install phase.
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(lib (string-append out "/lib"))
(include (string-append out "/include/jxrlib")))
(for-each (lambda (file)
(install-file file include)
(delete-file file))
(append
'("jxrgluelib/JXRGlue.h"
"jxrgluelib/JXRMeta.h"
"jxrtestlib/JXRTest.h"
"image/sys/windowsmediaphoto.h")
(find-files "common/include" "\\.h$")))
(for-each (lambda (file)
(install-file file lib)
(delete-file file))
(find-files "." "\\.a$"))
(for-each (lambda (file)
(install-file file bin)
(delete-file file))
'("JxrDecApp" "JxrEncApp")))
#t)))))
(arguments
'(#:make-flags
(list "CC=gcc"
;; A substitute* procedure call would be enough to add the -fPIC
;; flag if there was no file decoding error.
;; The makefile is a "Non-ISO extended-ASCII text, with CRLF line
;; terminators" according to the file(1) utility.
(string-append "CFLAGS=-I. -Icommon/include -Iimage/sys -fPIC "
"-D__ANSI__ -DDISABLE_PERF_MEASUREMENT -w -O "))
#:tests? #f ; no check target
#:phases
(modify-phases %standard-phases
(delete 'configure) ; no configure script
(add-after 'build 'build-shared-library
(lambda _
;; The Makefile uses optimization level 1, so the same
;; level is used here for consistency.
(invoke "gcc" "-shared" "-fPIC" "-O"
;; Common files.
"adapthuff.o" "image.o" "strcodec.o" "strPredQuant.o"
"strTransform.o" "perfTimerANSI.o"
;; Decoding files.
"decode.o" "postprocess.o" "segdec.o" "strdec.o"
"strInvTransform.o" "strPredQuantDec.o" "JXRTranscode.o"
;; Encoding files.
"encode.o" "segenc.o" "strenc.o" "strFwdTransform.o"
"strPredQuantEnc.o"
"-o" "libjpegxr.so")
(invoke "gcc" "-shared" "-fPIC" "-O"
;; Glue files.
"JXRGlue.o" "JXRMeta.o" "JXRGluePFC.o" "JXRGlueJxr.o"
;; Test files.
"JXRTest.o" "JXRTestBmp.o" "JXRTestHdr.o" "JXRTestPnm.o"
"JXRTestTif.o" "JXRTestYUV.o"
"-o" "libjxrglue.so")))
;; The upstream makefile does not include an install phase.
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(lib (string-append out "/lib"))
(include (string-append out "/include/jxrlib")))
(for-each (lambda (file)
(install-file file include)
(delete-file file))
(append
'("jxrgluelib/JXRGlue.h"
"jxrgluelib/JXRMeta.h"
"jxrtestlib/JXRTest.h"
"image/sys/windowsmediaphoto.h")
(find-files "common/include" "\\.h$")))
(for-each (lambda (file)
(install-file file lib)
(delete-file file))
(find-files "." "\\.(a|so)$"))
(for-each (lambda (file)
(install-file file bin)
(delete-file file))
'("JxrDecApp" "JxrEncApp")))
#t)))))
(synopsis "Implementation of the JPEG XR standard")
(description "JPEG XR is an approved ISO/IEC International standard (its
official designation is ISO/IEC 29199-2). This library is an implementation of that standard.")
@ -893,7 +923,7 @@ supplies a generic doubly-linked list and some string functions.")
(define-public freeimage
(package
(name "freeimage")
(version "3.17.0")
(version "3.18.0")
(source (origin
(method url-fetch)
(uri (string-append
@ -903,7 +933,7 @@ supplies a generic doubly-linked list and some string functions.")
".zip"))
(sha256
(base32
"12bz57asdcfsz3zr9i9nska0fb6h3z2aizy412qjqkixkginbz7v"))
"1z9qwi9mlq69d5jipr3v2jika2g0kszqdzilggm99nls5xl7j4zl"))
(modules '((guix build utils)))
(snippet
'(begin
@ -911,12 +941,8 @@ supplies a generic doubly-linked list and some string functions.")
(lambda (dir)
(delete-file-recursively (string-append "Source/" dir)))
'("LibJPEG" "LibOpenJPEG" "LibPNG" "LibRawLite"
;; "LibJXR"
"LibWebP" "OpenEXR" "ZLib"))))
(patches (search-patches "freeimage-unbundle.patch"
"freeimage-CVE-2015-0852.patch"
"freeimage-CVE-2016-5684.patch"
"freeimage-fix-build-with-gcc-5.patch"))))
"LibJXR" "LibWebP" "OpenEXR" "ZLib"))))
(patches (search-patches "freeimage-unbundle.patch"))))
(build-system gnu-build-system)
(arguments
'(#:phases
@ -947,15 +973,18 @@ supplies a generic doubly-linked list and some string functions.")
;; We need '-fpermissive' for Source/FreeImage.h.
;; libjxr doesn't have a pkg-config file.
(string-append "CFLAGS+=-O2 -fPIC -fvisibility=hidden -fpermissive "
;"-I" (assoc-ref %build-inputs "libjxr") "/include/jxrlib"
))
"-I" (assoc-ref %build-inputs "libjxr") "/include/jxrlib "
;; FIXME: OpenEXR 2.4.0 requires C++11 or later.
;; Remove when the default compiler is > GCC 5.
"-std=gnu++11"))
#:tests? #f)) ; no check target
(native-inputs
`(("pkg-config" ,pkg-config)
("unzip" ,unzip)))
(inputs
`(("libjpeg" ,libjpeg)
;("libjxr" ,libjxr)
("libjxr" ,libjxr)
("libpng" ,libpng)
("libraw" ,libraw)
("libtiff" ,libtiff)

View File

@ -18,13 +18,13 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages license)
#:use-module (guix licenses)
#:use-module (gnu packages)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system perl)
#:use-module (gnu packages perl)
#:use-module (gnu packages perl-check))
#:use-module (gnu packages perl-check)
#:use-module (guix build-system perl)
#:use-module (guix download)
#:use-module (guix licenses)
#:use-module (guix packages))
;;;
;;; Please: Try to add new module packages in alphabetic order.

View File

@ -181,33 +181,33 @@ defconfig. Return the appropriate make target if applicable, otherwise return
(define deblob-scripts-5.2
(linux-libre-deblob-scripts
"5.2.10"
"5.2.17"
(base32 "076fwxlm6jq6z4vg1xq3kr474zz7qk71r90sf9dnfia3rw2pb4fa")
(base32 "0d3pp1bqchqc7vnxr1a56km5r0hzjiiipzz2xc3wgjwfi51k9kxc")))
(define deblob-scripts-4.19
(linux-libre-deblob-scripts
"4.19.68"
"4.19.75"
(base32 "02zs405awaxydbapka4nz8h6lmnc0dahgczqsrs5s2bmzjyyqkcy")
(base32 "1fyacg28aym6virxyn7wk99qil2fjbks3iwm7p3hxy51pccn34za")))
(define deblob-scripts-4.14
(linux-libre-deblob-scripts
"4.14.140"
"4.14.146"
(base32 "091jk9jkn9jf39bxpc7395bhcb7p96nkg3a8047380ki06lnfxh6")
(base32 "0x9nd3hnyrm753cbgdqmy92mbnyw86w64g4hvyibnkpq5n7s3z9n")))
(define deblob-scripts-4.9
(linux-libre-deblob-scripts
"4.9.190"
"4.9.194"
(base32 "1wvldzlv7q2xdbadas87dh593nxr4a8p5n0f8zpm72lja6w18hmg")
(base32 "0is8gn4qdd7h5l6lacvhqdch26lmrbgxfm8ab7fx8n85ha7y358w")))
(define deblob-scripts-4.4
(linux-libre-deblob-scripts
"4.4.190"
"4.4.194"
(base32 "0x2j1i88am54ih2mk7gyl79g25l9zz4r08xhl482l3fvjj2irwbw")
(base32 "1x40lbiaizksy8z38ax7wpqr9ldgq7qvkxbb0ca98vd1axpklb10")))
(base32 "12ac4g3ky8yma8sylmxvvysqvd4hnaqjiwmxrxb6wlxggfd7zkbx")))
(define* (computed-origin-method gexp-promise hash-algo hash
#:optional (name "source")
@ -349,42 +349,42 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
"linux-" version ".tar.xz"))
(sha256 hash)))
(define-public linux-libre-5.2-version "5.2.16")
(define-public linux-libre-5.2-version "5.2.17")
(define-public linux-libre-5.2-pristine-source
(let ((version linux-libre-5.2-version)
(hash (base32 "0xg5jnkmc7b552jrhi200ck7q4hql3az2fpjfwxj3ay8xp4n280c")))
(hash (base32 "1y9d218w83qgd6wima6h6n4zbj1rxz15yb6hdlhv8dm9kv88lfvv")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-5.2)))
(define-public linux-libre-4.19-version "4.19.71")
(define-public linux-libre-4.19-version "4.19.75")
(define-public linux-libre-4.19-pristine-source
(let ((version linux-libre-4.19-version)
(hash (base32 "1bjwkb7k82l646ryyy0jbwsnygm2qsxgcwli8bdrj844skzynlqz")))
(hash (base32 "0y0vcmxyfg98mm63vaqq6n2bmxkbmrnvigm5zdh1al74w53p2pnx")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.19)))
(define-public linux-libre-4.14-version "4.14.142")
(define-public linux-libre-4.14-version "4.14.146")
(define-public linux-libre-4.14-pristine-source
(let ((version linux-libre-4.14-version)
(hash (base32 "1wwhnm1n1b6yzsd2zzzf9i3n4hlvgnph70p67cwahw0ik4ssayz6")))
(hash (base32 "1x9343pvlxdgx0zbsn12mcfhf6r8d9p57h6l5cw7krm3gs44pid3")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.14)))
(define-public linux-libre-4.9-version "4.9.191")
(define-public linux-libre-4.9-version "4.9.194")
(define-public linux-libre-4.9-pristine-source
(let ((version linux-libre-4.9-version)
(hash (base32 "1g5p736p8zx5rmxaj56yw93jp768npl868jsn8973dny0rsbim6y")))
(hash (base32 "1qy20vw5bhnsfbh95sdhjbk6y94js8m4ryd3m7xg2qg4hisvpx6m")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.9)))
(define-public linux-libre-4.4-version "4.4.191")
(define-public linux-libre-4.4-version "4.4.194")
(define-public linux-libre-4.4-pristine-source
(let ((version linux-libre-4.4-version)
(hash (base32 "0x3lnq4xyj5v6r1cz4jizm4vdspws1nb806f5qczwi3yil5nm6bh")))
(hash (base32 "0kvlp2v4nvkilaanhpgwf8dkyfj24msaw0m38rbc4y51y69yhqvz")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.4)))
@ -1701,7 +1701,7 @@ that the Ethernet protocol is much simpler than the IP protocol.")
(define-public iproute
(package
(name "iproute2")
(version "5.2.0")
(version "5.3.0")
(source (origin
(method url-fetch)
(uri (string-append
@ -1709,7 +1709,7 @@ that the Ethernet protocol is much simpler than the IP protocol.")
version ".tar.xz"))
(sha256
(base32
"1a2dywa2kam24951byv9pl32mb9z6klh7d4vp8fwfgrm4vn5vfd5"))))
"0gvv269wjn4279hxr5zzwsk2c5qgswr47za3hm1x4frsk52iw76b"))))
(build-system gnu-build-system)
(arguments
`( ;; There is a test suite, but it wants network namespaces and sudo.
@ -1734,7 +1734,8 @@ that the Ethernet protocol is much simpler than the IP protocol.")
#t)))))
(inputs
`(("db4" ,bdb)
("iptables" ,iptables)))
("iptables" ,iptables)
("libmnl" ,libmnl)))
(native-inputs
`(("bison" ,bison)
("flex" ,flex)

View File

@ -3552,15 +3552,15 @@ Failure to do so will result in a library with poor performance.")
(define-public glm
(package
(name "glm")
(version "0.9.9.5")
(version "0.9.9.6")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/g-truc/glm/releases/download/"
version "/glm-" version ".zip"))
(sha256
(base32
"1vmg7hb4xvsa77zpbwiw6lqc7pyaj56dihx6xriny5b9rrh4iqsg"))))
(base32 "1l0pi1qi37mk6s0yrkrw07lspv4gcqnr9ryg3521hrl77ff37dwx"))
(patches (search-patches "glm-restore-install-target.patch"))))
(build-system cmake-build-system)
(native-inputs
`(("unzip" ,unzip)))

View File

@ -2810,14 +2810,13 @@ Songs can be searched by artist, name or even by a part of the song text.")
(define-public beets
(package
(name "beets")
(version "1.4.7")
(version "1.4.9")
(source (origin
(method url-fetch)
(uri (pypi-uri "beets" version))
(patches (search-patches "beets-python-3.7-fix.patch"))
(sha256
(base32
"0w3gz69s9gf5ih69d4sddgh7ndj7658m621bp742zldvjakdncrs"))))
"0m40rjimvfgy1dv04p8f8d5dvi2855v4ix99a9xr900cmcn476yj"))))
(build-system python-build-system)
(arguments
`(#:phases
@ -2826,12 +2825,6 @@ Songs can be searched by artist, name or even by a part of the song text.")
(lambda _
(setenv "HOME" (string-append (getcwd) "/tmp"))
#t))
(add-after 'unpack 'make-python3.7-compatible
(lambda _
;; See <https://github.com/beetbox/beets/issues/2978>.
(substitute* "beets/autotag/hooks.py"
(("re\\._pattern_type") "re.Pattern"))
#t))
(replace 'check
(lambda _
(invoke "nosetests" "-v"))))))
@ -2855,7 +2848,7 @@ Songs can be searched by artist, name or even by a part of the song text.")
("python-mutagen" ,python-mutagen)
("python-pyyaml" ,python-pyyaml)
("python-unidecode" ,python-unidecode)))
(home-page "http://beets.io")
(home-page "https://beets.io")
(synopsis "Music organizer")
(description "The purpose of beets is to get your music collection right
once and for all. It catalogs your collection, automatically improving its
@ -4531,7 +4524,7 @@ controller.")
(define-public fmit
(package
(name "fmit")
(version "1.2.6")
(version "1.2.13")
(source (origin
(method git-fetch)
(uri (git-reference
@ -4540,7 +4533,7 @@ controller.")
(file-name (git-file-name name version))
(sha256
(base32
"03nzkig5mw2rqwhwmg0qvc5cnk9bwh2wp13jh0mdrr935w0587mz"))))
"1qyskam053pvlap1av80rgp12pzhr92rs88vqs6s0ia3ypnixcc6"))))
(build-system gnu-build-system)
(arguments
'(#:phases

View File

@ -418,14 +418,14 @@ receiving NDP messages.")
(define-public ethtool
(package
(name "ethtool")
(version "4.19")
(version "5.3")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/software/network/"
"ethtool/ethtool-" version ".tar.xz"))
(sha256
(base32
"1j6hyr809af2m3gqm11hdfwks5kljqy1ikspq3d9rhj29qv6r2mi"))))
"1i14zrg4a84zjpwvqi8an0zx0hm06g614a79zc2syrkhrvdw1npk"))))
(build-system gnu-build-system)
(home-page "https://www.kernel.org/pub/software/network/ethtool/")
(synopsis "Display or change Ethernet device settings")
@ -1584,7 +1584,7 @@ procedure calls (RPCs).")
(define-public openvswitch
(package
(name "openvswitch")
(version "2.11.1")
(version "2.12.0")
(source (origin
(method url-fetch)
(uri (string-append
@ -1592,7 +1592,7 @@ procedure calls (RPCs).")
version ".tar.gz"))
(sha256
(base32
"1p5mv44jaslvrr1ym15smqna19y0gi4vqcsyj58625vv9bj6laf1"))))
"1y78ix5inhhcvicbvyy2ij38am1215nr55vydhab3d4065q45z8k"))))
(build-system gnu-build-system)
(arguments
'(;; FIXME: many tests fail with:

View File

@ -1,57 +0,0 @@
Fix compatibility issue with Python 3.7:
https://github.com/beetbox/beets/issues/2978
Patch copied from upstream source repository:
https://github.com/beetbox/beets/commit/15d44f02a391764da1ce1f239caef819f08beed8
From 15d44f02a391764da1ce1f239caef819f08beed8 Mon Sep 17 00:00:00 2001
From: Adrian Sampson <adrian@radbox.org>
Date: Sun, 22 Jul 2018 12:34:19 -0400
Subject: [PATCH] Fix Python 3.7 compatibility (#2978)
---
beets/autotag/hooks.py | 8 +++++++-
docs/changelog.rst | 2 ++
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/beets/autotag/hooks.py b/beets/autotag/hooks.py
index 3615a9333..1c62a54c5 100644
--- a/beets/autotag/hooks.py
+++ b/beets/autotag/hooks.py
@@ -31,6 +31,12 @@
log = logging.getLogger('beets')
+# The name of the type for patterns in re changed in Python 3.7.
+try:
+ Pattern = re._pattern_type
+except AttributeError:
+ Pattern = re.Pattern
+
# Classes used to represent candidate options.
@@ -433,7 +439,7 @@ def _eq(self, value1, value2):
be a compiled regular expression, in which case it will be
matched against `value2`.
"""
- if isinstance(value1, re._pattern_type):
+ if isinstance(value1, Pattern):
return bool(value1.match(value2))
return value1 == value2
#diff --git a/docs/changelog.rst b/docs/changelog.rst
#index be6de2904..d487f31f5 100644
#--- a/docs/changelog.rst
#+++ b/docs/changelog.rst
#@@ -19,6 +19,8 @@ New features:
#
# Fixes:
#
#+* Fix compatibility Python 3.7 and its change to a name in the ``re`` module.
#+ :bug:`2978`
# * R128 normalization tags are now properly deleted from files when the values
# are missing.
# Thanks to :user:`autrimpo`.

View File

@ -0,0 +1,276 @@
From 78d5cddafebb28e2e54efeb781495b5607ddb356 Mon Sep 17 00:00:00 2001
From: Hartmut Goebel <h.goebel@crazy-compilers.com>
Date: Thu, 8 Aug 2019 15:19:48 +0200
Subject: [PATCH] Scripts: Use constants for external program names.
This makes it much, much easier to replace the program
with one using an absolute path. This is necessary for
e.g. Guix to keep references to these external programs.
---
bin/debops | 10 +++++++---
bin/debops-padlock | 21 +++++++++++++++------
bin/debops-task | 7 +++++--
bin/debops-update | 18 +++++++++++-------
debops/__init__.py | 17 ++++++++++++-----
debops/cmds/__init__.py | 6 +++++-
6 files changed, 55 insertions(+), 24 deletions(-)
diff --git a/bin/debops b/bin/debops
index 2b7ad3f88..caaeb892f 100755
--- a/bin/debops
+++ b/bin/debops
@@ -59,6 +59,10 @@ ConfigFileHeader = """\
# You can manipulate the contents of this file via `.debops.cfg`.
"""
+# External programms used. List here for easy substitution for
+# hard-coded paths.
+ANSIBLE_PLAYBOOK = 'ansible-playbook'
+
def write_config(filename, config):
cfgparser = configparser.ConfigParser()
@@ -131,7 +135,7 @@ def gen_ansible_cfg(filename, config, project_root, playbooks_path,
os.path.join(playbooks_path, "roles"),
"/etc/ansible/roles")))
- ansible_version_out = subprocess.check_output(["ansible-playbook",
+ ansible_version_out = subprocess.check_output([ANSIBLE_PLAYBOOK,
"--version"]).decode()
# Get first line and split by spaces to get second 'word'.
@@ -197,7 +201,7 @@ def main(cmd_args):
playbooks_path = '/nonexistent'
# Make sure required commands are present
- require_commands('ansible-playbook')
+ require_commands(ANSIBLE_PLAYBOOK)
# Check if user specified a potential playbook name as the first
# argument. If yes, use it as the playbook name and remove it from
@@ -256,7 +260,7 @@ def main(cmd_args):
print("Running Ansible playbooks:")
for element in play_list:
print(element)
- return subprocess.call(['ansible-playbook'] + play_list + arg_list)
+ return subprocess.call([ANSIBLE_PLAYBOOK] + play_list + arg_list)
finally:
if revert_unlock:
padlock_lock(encfs_encrypted)
diff --git a/bin/debops-padlock b/bin/debops-padlock
index bfdfb8e06..2a97716cd 100755
--- a/bin/debops-padlock
+++ b/bin/debops-padlock
@@ -67,6 +67,14 @@ devrandom = os.environ.get('DEVRANDOM', "/dev/urandom")
SCRIPT_FILENAME = 'padlock-script'
+# External programms used. List here for easy substitution for
+# hard-coded paths.
+ENCFS = 'encfs'
+FIND = 'find'
+FUSERMOUNT = 'fusermount'
+UMOUNT = 'umount'
+GPG = 'gpg'
+
# ---- DebOps environment setup ----
@@ -80,9 +88,9 @@ def main(subcommand_func, **kwargs):
# Make sure required commands are present
# OS X compatibility
if sys.platform == 'darwin':
- require_commands('encfs', 'find', 'umount', 'gpg')
+ require_commands(ENCFS, FIND, UMOUNT, GPG)
else:
- require_commands('encfs', 'find', 'fusermount', 'gpg')
+ require_commands(ENCFS, FIND, FUSERMOUNT, GPG)
inventory_path = find_inventorypath(project_root, required=False)
# If inventory hasn't been found automatically, assume it's the default
@@ -121,7 +129,7 @@ def init(encfs_decrypted, encfs_encrypted, recipients):
# Generate a random password and encrypt it with GPG keys of recipients.
print("Generating a random", ENCFS_KEYFILE_LENGTH, "char password")
pwd = gen_pwd()
- gpg = subprocess.Popen(['gpg', '--encrypt', '--armor',
+ gpg = subprocess.Popen([GPG, '--encrypt', '--armor',
'--output', encfs_keyfile] + recipients,
stdin=subprocess.PIPE)
gpg.communicate(pwd.encode('utf-8'))
@@ -133,9 +141,10 @@ def init(encfs_decrypted, encfs_encrypted, recipients):
# NB2: We can not use padlock_unlock here, because the config file
# does not yet exist.
encfs = subprocess.Popen([
- 'encfs', encfs_encrypted, encfs_decrypted,
+ ENCFS, encfs_encrypted, encfs_decrypted,
'--extpass',
- 'gpg --decrypt --no-mdc-warning --output - '+shquote(encfs_keyfile)],
+ GPG + ' --decrypt --no-mdc-warning --output - '
+ + shquote(encfs_keyfile)],
stdin=subprocess.PIPE)
encfs.communicate(('p\n'+pwd).encode('utf-8'))
@@ -154,7 +163,7 @@ def init(encfs_decrypted, encfs_encrypted, recipients):
# Protect the EncFS configuration file by also encrypting it with
# the GPG keys of recipients.
- subprocess.call(['gpg', '--encrypt', '--armor',
+ subprocess.call([GPG, '--encrypt', '--armor',
'--output', encfs_configfile+'.asc']
+ recipients + [encfs_configfile])
os.remove(encfs_configfile)
diff --git a/bin/debops-task b/bin/debops-task
index 223e5f834..dc31ad4e6 100755
--- a/bin/debops-task
+++ b/bin/debops-task
@@ -49,11 +49,14 @@ project_root = find_debops_project(required=True)
# todo: need to decide on semantics!
# config = read_config(project_root)
+# External programms used. List here for easy substitution for
+# hard-coded paths.
+ANSIBLE = 'ansible'
# ---- Main script ----
# Make sure required commands are present
-require_commands('ansible')
+require_commands(ANSIBLE)
ansible_inventory = find_inventorypath(project_root)
@@ -71,5 +74,5 @@ if INSECURE:
os.environ['ANSIBLE_HOST_KEY_CHECKING'] = 'False'
# Run ansible with custom environment
-cmd = ['ansible'] + module + sys.argv[1:]
+cmd = [ANSIBLE] + module + sys.argv[1:]
subprocess.call(cmd)
diff --git a/bin/debops-update b/bin/debops-update
index 88c5e2c82..cc7e57cb0 100755
--- a/bin/debops-update
+++ b/bin/debops-update
@@ -90,6 +90,10 @@ GALAXY_REQUIREMENTS = "galaxy/requirements.txt"
# Default Ansible Galaxy user account name
GALAXY_ACCOUNT = "debops"
+# External programms used. List here for easy substitution for
+# hard-coded paths.
+GIT = 'git'
+
# ---- Functions ----
@@ -137,7 +141,7 @@ def clone_git_repository(repo_uri, branch, destination, dry_run=False):
if dry_run:
print("Cloning '%s' to %s..." % (repo_uri, destination))
else:
- subprocess.call(['git', 'clone', '--quiet', '--branch', branch,
+ subprocess.call([GIT, 'clone', '--quiet', '--branch', branch,
repo_uri, destination])
@@ -152,22 +156,22 @@ def update_git_repository(path, dry_run=False, remote_uri=False):
os.chdir(path)
if dry_run:
- subprocess.call(['git', 'fetch'])
- subprocess.call(['git', 'diff', 'HEAD', 'origin', '--stat'])
+ subprocess.call([GIT, 'fetch'])
+ subprocess.call([GIT, 'diff', 'HEAD', 'origin', '--stat'])
else:
# Get the current sha of the head branch
current_sha = subprocess.check_output(
- ['git', 'rev-parse', 'HEAD']).strip()
+ [GIT, 'rev-parse', 'HEAD']).strip()
# Fetch it silently and store the new sha
- subprocess.call(['git', 'fetch', '--quiet'])
+ subprocess.call([GIT, 'fetch', '--quiet'])
fetch_sha = subprocess.check_output(
- ['git', 'rev-parse', 'FETCH_HEAD']).strip()
+ [GIT, 'rev-parse', 'FETCH_HEAD']).strip()
if current_sha != fetch_sha:
print()
print('--')
- subprocess.call(['git', 'merge', fetch_sha])
+ subprocess.call([GIT, 'merge', fetch_sha])
if remote_uri:
compare_uri = (remote_uri + '/compare/' + current_sha[:7]
diff --git a/debops/__init__.py b/debops/__init__.py
index 1c2cedcb0..da8430e41 100644
--- a/debops/__init__.py
+++ b/debops/__init__.py
@@ -93,6 +93,13 @@ ENCFS_KEYFILE = ".encfs6.keyfile"
# Length of the random EncFS password stored in encrypted keyfile
ENCFS_KEYFILE_LENGTH = 256
+# External programms used. List here for easy substitution for
+# hard-coded paths.
+ENCFS = 'encfs'
+FUSERMOUNT = 'fusermount'
+UMOUNT = 'umount'
+GPG = 'gpg'
+
# ---- Functions ----
@@ -180,9 +187,9 @@ def padlock_lock(encrypted_path):
return False
# OS X compatibility
if sys.platform == 'darwin':
- subprocess.call(['umount', decrypted_path])
+ subprocess.call([UMOUNT, decrypted_path])
else:
- subprocess.call(['fusermount', '-u', decrypted_path])
+ subprocess.call([FUSERMOUNT, '-u', decrypted_path])
return True
@@ -237,14 +244,14 @@ def padlock_unlock(encrypted_path):
# Start encfs. It will wait for input on the `configfile` named
# pipe.
encfs = subprocess.Popen([
- 'encfs', encrypted_path, decrypted_path,
+ ENCFS, encrypted_path, decrypted_path,
'--extpass',
- 'gpg --decrypt --no-mdc-warning --output - %s' % shquote(keyfile)])
+ GPG + ' --decrypt --no-mdc-warning --output - %s' % shquote(keyfile)])
# now decrypt the config and write it into the named pipe
with open(configfile, 'w') as fh:
# NB: gpg must write to stdout to avoid it is asking whether
# the file should be overwritten
- subprocess.Popen(['gpg',
+ subprocess.Popen([GPG,
'--decrypt', '--no-mdc-warning', '--output', '-',
crypted_configfile], stdout=fh).wait()
encfs.wait()
diff --git a/debops/cmds/__init__.py b/debops/cmds/__init__.py
index b221fa191..9fabf43a5 100644
--- a/debops/cmds/__init__.py
+++ b/debops/cmds/__init__.py
@@ -55,6 +55,10 @@ SCRIPT_NAME = os.path.basename(sys.argv[0])
# command line)
INSECURE = bool(os.environ.get('INSECURE', False))
+# External programms used. List here for easy substitution for
+# hard-coded paths.
+WHICH = 'which'
+
def error_msg(message, severity="Error"):
"""
@@ -70,7 +74,7 @@ def require_commands(*cmd_names):
Check if required commands exist.
"""
def command_exists(cmd_name):
- which = "where" if platform.system() == "Windows" else "which"
+ which = "where" if platform.system() == "Windows" else WHICH
return not subprocess.call([which, cmd_name],
stdout=DEVNULL, stderr=subprocess.STDOUT)
--
2.21.0

View File

@ -0,0 +1,45 @@
From 5059daf8bd59a83f520c14731173ea76ce8b8661 Mon Sep 17 00:00:00 2001
From: Hartmut Goebel <h.goebel@crazy-compilers.com>
Date: Sun, 8 Sep 2019 13:09:15 +0200
Subject: [PATCH] [debops-defaults] If `view` is not available, try less, etc.
---
bin/debops-defaults | 21 +++++++++++++++------
1 file changed, 15 insertions(+), 6 deletions(-)
diff --git a/bin/debops-defaults b/bin/debops-defaults
index 9dd87fe0a..3e3db4c41 100755
--- a/bin/debops-defaults
+++ b/bin/debops-defaults
@@ -96,13 +96,22 @@ def main(role_list):
config = read_config(project_root)
playbooks_path = find_playbookpath(config, project_root, required=True)
- # Make sure required commands are present
- require_commands('view')
-
- if sys.stdout.isatty():
+ # Check if one of the output commands is present
+ sys.stdout = io.BytesIO() # suppress error message, if any
+ for cmd_args in (('view', '+set ft=yaml', '-'),
+ ('less', '-'),
+ ('more', '-')):
+ try:
+ require_commands(cmd_args[0])
+ break
+ except SystemExit:
+ # this command was not found
+ cmd_args = None
+ sys.stdout = sys.__stdout__
+
+ if cmd_args and sys.stdout.isatty():
# if script is run as standalone, redirect to view
- view = subprocess.Popen(['view', '+set ft=yaml', '-'],
- stdin=subprocess.PIPE)
+ view = subprocess.Popen(cmd_args, stdin=subprocess.PIPE)
try:
aggregate_defaults(playbooks_path, role_list, view.stdin)
except IOError as e:
--
2.21.0

View File

@ -1,129 +0,0 @@
Copied from Debian.
Description: fix integer overflow
Origin: upstream
http://freeimage.cvs.sourceforge.net/viewvc/freeimage/FreeImage/Source/FreeImage/PluginPCX.cpp?view=patch&r1=1.17&r2=1.18&pathrev=MAIN
http://freeimage.cvs.sourceforge.net/viewvc/freeimage/FreeImage/Source/FreeImage/PluginPCX.cpp?view=patch&r1=1.18&r2=1.19&pathrev=MAIN
Bug-Debian: https://bugs.debian.org/797165
Last-Update: 2015-09-14
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
Index: freeimage/Source/FreeImage/PluginPCX.cpp
===================================================================
--- freeimage.orig/Source/FreeImage/PluginPCX.cpp
+++ freeimage/Source/FreeImage/PluginPCX.cpp
@@ -347,12 +347,14 @@ Load(FreeImageIO *io, fi_handle handle,
try {
// check PCX identifier
-
- long start_pos = io->tell_proc(handle);
- BOOL validated = pcx_validate(io, handle);
- io->seek_proc(handle, start_pos, SEEK_SET);
- if(!validated) {
- throw FI_MSG_ERROR_MAGIC_NUMBER;
+ // (note: should have been already validated using FreeImage_GetFileType but check again)
+ {
+ long start_pos = io->tell_proc(handle);
+ BOOL validated = pcx_validate(io, handle);
+ io->seek_proc(handle, start_pos, SEEK_SET);
+ if(!validated) {
+ throw FI_MSG_ERROR_MAGIC_NUMBER;
+ }
}
// process the header
@@ -366,20 +368,38 @@ Load(FreeImageIO *io, fi_handle handle,
SwapHeader(&header);
#endif
- // allocate a new DIB
+ // process the window
+ const WORD *window = header.window; // left, upper, right,lower pixel coord.
+ const int left = window[0];
+ const int top = window[1];
+ const int right = window[2];
+ const int bottom = window[3];
- unsigned width = header.window[2] - header.window[0] + 1;
- unsigned height = header.window[3] - header.window[1] + 1;
- unsigned bitcount = header.bpp * header.planes;
-
- if (bitcount == 24) {
- dib = FreeImage_AllocateHeader(header_only, width, height, bitcount, FI_RGBA_RED_MASK, FI_RGBA_GREEN_MASK, FI_RGBA_BLUE_MASK);
- } else {
- dib = FreeImage_AllocateHeader(header_only, width, height, bitcount);
+ // check image size
+ if((left >= right) || (top >= bottom)) {
+ throw FI_MSG_ERROR_PARSING;
}
- // if the dib couldn't be allocated, throw an error
+ const unsigned width = right - left + 1;
+ const unsigned height = bottom - top + 1;
+ const unsigned bitcount = header.bpp * header.planes;
+
+ // allocate a new DIB
+ switch(bitcount) {
+ case 1:
+ case 4:
+ case 8:
+ dib = FreeImage_AllocateHeader(header_only, width, height, bitcount);
+ break;
+ case 24:
+ dib = FreeImage_AllocateHeader(header_only, width, height, bitcount, FI_RGBA_RED_MASK, FI_RGBA_GREEN_MASK, FI_RGBA_BLUE_MASK);
+ break;
+ default:
+ throw FI_MSG_ERROR_DIB_MEMORY;
+ break;
+ }
+ // if the dib couldn't be allocated, throw an error
if (!dib) {
throw FI_MSG_ERROR_DIB_MEMORY;
}
@@ -426,19 +446,23 @@ Load(FreeImageIO *io, fi_handle handle,
if (palette_id == 0x0C) {
BYTE *cmap = (BYTE*)malloc(768 * sizeof(BYTE));
- io->read_proc(cmap, 768, 1, handle);
- pal = FreeImage_GetPalette(dib);
- BYTE *pColormap = &cmap[0];
+ if(cmap) {
+ io->read_proc(cmap, 768, 1, handle);
- for(int i = 0; i < 256; i++) {
- pal[i].rgbRed = pColormap[0];
- pal[i].rgbGreen = pColormap[1];
- pal[i].rgbBlue = pColormap[2];
- pColormap += 3;
+ pal = FreeImage_GetPalette(dib);
+ BYTE *pColormap = &cmap[0];
+
+ for(int i = 0; i < 256; i++) {
+ pal[i].rgbRed = pColormap[0];
+ pal[i].rgbGreen = pColormap[1];
+ pal[i].rgbBlue = pColormap[2];
+ pColormap += 3;
+ }
+
+ free(cmap);
}
- free(cmap);
}
// wrong palette ID, perhaps a gray scale is needed ?
@@ -466,9 +490,9 @@ Load(FreeImageIO *io, fi_handle handle,
// calculate the line length for the PCX and the DIB
// length of raster line in bytes
- unsigned linelength = header.bytes_per_line * header.planes;
+ const unsigned linelength = header.bytes_per_line * header.planes;
// length of DIB line (rounded to DWORD) in bytes
- unsigned pitch = FreeImage_GetPitch(dib);
+ const unsigned pitch = FreeImage_GetPitch(dib);
// run-length encoding ?

View File

@ -1,34 +0,0 @@
From: Debian Science Maintainers
<debian-science-maintainers@lists.alioth.debian.org>
Date: Mon, 10 Oct 2016 08:22:44 +0100
Subject: CVE-2016-5684
---
Source/FreeImage/PluginXPM.cpp | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/Source/FreeImage/PluginXPM.cpp b/Source/FreeImage/PluginXPM.cpp
index a698321..cc7bd07 100644
--- a/Source/FreeImage/PluginXPM.cpp
+++ b/Source/FreeImage/PluginXPM.cpp
@@ -181,6 +181,11 @@ Load(FreeImageIO *io, fi_handle handle, int page, int flags, void *data) {
}
free(str);
+ // check info string
+ if((width <= 0) || (height <= 0) || (colors <= 0) || (cpp <= 0)) {
+ throw "Improperly formed info string";
+ }
+
if (colors > 256) {
dib = FreeImage_AllocateHeader(header_only, width, height, 24, FI_RGBA_RED_MASK, FI_RGBA_GREEN_MASK, FI_RGBA_BLUE_MASK);
} else {
@@ -193,7 +198,7 @@ Load(FreeImageIO *io, fi_handle handle, int page, int flags, void *data) {
FILE_RGBA rgba;
str = ReadString(io, handle);
- if(!str)
+ if(!str || (strlen(str) < (size_t)cpp))
throw "Error reading color strings";
std::string chrs(str,cpp); //create a string for the color chars using the first cpp chars

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
https://src.fedoraproject.org/cgit/rpms/freeimage.git/tree/FreeImage-3.17.0_unbundle.patch
https://src.fedoraproject.org/cgit/rpms/freeimage.git/tree/FreeImage_unbundle.patch
diff -rupN FreeImage/genfipsrclist.sh FreeImage-new/genfipsrclist.sh
--- FreeImage/genfipsrclist.sh 2015-02-20 10:52:16.000000000 +0100
@ -25,10 +25,10 @@ diff -rupN FreeImage/gensrclist.sh FreeImage-new/gensrclist.sh
#!/bin/sh
-DIRLIST=". Source Source/Metadata Source/FreeImageToolkit Source/LibJPEG Source/LibPNG Source/LibTIFF4 Source/ZLib Source/LibOpenJPEG Source/OpenEXR Source/OpenEXR/Half Source/OpenEXR/Iex Source/OpenEXR/IlmImf Source/OpenEXR/IlmThread Source/OpenEXR/Imath Source/OpenEXR/IexMath Source/LibRawLite Source/LibRawLite/dcraw Source/LibRawLite/internal Source/LibRawLite/libraw Source/LibRawLite/src Source/LibWebP Source/LibJXR Source/LibJXR/common/include Source/LibJXR/image/sys Source/LibJXR/jxrgluelib"
+DIRLIST=". Source Source/Metadata Source/FreeImageToolkit Source/LibJXR Source/LibJXR/common/include Source/LibJXR/image/sys Source/LibJXR/jxrgluelib"
+DIRLIST=". Source Source/Metadata Source/FreeImageToolkit"
echo "VER_MAJOR = 3" > Makefile.srcs
echo "VER_MINOR = 17.0" >> Makefile.srcs
echo "VER_MINOR = 18.0" >> Makefile.srcs
diff -rupN FreeImage/Makefile.fip FreeImage-new/Makefile.fip
--- FreeImage/Makefile.fip 2015-03-08 18:03:56.000000000 +0100
+++ FreeImage-new/Makefile.fip 2015-09-05 02:14:09.212684028 +0200
@ -90,8 +90,8 @@ diff -rupN FreeImage/Makefile.gnu FreeImage-new/Makefile.gnu
-# LibJXR
-CXXFLAGS += -D__ANSI__
-CXXFLAGS += $(INCLUDE)
+override CFLAGS += $(INCLUDE) -D__ANSI__ $(shell pkg-config --cflags OpenEXR libopenjp2 libraw libpng libtiff-4 libwebp libwebpmux zlib)
+override LDFLAGS += -ljpeg $(shell pkg-config --libs OpenEXR libopenjp2 libraw libpng libtiff-4 libwebp libwebpmux zlib)
+override CFLAGS += $(INCLUDE) -D__ANSI__ -I/usr/include/jxrlib $(shell pkg-config --cflags OpenEXR libopenjp2 libraw libpng libtiff-4 libwebp libwebpmux zlib)
+override LDFLAGS += -ljpeg -ljpegxr -ljxrglue $(shell pkg-config --libs OpenEXR libopenjp2 libraw libpng libtiff-4 libwebp libwebpmux zlib)
ifeq ($(shell sh -c 'uname -m 2>/dev/null || echo not'),x86_64)
- CFLAGS += -fPIC
@ -215,6 +215,18 @@ diff -rupN FreeImage/Source/FreeImage/PluginJPEG.cpp FreeImage-new/Source/FreeIm
}
#include "FreeImage.h"
diff -rupN FreeImage/Source/FreeImage/PluginJXR.cpp FreeImage-new/Source/FreeImage/PluginJXR.cpp
--- FreeImage/Source/FreeImage/PluginJXR.cpp 2015-03-03 23:07:08.000000000 +0100
+++ FreeImage-new/Source/FreeImage/PluginJXR.cpp 2018-07-31 23:37:58.561953201 +0200
@@ -23,7 +23,7 @@
#include "Utilities.h"
#include "../Metadata/FreeImageTag.h"
-#include "../LibJXR/jxrgluelib/JXRGlue.h"
+#include <JXRGlue.h>
// ==========================================================
// Plugin Interface
diff -rupN FreeImage/Source/FreeImage/PluginPNG.cpp FreeImage-new/Source/FreeImage/PluginPNG.cpp
--- FreeImage/Source/FreeImage/PluginPNG.cpp 2015-03-10 20:16:12.000000000 +0100
+++ FreeImage-new/Source/FreeImage/PluginPNG.cpp 2015-09-05 02:13:52.044353363 +0200
@ -241,38 +253,39 @@ diff -rupN FreeImage/Source/FreeImage/PluginRAW.cpp FreeImage-new/Source/FreeIma
#include "FreeImage.h"
#include "Utilities.h"
diff -rupN FreeImage/Source/FreeImage/PluginTIFF.cpp FreeImage-new/Source/FreeImage/PluginTIFF.cpp
--- FreeImage/Source/FreeImage/PluginTIFF.cpp 2015-03-02 02:07:08.000000000 +0100
+++ FreeImage-new/Source/FreeImage/PluginTIFF.cpp 2015-09-05 02:13:52.044353363 +0200
@@ -37,9 +37,9 @@
#include "FreeImage.h"
#include "Utilities.h"
-#include "../LibTIFF4/tiffiop.h"
+#include <tiffio.h>
#include "../Metadata/FreeImageTag.h"
-#include "../OpenEXR/Half/half.h"
+#include <OpenEXR/half.h>
#include "FreeImageIO.h"
#include "PSDParser.h"
@@ -194,16 +194,6 @@ TIFFFdOpen(thandle_t handle, const char
return tif;
}
-/**
-Open a TIFF file for reading or writing
-@param name
-@param mode
-*/
-TIFF*
-TIFFOpen(const char* name, const char* mode) {
- return 0;
-}
-
// ----------------------------------------------------------
// TIFF library FreeImage-specific routines.
// ----------------------------------------------------------
#include "FreeImage.h"
#include "Utilities.h"
-#include "../LibTIFF4/tiffiop.h"
+#include <tiffio.h>
#include "../Metadata/FreeImageTag.h"
-#include "../OpenEXR/Half/half.h"
+#include <OpenEXR/half.h>
#include "FreeImageIO.h"
#include "PSDParser.h"
@@ -194,16 +194,6 @@ TIFFFdOpen(thandle_t handle, const char *name, const char *mode) {
return tif;
}
-/**
-Open a TIFF file for reading or writing
-@param name
-@param mode
-*/
-TIFF*
-TIFFOpen(const char* name, const char* mode) {
- return 0;
-}
-
// ----------------------------------------------------------
// TIFF library FreeImage-specific routines.
// ----------------------------------------------------------
diff -rupN FreeImage/Source/FreeImage/PluginWebP.cpp FreeImage-new/Source/FreeImage/PluginWebP.cpp
--- FreeImage/Source/FreeImage/PluginWebP.cpp 2015-03-02 02:07:08.000000000 +0100
+++ FreeImage-new/Source/FreeImage/PluginWebP.cpp 2015-09-05 02:13:52.044353363 +0200
@ -282,15 +295,81 @@ diff -rupN FreeImage/Source/FreeImage/PluginWebP.cpp FreeImage-new/Source/FreeIm
-#include "../LibWebP/src/webp/decode.h"
-#include "../LibWebP/src/webp/encode.h"
-#include "../LibWebP/src/enc/vp8enci.h"
-#include "../LibWebP/src/webp/mux.h"
+#include <webp/decode.h>
+#include <webp/encode.h>
+// #include "../LibWebP/src/enc/vp8enci.h"
+#include <webp/mux.h>
// ==========================================================
// Plugin Interface
diff -rupN FreeImage/Source/FreeImage/PSDParser.cpp FreeImage-new/Source/FreeImage/PSDParser.cpp
--- FreeImage/Source/FreeImage/PSDParser.cpp 2016-02-11 03:18:02.000000000 +0100
+++ FreeImage-new/Source/FreeImage/PSDParser.cpp 2018-08-01 00:17:18.323822675 +0200
@@ -133,8 +133,8 @@ public:
template <>
class PSDGetValue<8> {
public:
- static inline UINT64 get(const BYTE * iprBuffer) {
- UINT64 v = ((const UINT64*)iprBuffer)[0];
+ static inline uint64_t get(const BYTE * iprBuffer) {
+ uint64_t v = ((const uint64_t*)iprBuffer)[0];
#ifndef FREEIMAGE_BIGENDIAN
SwapInt64(&v);
#endif
@@ -147,7 +147,7 @@ public:
// --------------------------------------------------------------------------
-static UINT64
+static uint64_t
psdReadSize(FreeImageIO *io, fi_handle handle, const psdHeaderInfo& header) {
if(header._Version == 1) {
BYTE Length[4];
@@ -199,11 +199,11 @@ public:
template <>
class PSDSetValue<8> {
public:
- static inline void set(const BYTE * iprBuffer, UINT64 v) {
+ static inline void set(const BYTE * iprBuffer, uint64_t v) {
#ifndef FREEIMAGE_BIGENDIAN
SwapInt64(&v);
#endif
- ((UINT64*)iprBuffer)[0] = v;
+ ((uint64_t*)iprBuffer)[0] = v;
}
};
@@ -213,7 +213,7 @@ public:
// --------------------------------------------------------------------------
static inline bool
-psdWriteSize(FreeImageIO *io, fi_handle handle, const psdHeaderInfo& header, UINT64 v) {
+psdWriteSize(FreeImageIO *io, fi_handle handle, const psdHeaderInfo& header, uint64_t v) {
if(header._Version == 1) {
BYTE Length[4];
psdSetLongValue(Length, sizeof(Length), (DWORD)v);
@@ -1063,10 +1063,10 @@ unsigned psdParser::GetChannelOffset(FIB
bool psdParser::ReadLayerAndMaskInfoSection(FreeImageIO *io, fi_handle handle) {
bool bSuccess = true;
- UINT64 nTotalBytes = psdReadSize(io, handle, _headerInfo);
+ uint64_t nTotalBytes = psdReadSize(io, handle, _headerInfo);
// Hack to handle large PSB files without using fseeko().
- if (sizeof(long) < sizeof(UINT64)) {
+ if (sizeof(long) < sizeof(uint64_t)) {
const long offset = 0x10000000;
while (nTotalBytes > offset) {
if (io->seek_proc(handle, offset, SEEK_CUR) != 0) {
@@ -1672,7 +1672,7 @@ bool psdParser::WriteLayerAndMaskInfoSec
// Short section with no layers.
BYTE IntValue[4];
- UINT64 size;
+ uint64_t size;
if(_headerInfo._Version == 1) {
size = 8;
} else {
diff -rupN FreeImage/Source/FreeImage/ZLibInterface.cpp FreeImage-new/Source/FreeImage/ZLibInterface.cpp
--- FreeImage/Source/FreeImage/ZLibInterface.cpp 2015-03-02 02:07:10.000000000 +0100
+++ FreeImage-new/Source/FreeImage/ZLibInterface.cpp 2015-09-05 02:13:52.044353363 +0200
@ -536,3 +615,21 @@ diff -rupN FreeImage/Source/Metadata/XTIFF.cpp FreeImage-new/Source/Metadata/XTI
if(skip_write_field(tif, tag_id)) {
// skip tags that are already handled by the LibTIFF writing process
diff -rupN FreeImage/Source/Utilities.h FreeImage-new/Source/Utilities.h
--- FreeImage/Source/Utilities.h 2016-04-11 15:15:32.000000000 +0200
+++ FreeImage-new/Source/Utilities.h 2018-08-01 00:16:29.826825358 +0200
@@ -446,12 +446,12 @@ SwapLong(DWORD *lp) {
}
inline void
-SwapInt64(UINT64 *arg) {
+SwapInt64(uint64_t *arg) {
#if defined(_MSC_VER) && _MSC_VER >= 1310
*arg = _byteswap_uint64(*arg);
#else
union Swap {
- UINT64 sv;
+ uint64_t sv;
DWORD ul[2];
} tmp, result;
tmp.sv = *arg;

View File

@ -0,0 +1,574 @@
From: Tobias Geerinckx-Rice <me@tobias.gr>
Date: Mon, 23 Sep 2019 22:01:17 +0200
Subject: [PATCH] gnu: glm: Restore install target.
It was removed in 0.9.9.6, making installation a tedious manual process
for no clear reason[0]. Restore it for now.
[0]: https://github.com/g-truc/glm/issues/947
diff -Naur glm/cmake/CMakePackageConfigHelpers.cmake glmn/cmake/CMakePackageConfigHelpers.cmake
--- glm/cmake/CMakePackageConfigHelpers.cmake 1970-01-01 01:00:00.000000000 +0100
+++ glmn/cmake/CMakePackageConfigHelpers.cmake 2019-09-23 00:11:21.418152249 +0200
@@ -0,0 +1,227 @@
+# - CONFIGURE_PACKAGE_CONFIG_FILE(), WRITE_BASIC_PACKAGE_VERSION_FILE()
+#
+# CONFIGURE_PACKAGE_CONFIG_FILE(<input> <output> INSTALL_DESTINATION <path>
+# [PATH_VARS <var1> <var2> ... <varN>]
+# [NO_SET_AND_CHECK_MACRO]
+# [NO_CHECK_REQUIRED_COMPONENTS_MACRO])
+#
+# CONFIGURE_PACKAGE_CONFIG_FILE() should be used instead of the plain
+# CONFIGURE_FILE() command when creating the <Name>Config.cmake or <Name>-config.cmake
+# file for installing a project or library. It helps making the resulting package
+# relocatable by avoiding hardcoded paths in the installed Config.cmake file.
+#
+# In a FooConfig.cmake file there may be code like this to make the
+# install destinations know to the using project:
+# set(FOO_INCLUDE_DIR "@CMAKE_INSTALL_FULL_INCLUDEDIR@" )
+# set(FOO_DATA_DIR "@CMAKE_INSTALL_PREFIX@/@RELATIVE_DATA_INSTALL_DIR@" )
+# set(FOO_ICONS_DIR "@CMAKE_INSTALL_PREFIX@/share/icons" )
+# ...logic to determine installedPrefix from the own location...
+# set(FOO_CONFIG_DIR "${installedPrefix}/@CONFIG_INSTALL_DIR@" )
+# All 4 options shown above are not sufficient, since the first 3 hardcode
+# the absolute directory locations, and the 4th case works only if the logic
+# to determine the installedPrefix is correct, and if CONFIG_INSTALL_DIR contains
+# a relative path, which in general cannot be guaranteed.
+# This has the effect that the resulting FooConfig.cmake file would work poorly
+# under Windows and OSX, where users are used to choose the install location
+# of a binary package at install time, independent from how CMAKE_INSTALL_PREFIX
+# was set at build/cmake time.
+#
+# Using CONFIGURE_PACKAGE_CONFIG_FILE() helps. If used correctly, it makes the
+# resulting FooConfig.cmake file relocatable.
+# Usage:
+# 1. write a FooConfig.cmake.in file as you are used to
+# 2. insert a line containing only the string "@PACKAGE_INIT@"
+# 3. instead of SET(FOO_DIR "@SOME_INSTALL_DIR@"), use SET(FOO_DIR "@PACKAGE_SOME_INSTALL_DIR@")
+# (this must be after the @PACKAGE_INIT@ line)
+# 4. instead of using the normal CONFIGURE_FILE(), use CONFIGURE_PACKAGE_CONFIG_FILE()
+#
+# The <input> and <output> arguments are the input and output file, the same way
+# as in CONFIGURE_FILE().
+#
+# The <path> given to INSTALL_DESTINATION must be the destination where the FooConfig.cmake
+# file will be installed to. This can either be a relative or absolute path, both work.
+#
+# The variables <var1> to <varN> given as PATH_VARS are the variables which contain
+# install destinations. For each of them the macro will create a helper variable
+# PACKAGE_<var...>. These helper variables must be used
+# in the FooConfig.cmake.in file for setting the installed location. They are calculated
+# by CONFIGURE_PACKAGE_CONFIG_FILE() so that they are always relative to the
+# installed location of the package. This works both for relative and also for absolute locations.
+# For absolute locations it works only if the absolute location is a subdirectory
+# of CMAKE_INSTALL_PREFIX.
+#
+# By default configure_package_config_file() also generates two helper macros,
+# set_and_check() and check_required_components() into the FooConfig.cmake file.
+#
+# set_and_check() should be used instead of the normal set()
+# command for setting directories and file locations. Additionally to setting the
+# variable it also checks that the referenced file or directory actually exists
+# and fails with a FATAL_ERROR otherwise. This makes sure that the created
+# FooConfig.cmake file does not contain wrong references.
+# When using the NO_SET_AND_CHECK_MACRO, this macro is not generated into the
+# FooConfig.cmake file.
+#
+# check_required_components(<package_name>) should be called at the end of the
+# FooConfig.cmake file if the package supports components.
+# This macro checks whether all requested, non-optional components have been found,
+# and if this is not the case, sets the Foo_FOUND variable to FALSE, so that the package
+# is considered to be not found.
+# It does that by testing the Foo_<Component>_FOUND variables for all requested
+# required components.
+# When using the NO_CHECK_REQUIRED_COMPONENTS option, this macro is not generated
+# into the FooConfig.cmake file.
+#
+# For an example see below the documentation for WRITE_BASIC_PACKAGE_VERSION_FILE().
+#
+#
+# WRITE_BASIC_PACKAGE_VERSION_FILE( filename VERSION major.minor.patch COMPATIBILITY (AnyNewerVersion|SameMajorVersion|ExactVersion) )
+#
+# Writes a file for use as <package>ConfigVersion.cmake file to <filename>.
+# See the documentation of FIND_PACKAGE() for details on this.
+# filename is the output filename, it should be in the build tree.
+# major.minor.patch is the version number of the project to be installed
+# The COMPATIBILITY mode AnyNewerVersion means that the installed package version
+# will be considered compatible if it is newer or exactly the same as the requested version.
+# This mode should be used for packages which are fully backward compatible,
+# also across major versions.
+# If SameMajorVersion is used instead, then the behaviour differs from AnyNewerVersion
+# in that the major version number must be the same as requested, e.g. version 2.0 will
+# not be considered compatible if 1.0 is requested.
+# This mode should be used for packages which guarantee backward compatibility within the
+# same major version.
+# If ExactVersion is used, then the package is only considered compatible if the requested
+# version matches exactly its own version number (not considering the tweak version).
+# For example, version 1.2.3 of a package is only considered compatible to requested version 1.2.3.
+# This mode is for packages without compatibility guarantees.
+# If your project has more elaborated version matching rules, you will need to write your
+# own custom ConfigVersion.cmake file instead of using this macro.
+#
+# Internally, this macro executes configure_file() to create the resulting
+# version file. Depending on the COMPATIBILITY, either the file
+# BasicConfigVersion-SameMajorVersion.cmake.in or BasicConfigVersion-AnyNewerVersion.cmake.in
+# is used. Please note that these two files are internal to CMake and you should
+# not call configure_file() on them yourself, but they can be used as starting
+# point to create more sophisticted custom ConfigVersion.cmake files.
+#
+#
+# Example using both configure_package_config_file() and write_basic_package_version_file():
+# CMakeLists.txt:
+# set(INCLUDE_INSTALL_DIR include/ ... CACHE )
+# set(LIB_INSTALL_DIR lib/ ... CACHE )
+# set(SYSCONFIG_INSTALL_DIR etc/foo/ ... CACHE )
+# ...
+# include(CMakePackageConfigHelpers)
+# configure_package_config_file(FooConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/FooConfig.cmake
+# INSTALL_DESTINATION ${LIB_INSTALL_DIR}/Foo/cmake
+# PATH_VARS INCLUDE_INSTALL_DIR SYSCONFIG_INSTALL_DIR)
+# write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/FooConfigVersion.cmake
+# VERSION 1.2.3
+# COMPATIBILITY SameMajorVersion )
+# install(FILES ${CMAKE_CURRENT_BINARY_DIR}/FooConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/FooConfigVersion.cmake
+# DESTINATION ${LIB_INSTALL_DIR}/Foo/cmake )
+#
+# With a FooConfig.cmake.in:
+# set(FOO_VERSION x.y.z)
+# ...
+# @PACKAGE_INIT@
+# ...
+# set_and_check(FOO_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@")
+# set_and_check(FOO_SYSCONFIG_DIR "@PACKAGE_SYSCONFIG_INSTALL_DIR@")
+#
+# check_required_components(Foo)
+
+
+#=============================================================================
+# Copyright 2012 Alexander Neundorf <neundorf@kde.org>
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+# (To distribute this file outside of CMake, substitute the full
+# License text for the above reference.)
+
+include(CMakeParseArguments)
+
+include(WriteBasicConfigVersionFile)
+
+macro(WRITE_BASIC_PACKAGE_VERSION_FILE)
+ write_basic_config_version_file(${ARGN})
+endmacro()
+
+
+function(CONFIGURE_PACKAGE_CONFIG_FILE _inputFile _outputFile)
+ set(options NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO)
+ set(oneValueArgs INSTALL_DESTINATION )
+ set(multiValueArgs PATH_VARS )
+
+ cmake_parse_arguments(CCF "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+
+ if(CCF_UNPARSED_ARGUMENTS)
+ message(FATAL_ERROR "Unknown keywords given to CONFIGURE_PACKAGE_CONFIG_FILE(): \"${CCF_UNPARSED_ARGUMENTS}\"")
+ endif()
+
+ if(NOT CCF_INSTALL_DESTINATION)
+ message(FATAL_ERROR "No INSTALL_DESTINATION given to CONFIGURE_PACKAGE_CONFIG_FILE()")
+ endif()
+
+ if(IS_ABSOLUTE "${CCF_INSTALL_DESTINATION}")
+ set(absInstallDir "${CCF_INSTALL_DESTINATION}")
+ else()
+ set(absInstallDir "${CMAKE_INSTALL_PREFIX}/${CCF_INSTALL_DESTINATION}")
+ endif()
+ file(RELATIVE_PATH PACKAGE_RELATIVE_PATH "${absInstallDir}" "${CMAKE_INSTALL_PREFIX}" )
+
+ foreach(var ${CCF_PATH_VARS})
+ if(NOT DEFINED ${var})
+ message(FATAL_ERROR "Variable ${var} does not exist")
+ else()
+ if(IS_ABSOLUTE "${${var}}")
+ string(REPLACE "${CMAKE_INSTALL_PREFIX}" "\${PACKAGE_PREFIX_DIR}"
+ PACKAGE_${var} "${${var}}")
+ else()
+ set(PACKAGE_${var} "\${PACKAGE_PREFIX_DIR}/${${var}}")
+ endif()
+ endif()
+ endforeach()
+
+ set(PACKAGE_INIT "
+####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() #######
+get_filename_component(PACKAGE_PREFIX_DIR \"\${CMAKE_CURRENT_LIST_DIR}/${PACKAGE_RELATIVE_PATH}\" ABSOLUTE)
+")
+
+ if(NOT CCF_NO_SET_AND_CHECK_MACRO)
+ set(PACKAGE_INIT "${PACKAGE_INIT}
+macro(set_and_check _var _file)
+ set(\${_var} \"\${_file}\")
+ if(NOT EXISTS \"\${_file}\")
+ message(FATAL_ERROR \"File or directory \${_file} referenced by variable \${_var} does not exist !\")
+ endif()
+endmacro()
+")
+ endif()
+
+
+ if(NOT CCF_NO_CHECK_REQUIRED_COMPONENTS_MACRO)
+ set(PACKAGE_INIT "${PACKAGE_INIT}
+macro(check_required_components _NAME)
+ foreach(comp \${\${_NAME}_FIND_COMPONENTS})
+ if(NOT \${_NAME}_\${comp}_FOUND)
+ if(\${_NAME}_FIND_REQUIRED_\${comp})
+ set(\${_NAME}_FOUND FALSE)
+ endif()
+ endif()
+ endforeach(comp)
+endmacro()
+")
+ endif()
+
+ set(PACKAGE_INIT "${PACKAGE_INIT}
+####################################################################################")
+
+ configure_file("${_inputFile}" "${_outputFile}" @ONLY)
+
+endfunction()
diff -Naur glm/cmake/glmBuildConfig.cmake.in glmn/cmake/glmBuildConfig.cmake.in
--- glm/cmake/glmBuildConfig.cmake.in 1970-01-01 01:00:00.000000000 +0100
+++ glmn/cmake/glmBuildConfig.cmake.in 2019-09-23 00:12:08.090955650 +0200
@@ -0,0 +1,6 @@
+set(GLM_VERSION "@GLM_VERSION@")
+set(GLM_INCLUDE_DIRS "@CMAKE_CURRENT_SOURCE_DIR@")
+
+if (NOT CMAKE_VERSION VERSION_LESS "3.0")
+ include("${CMAKE_CURRENT_LIST_DIR}/glmTargets.cmake")
+endif()
diff -Naur glm/cmake/glmConfig.cmake.in glmn/cmake/glmConfig.cmake.in
--- glm/cmake/glmConfig.cmake.in 1970-01-01 01:00:00.000000000 +0100
+++ glmn/cmake/glmConfig.cmake.in 2019-09-23 00:12:14.566373412 +0200
@@ -0,0 +1,9 @@
+set(GLM_VERSION "@GLM_VERSION@")
+
+@PACKAGE_INIT@
+
+set_and_check(GLM_INCLUDE_DIRS "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@")
+
+if (NOT CMAKE_VERSION VERSION_LESS "3.0")
+ include("${CMAKE_CURRENT_LIST_DIR}/glmTargets.cmake")
+endif()
diff -Naur glm/cmake/glm.pc.in glmn/cmake/glm.pc.in
--- glm/cmake/glm.pc.in 1970-01-01 01:00:00.000000000 +0100
+++ glmn/cmake/glm.pc.in 2019-09-23 00:11:59.695710511 +0200
@@ -0,0 +1,7 @@
+prefix=@CMAKE_INSTALL_PREFIX@
+includedir=${prefix}/include
+
+Name: GLM
+Description: OpenGL Mathematics
+Version: @GLM_VERSION@
+Cflags: -I${includedir}
diff -Naur glm/cmake/GNUInstallDirs.cmake glmn/cmake/GNUInstallDirs.cmake
--- glm/cmake/GNUInstallDirs.cmake 1970-01-01 01:00:00.000000000 +0100
+++ glmn/cmake/GNUInstallDirs.cmake 2019-09-23 00:11:47.363819337 +0200
@@ -0,0 +1,188 @@
+# - Define GNU standard installation directories
+# Provides install directory variables as defined for GNU software:
+# http://www.gnu.org/prep/standards/html_node/Directory-Variables.html
+# Inclusion of this module defines the following variables:
+# CMAKE_INSTALL_<dir> - destination for files of a given type
+# CMAKE_INSTALL_FULL_<dir> - corresponding absolute path
+# where <dir> is one of:
+# BINDIR - user executables (bin)
+# SBINDIR - system admin executables (sbin)
+# LIBEXECDIR - program executables (libexec)
+# SYSCONFDIR - read-only single-machine data (etc)
+# SHAREDSTATEDIR - modifiable architecture-independent data (com)
+# LOCALSTATEDIR - modifiable single-machine data (var)
+# LIBDIR - object code libraries (lib or lib64 or lib/<multiarch-tuple> on Debian)
+# INCLUDEDIR - C header files (include)
+# OLDINCLUDEDIR - C header files for non-gcc (/usr/include)
+# DATAROOTDIR - read-only architecture-independent data root (share)
+# DATADIR - read-only architecture-independent data (DATAROOTDIR)
+# INFODIR - info documentation (DATAROOTDIR/info)
+# LOCALEDIR - locale-dependent data (DATAROOTDIR/locale)
+# MANDIR - man documentation (DATAROOTDIR/man)
+# DOCDIR - documentation root (DATAROOTDIR/doc/PROJECT_NAME)
+# Each CMAKE_INSTALL_<dir> value may be passed to the DESTINATION options of
+# install() commands for the corresponding file type. If the includer does
+# not define a value the above-shown default will be used and the value will
+# appear in the cache for editing by the user.
+# Each CMAKE_INSTALL_FULL_<dir> value contains an absolute path constructed
+# from the corresponding destination by prepending (if necessary) the value
+# of CMAKE_INSTALL_PREFIX.
+
+#=============================================================================
+# Copyright 2011 Nikita Krupen'ko <krnekit@gmail.com>
+# Copyright 2011 Kitware, Inc.
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file Copyright.txt for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+# (To distribute this file outside of CMake, substitute the full
+# License text for the above reference.)
+
+# Installation directories
+#
+if(NOT DEFINED CMAKE_INSTALL_BINDIR)
+ set(CMAKE_INSTALL_BINDIR "bin" CACHE PATH "user executables (bin)")
+endif()
+
+if(NOT DEFINED CMAKE_INSTALL_SBINDIR)
+ set(CMAKE_INSTALL_SBINDIR "sbin" CACHE PATH "system admin executables (sbin)")
+endif()
+
+if(NOT DEFINED CMAKE_INSTALL_LIBEXECDIR)
+ set(CMAKE_INSTALL_LIBEXECDIR "libexec" CACHE PATH "program executables (libexec)")
+endif()
+
+if(NOT DEFINED CMAKE_INSTALL_SYSCONFDIR)
+ set(CMAKE_INSTALL_SYSCONFDIR "etc" CACHE PATH "read-only single-machine data (etc)")
+endif()
+
+if(NOT DEFINED CMAKE_INSTALL_SHAREDSTATEDIR)
+ set(CMAKE_INSTALL_SHAREDSTATEDIR "com" CACHE PATH "modifiable architecture-independent data (com)")
+endif()
+
+if(NOT DEFINED CMAKE_INSTALL_LOCALSTATEDIR)
+ set(CMAKE_INSTALL_LOCALSTATEDIR "var" CACHE PATH "modifiable single-machine data (var)")
+endif()
+
+if(NOT DEFINED CMAKE_INSTALL_LIBDIR)
+ set(_LIBDIR_DEFAULT "lib")
+ # Override this default 'lib' with 'lib64' iff:
+ # - we are on Linux system but NOT cross-compiling
+ # - we are NOT on debian
+ # - we are on a 64 bits system
+ # reason is: amd64 ABI: http://www.x86-64.org/documentation/abi.pdf
+ # For Debian with multiarch, use 'lib/${CMAKE_LIBRARY_ARCHITECTURE}' if
+ # CMAKE_LIBRARY_ARCHITECTURE is set (which contains e.g. "i386-linux-gnu"
+ # See http://wiki.debian.org/Multiarch
+ if((CMAKE_SYSTEM_NAME MATCHES "Linux|kFreeBSD" OR CMAKE_SYSTEM_NAME STREQUAL "GNU")
+ AND NOT CMAKE_CROSSCOMPILING)
+ if (EXISTS "/etc/debian_version") # is this a debian system ?
+ if(CMAKE_LIBRARY_ARCHITECTURE)
+ set(_LIBDIR_DEFAULT "lib/${CMAKE_LIBRARY_ARCHITECTURE}")
+ endif()
+ else() # not debian, rely on CMAKE_SIZEOF_VOID_P:
+ if(NOT DEFINED CMAKE_SIZEOF_VOID_P)
+ message(AUTHOR_WARNING
+ "Unable to determine default CMAKE_INSTALL_LIBDIR directory because no target architecture is known. "
+ "Please enable at least one language before including GNUInstallDirs.")
+ else()
+ if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
+ set(_LIBDIR_DEFAULT "lib64")
+ endif()
+ endif()
+ endif()
+ endif()
+ set(CMAKE_INSTALL_LIBDIR "${_LIBDIR_DEFAULT}" CACHE PATH "object code libraries (${_LIBDIR_DEFAULT})")
+endif()
+
+if(NOT DEFINED CMAKE_INSTALL_INCLUDEDIR)
+ set(CMAKE_INSTALL_INCLUDEDIR "include" CACHE PATH "C header files (include)")
+endif()
+
+if(NOT DEFINED CMAKE_INSTALL_OLDINCLUDEDIR)
+ set(CMAKE_INSTALL_OLDINCLUDEDIR "/usr/include" CACHE PATH "C header files for non-gcc (/usr/include)")
+endif()
+
+if(NOT DEFINED CMAKE_INSTALL_DATAROOTDIR)
+ set(CMAKE_INSTALL_DATAROOTDIR "share" CACHE PATH "read-only architecture-independent data root (share)")
+endif()
+
+#-----------------------------------------------------------------------------
+# Values whose defaults are relative to DATAROOTDIR. Store empty values in
+# the cache and store the defaults in local variables if the cache values are
+# not set explicitly. This auto-updates the defaults as DATAROOTDIR changes.
+
+if(NOT CMAKE_INSTALL_DATADIR)
+ set(CMAKE_INSTALL_DATADIR "" CACHE PATH "read-only architecture-independent data (DATAROOTDIR)")
+ set(CMAKE_INSTALL_DATADIR "${CMAKE_INSTALL_DATAROOTDIR}")
+endif()
+
+if(NOT CMAKE_INSTALL_INFODIR)
+ set(CMAKE_INSTALL_INFODIR "" CACHE PATH "info documentation (DATAROOTDIR/info)")
+ set(CMAKE_INSTALL_INFODIR "${CMAKE_INSTALL_DATAROOTDIR}/info")
+endif()
+
+if(NOT CMAKE_INSTALL_LOCALEDIR)
+ set(CMAKE_INSTALL_LOCALEDIR "" CACHE PATH "locale-dependent data (DATAROOTDIR/locale)")
+ set(CMAKE_INSTALL_LOCALEDIR "${CMAKE_INSTALL_DATAROOTDIR}/locale")
+endif()
+
+if(NOT CMAKE_INSTALL_MANDIR)
+ set(CMAKE_INSTALL_MANDIR "" CACHE PATH "man documentation (DATAROOTDIR/man)")
+ set(CMAKE_INSTALL_MANDIR "${CMAKE_INSTALL_DATAROOTDIR}/man")
+endif()
+
+if(NOT CMAKE_INSTALL_DOCDIR)
+ set(CMAKE_INSTALL_DOCDIR "" CACHE PATH "documentation root (DATAROOTDIR/doc/PROJECT_NAME)")
+ set(CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DATAROOTDIR}/doc/${PROJECT_NAME}")
+endif()
+
+#-----------------------------------------------------------------------------
+
+mark_as_advanced(
+ CMAKE_INSTALL_BINDIR
+ CMAKE_INSTALL_SBINDIR
+ CMAKE_INSTALL_LIBEXECDIR
+ CMAKE_INSTALL_SYSCONFDIR
+ CMAKE_INSTALL_SHAREDSTATEDIR
+ CMAKE_INSTALL_LOCALSTATEDIR
+ CMAKE_INSTALL_LIBDIR
+ CMAKE_INSTALL_INCLUDEDIR
+ CMAKE_INSTALL_OLDINCLUDEDIR
+ CMAKE_INSTALL_DATAROOTDIR
+ CMAKE_INSTALL_DATADIR
+ CMAKE_INSTALL_INFODIR
+ CMAKE_INSTALL_LOCALEDIR
+ CMAKE_INSTALL_MANDIR
+ CMAKE_INSTALL_DOCDIR
+ )
+
+# Result directories
+#
+foreach(dir
+ BINDIR
+ SBINDIR
+ LIBEXECDIR
+ SYSCONFDIR
+ SHAREDSTATEDIR
+ LOCALSTATEDIR
+ LIBDIR
+ INCLUDEDIR
+ OLDINCLUDEDIR
+ DATAROOTDIR
+ DATADIR
+ INFODIR
+ LOCALEDIR
+ MANDIR
+ DOCDIR
+ )
+ if(NOT IS_ABSOLUTE ${CMAKE_INSTALL_${dir}})
+ set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${dir}}")
+ else()
+ set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_${dir}}")
+ endif()
+endforeach()
diff -Naur glm/CMakeLists.txt glmn/CMakeLists.txt
--- glm/CMakeLists.txt 2019-09-07 14:10:16.000000000 +0200
+++ glmn/CMakeLists.txt 2019-09-23 00:10:29.559815104 +0200
@@ -4,6 +4,11 @@
set(GLM_VERSION "0.9.9")
project(glm VERSION ${GLM_VERSION} LANGUAGES CXX)
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
+
+include(GNUInstallDirs)
+include(CMakePackageConfigHelpers)
+
enable_testing()
option(GLM_QUIET "No CMake Message" OFF)
@@ -237,3 +242,62 @@
add_subdirectory(glm)
add_subdirectory(test)
+set(GLM_INSTALL_CONFIGDIR "${CMAKE_INSTALL_LIBDIR}/cmake/glm")
+install(DIRECTORY glm DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+
+
+# CMake automatically adds an architecture compatibility check to make sure
+# 32 and 64 bit code is not accidentally mixed. For a header-only library this
+# is not required. The check can be disabled by temporarily unsetting
+# CMAKE_SIZEOF_VOID_P. In CMake 3.14 and later this can be achieved more cleanly
+# with write_basic_package_version_file(ARCH_INDEPENDENT).
+# TODO: Use this once a newer CMake can be required.
+set(GLM_SIZEOF_VOID_P ${CMAKE_SIZEOF_VOID_P})
+unset(CMAKE_SIZEOF_VOID_P)
+write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/glmConfigVersion.cmake" VERSION ${GLM_VERSION} COMPATIBILITY AnyNewerVersion)
+set(CMAKE_SIZEOF_VOID_P ${GLM_SIZEOF_VOID_P})
+
+# build tree package config
+configure_file(cmake/glmBuildConfig.cmake.in glmConfig.cmake @ONLY)
+
+# install tree package config
+configure_package_config_file(
+ cmake/glmConfig.cmake.in
+ ${GLM_INSTALL_CONFIGDIR}/glmConfig.cmake
+ INSTALL_DESTINATION ${GLM_INSTALL_CONFIGDIR}
+ PATH_VARS CMAKE_INSTALL_INCLUDEDIR
+ NO_CHECK_REQUIRED_COMPONENTS_MACRO)
+
+install(FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/${GLM_INSTALL_CONFIGDIR}/glmConfig.cmake"
+ "${CMAKE_CURRENT_BINARY_DIR}/glmConfigVersion.cmake"
+ DESTINATION ${GLM_INSTALL_CONFIGDIR})
+
+add_library(glm INTERFACE)
+target_include_directories(glm INTERFACE
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
+install(TARGETS glm EXPORT glmTargets)
+
+export(EXPORT glmTargets FILE "${CMAKE_CURRENT_BINARY_DIR}/glmTargets.cmake")
+
+install(EXPORT glmTargets FILE glmTargets.cmake DESTINATION ${GLM_INSTALL_CONFIGDIR})
+
+# build pkg-config file
+configure_file("./cmake/glm.pc.in" "glm.pc" @ONLY)
+
+# install pkg-config file
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glm.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
+
+export(PACKAGE glm)
+
+if(NOT TARGET uninstall)
+ configure_file(
+ ${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake
+ IMMEDIATE @ONLY)
+
+ add_custom_target(uninstall
+ COMMAND ${CMAKE_COMMAND} -P
+ ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
+endif()
diff -Naur glm/cmake_uninstall.cmake.in glmn/cmake_uninstall.cmake.in
--- glm/cmake_uninstall.cmake.in 1970-01-01 01:00:00.000000000 +0100
+++ glmn/cmake_uninstall.cmake.in 2019-09-23 00:12:22.495660449 +0200
@@ -0,0 +1,26 @@
+if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+ message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+endif(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt")
+
+if (NOT DEFINED CMAKE_INSTALL_PREFIX)
+ set (CMAKE_INSTALL_PREFIX "@CMAKE_INSTALL_PREFIX@")
+endif ()
+ message(${CMAKE_INSTALL_PREFIX})
+
+file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files)
+string(REGEX REPLACE "\n" ";" files "${files}")
+foreach(file ${files})
+ message(STATUS "Uninstalling $ENV{DESTDIR}${file}")
+ if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
+ exec_program(
+ "@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\""
+ OUTPUT_VARIABLE rm_out
+ RETURN_VALUE rm_retval
+ )
+ if(NOT "${rm_retval}" STREQUAL 0)
+ message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}")
+ endif(NOT "${rm_retval}" STREQUAL 0)
+ else(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
+ message(STATUS "File $ENV{DESTDIR}${file} does not exist.")
+ endif(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}")
+endforeach(file)

View File

@ -1,61 +0,0 @@
From 6c52e1b902b869c25e2fe39cff6364143a04da61 Mon Sep 17 00:00:00 2001
From: Niklas Larsson <niklas@mm.st>
Date: Tue, 11 Dec 2018 19:56:22 +0100
Subject: [PATCH] Only check for Node when required
---
test/TestRun.hs | 34 ++++++++++++++++++++--------------
1 file changed, 20 insertions(+), 14 deletions(-)
diff --git a/test/TestRun.hs b/test/TestRun.hs
index c7db9fdcd..4809911f3 100644
--- a/test/TestRun.hs
+++ b/test/TestRun.hs
@@ -11,6 +11,7 @@ import Data.Proxy
import Data.Typeable
import Options.Applicative
import System.Directory
+import System.Environment
import System.Exit
import System.FilePath ((</>))
import System.Info
@@ -103,20 +104,25 @@ runTest path flags = do
normalise (x : xs) = x : normalise xs
normalise [] = []
+checkNode :: IO ()
+checkNode = do
+ nodePath <- findExecutable "node"
+ nodejsPath <- findExecutable "nodejs"
+ let node = nodePath <|> nodejsPath
+ case node of
+ Nothing -> do
+ putStrLn "For running the test suite against Node, node must be installed."
+ exitFailure
+ Just _ -> return ()
+
main :: IO ()
main = do
- nodePath <- findExecutable "node"
- nodejsPath <- findExecutable "nodejs"
- let node = nodePath <|> nodejsPath
- case node of
- Nothing -> do
- putStrLn "For running the test suite against Node, node must be installed."
- exitFailure
- Just _ -> do
- defaultMainWithIngredients ingredients $
+ args <- getArgs
+ when ("--node" `elem` args) checkNode
+ defaultMainWithIngredients ingredients $
askOption $ \(NodeOpt node) ->
- let (codegen, flags) = if node then (JS, ["--codegen", "node"])
- else (C , [])
- in
- mkGoldenTests (testFamiliesForCodegen codegen)
- (flags ++ idrisFlags)
+ let (codegen, flags) = if node then (JS, ["--codegen", "node"])
+ else (C , [])
+ in
+ mkGoldenTests (testFamiliesForCodegen codegen) (flags ++ idrisFlags)
+

View File

@ -22,10 +22,8 @@ Date: Wed, 24 Feb 2016 01:04:11 +0000
Also fix a pre-existing typo.
Index: ilmbase/ImathTest/testBoxAlgo.cpp
===================================================================
--- ilmbase.orig/ImathTest/testBoxAlgo.cpp
+++ ilmbase/ImathTest/testBoxAlgo.cpp
--- a/IlmBase/ImathTest/testBoxAlgo.cpp
+++ b/IlmBase/ImathTest/testBoxAlgo.cpp
@@ -886,10 +886,11 @@ boxMatrixTransform ()
assert (approximatelyEqual (b2.min, b4.min, e));
@ -54,10 +52,8 @@ On 32-bit x86, allow even greater discrepency at double
precision, due to possible double-rounding. See
https://lists.nongnu.org/archive/html/openexr-devel/2015-12/msg00001.html
Index: ilmbase/ImathTest/testBox.cpp
===================================================================
--- ilmbase.orig/ImathTest/testBox.cpp
+++ ilmbase/ImathTest/testBox.cpp
--- a/IlmBase/ImathTest/testBox.cpp
+++ b/IlmBase/ImathTest/testBox.cpp
@@ -47,6 +47,58 @@ using namespace IMATH_INTERNAL_NAMESPACE
namespace {

View File

@ -0,0 +1,40 @@
Fix pkg-config files when using the CMake build system.
Upstream bug report:
https://github.com/openexr/openexr/issues/567
diff --git a/IlmBase/config/CMakeLists.txt b/IlmBase/config/CMakeLists.txt
index 508176a..9e6ab91 100644
--- a/IlmBase/config/CMakeLists.txt
+++ b/IlmBase/config/CMakeLists.txt
@@ -71,9 +71,9 @@ if(ILMBASE_INSTALL_PKG_CONFIG)
# use a helper function to avoid variable pollution, but pretty simple
function(ilmbase_pkg_config_help pcinfile)
set(prefix ${CMAKE_INSTALL_PREFIX})
- set(exec_prefix ${CMAKE_INSTALL_BINDIR})
- set(libdir ${CMAKE_INSTALL_LIBDIR})
- set(includedir ${CMAKE_INSTALL_INCLUDEDIR})
+ set(exec_prefix ${CMAKE_INSTALL_FULL_BINDIR})
+ set(libdir ${CMAKE_INSTALL_FULL_LIBDIR})
+ set(includedir ${CMAKE_INSTALL_FULL_INCLUDEDIR})
set(LIB_SUFFIX_DASH ${ILMBASE_LIB_SUFFIX})
if(TARGET Threads::Threads)
# hrm, can't use properties as they end up as generator expressions
diff --git a/OpenEXR/config/CMakeLists.txt b/OpenEXR/config/CMakeLists.txt
index 1ef829a..b8dc141 100644
--- a/OpenEXR/config/CMakeLists.txt
+++ b/OpenEXR/config/CMakeLists.txt
@@ -72,9 +72,9 @@ if(OPENEXR_INSTALL_PKG_CONFIG)
# use a helper function to avoid variable pollution, but pretty simple
function(openexr_pkg_config_help pcinfile)
set(prefix ${CMAKE_INSTALL_PREFIX})
- set(exec_prefix ${CMAKE_INSTALL_BINDIR})
- set(libdir ${CMAKE_INSTALL_LIBDIR})
- set(includedir ${CMAKE_INSTALL_INCLUDEDIR})
+ set(exec_prefix ${CMAKE_INSTALL_FULL_BINDIR})
+ set(libdir ${CMAKE_INSTALL_FULL_LIBDIR})
+ set(includedir ${CMAKE_INSTALL_FULL_INCLUDEDIR})
set(LIB_SUFFIX_DASH ${OPENEXR_LIB_SUFFIX})
if(TARGET Threads::Threads)
# hrm, can't use properties as they end up as generator expressions

View File

@ -1,42 +0,0 @@
Fix test failures induced by setting the SOURCE_DATE_EPOCH variable.
Taken from upstream: <https://github.com/p11-glue/p11-kit/pull/213>.
From 2a474e1fe8f4bd8b4ed7622e5cf3b2718a202562 Mon Sep 17 00:00:00 2001
From: Daiki Ueno <dueno@redhat.com>
Date: Mon, 28 Jan 2019 13:03:15 +0100
Subject: [PATCH] extract-jks: Prefer _p11_extract_jks_timestamp to
SOURCE_DATE_EPOCH
Give _p11_extract_jks_timestamp precedence over SOURCE_DATE_EPOCH so
that the test results are not affected by the envvar settings.
---
trust/extract-jks.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/trust/extract-jks.c b/trust/extract-jks.c
index ad8dc35..a6f855f 100644
--- a/trust/extract-jks.c
+++ b/trust/extract-jks.c
@@ -250,7 +250,9 @@ prepare_jks_buffer (p11_enumerate *ex,
* when this was this certificate was added to the keystore, however
* we don't have that information. Java uses time in milliseconds
*/
- {
+ if (_p11_extract_jks_timestamp)
+ now = _p11_extract_jks_timestamp;
+ else {
char *source_date_epoch;
source_date_epoch = secure_getenv ("SOURCE_DATE_EPOCH");
if (source_date_epoch) {
@@ -276,9 +278,7 @@ prepare_jks_buffer (p11_enumerate *ex,
return false;
}
now = epoch;
- } else if (_p11_extract_jks_timestamp)
- now = _p11_extract_jks_timestamp;
- else
+ } else
now = time (NULL);
}

View File

@ -180,14 +180,14 @@ colors, styles, options and details.")
(define-public asymptote
(package
(name "asymptote")
(version "2.49")
(version "2.53")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/asymptote/"
version "/asymptote-" version ".src.tgz"))
(sha256
(base32
"1vljhq68gyc2503l9fj76rk1q4a4db9a1sp3fdfagqqmirnmybp5"))))
"0ysj6b3ffifbraflkixh19hmdh3qjij26wyj4z66085qw17v7qkw"))))
(build-system gnu-build-system)
;; Note: The 'asy' binary retains a reference to docdir for use with its
;; "help" command in interactive mode, so adding a "doc" output is not
@ -199,6 +199,8 @@ colors, styles, options and details.")
("texinfo" ,texinfo) ;For generating documentation
;; For the manual and the tests.
("texlive" ,(texlive-union (list texlive-amsfonts
texlive-epsf
texlive-latex-base
texlive-latex-geometry
texlive-latex-graphics
texlive-latex-oberdiek ; for ifluatex

View File

@ -164,7 +164,7 @@ different programming languages.")
(define-public fmt
(package
(name "fmt")
(version "5.3.0")
(version "6.0.0")
(source (origin
(method url-fetch)
(uri (string-append
@ -172,7 +172,7 @@ different programming languages.")
version "/fmt-" version ".zip"))
(sha256
(base32
"0p51nhmvjniqlffmmb9djhprnclvm448f2vkdxymvxw307hl21sc"))))
"0h148anbaqgch6n69pxsvs1c9wmykgd052wmzgdia7qpz8w6p8dl"))))
(build-system cmake-build-system)
(native-inputs
`(("unzip" ,unzip)))

View File

@ -19,7 +19,7 @@
;;; Copyright © 2015, 2016 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
;;; Copyright © 2016, 2018 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2016, 2018-2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2016, 2017 Troy Sankey <sankeytms@gmail.com>
@ -16397,3 +16397,30 @@ because lxml.etree already has it's own implementation of XPath 1.0.")
(synopsis "Python library to parse BibTeX files")
(description "BibtexParser is a Python library to parse BibTeX files.")
(license (list license:bsd-3 license:lgpl3))))
(define-public python-distro
(package
(name "python-distro")
(version "1.4.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "distro" version))
(sha256
(base32
"0mrg75w4ap7mdzyga75yaid9n8bgb345ih5mwjp3plj6v1jxwb9n"))))
(build-system python-build-system)
(native-inputs
`(("python-pytest" ,python-pytest)))
(home-page "https://github.com/nir0s/distro")
(synopsis
"OS platform information API")
(description
"@code{distro} provides information about the OS distribution it runs on,
such as a reliable machine-readable ID, or version information.
It is the recommended replacement for Python's original
`platform.linux_distribution` function (which will be removed in Python 3.8).
@code{distro} also provides a command-line interface to output the platform
information in various formats.")
(license license:asl2.0)))

View File

@ -30,7 +30,7 @@
(define-public re2
(package
(name "re2")
(version "2019-08-01")
(version "2019-09-01")
(home-page "https://github.com/google/re2")
(source (origin
(method git-fetch)
@ -38,7 +38,7 @@
(file-name (git-file-name name version))
(sha256
(base32
"11w9x16y26nfgliis28ivrh9b1x6pxawdwxfwxfjh34h57c0dkzg"))))
"1a0m3p0nx7vz2sgryrsjnbiwkjpj98swjb29r0w5lsv3f92dqyn4"))))
(build-system gnu-build-system)
(arguments
`(#:modules ((guix build gnu-build-system)

View File

@ -44,6 +44,17 @@
(substitute* "build/common.inc"
(("export tbb_build_prefix.+$")
"export tbb_build_prefix?=guix\n"))
;; Don't capture the build time and kernel version.
(substitute* "build/version_info_linux.sh"
(("uname -srv") "uname -s")
(("`date -u`") "01 Jan 1970"))
(substitute* "build/linux.inc"
(("os_kernel_version:=.*")
"os_kernel_version:=5\n")
(("os_version:=.*")
"os_version:=1\n"))
#t))))
(outputs '("out" "doc"))
(build-system gnu-build-system)

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2016 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
@ -61,6 +61,18 @@ their source and the command-line Info reader. The emphasis of the language
is on expressing the content semantically, avoiding physical markup commands.")
(license gpl3+)))
(define-public texinfo-6.7
(package
(inherit texinfo)
(version "6.7")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/texinfo/texinfo-"
version ".tar.xz"))
(sha256
(base32
"1aicn1v3czqii08wc91jw089n1x3gfchkf808q2as59dak0h714q"))))))
(define-public texinfo-5
(package (inherit texinfo)
(version "5.2")

View File

@ -122,16 +122,15 @@ in intelligent transportation networks.")
(define-public p11-kit
(package
(name "p11-kit")
(version "0.23.15")
(version "0.23.17")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/p11-glue/p11-kit/releases/"
"download/" version "/p11-kit-" version ".tar.gz"))
(patches (search-patches "p11-kit-jks-timestamps.patch"))
(sha256
(base32
"166pwj00cffv4qq4dvx0k53zka0b0r1fa0whc49007vsqyh3khgp"))))
"07kwdlw07jk9833k43kkhv0q9gkll3vmd25wwp68cpy0crfv4isl"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
@ -828,7 +827,7 @@ then ported to the GNU / Linux environment.")
(define-public mbedtls-apache
(package
(name "mbedtls-apache")
(version "2.16.2")
(version "2.16.3")
(source
(origin
(method url-fetch)
@ -838,7 +837,7 @@ then ported to the GNU / Linux environment.")
version "-apache.tgz"))
(sha256
(base32
"1906hbwlkq32075hca4vjad03dcc36aycvmaz8yvhr3ygg6lz0x6"))))
"0qd65lnr63vmx2gxla6lcmm5gawlnaj4wy4h4vmdc3h9h9nyw6zc"))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags
@ -876,7 +875,7 @@ coding footprint.")
(define-public dehydrated
(package
(name "dehydrated")
(version "0.6.2")
(version "0.6.5")
(source (origin
(method url-fetch)
(uri (string-append
@ -884,7 +883,7 @@ coding footprint.")
"v" version "/dehydrated-" version ".tar.gz"))
(sha256
(base32
"03p80yj6bnzjc6dkp5hb9wpplmlrla8n5src71cnzw4rj53q8cqn"))))
"0dgskgbdd95p13jx6s13p77y15wngb5cm6p4305cf2s54w0bvahh"))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))

View File

@ -204,6 +204,32 @@ In fact, there is no graphical output possible. AA-lib replaces those
old-fashioned output methods with powerful ascii-art renderer.")
(license license:lgpl2.0+)))
(define-public celluloid
(package
(name "celluloid")
(version "0.17")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/celluloid-player/celluloid/releases"
"/download/v" version "/celluloid-" version ".tar.xz"))
(sha256
(base32 "0a3bhvs38gxjplygb0q9cx5djl5y0bmnxgaq0sd65j610a60f5h0"))))
(build-system glib-or-gtk-build-system)
(native-inputs
`(("intltool" ,intltool)
("pkg-config" ,pkg-config)))
(inputs
`(("gtk+" ,gtk+)
("libepoxy" ,libepoxy)
("mpv" ,mpv)))
(home-page "https://github.com/celluloid-player/celluloid")
(synopsis "GTK+ frontend for the mpv media player")
(description "Celluloid is a simple GTK+ frontend for the mpv media player.
It interacts with mpv via the client API exported by libmpv, allowing access to
mpv's powerful playback capabilities.")
(license license:gpl3+)))
(define-public liba52
(package
(name "liba52")
@ -799,14 +825,14 @@ operate properly.")
(define-public ffmpeg
(package
(name "ffmpeg")
(version "4.2")
(version "4.2.1")
(source (origin
(method url-fetch)
(uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
version ".tar.xz"))
(sha256
(base32
"1mgcxm7sqkajx35px05szsmn9mawwm03cfpmk3br7bcp3a1i0gq2"))))
"1m5nkc61ihgcf0b2wabm0zyqa8sj3c0w8fi6kr879lb0kdzciiyf"))))
(build-system gnu-build-system)
(inputs
`(("dav1d" ,dav1d)
@ -1404,32 +1430,7 @@ projects while introducing many more.")
(license license:gpl2+)))
(define-public gnome-mpv
(package
(name "gnome-mpv")
(version "0.16")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/gnome-mpv/gnome-mpv/releases"
"/download/v" version "/gnome-mpv-" version
".tar.xz"))
(sha256
(base32
"0jzdzvhcqp5jp1inwk2466zf7r8iimk3x69066gl8mzaay98mk92"))))
(native-inputs
`(("intltool" ,intltool)
("pkg-config" ,pkg-config)))
(inputs
`(("gtk+" ,gtk+)
("libepoxy" ,libepoxy)
("mpv" ,mpv)))
(build-system glib-or-gtk-build-system)
(home-page "https://github.com/gnome-mpv/gnome-mpv")
(synopsis "GTK+ frontend for the mpv media player")
(description "GNOME MPV is a simple GTK+ frontend for the mpv media player.
GNOME MPV interacts with mpv via the client API exported by libmpv, allowing
access to mpv's powerful playback capabilities.")
(license license:gpl3+)))
(deprecated-package "gnome-mpv" celluloid))
(define-public libvpx
(package
@ -1492,7 +1493,7 @@ access to mpv's powerful playback capabilities.")
(define-public youtube-dl
(package
(name "youtube-dl")
(version "2019.09.12")
(version "2019.09.12.1")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/ytdl-org/youtube-dl/"
@ -1500,7 +1501,7 @@ access to mpv's powerful playback capabilities.")
version ".tar.gz"))
(sha256
(base32
"0wmc0rl4l08hnz3agh69ld1pcmjs7czg0d2k7mnnlxhwlwi38w56"))))
"0h7v81kcxcpy82wq9b1aiz2zg6hg7rnlcfmzd13j6k8yhr7ah9yf"))))
(build-system python-build-system)
(arguments
;; The problem here is that the directory for the man page and completion
@ -1631,7 +1632,7 @@ other site that youtube-dl supports.")
(define-public you-get
(package
(name "you-get")
(version "0.4.1328")
(version "0.4.1355")
(source (origin
(method git-fetch)
(uri (git-reference
@ -1640,7 +1641,7 @@ other site that youtube-dl supports.")
(file-name (git-file-name name version))
(sha256
(base32
"1r9qffwvxmp74byva12h2jsn3n33vyim052sx9lykv5dygibbp65"))))
"0xq7z04hvw3b3npiahlpzhbxsjvam9n9dynplyrkn84dx6k9ajbj"))))
(build-system python-build-system)
(inputs
`(("ffmpeg" ,ffmpeg))) ; for multi-part and >=1080p videos
@ -2203,7 +2204,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
(define-public mlt
(package
(name "mlt")
(version "6.12.0")
(version "6.16.0")
(source (origin
(method git-fetch)
(uri (git-reference
@ -2212,7 +2213,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
(file-name (git-file-name name version))
(sha256
(base32
"0pzm3mjbbdl2rkbswgyfkx552xlxh2qrwzsi2a4dicfr92rfgq6w"))))
"1362fv63p34kza9v4b71b6wakgvsa2vdx9y0g28x3yh4cp4k97kx"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no tests

View File

@ -965,7 +965,7 @@ Open Container Initiative (OCI) image layout and its tagged images.")
(define-public skopeo
(package
(name "skopeo")
(version "0.1.28")
(version "0.1.39")
(source (origin
(method git-fetch)
(uri (git-reference
@ -974,7 +974,7 @@ Open Container Initiative (OCI) image layout and its tagged images.")
(file-name (git-file-name name version))
(sha256
(base32
"068nwrr3nr27alravcq1sxyhdd5jjr24213vdgn1dqva3885gbi0"))))
"1jkxmvh079pd9j4aa39ilmclwafnjs0yqdiigwh8cj7yf97x4vsi"))))
(build-system go-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))

View File

@ -81,7 +81,7 @@ and for the GLSL.std.450 extended instruction set.
(define-public spirv-tools
(package
(name "spirv-tools")
(version "2019.1")
(version "2019.2")
(source
(origin
(method git-fetch)
@ -89,9 +89,8 @@ and for the GLSL.std.450 extended instruction set.
(url "https://github.com/KhronosGroup/SPIRV-Tools")
(commit (string-append "v" version))))
(sha256
(base32
"0vddjzhkrhrm3l3i57nxmq2smv3r1s0ka5ff2kziaahr4hqb479r"))
(file-name (string-append name "-" version "-checkout"))))
(base32 "0zwz6qg8g8165h7cw52agryjrdb29gbmsbziw3pwiddfkyma8vvg"))
(file-name (git-file-name name version))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ; FIXME: Tests fail.

View File

@ -331,7 +331,7 @@ GUI. It is based on PyQt5 and QtWebKit.")
(define-public vimb
(package
(name "vimb")
(version "3.3.0")
(version "3.5.0")
(source
(origin
(method git-fetch)
@ -339,12 +339,11 @@ GUI. It is based on PyQt5 and QtWebKit.")
(url "https://github.com/fanglingsu/vimb/")
(commit version)))
(sha256
(base32
"1qg18z2gnsli9qgrqfhqfrsi6g9mcgr90w8yab28nxrq4aha6brf"))
(base32 "13q7mk1hhjri0s30a98r8ncy0skf6m6lrnbqaf0jimf6sbwgiirf"))
(file-name (git-file-name name version))))
(build-system glib-or-gtk-build-system)
(arguments
'(#:tests? #f ; no tests
'(#:tests? #f ; no tests
#:make-flags (list "CC=gcc"
"DESTDIR="
(string-append "PREFIX=" %output))

View File

@ -56,6 +56,7 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix cvs-download)
#:use-module (guix hg-download)
@ -77,6 +78,8 @@
#:use-module (gnu packages check)
#:use-module (gnu packages documentation)
#:use-module (gnu packages docbook)
#:use-module (gnu packages emacs)
#:use-module (gnu packages emacs-xyz)
#:use-module (gnu packages autotools)
#:use-module (gnu packages compression)
#:use-module (gnu packages curl)
@ -209,14 +212,14 @@ Interface} specification.")
;; stable and recommends that “in general you deploy the NGINX mainline
;; branch at all times” (https://www.nginx.com/blog/nginx-1-6-1-7-released/)
;; Consider updating the nginx-documentation package together with this one.
(version "1.17.3")
(version "1.17.4")
(source (origin
(method url-fetch)
(uri (string-append "https://nginx.org/download/nginx-"
version ".tar.gz"))
(sha256
(base32
"0g0g9prwjy0rnv6n5smny5yl5dhnmflqdr3hwgyj5jpr5hfgx11v"))))
"0mg521bxh8pysmy20x599m252ici9w97kk7qy7s0wrv6bqv4p1b2"))))
(build-system gnu-build-system)
(inputs `(("openssl" ,openssl)
("pcre" ,pcre)
@ -864,7 +867,7 @@ for efficient socket-like bidirectional reliable communication channels.")
(define-public wabt
(package
(name "wabt")
(version "1.0.11")
(version "1.0.12")
(source
(origin
(method git-fetch)
@ -873,7 +876,7 @@ for efficient socket-like bidirectional reliable communication channels.")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "0hn88vlqyclpk79v3wg3lrssd9vwhjdgvb41g03jqakygxxgnmp5"))))
(base32 "1zlv3740wkqj4mn6sr84h0x6wk2lcp4pwwmqsh5yyqp1j1glbsa0"))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags '("-DBUILD_TESTS=OFF")
@ -4017,6 +4020,98 @@ CDF, Atom 0.3, and Atom 1.0 feeds.")
(define-public python2-feedparser
(package-with-python2 python-feedparser))
(define-public guix-data-service
(let ((commit "bb94f6dd05a33135fa661b86d35d203c0c099dba")
(revision "1"))
(package
(name "guix-data-service")
(version (string-append "0.0.1-" revision "." (string-take commit 7)))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://git.savannah.gnu.org/git/guix/data-service.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"1y6s4igjvi0293z4d4hbgwifs8avcam71qhis9z4f8mjz6w7vcpb"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; TODO Tests require PostgreSQL
#:modules ((guix build utils)
(guix build gnu-build-system)
(ice-9 rdelim)
(ice-9 popen))
#:phases
(modify-phases %standard-phases
(add-after 'set-paths 'set-GUIX_ENVIRONMENT
(lambda* (#:key inputs #:allow-other-keys)
;; This means guix.el finds the Emacs modules
(setenv "GUIX_ENVIRONMENT"
(assoc-ref inputs "emacs-with-modules"))
#t))
(add-before 'build 'set-GUILE_AUTO_COMPILE
(lambda _
;; To avoid errors relating to guild
(setenv "GUILE_AUTO_COMPILE" "0")
#t))
(add-after 'install 'wrap-executable
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(guile (assoc-ref inputs "guile"))
(guile-effective-version
(read-line
(open-pipe* OPEN_READ
(string-append guile "/bin/guile")
"-c" "(display (effective-version))")))
(scm (string-append out "/share/guile/site/"
guile-effective-version))
(go (string-append out "/lib/guile/"
guile-effective-version
"/site-ccache")))
(for-each
(lambda (file)
(wrap-program (string-append bin "/" file)
`("PATH" ":" prefix
(,bin))
`("GUILE_LOAD_PATH" ":" prefix
(,scm ,(getenv "GUILE_LOAD_PATH")))
`("GUILE_LOAD_COMPILED_PATH" ":" prefix
(,go ,(getenv "GUILE_LOAD_COMPILED_PATH")))))
'("guix-data-service"
"guix-data-service-process-branch-updated-email"
"guix-data-service-process-job"
"guix-data-service-process-jobs"
"guix-data-service-query-build-servers"))
#t)))
(delete 'strip)))) ; As the .go files aren't compatible
(inputs
`(("guix" ,guix)
("guile-fibers" ,guile-fibers)
("guile-json" ,guile-json-3)
("guile-email" ,guile-email)
("guile-squee" ,guile-squee)
("postgresql" ,postgresql)
("sqitch" ,sqitch)))
(native-inputs
`(("guile" ,guile-2.2)
("autoconf" ,autoconf)
("automake" ,automake)
("emacs-with-modules" ,(directory-union
"emacs-union"
(list emacs-no-x
emacs-htmlize)))
("pkg-config" ,pkg-config)))
(synopsis "Store and provide data about GNU Guix")
(description
"The Guix Data Service stores data about GNU Guix, and provides this
through a web interface. It supports listening to the guix-commits mailing
list to find out about new revisions, then loads the data from these in to a
PostgreSQL database.")
(home-page "http://data.guix.gnu.org/")
(license license:agpl3+))))
(define-public gumbo-parser
(package
(name "gumbo-parser")
@ -4972,13 +5067,13 @@ deployments.")
(package
(name "varnish")
(home-page "https://varnish-cache.org/")
(version "6.2.1")
(version "6.3.0")
(source (origin
(method url-fetch)
(uri (string-append home-page "_downloads/varnish-" version ".tgz"))
(sha256
(base32
"15qfvw3fp05bgyspcm6gbsnxhs430p4z3fwz5kkd1z68jb90b3pj"))))
"0zwlffdd1m0ih33nq40xf2wwdyvr4czmns2fs90qpfnwy72xxk4m"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")
@ -4993,7 +5088,8 @@ deployments.")
(lambda _
(substitute* '("bin/varnishtest/vtc_varnish.c"
"bin/varnishtest/vtc_process.c"
"bin/varnishd/mgt/mgt_vcc.c")
"bin/varnishd/mgt/mgt_vcc.c"
"bin/varnishtest/tests/u00014.vtc")
(("/bin/sh") (which "sh")))
(substitute* "bin/varnishd/mgt/mgt_shmem.c"
(("rm -rf") (string-append (which "rm") " -rf")))

View File

@ -5,6 +5,7 @@
;;; Copyright © 2015, 2016, 2017, 2018, 2019 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -34,6 +35,7 @@
#:use-module (gnu packages docbook)
#:use-module (gnu packages enchant)
#:use-module (gnu packages flex)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gl)
@ -46,6 +48,7 @@
#:use-module (gnu packages icu4c)
#:use-module (gnu packages image)
#:use-module (gnu packages libreoffice)
#:use-module (gnu packages linux)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
@ -53,20 +56,79 @@
#:use-module (gnu packages sqlite)
#:use-module (gnu packages tls)
#:use-module (gnu packages video)
#:use-module (gnu packages virtualization)
#:use-module (gnu packages xml)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xorg))
(define-public libwpe
(package
(name "libwpe")
(version "1.4.0")
(source (origin
(method url-fetch)
(uri (string-append "https://wpewebkit.org/releases/libwpe-"
version ".tar.xz"))
(sha256
(base32
"1221vs72zs87anrzhbm6pf8jnii7s6ms7mkzj6nlds9zqd7lklz2"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f)) ;no tests
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("mesa" ,mesa)))
(propagated-inputs
`(;; In Requires of wpe-1.0.pc.
("libxkbcommon" ,libxkbcommon)))
(home-page "https://wpewebkit.org/")
(synopsis "Platform agnostic WebKit interfaces")
(description
"@code{libwpe} is a small library that defines programming interfaces
for use by WebKit, and provides a mechanism for loading a platform-specific
backend which implements them.")
(license license:bsd-2)))
(define-public wpebackend-fdo
(package
(name "wpebackend-fdo")
(version "1.4.0")
(source (origin
(method url-fetch)
(uri (string-append "https://wpewebkit.org/releases/"
"wpebackend-fdo-" version ".tar.xz"))
(sha256
(base32
"1bwbs47v4nlzhsqrw9fpyny5m3n9ry0kfzsvk90zjif4bd5cl6d9"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f)) ;no tests
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("glib" ,glib)
("libwpe" ,libwpe)
("mesa" ,mesa)
("wayland" ,wayland)))
(home-page "https://wpewebkit.org/")
(synopsis "Wayland WPE backend")
(description
"This package provides a backend implementation for the WPE WebKit
engine that uses Wayland for graphics output.")
(license license:bsd-2)))
(define-public webkitgtk
(package
(name "webkitgtk")
(version "2.24.4")
(version "2.26.1")
(source (origin
(method url-fetch)
(uri (string-append "https://www.webkitgtk.org/releases/"
name "-" version ".tar.xz"))
(sha256
(base32
"1n3x5g1z6rg9n1ssna7wi0z6zlprjm4wzk544v14wqi6q0lv2s46"))))
"0mfikjfjhwcnrxbzdyh3fl9bbs2azgbdnx8h5910h41b3n022jvb"))))
(build-system cmake-build-system)
(outputs '("out" "doc"))
(arguments
@ -128,6 +190,7 @@
("libsoup" ,libsoup)))
(inputs
`(("at-spi2-core" ,at-spi2-core)
("bubblewrap" ,bubblewrap)
("enchant" ,enchant)
("geoclue" ,geoclue)
("gst-plugins-base" ,gst-plugins-base)
@ -139,16 +202,20 @@
("libjpeg" ,libjpeg)
("libnotify" ,libnotify)
("libpng" ,libpng)
("libseccomp" ,libseccomp)
("libsecret" ,libsecret)
("libtasn1" ,libtasn1)
("libwebp" ,libwebp)
("libwpe" ,libwpe)
("libxcomposite" ,libxcomposite)
("libxml2" ,libxml2)
("libxslt" ,libxslt)
("libxt" ,libxt)
("mesa" ,mesa)
("openjpeg" ,openjpeg)
("sqlite" ,sqlite)))
("sqlite" ,sqlite)
("wpebackend-fdo" ,wpebackend-fdo)
("xdg-dbus-proxy" ,xdg-dbus-proxy)))
(home-page "https://www.webkitgtk.org/")
(synopsis "Web content engine for GTK+")
(description

View File

@ -96,7 +96,7 @@
(define-public bspwm
(package
(name "bspwm")
(version "0.9.5")
(version "0.9.9")
(source
(origin
(method git-fetch)
@ -105,7 +105,7 @@
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "09h3g1rxxjyw861mk32lj774nmwkx8cwxq4wfgmf4dpbizymvhhr"))))
(base32 "1i7crmljk1vra1r6alxvj6lqqailjjcv0llyg7a0gm23rbv4a42g"))))
(build-system gnu-build-system)
(inputs
`(("libxcb" ,libxcb)
@ -1422,7 +1422,7 @@ Wlroots based compositors.")
(define-public mako
(package
(name "mako")
(version "1.3")
(version "1.4")
(source
(origin
(method git-fetch)
@ -1431,7 +1431,7 @@ Wlroots based compositors.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "17azdc37xsbmx13fkfp23vg9lznrv9fh6nhagn64wdq3nhsxm3b6"))))
(base32 "11ymiq6cr2ma0iva1mqybn3j6k73bsc6lv6pcbdq7hkhd4f9b7j9"))))
(build-system meson-build-system)
(inputs `(("cairo" ,cairo)
("elogind" ,elogind)

View File

@ -810,15 +810,16 @@ Guile will work for XBindKeys.")
(define-public sxhkd
(package
(name "sxhkd")
(version "0.6.0")
(version "0.6.1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/baskerville/sxhkd")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "1cz4vkm7fqd51ly9qjkf5q76kdqdzfhaajgvrs4anz5dyzrdpw68"))))
(base32 "0j7bl2l06r0arrjzpz7al9j6cwzc730knbsijp7ixzz96pq7xa2h"))))
(build-system gnu-build-system)
(inputs
`(("asciidoc" ,asciidoc)
@ -998,7 +999,8 @@ Wacom tablet applet.")
(method url-fetch)
(uri (string-append
"https://github.com/linuxwacom/xf86-input-wacom/releases/download/"
name "-" version "/" name "-" version ".tar.bz2"))
"xf86-input-wacom-" version "/"
"xf86-input-wacom-" version ".tar.bz2"))
(sha256
(base32
"029y8varbricba2dzhzhy0ndd7lbfif411ca8c3wxzni9qmbj1ij"))))
@ -1177,7 +1179,7 @@ connectivity of the X server running on a particular @code{DISPLAY}.")
(define-public rofi
(package
(name "rofi")
(version "1.5.3")
(version "1.5.4")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/DaveDavenport/rofi/"
@ -1185,7 +1187,7 @@ connectivity of the X server running on a particular @code{DISPLAY}.")
version "/rofi-" version ".tar.xz"))
(sha256
(base32
"0y78ya2va2lg3ww17n11y9awn8lhcp1px2d8gxaimxfqlxczs8la"))))
"1nslmyqyzhfr4hxd4llqkkkb8ap8apkdna32rllvar7r576059ci"))))
(build-system gnu-build-system)
(inputs
`(("pango" ,pango)

View File

@ -1764,7 +1764,7 @@ package is in maintenance mode.")
(define-public java-dom4j
(package
(name "java-dom4j")
(version "2.1.0")
(version "2.1.1")
(source (origin
(method git-fetch)
(uri (git-reference
@ -1773,7 +1773,7 @@ package is in maintenance mode.")
(file-name (git-file-name name version))
(sha256
(base32
"1827jljs8mps489fm7xw63cakdqwc5grilrr5n9spr2rlk76jpx3"))
"0q907srj9v4hwicpcrn4slyld5npf2jv7hzchsgrg29q2xmbwkdl"))
(modules '((guix build utils)))
(snippet
'(begin ;; Delete bundled jar archives.

View File

@ -215,7 +215,7 @@ which can be read by any architecture.")
(source (origin
(method url-fetch)
(uri (string-append "mirror://xorg/individual/proto/"
name "-" version ".tar.bz2"))
"xorgproto-" version ".tar.bz2"))
(sha256
(base32
"16yll1kaffnslik5sizlw3qrigj1gpsgfgyq6903g3mwdixamnm6"))))
@ -423,7 +423,7 @@ Resources file.")
(define-public encodings
(package
(name "encodings")
(version "1.0.4")
(version "1.0.5")
(source
(origin
(method url-fetch)
@ -432,8 +432,7 @@ Resources file.")
version
".tar.bz2"))
(sha256
(base32
"0ffmaw80vmfwdgvdkp6495xgsqszb6s0iira5j0j6pd4i0lk3mnf"))))
(base32 "0caafx0yqqnqyvbalxhh3mb0r9v36xmcy5zjhygb2i508dhy35mx"))))
(build-system gnu-build-system)
(inputs
`(("mkfontscale" ,mkfontscale)))
@ -2017,7 +2016,7 @@ information used in connecting to the X server.")
(define-public xbacklight
(package
(name "xbacklight")
(version "1.2.2")
(version "1.2.3")
(source
(origin
(method url-fetch)
@ -2027,7 +2026,7 @@ information used in connecting to the X server.")
".tar.bz2"))
(sha256
(base32
"0pmzaz4kp38qv2lqiw5rnqhwzmwrq65m1x5j001mmv99wh9isnk1"))))
"1plssg0s3pbslg6rfzxp9sx8ryvn8l32zyvc8zp9zsbsfwjg69rs"))))
(build-system gnu-build-system)
(inputs
`(("libxcb" ,libxcb)
@ -5034,7 +5033,7 @@ protocol.")
(origin
(method url-fetch)
(uri (string-append "https://xcb.freedesktop.org/dist/"
name "-" version ".tar.bz2"))
"libxcb-" version ".tar.bz2"))
(sha256
(base32
"1ahxhmdqp4bhb90zmc275rmf5wixqra4bnw9pqnzyl1w3598g30q"))))
@ -5800,17 +5799,17 @@ to answer a question. Xmessage can also exit after a specified time.")
(define-public xterm
(package
(name "xterm")
(version "335")
(version "349")
(source (origin
(method url-fetch)
(uri (list
(string-append "http://invisible-mirror.net/archives/xterm/"
name "-" version ".tgz")
"xterm-" version ".tgz")
(string-append "ftp://ftp.invisible-island.net/xterm/"
name "-" version ".tgz")))
"xterm-" version ".tgz")))
(sha256
(base32
"15nbgys4s2idhx6jzzc24g9bb1s6yps5fyg2bafvs0gkkcm1ggz0"))))
"0ps7b2b2kbrkv5q49cmb8c51z0w21jmm7hwciw30m6jgfb9s79ir"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags '("--enable-wide-chars" "--enable-load-vt-fonts"

212
gnu/services/guix.scm Normal file
View File

@ -0,0 +1,212 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019 Christopher Baines <mail@cbaines.net>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify
;;; it under the terms of the GNU General Public License as published by
;;; the Free Software Foundation, either version 3 of the License, or
;;; (at your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful,
;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu services guix)
#:use-module (ice-9 match)
#:use-module (guix gexp)
#:use-module (guix records)
#:use-module ((gnu packages base)
#:select (glibc-utf8-locales))
#:use-module (gnu packages admin)
#:use-module (gnu packages web)
#:use-module (gnu services)
#:use-module (gnu services base)
#:use-module (gnu services admin)
#:use-module (gnu services shepherd)
#:use-module (gnu services getmail)
#:use-module (gnu system shadow)
#:export (<guix-data-service-configuration>
guix-data-service-configuration
guix-data-service-configuration?
guix-data-service-package
guix-data-service-user
guix-data-service-group
guix-data-service-port
guix-data-service-host
guix-data-service-getmail-idle-mailboxes
guix-data-service-commits-getmail-retriever-configuration
guix-data-service-type))
;;;; Commentary:
;;;
;;; This module implements a service that to run instances of the Guix Data
;;; Service, which provides data about Guix over time.
;;;
;;;; Code:
(define-record-type* <guix-data-service-configuration>
guix-data-service-configuration make-guix-data-service-configuration
guix-data-service-configuration?
(package guix-data-service-package
(default guix-data-service))
(user guix-data-service-configuration-user
(default "guix-data-service"))
(group guix-data-service-configuration-group
(default "guix-data-service"))
(port guix-data-service-port
(default 8765))
(host guix-data-service-host
(default "127.0.0.1"))
(getmail-idle-mailboxes
guix-data-service-getmail-idle-mailboxes
(default #f))
(commits-getmail-retriever-configuration
guix-data-service-commits-getmail-retriever-configuration
(default #f)))
(define (guix-data-service-profile-packages config)
"Return the guix-data-service package, this will populate the
ca-certificates.crt file in the system profile."
(list
(guix-data-service-package config)))
(define (guix-data-service-shepherd-services config)
(match-record config <guix-data-service-configuration>
(package user group port host)
(list
(shepherd-service
(documentation "Guix Data Service web server")
(provision '(guix-data-service))
(requirement '(postgres networking))
(start #~(make-forkexec-constructor
(list #$(file-append package
"/bin/guix-data-service")
"--pid-file=/var/run/guix-data-service/pid"
#$(string-append "--port=" (number->string port))
#$(string-append "--host=" host)
;; Perform any database migrations when the
;; service is started
"--update-database")
#:user #$user
#:group #$group
#:pid-file "/var/run/guix-data-service/pid"
;; Allow time for migrations to run
#:pid-file-timeout 60
#:environment-variables
`(,(string-append
"GUIX_LOCPATH=" #$glibc-utf8-locales "/lib/locale")
"LC_ALL=en_US.utf8")
#:log-file "/var/log/guix-data-service/web.log"))
(stop #~(make-kill-destructor)))
(shepherd-service
(documentation "Guix Data Service process jobs")
(provision '(guix-data-service-process-jobs))
(requirement '(postgres
networking
;; Require guix-data-service, as that the database
;; migrations are handled through this service
guix-data-service))
(start #~(make-forkexec-constructor
(list
#$(file-append package
"/bin/guix-data-service-process-jobs"))
#:user #$user
#:group #$group
#:environment-variables
`("HOME=/var/lib/guix-data-service"
"GIT_SSL_CAINFO=/etc/ssl/certs/ca-certificates.crt"
,(string-append
"GUIX_LOCPATH=" #$glibc-utf8-locales "/lib/locale")
"LC_ALL=en_US.utf8")
#:log-file "/var/log/guix-data-service/process-jobs.log"))
(stop #~(make-kill-destructor))))))
(define (guix-data-service-activation config)
#~(begin
(use-modules (guix build utils))
(define %user (getpw "guix-data-service"))
(chmod "/var/lib/guix-data-service" #o755)
(mkdir-p "/var/log/guix-data-service")
;; Allow writing the PID file
(mkdir-p "/var/run/guix-data-service")
(chown "/var/run/guix-data-service"
(passwd:uid %user)
(passwd:gid %user))))
(define (guix-data-service-account config)
(match-record config <guix-data-service-configuration>
(user group)
(list (user-group
(name group)
(system? #t))
(user-account
(name user)
(group group)
(system? #t)
(comment "Guix Data Service user")
(home-directory "/var/lib/guix-data-service")
(shell (file-append shadow "/sbin/nologin"))))))
(define (guix-data-service-getmail-configuration config)
(match config
(($ <guix-data-service-configuration> package user group
port host
#f #f)
'())
(($ <guix-data-service-configuration> package user group
port host
getmail-idle-mailboxes
commits-getmail-retriever-configuration)
(list
(getmail-configuration
(name 'guix-data-service)
(user user)
(group group)
(directory "/var/lib/getmail/guix-data-service")
(rcfile
(getmail-configuration-file
(retriever commits-getmail-retriever-configuration)
(destination
(getmail-destination-configuration
(type "MDA_external")
(path (file-append
package
"/bin/guix-data-service-process-branch-updated-email"))))
(options
(getmail-options-configuration
(read-all #f)
(delivered-to #f)
(received #f)))))
(idle getmail-idle-mailboxes))))))
(define guix-data-service-type
(service-type
(name 'guix-data-service)
(extensions
(list
(service-extension profile-service-type
guix-data-service-profile-packages)
(service-extension shepherd-root-service-type
guix-data-service-shepherd-services)
(service-extension activation-service-type
guix-data-service-activation)
(service-extension account-service-type
guix-data-service-account)
(service-extension getmail-service-type
guix-data-service-getmail-configuration)))
(default-value
(guix-data-service-configuration))
(description
"Run an instance of the Guix Data Service.")))

173
gnu/tests/guix.scm Normal file
View File

@ -0,0 +1,173 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019 Christopher Baines <mail@cbaines.net>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu tests guix)
#:use-module (gnu tests)
#:use-module (gnu system)
#:use-module (gnu system file-systems)
#:use-module (gnu system shadow)
#:use-module (gnu system vm)
#:use-module (gnu services)
#:use-module (gnu services guix)
#:use-module (gnu services databases)
#:use-module (gnu services shepherd)
#:use-module (gnu services networking)
#:use-module (gnu packages databases)
#:use-module (guix packages)
#:use-module (guix modules)
#:use-module (guix records)
#:use-module (guix gexp)
#:use-module (guix store)
#:use-module (guix utils)
#:use-module (ice-9 match)
#:export (%test-guix-data-service))
;;;
;;; Guix Data Service
;;;
(define guix-data-service-initial-database-setup-service
(let ((user "guix_data_service")
(name "guix_data_service"))
(define start-gexp
#~(lambda ()
(let ((pid (primitive-fork))
(postgres (getpwnam "postgres")))
(if (eq? pid 0)
(dynamic-wind
(const #t)
(lambda ()
(setgid (passwd:gid postgres))
(setuid (passwd:uid postgres))
(primitive-exit
(if (and
(zero?
(system* #$(file-append postgresql "/bin/createuser")
#$user))
(zero?
(system* #$(file-append postgresql "/bin/createdb")
"-O" #$user #$name)))
0
1)))
(lambda ()
(primitive-exit 1)))
(zero? (cdr (waitpid pid)))))))
(shepherd-service
(requirement '(postgres))
(provision '(guix-data-service-initial-database-setup))
(start start-gexp)
(stop #~(const #f))
(respawn? #f)
(one-shot? #t)
(documentation "Setup Guix Data Service database."))))
(define %guix-data-service-os
(simple-operating-system
(service dhcp-client-service-type)
(service postgresql-service-type
(postgresql-configuration
(config-file
(postgresql-config-file
(hba-file
(plain-file "pg_hba.conf"
"
local all all trust
host all all 127.0.0.1/32 trust
host all all ::1/128 trust"))))))
(service guix-data-service-type
(guix-data-service-configuration
(host "0.0.0.0")))
(simple-service 'guix-data-service-database-setup
shepherd-root-service-type
(list guix-data-service-initial-database-setup-service))))
(define (run-guix-data-service-test)
(define os
(marionette-operating-system
%guix-data-service-os
#:imported-modules '((gnu services herd)
(guix combinators))))
(define forwarded-port 8080)
(define vm
(virtual-machine
(operating-system os)
(memory-size 1024)
(port-forwardings `((,forwarded-port . 8765)))))
(define test
(with-imported-modules '((gnu build marionette))
#~(begin
(use-modules (srfi srfi-11) (srfi srfi-64)
(gnu build marionette)
(web uri)
(web client)
(web response))
(define marionette
(make-marionette (list #$vm)))
(mkdir #$output)
(chdir #$output)
(test-begin "guix-data-service")
(test-assert "service running"
(marionette-eval
'(begin
(use-modules (gnu services herd))
(match (start-service 'guix-data-service)
(#f #f)
(('service response-parts ...)
(match (assq-ref response-parts 'running)
((pid) (number? pid))))))
marionette))
(test-assert "process jobs service running"
(marionette-eval
'(begin
(use-modules (gnu services herd))
(match (start-service 'guix-data-service-process-jobs)
(#f #f)
(('service response-parts ...)
(match (assq-ref response-parts 'running)
((pid) (number? pid))))))
marionette))
(test-equal "http-get"
200
(let-values
(((response text)
(http-get #$(simple-format
#f "http://localhost:~A/healthcheck" forwarded-port)
#:decode-body? #t)))
(response-code response)))
(test-end)
(exit (= (test-runner-fail-count (test-runner-current)) 0)))))
(gexp->derivation "guix-data-service-test" test))
(define %test-guix-data-service
(system-test
(name "guix-data-service")
(description "Connect to a running Guix Data Service.")
(value (run-guix-data-service-test))))

View File

@ -31,6 +31,8 @@
colorize-string
highlight
dim
color-rules
color-output?
isatty?*))
@ -133,14 +135,16 @@ that subsequent output will not have any colors in effect."
(not (getenv "NO_COLOR"))
(isatty?* port)))
(define %highlight-color (color BOLD))
(define (coloring-procedure color)
"Return a procedure that applies COLOR to the given string."
(lambda* (str #:optional (port (current-output-port)))
"Return STR with extra ANSI color attributes if PORT supports it."
(if (color-output? port)
(colorize-string str color)
str)))
(define* (highlight str #:optional (port (current-output-port)))
"Return STR with extra ANSI color attributes to highlight it if PORT
supports it."
(if (color-output? port)
(colorize-string str %highlight-color)
str))
(define highlight (coloring-procedure (color BOLD)))
(define dim (coloring-procedure (color DARK)))
(define (colorize-matches rules)
"Return a procedure that, when passed a string, returns that string

View File

@ -33,6 +33,7 @@
#:use-module (web uri)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-14)
#:use-module (srfi srfi-26)
#:use-module (srfi srfi-37)
#:use-module (rnrs bytevectors)
@ -54,9 +55,23 @@
(url-fetch url file #:mirrors %mirrors)))
file))
(define (ensure-valid-store-file-name name)
"Replace any character not allowed in a stror name by an underscore."
(define valid
;; according to nix/libstore/store-api.cc
(string->char-set (string-append "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
"0123456789" "+-._?=")))
(string-map (lambda (c)
(if (char-set-contains? valid c) c #\_))
name))
(define* (download-to-store* url #:key (verify-certificate? #t))
(with-store store
(download-to-store store url
(ensure-valid-store-file-name (basename url))
#:verify-certificate? verify-certificate?)))
(define %default-options

View File

@ -39,6 +39,7 @@
#:use-module (guix scripts)
#:use-module (guix scripts build)
#:autoload (guix describe) (package-provenance)
#:autoload (guix store roots) (gc-roots)
#:use-module ((guix build utils)
#:select (directory-exists? mkdir-p))
#:use-module (ice-9 format)
@ -359,6 +360,8 @@ Install, remove, or upgrade packages in a single transaction.\n"))
switch to a generation matching PATTERN"))
(display (G_ "
-p, --profile=PROFILE use PROFILE instead of the user's default profile"))
(display (G_ "
--list-profiles list the user's profiles"))
(newline)
(display (G_ "
--allow-collisions do not treat collisions in the profile as an error"))
@ -458,6 +461,11 @@ command-line option~%")
(values (cons `(query list-generations ,arg)
result)
#f)))
(option '("list-profiles") #f #f
(lambda (opt name arg result arg-handler)
(values (cons `(query list-profiles #t)
result)
#f)))
(option '(#\d "delete-generations") #f #t
(lambda (opt name arg result arg-handler)
(values (alist-cons 'delete-generations arg
@ -750,6 +758,19 @@ processed, #f otherwise."
(string<? name1 name2))))))
#t))
(('list-profiles _)
(let ((profiles (delete-duplicates
(filter-map (lambda (root)
(and (or (zero? (getuid))
(user-owned? root))
(generation-profile root)))
(gc-roots)))))
(leave-on-EPIPE
(for-each (lambda (profile)
(display (user-friendly-profile profile))
(newline))
(sort profiles string<?)))))
(('search _)
(let* ((patterns (filter-map (match-lambda
(('query 'search rx) rx)

View File

@ -249,7 +249,7 @@ PORT."
(channel-news-entry-body entry))
(display-news-entry-title entry language port)
(format port (G_ " commit ~a~%")
(format port (dim (G_ " commit ~a~%"))
(channel-news-entry-commit entry))
(newline port)
(format port " ~a~%"

View File

@ -124,7 +124,11 @@ NODE's modules, under their FHS directories: share/guile/site and lib/guile."
(symlink #$(node-compiled node) object))))
(computed-file (string-append (node-name node) "-modules")
build))
build
#:options '(#:local-build? #t
;; "Building" it locally is faster.
#:substitutable? #f)))
(define (node-fold proc init nodes)
(let loop ((nodes nodes)

View File

@ -438,7 +438,7 @@ cat > "$module_dir/foo.scm"<<EOF
(version "dummy-version")
(outputs '("out" "dummy-output"))
(source #f)
;; Without a real build system, the "guix pacakge -s" command will fail.
;; Without a real build system, the "guix package -s" command will fail.
(build-system trivial-build-system)
(synopsis "dummy-synopsis")
(description "dummy-description")
@ -448,3 +448,7 @@ EOF
guix package -L "$module_dir" -s dummy-output > /tmp/out
test "`guix package -L "$module_dir" -s dummy-output | grep ^name:`" = "name: dummy-package"
rm -rf "$module_dir"
# Make sure we can see user profiles.
guix package --list-profiles | grep "$profile"
guix package --list-profiles | grep '\.guix-profile'